brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 03e810e Raw
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