Skip to content

Commit 1980da9

Browse files
Merge pull request #66812 from aschwaighofer/fix_some_opaque_ptr_tests_03
Fix some opaque pointer LLVM IR tests (3)
2 parents 4f4d014 + 52961c9 commit 1980da9

File tree

197 files changed

+3007
-3811
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

197 files changed

+3007
-3811
lines changed

test/IRGen/TestABIInaccessible.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -disable-type-layout -module-name main -I %t -emit-ir -primary-file %s %S/Inputs/ABIInaccessible.swift | %FileCheck %s
2-
// RUN: %target-swift-frontend -disable-type-layout -module-name main -I %t -emit-ir -primary-file %s %S/Inputs/ABIInaccessible.swift
1+
// RUN: %target-swift-frontend -disable-type-layout -module-name main -I %t -emit-ir -primary-file %s %S/Inputs/ABIInaccessible.swift | %FileCheck %s
32

43
public struct AnotherType<T> {
54
init(_ t: T) {
@@ -9,12 +8,12 @@ public struct AnotherType<T> {
98
}
109

1110
// Don't pass the metadata of Private<T> to AnotherType<T>'s outlined destroy.
12-
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @"$s4main4copyyAA11AnotherTypeVyxGAElF"(%swift.opaque* noalias nocapture sret({{.*}}) %0, %T4main11AnotherTypeV* noalias nocapture %1, %swift.type* %T)
13-
// CHECK: [[MD:%.*]] = call swiftcc %swift.metadata_response @"$s4main11AnotherTypeVMa"(i{{.*}} 0, %swift.type* %T)
11+
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @"$s4main4copyyAA11AnotherTypeVyxGAElF"(ptr noalias nocapture sret({{.*}}) %0, ptr noalias nocapture %1, ptr %T)
12+
// CHECK: [[MD:%.*]] = call swiftcc %swift.metadata_response @"$s4main11AnotherTypeVMa"(i{{.*}} 0, ptr %T)
1413
// CHECK: [[MD1:%.*]] = extractvalue %swift.metadata_response [[MD]], 0
15-
// CHECK: [[MD2:%.*]] = call swiftcc %swift.metadata_response @"$s4main6PublicVMa"(i{{.*}} 0, %swift.type* %T)
14+
// CHECK: [[MD2:%.*]] = call swiftcc %swift.metadata_response @"$s4main6PublicVMa"(i{{.*}} 0, ptr %T)
1615
// CHECK: [[MD3:%.*]] = extractvalue %swift.metadata_response [[MD2]], 0
17-
// CHECK: call %T4main11AnotherTypeV* @"$s4main11AnotherTypeVyxGlWOc"(%T4main11AnotherTypeV* %1, %T4main11AnotherTypeV* {{.*}}, %swift.type* %T, %swift.type* [[MD3]], %swift.type* [[MD1]])
16+
// CHECK: call ptr @"$s4main11AnotherTypeVyxGlWOc"(ptr %1, ptr {{.*}}, ptr %T, ptr [[MD3]], ptr [[MD1]])
1817
public func copy<T>(_ a: AnotherType<T>) -> AnotherType<T> {
1918
let copy = a
2019
return copy

test/IRGen/UseObjCMethod.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -import-objc-header %S/Inputs/StaticInline.h %s -emit-ir | %FileCheck %s
2-
// RUN: %target-swift-frontend -import-objc-header %S/Inputs/StaticInline.h %s -emit-ir
1+
// RUN: %target-swift-frontend -import-objc-header %S/Inputs/StaticInline.h %s -emit-ir | %FileCheck %s
32

43
// REQUIRES: objc_interop
54
import Foundation
@@ -24,5 +23,5 @@ testDemo()
2423

2524
// Make sure the clang importer puts the selectors and co into the llvm.compiler used variable.
2625

27-
// CHECK: @llvm.compiler.used = appending global [{{.*}} x i8*] [{{.*}} @"OBJC_CLASSLIST_REFERENCES_$_"{{.*}}@OBJC_METH_VAR_NAME_{{.*}}@OBJC_SELECTOR_REFERENCES_{{.*}}@OBJC_METH_VAR_NAME_.{{.*}}@OBJC_SELECTOR_REFERENCES_.{{.*}}]
26+
// CHECK: @llvm.compiler.used = appending global [{{.*}} x ptr] [{{.*}} @"OBJC_CLASSLIST_REFERENCES_$_"{{.*}}@OBJC_METH_VAR_NAME_{{.*}}@OBJC_SELECTOR_REFERENCES_{{.*}}@OBJC_METH_VAR_NAME_.{{.*}}@OBJC_SELECTOR_REFERENCES_.{{.*}}]
2827

test/IRGen/abitypes.swift

Lines changed: 246 additions & 275 deletions
Large diffs are not rendered by default.

test/IRGen/access_markers.sil

Lines changed: 31 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -swift-version 4 -enforce-exclusivity=checked %s -emit-ir | %FileCheck %s --check-prefix=CHECK
2-
// RUN: %target-swift-frontend -swift-version 4 -enforce-exclusivity=checked %s -emit-ir
1+
// RUN: %target-swift-frontend -swift-version 4 -enforce-exclusivity=checked %s -emit-ir | %FileCheck %s --check-prefix=CHECK
32

43
sil_stage canonical
54

@@ -27,37 +26,31 @@ bb0(%0 : @guaranteed $A):
2726
// CHECK: [[SCRATCH1:%.*]] = alloca [[BUFFER:.* x i8.]], align
2827
// CHECK: [[SCRATCH2:%.*]] = alloca [[BUFFER]], align
2928

30-
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
29+
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
3130
%2 = ref_element_addr %0 : $A, #A.property
3231

33-
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH1]] to i8*
34-
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 {{.*}}, i8* [[T0]])
35-
// CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
36-
// CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH1]], [[SIZE:i(32|64)]] 33, i8* null)
32+
// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 {{.*}}, ptr [[SCRATCH1]])
33+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH1]], [[SIZE:i(32|64)]] 33, ptr null)
3734
%3 = begin_access [modify] [dynamic] %2 : $*Int64
3835

