Mercurial > hg > CbC > CbC_llvm
diff clang/test/CodeGenObjC/arc-rv-attr.m @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | c4bab56944e8 |
children |
line wrap: on
line diff
--- a/clang/test/CodeGenObjC/arc-rv-attr.m Wed Nov 09 17:47:54 2022 +0900 +++ b/clang/test/CodeGenObjC/arc-rv-attr.m Fri Aug 18 09:04:13 2023 +0900 @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -no-opaque-pointers -triple arm64-apple-ios9 -fobjc-runtime=ios-9.0 -fobjc-arc -O -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK -// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-macosx10 -fobjc-runtime=ios-9.0 -fobjc-arc -O -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK +// RUN: %clang_cc1 -triple arm64-apple-ios9 -fobjc-runtime=ios-9.0 -fobjc-arc -O -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK +// RUN: %clang_cc1 -triple x86_64-apple-macosx10 -fobjc-runtime=ios-9.0 -fobjc-arc -O -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK @class A; @@ -10,12 +10,10 @@ x = makeA(); } // CHECK-LABEL: define{{.*}} void @test_assign() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A:.*]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: bitcast +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -24,16 +22,13 @@ x = y = makeA(); } // CHECK-LABEL: define{{.*}} void @test_assign_assign() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[Y:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[Y:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: store i8* [[T1]], i8** [[Y]] -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: bitcast +// CHECK-NEXT: store ptr [[T0]], ptr [[Y]] +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] // CHECK-NEXT: lifetime.end -// CHECK-NEXT: bitcast // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -43,20 +38,17 @@ x = y = makeA(); } // CHECK-LABEL: define{{.*}} void @test_strong_assign_assign() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[Y:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[Y:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: store i8* [[T1]], i8** [[Y]] -// CHECK-NEXT: [[OLD:%.*]] = load i8*, i8** [[X]] -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[OLD]] -// CHECK-NEXT: bitcast +// CHECK-NEXT: store ptr [[T0]], ptr [[Y]] +// CHECK-NEXT: [[OLD:%.*]] = load ptr, ptr [[X]] +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[OLD]] // CHECK-NEXT: lifetime.end -// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) -// CHECK-NEXT: bitcast +// CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -66,20 +58,17 @@ x = y = makeA(); } // CHECK-LABEL: define{{.*}} void @test_assign_strong_assign() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[Y:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[Y:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: [[OLD:%.*]] = load i8*, i8** [[Y]] -// CHECK-NEXT: store i8* [[T1]], i8** [[Y]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[OLD]] -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) -// CHECK-NEXT: bitcast +// CHECK-NEXT: [[OLD:%.*]] = load ptr, ptr [[Y]] +// CHECK-NEXT: store ptr [[T0]], ptr [[Y]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[OLD]] +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] +// CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[Y]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) // CHECK-NEXT: lifetime.end -// CHECK-NEXT: bitcast // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -87,12 +76,10 @@ __unsafe_unretained id x = makeA(); } // CHECK-LABEL: define{{.*}} void @test_init() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: bitcast +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -101,16 +88,13 @@ __unsafe_unretained id y = x = makeA(); } // CHECK-LABEL: define{{.*}} void @test_init_assignment() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[Y:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[Y:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: store i8* [[T1]], i8** [[Y]] -// CHECK-NEXT: bitcast +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] +// CHECK-NEXT: store ptr [[T0]], ptr [[Y]] // CHECK-NEXT: lifetime.end -// CHECK-NEXT: bitcast // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -119,18 +103,15 @@ __strong id y = x = makeA(); } // CHECK-LABEL: define{{.*}} void @test_strong_init_assignment() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[Y:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[Y:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: store i8* [[T1]], i8** [[Y]] -// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) -// CHECK-NEXT: bitcast +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] +// CHECK-NEXT: store ptr [[T0]], ptr [[Y]] +// CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[Y]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) // CHECK-NEXT: lifetime.end -// CHECK-NEXT: bitcast // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -139,20 +120,17 @@ __unsafe_unretained id y = x = makeA(); } // CHECK-LABEL: define{{.*}} void @test_init_strong_assignment() -// CHECK: [[X:%.*]] = alloca i8* -// CHECK: [[Y:%.*]] = alloca i8* -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ] +// CHECK: [[X:%.*]] = alloca ptr +// CHECK: [[Y:%.*]] = alloca ptr +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) -// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8* -// CHECK-NEXT: [[OLD:%.*]] = load i8*, i8** [[X]] -// CHECK-NEXT: store i8* [[T1]], i8** [[X]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[OLD]]) -// CHECK-NEXT: store i8* [[T1]], i8** [[Y]] -// CHECK-NEXT: bitcast +// CHECK-NEXT: [[OLD:%.*]] = load ptr, ptr [[X]] +// CHECK-NEXT: store ptr [[T0]], ptr [[X]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[OLD]]) +// CHECK-NEXT: store ptr [[T0]], ptr [[Y]] // CHECK-NEXT: lifetime.end -// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]] -// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) -// CHECK-NEXT: bitcast +// CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] +// CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) // CHECK-NEXT: lifetime.end // CHECK-NEXT: ret void @@ -160,7 +138,7 @@ makeA(); } // CHECK-LABEL: define{{.*}} void @test_ignored() -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) // CHECK-NEXT: ret void @@ -168,7 +146,7 @@ (void) makeA(); } // CHECK-LABEL: define{{.*}} void @test_cast_to_void() -// CHECK: [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] +// CHECK: [[T0:%.*]] = call ptr @makeA() [ "clang.arc.attachedcall"(ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]]) // CHECK-NEXT: ret void