35 lines · plain
1// RUN: %clang_cc1 -triple arm64-apple-darwin -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s2// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s3// RUN: %clang_cc1 -triple arm64-apple-darwin -fobjc-arc -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s --check-prefixes=CHECK,ARC4// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s --check-prefixes=CHECK,ARC5 6struct stret { int x[100]; };7struct stret one = {{1}};8 9@interface Test10+(struct stret) method;11+(struct stret) methodConsuming:(id __attribute__((ns_consumed)))consumed;12@end13 14void foo(id o, id p) {15 [o method];16 // CHECK: @llvm.lifetime.start17 // CHECK: call void @objc_msgSend18 // CHECK: @llvm.lifetime.end19 // CHECK-NOT: call void @llvm.memset20 21 [o methodConsuming:p];22 // ARC: [[T0:%.*]] = icmp eq ptr23 // ARC: br i1 [[T0]]24 25 // CHECK: @llvm.lifetime.start26 // CHECK: call void @objc_msgSend27 // CHECK: @llvm.lifetime.end28 // ARC: br label29 30 // ARC: call void @llvm.objc.release31 // ARC: br label32 33 // CHECK-NOT: call void @llvm.memset34}35