39-
// CHECK-NEXT: getelementptr inbounds %Ts5Int64V, %Ts5Int64V* [[PROPERTY]], i32 0, i32 0
40-
// CHECK-NEXT: load i64, i64*
36+
// CHECK-NEXT: getelementptr inbounds %Ts5Int64V, ptr [[PROPERTY]], i32 0, i32 0
37+
// CHECK-NEXT: load i64, ptr
4138
%4 = load [trivial] %3 : $*Int64
4239

43-
// CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH1]])
44-
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH1]] to i8*
45-
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 {{.*}}, i8* [[T0]])
40+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH1]])
41+
// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 {{.*}}, ptr [[SCRATCH1]])
4642
end_access %3 : $*Int64
4743

48-
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH2]] to i8*
49-
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 {{.*}}, i8* [[T0]])
50-
// CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
51-
// CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH2]], [[SIZE]] 32, i8* null)
44+
// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 {{.*}}, ptr [[SCRATCH2]])
45+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH2]], [[SIZE]] 32, ptr null)
5246
%6 = begin_access [read] [dynamic] %2 : $*Int64
5347

54-
// CHECK-NEXT: getelementptr inbounds %Ts5Int64V, %Ts5Int64V* [[PROPERTY]], i32 0, i32 0
55-
// CHECK-NEXT: load i64, i64*
48+
// CHECK-NEXT: getelementptr inbounds %Ts5Int64V, ptr [[PROPERTY]], i32 0, i32 0
49+
// CHECK-NEXT: load i64, ptr
5650
%7 = load [trivial] %6 : $*Int64
5751

58-
// CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH2]])
59-
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH2]] to i8*
60-
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 {{.*}}, i8* [[T0]])
52+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH2]])
53+
// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 {{.*}}, ptr [[SCRATCH2]])
6154
end_access %6 : $*Int64
6255

6356
apply %func(%4, %7) : $@convention(thin) (Int64, Int64) -> ()
@@ -72,21 +65,19 @@ bb0(%0 : $A):
7265
// CHECK: [[SCRATCH:%.*]] = alloca [[BUFFER:.* x i8.]], align
7366
%1 = alloc_stack $Builtin.UnsafeValueBuffer
7467

75-
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
68+
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
7669
%2 = ref_element_addr %0 : $A, #A.property
7770

