1// RUN: %clang_cc1 -triple arm64-apple-darwin -S -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s 2// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -S -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s 3// RUN: %clang_cc1 -triple arm64-apple-darwin -fobjc-arc -S -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s --check-prefixes=CHECK,ARC 4// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -S -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s --check-prefixes=CHECK,ARC 5 6struct stret { int x[100]; }; 7struct stret one = {{1}}; 8 9@interface Test 10+(struct stret) method; 11+(struct stret) methodConsuming:(id __attribute__((ns_consumed)))consumed; 12@end 13 14void foo(id o, id p) { 15 [o method]; 16 // CHECK: @llvm.lifetime.start 17 // CHECK: call void bitcast {{.*}} @objc_msgSend 18 // CHECK: @llvm.lifetime.end 19 // CHECK-NOT: call void @llvm.memset 20 21 [o methodConsuming:p]; 22 // ARC: [[T0:%.*]] = icmp eq i8* 23 // ARC: br i1 [[T0]] 24 25 // CHECK: @llvm.lifetime.start 26 // CHECK: call void bitcast {{.*}} @objc_msgSend 27 // CHECK: @llvm.lifetime.end 28 // ARC: br label 29 30 // ARC: call void @llvm.objc.release 31 // ARC: br label 32 33 // CHECK-NOT: call void @llvm.memset 34} 35