// RUN:
@class Ety;
// These first two tests are all PR11732 / rdar://problem/10667070.
void test0_helper(void);
void test0(void) {
@try {
test0_helper();
} @catch (Ety *e) {
}
}
// CHECK: define void @test0()
// CHECK: [[E:// CHECK-NEXT: invoke void @test0_helper()
// CHECK: [[T0:// CHECK-NEXT: [[T1:// CHECK-NEXT: [[T2:// CHECK-NEXT: [[T3:// CHECK-NEXT: [[T4:// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]
// CHECK-NEXT: [[T0:// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) nounwind
// CHECK-NEXT: call void @objc_end_catch() nounwind
void test1_helper(void);
void test1(void) {
@try {
test1_helper();
} @catch (__weak Ety *e) {
}
}
// CHECK: define void @test1()
// CHECK: [[E:// CHECK-NEXT: invoke void @test1_helper()
// CHECK: [[T0:// CHECK-NEXT: [[T1:// CHECK-NEXT: [[T2:// CHECK-NEXT: [[T3:// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) nounwind
// CHECK-NEXT: [[T0:// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) nounwind
// CHECK-NEXT: call void @objc_end_catch() nounwind