1
1
// RUN: %empty-directory(%t)
2
2
// RUN: %{python} %utils/chex.py < %s > %t/generic_vtable.swift
3
- // RUN: %target-swift-frontend %use_no_opaque_pointers -enable-objc-interop %t/generic_vtable.swift -emit-ir | %FileCheck %t/generic_vtable.swift --check-prefixes=CHECK,CHECK-objc,CHECK-objc%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-import-type,CHECK-%target-abi -DINT=i%target-ptrsize
4
- // RUN: %target-swift-frontend %use_no_opaque_pointers -disable-objc-interop %t/generic_vtable.swift -emit-ir | %FileCheck %t/generic_vtable.swift --check-prefixes=CHECK,CHECK-native,CHECK-native%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-import-type,CHECK-%target-abi -DINT=i%target-ptrsize
5
- // RUN: %target-swift-frontend -enable-objc-interop %t/generic_vtable.swift -emit-ir
6
- // RUN: %target-swift-frontend -disable-objc-interop %t/generic_vtable.swift -emit-ir
3
+ // RUN: %target-swift-frontend -enable-objc-interop %t/generic_vtable.swift -emit-ir | %FileCheck %t/generic_vtable.swift --check-prefixes=CHECK,CHECK-objc,CHECK-objc%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-import-type,CHECK-%target-abi -DINT=i%target-ptrsize
4
+ // RUN: %target-swift-frontend -disable-objc-interop %t/generic_vtable.swift -emit-ir | %FileCheck %t/generic_vtable.swift --check-prefixes=CHECK,CHECK-native,CHECK-native%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-import-type,CHECK-%target-abi -DINT=i%target-ptrsize
7
5
8
6
public class Base {
9
7
public func m1( ) { }
@@ -35,9 +33,9 @@ public class Concrete : Derived<Int> {
35
33
// -- vtable size
36
34
// CHECK-SAME: i32 3,
37
35
// -- vtable entry for m1()
38
- // CHECK-SAME: void (%T14generic_vtable4BaseC*)* @"$s14generic_vtable4BaseC2m1yyF"
36
+ // CHECK-SAME: ptr @"$s14generic_vtable4BaseC2m1yyF"
39
37
// -- vtable entry for m2()
40
- // CHECK-SAME: void (%T14generic_vtable4BaseC*)* @"$s14generic_vtable4BaseC2m2yyF"
38
+ // CHECK-SAME: ptr @"$s14generic_vtable4BaseC2m2yyF"
41
39
// --
42
40
// CHECK-SAME: section "{{.*}}",{{.*}} align 4
43
41
@@ -47,13 +45,13 @@ public class Concrete : Derived<Int> {
47
45
// -- destructor
48
46
// CHECK-SAME: @"$s14generic_vtable4BaseCfD{{(.ptrauth)?}}"
49
47
// -- value witness table
50
- // CHECK-SAME: i8** {{@"\$sBoWV"|null}}
48
+ // CHECK-SAME: ptr {{@"\$sBoWV"|null}}
51
49
// -- vtable entry for 'm1()'
52
- // CHECK-SAME: void (%T14generic_vtable4BaseC*)* {{@"\$s14generic_vtable4BaseC2m1yyF"|.* @"\$s14generic_vtable4BaseC2m1yyF.ptrauth[.0-9]*"}}
50
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable4BaseC2m1yyF"|@"\$s14generic_vtable4BaseC2m1yyF.ptrauth[.0-9]*"}}
53
51
// -- vtable entry for 'm2()'
54
- // CHECK-SAME: void (%T14generic_vtable4BaseC*)* {{@"\$s14generic_vtable4BaseC2m2yyF"|.* @"\$s14generic_vtable4BaseC2m2yyF.ptrauth[.0-9]*"}}
52
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable4BaseC2m2yyF"|@"\$s14generic_vtable4BaseC2m2yyF.ptrauth[.0-9]*"}}
55
53
// -- vtable entry for 'init()'
56
- // CHECK-SAME: %T14generic_vtable4BaseC* (%swift.type*)* {{@"\$s14generic_vtable4BaseCACycfC"|.* @"\$s14generic_vtable4BaseCACycfC.ptrauth[.0-9]*"}}
54
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable4BaseCACycfC"|@"\$s14generic_vtable4BaseCACycfC.ptrauth[.0-9]*"}}
57
55
// --
58
56
// CHECK-SAME: , align
59
57
@@ -71,7 +69,7 @@ public class Concrete : Derived<Int> {
71
69
// -- vtable size
72
70
// CHECK-SAME: i32 1,
73
71
// -- vtable entry for m3()
74
- // CHECK-SAME: void (%T14generic_vtable7DerivedC*)* @"$s14generic_vtable7DerivedC2m3yyF"
72
+ // CHECK-SAME: ptr @"$s14generic_vtable7DerivedC2m3yyF"
75
73
// -- override table size
76
74
// CHECK-SAME: i32 2,
77
75
// -- override for m2()
@@ -109,7 +107,7 @@ public class Concrete : Derived<Int> {
109
107
// -- vtable size
110
108
// CHECK-SAME: i32 1,
111
109
// -- vtable entry for m4()
112
- // CHECK-SAME: void (%T14generic_vtable8ConcreteC*)* @"$s14generic_vtable8ConcreteC2m4yyF"
110
+ // CHECK-SAME: ptr @"$s14generic_vtable8ConcreteC2m4yyF"
113
111
// -- override table size
114
112
// CHECK-SAME: i32 2,
115
113
// -- override for m3()
@@ -130,59 +128,59 @@ public class Concrete : Derived<Int> {
130
128
// -- destructor
131
129
// CHECK-SAME: @"$s14generic_vtable8ConcreteCfD{{(.ptrauth)?}}"
132
130
// -- value witness table is filled in at runtime
133
- // CHECK-SAME: i8** null,
131
+ // CHECK-SAME: ptr null,
134
132
// -- nominal type descriptor
135
133
// CHECK-SAME: @"$s14generic_vtable8ConcreteCMn{{(.ptrauth)?}}"
136
134
// -- vtable entry for 'm1()'
137
- // CHECK-SAME: void (%T14generic_vtable4BaseC*)* {{@"\$s14generic_vtable4BaseC2m1yyF"|.* @"\$s14generic_vtable4BaseC2m1yyF.ptrauth[.0-9]*"}}
135
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable4BaseC2m1yyF"|@"\$s14generic_vtable4BaseC2m1yyF.ptrauth[.0-9]*"}}
138
136
// -- vtable entry for 'm2()'
139
- // CHECK-SAME: void (%T14generic_vtable7DerivedC*)* {{@"\$s14generic_vtable7DerivedC2m2yyF"|.* @"\$s14generic_vtable7DerivedC2m2yyF.ptrauth[.0-9]*"}}
137
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable7DerivedC2m2yyF"|@"\$s14generic_vtable7DerivedC2m2yyF.ptrauth[.0-9]*"}}
140
138
// -- vtable entry for 'init()'
141
- // CHECK-SAME: %T14generic_vtable8ConcreteC* (%swift.type*)* {{@"\$s14generic_vtable8ConcreteCACycfC"|.* @"\$s14generic_vtable8ConcreteCACycfC.ptrauth[.0-9]*"}}
139
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable8ConcreteCACycfC"|@"\$s14generic_vtable8ConcreteCACycfC.ptrauth[.0-9]*"}}
142
140
// -- vtable entry for 'm3()'
143
- // CHECK-SAME: void (%T14generic_vtable8ConcreteC*)* {{@"\$s14generic_vtable8ConcreteC2m3yyF"|.* @"\$s14generic_vtable8ConcreteC2m3yyF.ptrauth[.0-9]*"}}
141
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable8ConcreteC2m3yyF"|@"\$s14generic_vtable8ConcreteC2m3yyF.ptrauth[.0-9]*"}}
144
142
// -- vtable entry for 'm4()'
145
- // CHECK-SAME: void (%T14generic_vtable8ConcreteC*)* {{@"\$s14generic_vtable8ConcreteC2m4yyF"|.* @"\$s14generic_vtable8ConcreteC2m4yyF.ptrauth[.0-9]*"}}
143
+ // CHECK-SAME: ptr {{@"\$s14generic_vtable8ConcreteC2m4yyF"|@"\$s14generic_vtable8ConcreteC2m4yyF.ptrauth[.0-9]*"}}
146
144
// --
147
145
// CHECK-SAME: }>, align
148
146
149
147
150
148
//// Method descriptors
151
149
152
- // CHECK-LABEL: @"$s14generic_vtable4BaseC2m1yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>* @"$s14generic_vtable4BaseCMn", i32 0, i32 {{(13|16)}})
153
- // CHECK-LABEL: @"$s14generic_vtable4BaseC2m2yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}* @"$s14generic_vtable4BaseCMn", i32 0, i32 {{(14|17)}})
154
- // CHECK-LABEL: @"$s14generic_vtable4BaseCACycfCTq" = hidden alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}* @"$s14generic_vtable4BaseCMn", i32 0, i32 {{(15|18)}})
150
+ // CHECK-LABEL: @"$s14generic_vtable4BaseC2m1yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>, ptr @"$s14generic_vtable4BaseCMn", i32 0, i32 {{(13|16)}})
151
+ // CHECK-LABEL: @"$s14generic_vtable4BaseC2m2yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>, ptr @"$s14generic_vtable4BaseCMn", i32 0, i32 {{(14|17)}})
152
+ // CHECK-LABEL: @"$s14generic_vtable4BaseCACycfCTq" = hidden alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>, ptr @"$s14generic_vtable4BaseCMn", i32 0, i32 {{(15|18)}})
155
153
156
- // CHECK-LABEL: @"$s14generic_vtable7DerivedC2m3yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>* @"$s14generic_vtable7DerivedCMn", i32 0, i32 23)
154
+ // CHECK-LABEL: @"$s14generic_vtable7DerivedC2m3yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>, ptr @"$s14generic_vtable7DerivedCMn", i32 0, i32 23)
157
155
158
- // CHECK-LABEL: @"$s14generic_vtable8ConcreteC2m4yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>* @"$s14generic_vtable8ConcreteCMn", i32 0, i32 16)
156
+ // CHECK-LABEL: @"$s14generic_vtable8ConcreteC2m4yyFTq" ={{( dllexport)?}}{{( protected)?}} alias %swift.method_descriptor, getelementptr inbounds (<{{.*}}>, ptr @"$s14generic_vtable8ConcreteCMn", i32 0, i32 16)
159
157
160
158
161
159
//// Metadata initialization function for 'Derived' copies superclass vtable
162
160
//// and installs overrides for 'm2()' and 'init()'.
163
161
164
- // CHECK-LABEL: define internal %swift.type* @"$s14generic_vtable7DerivedCMi"(%swift.type_descriptor* %0, i8** %1, i8* %2)
162
+ // CHECK-LABEL: define internal ptr @"$s14generic_vtable7DerivedCMi"(ptr %0, ptr %1, ptr %2)
165
163
166
164
// - 2 immediate members:
167
165
// - type metadata for generic parameter T,
168
166
// - and vtable entry for 'm3()'
169
- // CHECK: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericClassMetadata(%swift.type_descriptor* {{.*}}, i8** %1, i8* %2)
170
- // CHECK: ret %swift.type* [[METADATA]]
167
+ // CHECK: [[METADATA:%.*]] = call ptr @swift_allocateGenericClassMetadata(ptr {{.*}}, ptr %1, ptr %2)
168
+ // CHECK: ret ptr [[METADATA]]
171
169
172
170
// CHECK-LABEL: define internal swiftcc %swift.metadata_response @"$s14generic_vtable7DerivedCMr"
173
- // CHECK-SAME: (%swift.type* [[METADATA:%.*]], i8* %0, i8** %1) {{.*}} {
174
- // CHECK: call swiftcc %swift.metadata_response @swift_initClassMetadata2(%swift.type* [[METADATA]], [[INT]] 0, {{.*}})
171
+ // CHECK-SAME: (ptr [[METADATA:%.*]], ptr %0, ptr %1) {{.*}} {
172
+ // CHECK: call swiftcc %swift.metadata_response @swift_initClassMetadata2(ptr [[METADATA]], [[INT]] 0, {{.*}})
175
173
176
174
// CHECK: ret %swift.metadata_response
177
175
178
176
179
177
// CHECK-LABEL: define {{(dllexport )?}}{{(protected )?}}swiftcc %swift.metadata_response @"$s14generic_vtable8ConcreteCMa"
180
- // CHECK: call swiftcc %swift.metadata_response @swift_getSingletonMetadata([[INT]] %0, %swift.type_descriptor* bitcast ({{.*}} @"$s14generic_vtable8ConcreteCMn" to {{.*}}) )
178
+ // CHECK: call swiftcc %swift.metadata_response @swift_getSingletonMetadata([[INT]] %0, ptr @"$s14generic_vtable8ConcreteCMn")
181
179
// CHECK: ret
182
180
183
181
//// Metadata response function for 'Concrete' is fairly simple.
184
182
185
- // CHECK-LABEL: define internal swiftcc %swift.metadata_response @"$s14generic_vtable8ConcreteCMr"(%swift.type* %0, i8* %1, i8** %2)
183
+ // CHECK-LABEL: define internal swiftcc %swift.metadata_response @"$s14generic_vtable8ConcreteCMr"(ptr %0, ptr %1, ptr %2)
186
184
// -- ClassLayoutFlags is 256 / 0x100, HasStaticVTable
187
- // CHECK: call swiftcc %swift.metadata_response @swift_initClassMetadata2(%swift.type* %0, [[INT]] 256, {{.*}})
185
+ // CHECK: call swiftcc %swift.metadata_response @swift_initClassMetadata2(ptr %0, [[INT]] 256, {{.*}})
188
186
// CHECK: ret %swift.metadata_response
0 commit comments