summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-11-14 19:53:16 +0000
committerJohn McCall <rjmccall@apple.com>2011-11-14 19:53:16 +0000
commit16de4d20e04d82761a5f52e961989335d56ace50 (patch)
treeef9fca35544418456b12169ebf37548dd306c3d4 /clang/lib/Sema/SemaExprCXX.cpp
parent319904cc7e947083efd9213e42b9c39bc35ceeae (diff)
downloadbcm5719-llvm-16de4d20e04d82761a5f52e961989335d56ace50.tar.gz
bcm5719-llvm-16de4d20e04d82761a5f52e961989335d56ace50.zip
In ARC, don't reclaim objects of Class type.
llvm-svn: 144561
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 6c533c4ed49..b4db312d6cc 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -4092,6 +4092,10 @@ ExprResult Sema::MaybeBindToTemporary(Expr *E) {
return Owned(E);
}
+ // Don't reclaim an object of Class type.
+ if (!ReturnsRetained && E->getType()->isObjCARCImplicitlyUnretainedType())
+ return Owned(E);
+
ExprNeedsCleanups = true;
CastKind ck = (ReturnsRetained ? CK_ARCConsumeObject
OpenPOWER on IntegriCloud