summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-10-01 10:32:24 +0000
committerJohn McCall <rjmccall@apple.com>2011-10-01 10:32:24 +0000
commit248512a573d6333c40d3fc99fe325960e11e060e (patch)
treedb6684e0d40d6ec5409b52923e2ae77ab344b56c /clang/test
parenta55902bf98a4a0b5929ddd80c4ed8fffb2eb2af3 (diff)
downloadbcm5719-llvm-248512a573d6333c40d3fc99fe325960e11e060e.tar.gz
bcm5719-llvm-248512a573d6333c40d3fc99fe325960e11e060e.zip
When performing an @throw in ARC, retain + autorelease
the pointer, being sure to do so before running cleanups associated with that full-expression. rdar://10042689 llvm-svn: 140945
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenObjC/arc-with-atthrow.m22
1 files changed, 12 insertions, 10 deletions
diff --git a/clang/test/CodeGenObjC/arc-with-atthrow.m b/clang/test/CodeGenObjC/arc-with-atthrow.m
index 984bf5582ed..e25ef3e3a08 100644
--- a/clang/test/CodeGenObjC/arc-with-atthrow.m
+++ b/clang/test/CodeGenObjC/arc-with-atthrow.m
@@ -1,15 +1,17 @@
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fobjc-nonfragile-abi -fobjc-exceptions -o - %s | FileCheck %s
// pr10411
+// rdar://10042689
-@interface NSException
-+ (id)exception;
-@end
-
-void test()
-{
- @throw [NSException exception];
+id make(void);
+void test() {
+ @throw make();
}
-// CHECK: objc_retainAutoreleasedReturnValue
-// CHECK: call void @objc_release
-// CHECK: call void @objc_exception_throw
+// TODO: We should probably emit this specific pattern without the reclaim.
+
+// CHECK: define void @test()
+// CHECK: [[T0:%.*]] = call i8* @make()
+// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
+// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_autorelease(i8* [[T1]])
+// CHECK-NEXT: call void @objc_exception_throw(i8* [[T2]]) noreturn
+// CHECK-NEXT: unreachable
OpenPOWER on IntegriCloud