]> granicus.if.org Git - clang/commitdiff
Speculatively attempt to fix bot failures caused by recent coroutine changes.
authorEric Fiselier <eric@efcs.ca>
Tue, 18 Apr 2017 05:08:08 +0000 (05:08 +0000)
committerEric Fiselier <eric@efcs.ca>
Tue, 18 Apr 2017 05:08:08 +0000 (05:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300528 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaCoroutine.cpp

index f891365efd4cd79458a9a67e9a63c57d103dae32..6d8f4fac01d813f2245917288e0cf777b4912310 100644 (file)
@@ -888,7 +888,7 @@ bool CoroutineStmtBuilder::makeNewAndDeleteExpr() {
   FunctionDecl *OperatorDelete = nullptr;
   FunctionDecl *UnusedResult = nullptr;
   bool PassAlignment = false;
-  MultiExprArg PlacementArgs = None;
+  SmallVector<Expr *, 1> 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<Expr *, 2> NewArgs{FrameSize};
+  SmallVector<Expr *, 2> NewArgs(1, FrameSize);
   for (auto Arg : PlacementArgs)
     NewArgs.push_back(Arg);