78-
// CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
79-
// CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH]], [[SIZE]] 33, i8* null)
71+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 33, ptr null)
8072
begin_unpaired_access [modify] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
8173

82-
// CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
74+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
8375
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
8476

85-
// CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
86-
// CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH]], [[SIZE]] 32, i8* null)
77+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 32, ptr null)
8778
begin_unpaired_access [read] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
8879

89-
// CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
80+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
9081
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
9182

9283
dealloc_stack %1 : $*Builtin.UnsafeValueBuffer
@@ -98,23 +89,21 @@ bb0(%0 : $A):
9889
// CHECK-LABEL: define {{.*}}void @testUnpairedExternal(
9990
sil @testUnpairedExternal : $(@guaranteed A, @inout Builtin.UnsafeValueBuffer) -> () {
10091
bb0(%0 : $A, %1 : $*Builtin.UnsafeValueBuffer):
101-
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
92+
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
10293
%2 = ref_element_addr %0 : $A, #A.property
10394

104-
// CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
105-
// CHECK-NEXT: [[PC:%.*]] = call i8* @llvm.returnaddress(i32 0)
106-
// CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH:%1]], [[SIZE]] 33, i8* [[PC]])
95+
// CHECK-NEXT: [[PC:%.*]] = call ptr @llvm.returnaddress(i32 0)
96+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH:%1]], [[SIZE]] 33, ptr [[PC]])
10797
begin_unpaired_access [modify] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
10898

109-
// CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
99+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
110100
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
111101

112-
// CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
113-
// CHECK-NEXT: [[PC:%.*]] = call i8* @llvm.returnaddress(i32 0)
114-
// CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH]], [[SIZE]] 32, i8* [[PC]])
102+
// CHECK-NEXT: [[PC:%.*]] = call ptr @llvm.returnaddress(i32 0)
103+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 32, ptr [[PC]])
115104
begin_unpaired_access [read] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
116105

117-
// CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
106+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
118107
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
119108

