From c9c54dd9e8707fd564dd2c3c8fe9d3764f120da0 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Tue, 18 Apr 2017 05:08:08 +0000 Subject: [PATCH] Speculatively attempt to fix bot failures caused by recent coroutine changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300528 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaCoroutine.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Sema/SemaCoroutine.cpp b/lib/Sema/SemaCoroutine.cpp index f891365efd..6d8f4fac01 100644 --- a/lib/Sema/SemaCoroutine.cpp +++ b/lib/Sema/SemaCoroutine.cpp @@ -888,7 +888,7 @@ bool CoroutineStmtBuilder::makeNewAndDeleteExpr() { FunctionDecl *OperatorDelete = nullptr; FunctionDecl *UnusedResult = nullptr; bool PassAlignment = false; - MultiExprArg PlacementArgs = None; + SmallVector PlacementArgs; S.FindAllocationFunctions(Loc, SourceRange(), /*UseGlobal*/ false, PromiseType, @@ -904,7 +904,7 @@ bool CoroutineStmtBuilder::makeNewAndDeleteExpr() { auto *StdNoThrow = buildStdNoThrowDeclRef(S, Loc); if (!StdNoThrow) return false; - PlacementArgs = MultiExprArg(StdNoThrow); + PlacementArgs = {StdNoThrow}; OperatorNew = nullptr; S.FindAllocationFunctions(Loc, SourceRange(), /*UseGlobal*/ true, PromiseType, @@ -924,6 +924,9 @@ bool CoroutineStmtBuilder::makeNewAndDeleteExpr() { } } + // FIXME: Diagnose and handle the case where no matching operator new is found + // (ie OperatorNew == nullptr) + if ((OperatorDelete = findDeleteForPromise(S, Loc, PromiseType)) == nullptr) return false; @@ -940,7 +943,7 @@ bool CoroutineStmtBuilder::makeNewAndDeleteExpr() { if (NewRef.isInvalid()) return false; - SmallVector NewArgs{FrameSize}; + SmallVector NewArgs(1, FrameSize); for (auto Arg : PlacementArgs) NewArgs.push_back(Arg); -- 2.40.0