1
- // RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
1
+ // RUN: rm -rf %t && mkdir -p %t
2
+ // -- Convert <i32 0x...> constants to decimal constants that LLVM will print
3
+ // RUN: %utils/chex.py < %s > %t/keypaths.sil
4
+ // RUN: %target-swift-frontend -emit-ir %s | %FileCheck %t/keypaths.sil --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
2
5
3
6
sil_stage canonical
4
7
import Swift
@@ -27,8 +30,8 @@ sil_vtable C {}
27
30
// CHECK-SAME: [[WORD]] 0,
28
31
// CHECK-SAME: %swift.type* (i8*)*
29
32
// CHECK-SAME: %swift.type* (i8*)*
30
- // -- 0x8000_0004 - instantiable in-line, size 4
31
- // CHECK-SAME: i32 -2147483644 ,
33
+ // -- instantiable in-line, size 4
34
+ // CHECK-SAME: < i32 0x8000_0004> ,
32
35
// CHECK-64-SAME: [4 x i8] zeroinitializer,
33
36
// -- offset of S.x
34
37
// CHECK-SAME: i32 0 }>
@@ -38,8 +41,8 @@ sil_vtable C {}
38
41
// CHECK-SAME: [[WORD]] 0,
39
42
// CHECK-SAME: %swift.type* (i8*)*
40
43
// CHECK-SAME: %swift.type* (i8*)*
41
- // -- 0x8000_0004 - instantiable in-line, size 4
42
- // CHECK-SAME: i32 -2147483644 ,
44
+ // -- instantiable in-line, size 4
45
+ // CHECK-SAME: < i32 0x8000_0004> ,
43
46
// CHECK-64-SAME: [4 x i8] zeroinitializer,
44
47
// -- offset of S.y
45
48
// CHECK-32-SAME: i32 4 }>
@@ -50,8 +53,8 @@ sil_vtable C {}
50
53
// CHECK-SAME: [[WORD]] 0,
51
54
// CHECK-SAME: %swift.type* (i8*)*
52
55
// CHECK-SAME: %swift.type* (i8*)*
53
- // -- 0x8000_0004 - instantiable in-line, size 4
54
- // CHECK-SAME: i32 -2147483644 ,
56
+ // -- instantiable in-line, size 4
57
+ // CHECK-SAME: < i32 0x8000_0004> ,
55
58
// CHECK-64-SAME: [4 x i8] zeroinitializer,
56
59
// -- offset of S.z
57
60
// CHECK-32-SAME: i32 16 }>
@@ -62,69 +65,69 @@ sil_vtable C {}
62
65
// CHECK-SAME: [[WORD]] 0,
63
66
// CHECK-SAME: %swift.type* (i8*)*
64
67
// CHECK-SAME: %swift.type* (i8*)*
65
- // -- 0x8000_0004 - instantiable in-line, size 4
66
- // CHECK-SAME: i32 -2147483644 ,
68
+ // -- instantiable in-line, size 4
69
+ // CHECK-SAME: < i32 0x8000_0004> ,
67
70
// CHECK-64-SAME: [4 x i8] zeroinitializer,
68
71
// -- 0x4000_0000 (class) + offset of C.x
69
- // CHECK-32-SAME: i32 1073741836 }>
70
- // CHECK-64-SAME: i32 1073741840 }>
72
+ // CHECK-32-SAME: < i32 0x4000_000c> }>
73
+ // CHECK-64-SAME: < i32 0x4000_0010> }>
71
74
72
75
// -- %e: C.y
73
76
// CHECK: [[KP_E:@keypath.*]] = private global <{ {{.*}} }> <{
74
77
// CHECK-SAME: [[WORD]] 0,
75
78
// CHECK-SAME: %swift.type* (i8*)*
76
79
// CHECK-SAME: %swift.type* (i8*)*
77
- // -- 0x8000_0004 - instantiable in-line, size 4
78
- // CHECK-SAME: i32 -2147483644 ,
80
+ // -- instantiable in-line, size 4
81
+ // CHECK-SAME: < i32 0x8000_0004> ,
79
82
// CHECK-64-SAME: [4 x i8] zeroinitializer,
80
83
// -- 0x4000_0000 (class) + offset of C.y
81
- // CHECK-32-SAME: i32 1073741840 }>
82
- // CHECK-64-SAME: i32 1073741848 }>
84
+ // CHECK-32-SAME: < i32 0x4000_0010> }>
85
+ // CHECK-64-SAME: < i32 0x4000_0018> }>
83
86
84
87
// -- %f: C.z
85
88
// CHECK: [[KP_F:@keypath.*]] = private global <{ {{.*}} }> <{
86
89
// CHECK-SAME: [[WORD]] 0,
87
90
// CHECK-SAME: %swift.type* (i8*)*
88
91
// CHECK-SAME: %swift.type* (i8*)*
89
- // -- 0x8000_0004 - instantiable in-line, size 4
90
- // CHECK-SAME: i32 -2147483644 ,
92
+ // -- instantiable in-line, size 4
93
+ // CHECK-SAME: < i32 0x8000_0004> ,
91
94
// CHECK-64-SAME: [4 x i8] zeroinitializer,
92
95
// -- 0x4000_0000 (class) + offset of C.z
93
- // CHECK-32-SAME: i32 1073741852 }>
94
- // CHECK-64-SAME: i32 1073741872 }>
96
+ // CHECK-32-SAME: < i32 0x4000_001c> }>
97
+ // CHECK-64-SAME: < i32 0x4000_0030> }>
95
98
96
99
// -- %g: S.z.x
97
100
// CHECK: [[KP_G:@keypath.*]] = private global <{ {{.*}} }> <{
98
101
// CHECK-SAME: [[WORD]] 0,
99
102
// CHECK-SAME: %swift.type* (i8*)*
100
103
// CHECK-SAME: %swift.type* (i8*)*
101
- // -- 0x8000_000c - instantiable in-line, size 12
102
- // CHECK-32-SAME: i32 -2147483636 ,
103
- // -- 0x8000_0014 - instantiable in-line, size 16
104
- // CHECK-64-SAME: i32 -2147483628 ,
104
+ // -- instantiable in-line, size 12
105
+ // CHECK-32-SAME: < i32 0x8000_000c> ,
106
+ // -- instantiable in-line, size 20
107
+ // CHECK-64-SAME: < i32 0x8000_0014> ,
105
108
// CHECK-64-SAME: [4 x i8] zeroinitializer,
106
109
// -- offset of S.z
107
110
// CHECK-32-SAME: i32 16,
108
111
// CHECK-64-SAME: i32 32,
109
112
// CHECK-64-SAME: [4 x i8] zeroinitializer,
110
113
// CHECK: %swift.type* (i8*)*
111
114
// -- 0x4000_0000 (class) + offset of C.x
112
- // CHECK-32-SAME: i32 1073741836 }>
113
- // CHECK-64-SAME: i32 1073741840 }>
115
+ // CHECK-32-SAME: < i32 0x4000_000c> }>
116
+ // CHECK-64-SAME: < i32 0x4000_0010> }>
114
117
115
118
// -- %h: C.z.x
116
119
// CHECK: [[KP_H:@keypath.*]] = private global <{ {{.*}} }> <{
117
120
// CHECK-SAME: [[WORD]] 0,
118
121
// CHECK-SAME: %swift.type* (i8*)*
119
122
// CHECK-SAME: %swift.type* (i8*)*
120
- // -- 0x8000_000c - instantiable in-line, size 12
121
- // CHECK-32-SAME: i32 -2147483636 ,
122
- // -- 0x8000_0014 - instantiable in-line, size 16
123
- // CHECK-64-SAME: i32 -2147483628 ,
123
+ // -- instantiable in-line, size 12
124
+ // CHECK-32-SAME: < i32 0x8000_000c> ,
125
+ // -- instantiable in-line, size 20
126
+ // CHECK-64-SAME: < i32 0x8000_0014> ,
124
127
// CHECK-64-SAME: [4 x i8] zeroinitializer,
125
128
// -- 0x4000_0000 (class) + offset of C.z
126
- // CHECK-32-SAME: i32 1073741852 ,
127
- // CHECK-64-SAME: i32 1073741872 ,
129
+ // CHECK-32-SAME: < i32 0x4000_001c> ,
130
+ // CHECK-64-SAME: < i32 0x4000_0030> ,
128
131
// CHECK-64-SAME: [4 x i8] zeroinitializer,
129
132
// CHECK: %swift.type* (i8*)*
130
133
// -- offset of S.x
@@ -135,13 +138,13 @@ sil_vtable C {}
135
138
// CHECK-SAME: [[WORD]] 0,
136
139
// CHECK-SAME: %swift.type* (i8*)*
137
140
// CHECK-SAME: %swift.type* (i8*)*
138
- // -- 0x8000_0018 - instantiable in-line, size 24
139
- // CHECK-64-SAME: i32 -2147483624 ,
141
+ // -- instantiable in-line, size 24
142
+ // CHECK-64-SAME: < i32 0x8000_0018> ,
140
143
// CHECK-64-SAME: [4 x i8] zeroinitializer,
141
- // -- 0x8000_000c - instantiable in-line, size 12
142
- // CHECK-32-SAME: i32 -2147483636 ,
143
- // -- 0x2000_0000 - computed, get-only, identified by function pointer, no args
144
- // CHECK-SAME: i32 536870912 ,
144
+ // -- instantiable in-line, size 12
145
+ // CHECK-32-SAME: < i32 0x8000_000c> ,
146
+ // -- computed, get-only, identified by function pointer, no args
147
+ // CHECK-SAME: < i32 0x2000_0000> ,
145
148
// CHECK-64-SAME: [4 x i8] zeroinitializer,
146
149
// CHECK-SAME: void ()* @k_id,
147
150
// CHECK-SAME: void (%TSi*, %T8keypaths1SV*)* @k_get }>
@@ -151,13 +154,13 @@ sil_vtable C {}
151
154
// CHECK-SAME: [[WORD]] 0,
152
155
// CHECK-SAME: %swift.type* (i8*)*
153
156
// CHECK-SAME: %swift.type* (i8*)*
154
- // -- 0x8000_0020 - instantiable in-line, size 32
155
- // CHECK-64-SAME: i32 -2147483616 ,
157
+ // -- instantiable in-line, size 32
158
+ // CHECK-64-SAME: < i32 0x8000_0020> ,
156
159
// CHECK-64-SAME: [4 x i8] zeroinitializer,
157
- // -- 0x8000_0010 - instantiable in-line, size 16
158
- // CHECK-32-SAME: i32 -2147483632 ,
159
- // -- 0x2a00_0000 - computed, settable, nonmutating, identified by vtable, no args
160
- // CHECK-SAME: i32 704643072 ,
160
+ // -- instantiable in-line, size 16
161
+ // CHECK-32-SAME: < i32 0x8000_0010> ,
162
+ // -- computed, settable, nonmutating, identified by vtable, no args
163
+ // CHECK-SAME: < i32 0x2a00_0000> ,
161
164
// CHECK-64-SAME: [4 x i8] zeroinitializer,
162
165
// CHECK-SAME: [[WORD]]
163
166
// CHECK-SAME: void (%TSi*, %T8keypaths1CC**)* @l_get,
@@ -168,13 +171,13 @@ sil_vtable C {}
168
171
// CHECK-SAME: [[WORD]] 0,
169
172
// CHECK-SAME: %swift.type* (i8*)*
170
173
// CHECK-SAME: %swift.type* (i8*)*
171
- // -- 0x8000_0020 - instantiable in-line, size 32
172
- // CHECK-64-SAME: i32 -2147483616 ,
174
+ // -- instantiable in-line, size 32
175
+ // CHECK-64-SAME: < i32 0x8000_0020> ,
173
176
// CHECK-64-SAME: [4 x i8] zeroinitializer,
174
- // -- 0x8000_0010 - instantiable in-line, size 16
175
- // CHECK-32-SAME: i32 -2147483632 ,
176
- // -- 0x3c00_0000 - computed, settable, nonmutating, identified by property offset, no args
177
- // CHECK-SAME: i32 1006632960 ,
177
+ // -- instantiable in-line, size 16
178
+ // CHECK-32-SAME: < i32 0x8000_0010> ,
179
+ // -- computed, settable, nonmutating, identified by property offset, no args
180
+ // CHECK-SAME: < i32 0x3c00_0000> ,
178
181
// CHECK-64-SAME: [4 x i8] zeroinitializer,
179
182
// CHECK-SAME: [[WORD]]
180
183
// CHECK-SAME: void (%swift.function*, %T8keypaths1SV*)* @m_get,
@@ -189,8 +192,8 @@ sil_vtable C {}
189
192
// -- size 8
190
193
// CHECK-SAME: i32 8,
191
194
// CHECK-64-SAME: [4 x i8] zeroinitializer,
192
- // -- 0x1ffffffe - struct with runtime-resolved offset
193
- // CHECK-SAME: i32 536870910 ,
195
+ // -- struct with runtime-resolved offset
196
+ // CHECK-SAME: < i32 0x1ffffffe> ,
194
197
// CHECK-32-SAME: i32 12 }>
195
198
// CHECK-64-SAME: i32 24 }>
196
199
@@ -202,8 +205,8 @@ sil_vtable C {}
202
205
// -- size 8
203
206
// CHECK-SAME: i32 8,
204
207
// CHECK-64-SAME: [4 x i8] zeroinitializer,
205
- // -- 0x1ffffffe - struct with runtime-resolved offset
206
- // CHECK-SAME: i32 536870910 ,
208
+ // -- struct with runtime-resolved offset
209
+ // CHECK-SAME: < i32 0x1ffffffe> ,
207
210
// CHECK-32-SAME: i32 16 }>
208
211
// CHECK-64-SAME: i32 32 }>
209
212
0 commit comments