120109
%20 = tuple ()
@@ -130,13 +119,13 @@ sil @testPairedBox : $(@guaranteed { var () }) -> () {
130119
bb0(%0 : ${ var () }):
131120
// CHECK: entry:
132121
%2 = project_box %0 : ${ var () }, 0
133-
// CHECK-NEXT: call {{.*}}void @writeEmptyTuple(%swift.opaque* nocapture undef)
122+
// CHECK-NEXT: call {{.*}}void @writeEmptyTuple(ptr nocapture undef)
134123
%3 = begin_access [modify] [dynamic] %2 : $*()
135124
%write_fn = function_ref @writeEmptyTuple : $@convention(thin) (@inout ()) -> ()
136125
apply %write_fn(%3) : $@convention(thin) (@inout ()) -> ()
137126
end_access %3 : $*()
138127

139-
// CHECK-NEXT: call {{.*}}void @readEmptyTuple(%swift.opaque* noalias nocapture undef)
128+
// CHECK-NEXT: call {{.*}}void @readEmptyTuple(ptr noalias nocapture undef)
140129
%5 = begin_access [read] [dynamic] %2 : $*()
141130
%read_fn = function_ref @readEmptyTuple : $@convention(thin) (@in_guaranteed ()) -> ()
142131
apply %read_fn(%5) : $@convention(thin) (@in_guaranteed ()) -> ()
@@ -166,15 +155,15 @@ bb0(%0 : $A):
166155
sil @testNontracking : $(@guaranteed A) -> () {
167156
bb0(%0 : $A):
168157
%1 = alloc_stack $Int64
169-
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
158+
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
170159
%2 = ref_element_addr %0 : $A, #A.property
171-
// CHECK: call void @swift_beginAccess(i8* %{{.*}}, [[BUFFER]]* %{{.*}}, [[SIZE]] 0, i8* null)
160+
// CHECK: call void @swift_beginAccess(ptr %{{.*}}, ptr %{{.*}}, [[SIZE]] 0, ptr null)
172161
%3 = begin_access [read] [dynamic] [no_nested_conflict] %2 : $*Int64
173162
copy_addr %3 to [init] %1 : $*Int64
174163
// CHECK-NOT: end_access
175164
end_access %3 : $*Int64
176165
%9 = alloc_stack $Builtin.UnsafeValueBuffer
177-
// CHECK: call void @swift_beginAccess(i8* %{{.*}}, [[BUFFER]]* %{{.*}}, [[SIZE]] 0, i8* null)
166+
// CHECK: call void @swift_beginAccess(ptr %{{.*}}, ptr %{{.*}}, [[SIZE]] 0, ptr null)
178167
begin_unpaired_access [read] [dynamic] [no_nested_conflict] %2 : $*Int64, %9 : $*Builtin.UnsafeValueBuffer
179168
copy_addr %2 to %1 : $*Int64
180169
dealloc_stack %9 : $*Builtin.UnsafeValueBuffer

test/IRGen/access_type_metadata_by_mangled_name.swift

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -emit-ir -parse-stdlib %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-endian
2-
// RUN: %target-swift-frontend %use_no_opaque_pointers -emit-ir -disable-concrete-type-metadata-mangled-name-accessors -parse-stdlib %s | %FileCheck %s --check-prefix=DISABLED
3-
// RUN: %target-swift-frontend -emit-ir -parse-stdlib %s
4-
// RUN: %target-swift-frontend -emit-ir -disable-concrete-type-metadata-mangled-name-accessors -parse-stdlib %s
1+
// RUN: %target-swift-frontend -emit-ir -parse-stdlib %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-endian
2+
// RUN: %target-swift-frontend -emit-ir -disable-concrete-type-metadata-mangled-name-accessors -parse-stdlib %s | %FileCheck %s --check-prefix=DISABLED
53

64
// DISABLED-NOT: __swift_instantiateConcreteTypeFromMangledName
75
// DISABLED-NOT: MD" = {{.*}} global
@@ -43,15 +41,15 @@ protocol Proto {}
4341
public func test() -> Builtin.AnyObject {
4442
var x: Builtin.AnyObject
4543

46-
// CHECK: call %swift.type* @__swift_instantiateConcreteTypeFromMangledName({ i32, i32 }* @"$s36access_type_metadata_by_mangled_name3FooCyAA3BarCyAA3ZimCyAA4ZangCGGGMD")
44+
// CHECK: call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$s36access_type_metadata_by_mangled_name3FooCyAA3BarCyAA3ZimCyAA4ZangCGGGMD")
4745
x = Foo<Bar<Zim<Zang>>>()
48-
// CHECK: call %swift.type* @__swift_instantiateConcreteTypeFromMangledName({ i32, i32 }* @"$s36access_type_metadata_by_mangled_name3FooC16NestedNonGenericCyAA4ZangC_GMD")
46+
// CHECK: call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$s36access_type_metadata_by_mangled_name3FooC16NestedNonGenericCyAA4ZangC_GMD")
4947
x = Foo<Zang>.NestedNonGeneric()
50-
// CHECK: call %swift.type* @__swift_instantiateConcreteTypeFromMangledName({ i32, i32 }* @"$s36access_type_metadata_by_mangled_name3FooC13NestedGenericCyAA4ZangC_AGGMD")
48+
// CHECK: call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$s36access_type_metadata_by_mangled_name3FooC13NestedGenericCyAA4ZangC_AGGMD")
5149
x = Foo<Zang>.NestedGeneric<Zang>()
52-
// CHECK: call %swift.type* @__swift_instantiateConcreteTypeFromMangledName({ i32, i32 }* @"$s36access_type_metadata_by_mangled_name4ZangC13NestedGenericCy_ACGMD")
50+
// CHECK: call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$s36access_type_metadata_by_mangled_name4ZangC13NestedGenericCy_ACGMD")
5351
x = Zang.NestedGeneric<Zang>()
54-
// CHECK: call %swift.type* @__swift_instantiateConcreteTypeFromMangledName({ i32, i32 }* @"$s36access_type_metadata_by_mangled_name3ZimCA2A4ZangCRszlE16ExtensionGenericCyAE_AEGMD")
52+
// CHECK: call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$s36access_type_metadata_by_mangled_name3ZimCA2A4ZangCRszlE16ExtensionGenericCyAE_AEGMD")
5553
x = Zim<Zang>.ExtensionGeneric<Zang>()
5654

5755
// Accessing nongeneric nominal type metadata should still go through the
@@ -66,7 +64,7 @@ public func test() -> Builtin.AnyObject {
6664

6765
// Protocols still have only existential type metadata, so it's better
6866
// to access them by mangled name.
69-
// CHECK: call %swift.type* @__swift_instantiateConcreteTypeFromMangledName({ i32, i32 }* @"$s36access_type_metadata_by_mangled_name5Proto_pMD")
67+
// CHECK: call ptr @__swift_instantiateConcreteTypeFromMangledName(ptr @"$s36access_type_metadata_by_mangled_name5Proto_pMD")
7068
var y: Any.Type = Proto.self
7169

7270
return x

test/IRGen/actor_class.swift

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -emit-ir %s -swift-version 5 -disable-availability-checking | %IRGenFileCheck %s
2-
// RUN: %target-swift-frontend -emit-ir %s -swift-version 5 -disable-availability-checking
1+
// RUN: %target-swift-frontend -emit-ir %s -swift-version 5 -disable-availability-checking | %IRGenFileCheck %s
32
// REQUIRES: concurrency
43

54

65
// CHECK: %T11actor_class7MyClassC = type <{ %swift.refcounted, %swift.defaultactor, %TSi }>
7-
// CHECK: %swift.defaultactor = type { [12 x i8*] }
6+
// CHECK: %swift.defaultactor = type { [12 x ptr] }
87

98
// CHECK-objc-LABEL: @"$s11actor_class7MyClassCMm" = global
109
// CHECK-objc-SAME: @"OBJC_METACLASS_$__TtCs12_SwiftObject{{(.ptrauth)?}}"
1110

1211
// CHECK: @"$s11actor_class7MyClassCMf" = internal global
1312
// CHECK-SAME: @"$s11actor_class7MyClassCfD{{(.ptrauth)?}}"
1413
// CHECK-objc-SAME: @"OBJC_CLASS_$__TtCs12_SwiftObject{{(.ptrauth)?}}"
15-
// CHECK-nonobjc-SAME: %swift.type* null,
14+
// CHECK-nonobjc-SAME: ptr null,
1615
// Flags: uses Swift refcounting
1716
// CHECK-SAME: i32 2,
1817
// Instance size
@@ -42,15 +41,15 @@ public actor MyClass {
4241
}
4342

4443
// CHECK-LABEL: define {{.*}}@"$s11actor_class7MyClassC1xSivg"
45-
// CHECK: [[T0:%.*]] = getelementptr inbounds %T11actor_class7MyClassC, %T11actor_class7MyClassC* %0, i32 0, i32 2
46-
// CHECK: [[T1:%.*]] = getelementptr inbounds %TSi, %TSi* [[T0]], i32 0, i32 0
47-
// CHECK: load [[INT]], [[INT]]* [[T1]], align
44+
// CHECK: [[T0:%.*]] = getelementptr inbounds %T11actor_class7MyClassC, ptr %0, i32 0, i32 2
45+
// CHECK: [[T1:%.*]] = getelementptr inbounds %TSi, ptr [[T0]], i32 0, i32 0
46+
// CHECK: load [[INT]], ptr [[T1]], align
4847

49-
// CHECK-LABEL: define {{.*}}swiftcc %T11actor_class7MyClassC* @"$s11actor_class7MyClassCACycfc"
48+
// CHECK-LABEL: define {{.*}}swiftcc ptr @"$s11actor_class7MyClassCACycfc"
5049
// CHECK: swift_defaultActor_initialize
51-
// CHECK-LABEL: ret %T11actor_class7MyClassC*
50+
// CHECK-LABEL: ret ptr
5251

53-
// CHECK-LABEL: define {{.*}}swiftcc %swift.refcounted* @"$s11actor_class7MyClassCfd"
52+
// CHECK-LABEL: define {{.*}}swiftcc ptr @"$s11actor_class7MyClassCfd"
5453
// CHECK: swift_defaultActor_destroy
5554
// CHECK-LABEL: ret
5655

@@ -67,7 +66,6 @@ public actor Exchanger<T> {
6766
// CHECK-LABEL: define{{.*}} void @"$s11actor_class9ExchangerC5valuexvg"(
6867
// Note that this is one more than the field offset vector offset from
6968
// the class descriptor, since this is the second field.
70-
// CHECK: [[T0:%.*]] = getelementptr inbounds [[INT]], [[INT]]* {{.*}}, [[INT]] [[#CLASS_METADATA_HEADER+2]]
71-
// CHECK-NEXT: [[OFFSET:%.*]] = load [[INT]], [[INT]]* [[T0]], align
72-
// CHECK-NEXT: [[T0:%.*]] = bitcast %T11actor_class9ExchangerC* %1 to i8*
73-
// CHECK-NEXT: getelementptr inbounds i8, i8* [[T0]], [[INT]] [[OFFSET]]
69+
// CHECK: [[T0:%.*]] = getelementptr inbounds [[INT]], ptr {{.*}}, [[INT]] [[#CLASS_METADATA_HEADER+2]]
70+
// CHECK-NEXT: [[OFFSET:%.*]] = load [[INT]], ptr [[T0]], align
71+
// CHECK-NEXT: getelementptr inbounds i8, ptr %1, [[INT]] [[OFFSET]]

test/IRGen/actor_class_objc.swift

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -emit-ir %s -swift-version 5 -target %target-cpu-apple-macosx12.0 | %IRGenFileCheck %s
2-
// RUN: %target-swift-frontend -emit-ir %s -swift-version 5 -target %target-cpu-apple-macosx12.0
1+
// RUN: %target-swift-frontend -emit-ir %s -swift-version 5 -target %target-cpu-apple-macosx12.0 | %IRGenFileCheck %s
32
// REQUIRES: concurrency
43
// REQUIRES: objc_interop
54
// REQUIRES: OS=macosx
65

76
import Foundation
87

98
// CHECK: %T16actor_class_objc7MyClassC = type <{ %swift.refcounted, %swift.defaultactor, %TSi }>
10-
// CHECK: %swift.defaultactor = type { [12 x i8*] }
9+
// CHECK: %swift.defaultactor = type { [12 x ptr] }
1110

1211
// CHECK-LABEL: @"OBJC_METACLASS_$__TtC16actor_class_objc7MyClass" = global
1312
// Metaclass is an instance of the root class.
14-
// CHECK-SAME: %objc_class* {{.*}}@"OBJC_METACLASS_$_SwiftNativeNSObject{{(.ptrauth)?}}"
13+
// CHECK-SAME: ptr {{.*}}@"OBJC_METACLASS_$_SwiftNativeNSObject{{(.ptrauth)?}}"
1514

1615
// CHECK: @"$s16actor_class_objc7MyClassCMf" = internal global
1716
// CHECK-SAME: @"$s16actor_class_objc7MyClassCfD{{(.ptrauth)?}}"
@@ -35,12 +34,12 @@ import Foundation
3534
}
3635

3736
// CHECK-LABEL: define {{.*}} @"$s16actor_class_objc7MyClassC1xSivg"
38-
// CHECK: [[T0:%.*]] = getelementptr inbounds %T16actor_class_objc7MyClassC, %T16actor_class_objc7MyClassC* %0, i32 0, i32 2
39-
// CHECK: [[T1:%.*]] = getelementptr inbounds %TSi, %TSi* [[T0]], i32 0, i32 0
40-
// CHECK: load [[INT]], [[INT]]* [[T1]], align
37+
// CHECK: [[T0:%.*]] = getelementptr inbounds %T16actor_class_objc7MyClassC, ptr %0, i32 0, i32 2
38+
// CHECK: [[T1:%.*]] = getelementptr inbounds %TSi, ptr [[T0]], i32 0, i32 0
39+
// CHECK: load [[INT]], ptr [[T1]], align
4140

42-
// CHECK-LABEL: define {{.*}}swiftcc %T16actor_class_objc7MyClassC* @"$s16actor_class_objc7MyClassCACycfc"
41+
// CHECK-LABEL: define {{.*}}swiftcc ptr @"$s16actor_class_objc7MyClassCACycfc"
4342
// CHECK: swift_defaultActor_initialize
44-
// CHECK-LABEL: ret %T16actor_class_objc7MyClassC*
43+
// CHECK-LABEL: ret ptr
4544

4645
// CHECK: swift_defaultActor_destroy

0 commit comments

Comments
 (0)