diff options
author | Pete Cooper <peter_cooper@apple.com> | 2018-12-18 20:33:00 +0000 |
---|---|---|
committer | Pete Cooper <peter_cooper@apple.com> | 2018-12-18 20:33:00 +0000 |
commit | 2cd3596b1a48a3ff007f58f933e77442caeec746 (patch) | |
tree | 3d97406966339ee15d714a06df59b69b65e9b7d6 /clang/test/CodeGenObjC/arc-literals.m | |
parent | be4f5711073613115c036206db0d9a45fd0632ab (diff) | |
download | bcm5719-llvm-2cd3596b1a48a3ff007f58f933e77442caeec746.tar.gz bcm5719-llvm-2cd3596b1a48a3ff007f58f933e77442caeec746.zip |
Generate objc intrinsics instead of runtime calls as the ARC optimizer now works only on intrinsics
Differential Revision: https://reviews.llvm.org/D55802
Reviewers: rjmccall
llvm-svn: 349535
Diffstat (limited to 'clang/test/CodeGenObjC/arc-literals.m')
-rw-r--r-- | clang/test/CodeGenObjC/arc-literals.m | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/clang/test/CodeGenObjC/arc-literals.m b/clang/test/CodeGenObjC/arc-literals.m index 74e231c765b..3953787ea57 100644 --- a/clang/test/CodeGenObjC/arc-literals.m +++ b/clang/test/CodeGenObjC/arc-literals.m @@ -15,24 +15,24 @@ // CHECK-LABEL: define void @test_numeric() void test_numeric() { // CHECK: {{call.*objc_msgSend.*i32 17}} - // CHECK: call i8* @objc_retainAutoreleasedReturnValue + // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue id ilit = @17; // CHECK: {{call.*objc_msgSend.*i32 25}} - // CHECK: call i8* @objc_retainAutoreleasedReturnValue + // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue id ulit = @25u; // CHECK: {{call.*objc_msgSend.*i64 42}} - // CHECK: call i8* @objc_retainAutoreleasedReturnValue + // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue id ulllit = @42ull; // CHECK: {{call.*objc_msgSend.*i8 signext 97}} - // CHECK: call i8* @objc_retainAutoreleasedReturnValue + // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue id charlit = @'a'; - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK: call void @llvm.lifetime.end // CHECK-NEXT: ret void } @@ -43,8 +43,8 @@ void test_array(id a, id b) { // CHECK: [[B:%.*]] = alloca i8*, // Retaining parameters - // CHECK: call i8* @objc_retain(i8* - // CHECK: call i8* @objc_retain(i8* + // CHECK: call i8* @llvm.objc.retain(i8* + // CHECK: call i8* @llvm.objc.retain(i8* // Constructing the array // CHECK: [[T0:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[OBJECTS:%[A-Za-z0-9]+]], i64 0, i64 0 @@ -59,13 +59,13 @@ void test_array(id a, id b) { // CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8* // CHECK-NEXT: [[T2:%.*]] = bitcast [2 x i8*]* [[OBJECTS]] to i8** // CHECK-NEXT: [[T3:%.*]] = call i8* bitcast ({{.*@objc_msgSend.*}})(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i64 2) - // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]]) + // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T3]]) // CHECK: call void (...) @clang.arc.use(i8* [[V0]], i8* [[V1]]) id arr = @[a, b]; - // CHECK: call void @objc_release - // CHECK: call void @objc_release - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release + // CHECK: call void @llvm.objc.release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: ret void } @@ -77,10 +77,10 @@ void test_dictionary(id k1, id o1, id k2, id o2) { // CHECK: [[O2:%.*]] = alloca i8*, // Retaining parameters - // CHECK: call i8* @objc_retain(i8* - // CHECK: call i8* @objc_retain(i8* - // CHECK: call i8* @objc_retain(i8* - // CHECK: call i8* @objc_retain(i8* + // CHECK: call i8* @llvm.objc.retain(i8* + // CHECK: call i8* @llvm.objc.retain(i8* + // CHECK: call i8* @llvm.objc.retain(i8* + // CHECK: call i8* @llvm.objc.retain(i8* // Constructing the arrays // CHECK: [[T0:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[KEYS:%[A-Za-z0-9]+]], i64 0, i64 0 @@ -103,16 +103,16 @@ void test_dictionary(id k1, id o1, id k2, id o2) { // CHECK-NEXT: [[T2:%.*]] = bitcast [2 x i8*]* [[OBJECTS]] to i8** // CHECK-NEXT: [[T3:%.*]] = bitcast [2 x i8*]* [[KEYS]] to i8** // CHECK-NEXT: [[T4:%.*]] = call i8* bitcast ({{.*@objc_msgSend.*}})(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i8** [[T3]], i64 2) - // CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]]) + // CHECK-NEXT: [[T5:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T4]]) // CHECK-NEXT: call void (...) @clang.arc.use(i8* [[V0]], i8* [[V1]], i8* [[V2]], i8* [[V3]]) id dict = @{ k1 : o1, k2 : o2 }; - // CHECK: call void @objc_release - // CHECK: call void @objc_release - // CHECK: call void @objc_release - // CHECK: call void @objc_release - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release + // CHECK: call void @llvm.objc.release + // CHECK: call void @llvm.objc.release + // CHECK: call void @llvm.objc.release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: ret void } @@ -126,7 +126,7 @@ void test_dictionary(id k1, id o1, id k2, id o2) { // CHECK-LABEL: define void @test_property void test_property(B *b) { // Retain parameter - // CHECK: call i8* @objc_retain + // CHECK: call i8* @llvm.objc.retain // CHECK: [[T0:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[OBJECTS:%.*]], i64 0, i64 0 @@ -135,7 +135,7 @@ void test_property(B *b) { // CHECK-NEXT: [[T1:%.*]] = bitcast // CHECK-NEXT: [[T2:%.*]] = call [[B:%.*]]* bitcast ({{.*}} @objc_msgSend to {{.*}})(i8* [[T1]], i8* [[SEL]]) // CHECK-NEXT: [[T3:%.*]] = bitcast [[B]]* [[T2]] to i8* - // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]]) + // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T3]]) // CHECK-NEXT: [[V0:%.*]] = bitcast i8* [[T4]] to [[B]]* // CHECK-NEXT: [[V1:%.*]] = bitcast [[B]]* [[V0]] to i8* @@ -148,7 +148,7 @@ void test_property(B *b) { // CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8* // CHECK-NEXT: [[T2:%.*]] = bitcast [1 x i8*]* [[OBJECTS]] to i8** // CHECK-NEXT: [[T3:%.*]] = call i8* bitcast ({{.*}} @objc_msgSend to {{.*}}(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i64 1) - // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]]) + // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T3]]) // CHECK-NEXT: call void (...) @clang.arc.use(i8* [[V1]]) // CHECK-NEXT: bitcast // CHECK-NEXT: bitcast @@ -157,12 +157,12 @@ void test_property(B *b) { // Release b.prop // CHECK-NEXT: [[T0:%.*]] = bitcast [[B]]* [[V0]] to i8* - // CHECK-NEXT: call void @objc_release(i8* [[T0]]) + // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) // Destroy arr - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // Destroy b - // CHECK: call void @objc_release + // CHECK: call void @llvm.objc.release // CHECK-NEXT: ret void } |