diff options
author | John McCall <rjmccall@apple.com> | 2011-11-14 19:53:16 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2011-11-14 19:53:16 +0000 |
commit | 16de4d20e04d82761a5f52e961989335d56ace50 (patch) | |
tree | ef9fca35544418456b12169ebf37548dd306c3d4 /clang/lib/Sema/SemaExprCXX.cpp | |
parent | 319904cc7e947083efd9213e42b9c39bc35ceeae (diff) | |
download | bcm5719-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.cpp | 4 |
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 |