summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-06-16 00:16:38 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-06-16 00:16:38 +0000
commit00bdca561aad6f418e7a13fce9163e8c985db0ad (patch)
tree2fb09ca58b5f8a9eedf80436d76cd31ee01db0d3 /clang/lib/Sema/SemaDeclCXX.cpp
parent0952ea77ee161a6899706362437f753705d9fe04 (diff)
downloadbcm5719-llvm-00bdca561aad6f418e7a13fce9163e8c985db0ad.tar.gz
bcm5719-llvm-00bdca561aad6f418e7a13fce9163e8c985db0ad.zip
Workaround a possible VS C++ bug.
llvm-svn: 106070
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 0fb30d82a11..595a05b6339 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -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;
OpenPOWER on IntegriCloud