diff clang/test/CodeGenObjC/arc-rv-attr.m @ 236:c4bab56944e8 llvm-original

LLVM 16
author kono
date Wed, 09 Nov 2022 17:45:10 +0900
parents 79ff65ed7e25
children 1f2b6ac9f198
line wrap: on
line diff
--- a/clang/test/CodeGenObjC/arc-rv-attr.m	Wed Jul 21 10:27:27 2021 +0900
+++ b/clang/test/CodeGenObjC/arc-rv-attr.m	Wed Nov 09 17:45:10 2022 +0900
@@ -1,16 +1,17 @@
-// 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 -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
 
 @class A;
 
 A *makeA(void);
 
-void test_assign() {
+void test_assign(void) {
   __unsafe_unretained id x;
   x = makeA();
 }
 // CHECK-LABEL: define{{.*}} void @test_assign()
 // CHECK:         [[X:%.*]] = alloca i8*
-// CHECK:         [[T0:%.*]] = call [[A:.*]]* @makeA() [ "clang.arc.attachedcall"(i64 1) ]
+// CHECK:         [[T0:%.*]] = call [[A:.*]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -18,14 +19,14 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_assign_assign() {
+void test_assign_assign(void) {
   __unsafe_unretained id x, y;
   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"(i64 1) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -36,7 +37,7 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_strong_assign_assign() {
+void test_strong_assign_assign(void) {
   __strong id x;
   __unsafe_unretained id y;
   x = y = makeA();
@@ -44,7 +45,7 @@
 // CHECK-LABEL: define{{.*}} void @test_strong_assign_assign()
 // CHECK:         [[X:%.*]] = alloca i8*
 // CHECK:         [[Y:%.*]] = alloca i8*
-// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i64 0) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -59,7 +60,7 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_assign_strong_assign() {
+void test_assign_strong_assign(void) {
   __unsafe_unretained id x;
   __strong id y;
   x = y = makeA();
@@ -67,7 +68,7 @@
 // CHECK-LABEL: define{{.*}} void @test_assign_strong_assign()
 // CHECK:         [[X:%.*]] = alloca i8*
 // CHECK:         [[Y:%.*]] = alloca i8*
-// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i64 0) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -82,12 +83,12 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_init() {
+void test_init(void) {
   __unsafe_unretained id x = makeA();
 }
 // CHECK-LABEL: define{{.*}} void @test_init()
 // CHECK:         [[X:%.*]] = alloca i8*
-// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i64 1) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -95,14 +96,14 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_init_assignment() {
+void test_init_assignment(void) {
   __unsafe_unretained id x;
   __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"(i64 1) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -113,14 +114,14 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_strong_init_assignment() {
+void test_strong_init_assignment(void) {
   __unsafe_unretained id x;
   __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"(i64 0) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -133,14 +134,14 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_init_strong_assignment() {
+void test_init_strong_assignment(void) {
   __strong id x;
   __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"(i64 0) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @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]]
@@ -155,19 +156,19 @@
 // CHECK-NEXT:    lifetime.end
 // CHECK-NEXT:    ret void
 
-void test_ignored() {
+void test_ignored(void) {
   makeA();
 }
 // CHECK-LABEL: define{{.*}} void @test_ignored()
-// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i64 1) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ]
 // CHECK-NEXT:    call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]])
 // CHECK-NEXT:    ret void
 
-void test_cast_to_void() {
+void test_cast_to_void(void) {
   (void) makeA();
 }
 // CHECK-LABEL: define{{.*}} void @test_cast_to_void()
-// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i64 1) ]
+// CHECK:         [[T0:%.*]] = call [[A]]* @makeA() [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.unsafeClaimAutoreleasedReturnValue) ]
 // CHECK-NEXT:    call void (...) @llvm.objc.clang.arc.noop.use({{.*}} [[T0]])
 // CHECK-NEXT:    ret void