diff options
author | Abramo Bagnara <abramo.bagnara@gmail.com> | 2011-11-16 22:46:05 +0000 |
---|---|---|
committer | Abramo Bagnara <abramo.bagnara@gmail.com> | 2011-11-16 22:46:05 +0000 |
commit | b0cf2976545857059cf9d305965e54932436bd1a (patch) | |
tree | 4d549685ba18b87bad4f2b3a403ed6fed492d5f2 /clang/lib/Sema/SemaInit.cpp | |
parent | b31abde0f3688e2a8080e7af45af85ee58dd22f3 (diff) | |
download | bcm5719-llvm-b0cf2976545857059cf9d305965e54932436bd1a.tar.gz bcm5719-llvm-b0cf2976545857059cf9d305965e54932436bd1a.zip |
Added missing ImplicitCastExpr around conversion operator call.
llvm-svn: 144850
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 3f91bb53e88..1a8231876be 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -4676,9 +4676,9 @@ InitializationSequence::Perform(Sema &S, } bool RequiresCopy = !IsCopy && !isReferenceBinding(Steps.back()); - if (RequiresCopy || shouldBindAsTemporary(Entity)) - CurInit = S.MaybeBindToTemporary(CurInit.takeAs<Expr>()); - else if (CreatedObject && shouldDestroyTemporary(Entity)) { + bool MaybeBindToTemp = RequiresCopy || shouldBindAsTemporary(Entity); + + if (!MaybeBindToTemp && CreatedObject && shouldDestroyTemporary(Entity)) { QualType T = CurInit.get()->getType(); if (const RecordType *Record = T->getAs<RecordType>()) { CXXDestructorDecl *Destructor @@ -4694,11 +4694,11 @@ InitializationSequence::Perform(Sema &S, CurInit.get()->getType(), CastKind, CurInit.get(), 0, CurInit.get()->getValueKind())); - + if (MaybeBindToTemp) + CurInit = S.MaybeBindToTemporary(CurInit.takeAs<Expr>()); if (RequiresCopy) CurInit = CopyObject(S, Entity.getType().getNonReferenceType(), Entity, move(CurInit), /*IsExtraneousCopy=*/false); - break; } |