]> granicus.if.org Git - clang/commitdiff
Workaround a possible VS C++ bug.
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 16 Jun 2010 00:16:38 +0000 (00:16 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 16 Jun 2010 00:16:38 +0000 (00:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106070 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp

index 0fb30d82a11b398e83ad70ab9091dcd94a6c8df5..595a05b6339309d60ebffc488fa7aad2530c0ed3 100644 (file)
@@ -4688,12 +4688,18 @@ void Sema::DefineImplicitCopyAssignment(SourceLocation CurrentLocation,
       llvm::SmallVector<SourceLocation, 4> Commas; // FIXME: Silly
       Commas.push_back(Loc);
       Commas.push_back(Loc);
-      OwningExprResult Call = ActOnCallExpr(/*Scope=*/0,
-                                  NeedsCollectableMemCpy ?
-                                    Owned(CollectableMemCpyRef->Retain()) :
-                                    Owned(BuiltinMemCpyRef->Retain()),
-                                  Loc, move_arg(CallArgs), 
-                                  Commas.data(), Loc);
+      OwningExprResult Call = ExprError();
+      if (NeedsCollectableMemCpy)
+        Call = ActOnCallExpr(/*Scope=*/0,
+                             Owned(CollectableMemCpyRef->Retain()),
+                             Loc, move_arg(CallArgs), 
+                             Commas.data(), Loc);
+      else
+        Call = ActOnCallExpr(/*Scope=*/0,
+                             Owned(BuiltinMemCpyRef->Retain()),
+                             Loc, move_arg(CallArgs), 
+                             Commas.data(), Loc);
+          
       assert(!Call.isInvalid() && "Call to __builtin_memcpy cannot fail!");
       Statements.push_back(Call.takeAs<Expr>());
       continue;