arc-related-result-type.m [plain text]
// RUN:
@interface Test0
- (id) self;
@end
void test0(Test0 *val) {
Test0 *x = [val self];
// CHECK: define void @test0(
// CHECK: [[VAL:// CHECK-NEXT: [[X:// CHECK-NEXT: bitcast
// CHECK-NEXT: call i8* @objc_retain(
// CHECK-NEXT: bitcast
// CHECK-NEXT: store
// CHECK-NEXT: load [[TEST0]]** [[VAL]],
// CHECK-NEXT: load
// CHECK-NEXT: bitcast
// CHECK-NEXT: [[T0:// CHECK-NEXT: [[T1:// CHECK-NEXT: [[T2:// CHECK-NEXT: store [[TEST0]]* [[T2]], [[TEST0]]** [[X]]
// CHECK-NEXT: [[T0:// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)
// CHECK-NEXT: [[T0:// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)
// CHECK-NEXT: ret void
}