1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -o - %s | FileCheck %s 2 3@interface Test0 4- (id) self; 5@end 6void test0(Test0 *val) { 7 Test0 *x = [val self]; 8 9// CHECK-LABEL: define{{.*}} void @test0( 10// CHECK: [[VAL:%.*]] = alloca ptr 11// CHECK-NEXT: [[X:%.*]] = alloca ptr 12// CHECK-NEXT: store ptr null 13// CHECK-NEXT: call void @llvm.objc.storeStrong( 14// CHECK-NEXT: load ptr, ptr [[VAL]], 15// CHECK-NEXT: load 16// CHECK-NEXT: [[T0:%.*]] = call ptr 17// CHECK-NEXT: [[T1:%.*]] = notail call ptr @llvm.objc.retainAutoreleasedReturnValue(ptr [[T0]]) 18// CHECK-NEXT: store ptr [[T1]], ptr [[X]] 19// CHECK-NEXT: call void @llvm.objc.storeStrong(ptr [[X]], ptr null) 20// CHECK-NEXT: call void @llvm.objc.storeStrong(ptr [[VAL]], ptr null) 21// CHECK-NEXT: ret void 22} 23