diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2009-12-06 09:26:33 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2009-12-06 09:26:33 +0000 |
commit | eddf1213e2ae7c163870108da5b088c0039af3ce (patch) | |
tree | dc19942e918cc138606843c9552df7281a74d0e3 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | 58ecb2ab518fcaf9dc8842d41ca77ed435911b63 (diff) | |
download | bcm5719-llvm-eddf1213e2ae7c163870108da5b088c0039af3ce.tar.gz bcm5719-llvm-eddf1213e2ae7c163870108da5b088c0039af3ce.zip |
Fix a slight oversight in computing whether a copy constructor is elidable.
Fixes PR5695.
llvm-svn: 90702
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 652b92db5ed..e1150955666 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -3369,8 +3369,10 @@ Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType, if (ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(E)) if (ICE->getCastKind() == CastExpr::CK_NoOp) E = ICE->getSubExpr(); - - if (isa<CallExpr>(E) || isa<CXXTemporaryObjectExpr>(E)) + + if (CallExpr *CE = dyn_cast<CallExpr>(E)) + Elidable = !CE->getCallReturnType()->isReferenceType(); + else if (isa<CXXTemporaryObjectExpr>(E)) Elidable = true; } |