summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorAbramo Bagnara <abramo.bagnara@gmail.com>2011-11-16 22:46:05 +0000
committerAbramo Bagnara <abramo.bagnara@gmail.com>2011-11-16 22:46:05 +0000
commitb0cf2976545857059cf9d305965e54932436bd1a (patch)
tree4d549685ba18b87bad4f2b3a403ed6fed492d5f2 /clang/lib/Sema/SemaInit.cpp
parentb31abde0f3688e2a8080e7af45af85ee58dd22f3 (diff)
downloadbcm5719-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.cpp10
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;
}
OpenPOWER on IntegriCloud