summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-08-06 19:12:38 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-08-06 19:12:38 +0000
commit001309371e199f0c5f3931b80f67309dcd157848 (patch)
treeb6d4bccd47e351295b4aa93a4ceecf62af103220 /clang/lib/Sema/SemaExprCXX.cpp
parent0127031c20ddd202b5ec43eb951965f0c489b2cb (diff)
downloadbcm5719-llvm-001309371e199f0c5f3931b80f67309dcd157848.tar.gz
bcm5719-llvm-001309371e199f0c5f3931b80f67309dcd157848.zip
Set and use Elidable in elimination of copy ctors.
llvm-svn: 78331
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 7e0422e432b..5b749381910 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -911,8 +911,10 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType,
assert(!ToType->isReferenceType());
// FIXME: Keep track of whether the copy constructor is elidable or not.
- From = BuildCXXConstructExpr(Context,
- ToType, SCS.CopyConstructor, false, &From, 1);
+ bool Elidable = (isa<CallExpr>(From) ||
+ isa<CXXTemporaryObjectExpr>(From));
+ From = BuildCXXConstructExpr(Context, ToType,
+ SCS.CopyConstructor, Elidable, &From, 1);
return false;
}
OpenPOWER on IntegriCloud