@@ -184,7 +184,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
184
184
// CHECK-NEXT: }
185
185
// CHECK: inline int _getEnumTag() const {
186
186
// CHECK-NEXT: auto metadata = _impl::$s5Enums9CLikeEnumOMa(0);
187
- // CHECK-NEXT: auto *vwTable = *(reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1);
187
+ // CHECK-NEXT: auto *vwTableAddr = reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1;
188
+ // CHECK-NEXT: #ifdef __arm64e__
189
+ // CHECK-NEXT: auto *vwTable = reinterpret_cast<swift::_impl::ValueWitnessTable *>(ptrauth_auth_data(reinterpret_cast<void *>(*vwTableAddr), ptrauth_key_process_independent_data, ptrauth_blend_discriminator(vwTableAddr, 11839)));
190
+ // CHECK-NEXT: #else
191
+ // CHECK-NEXT: auto *vwTable = *vwTableAddr;
192
+ // CHECK-NEXT: #endif
188
193
// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
189
194
// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
190
195
// CHECK-NEXT: }
@@ -210,7 +215,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
210
215
// CHECK-NEXT: }
211
216
// CHECK: inline int _getEnumTag() const {
212
217
// CHECK-NEXT: auto metadata = _impl::$s5Enums19CharOrSectionMarkerOMa(0);
213
- // CHECK-NEXT: auto *vwTable = *(reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1);
218
+ // CHECK-NEXT: auto *vwTableAddr = reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1;
219
+ // CHECK-NEXT: #ifdef __arm64e__
220
+ // CHECK-NEXT: auto *vwTable = reinterpret_cast<swift::_impl::ValueWitnessTable *>(ptrauth_auth_data(reinterpret_cast<void *>(*vwTableAddr), ptrauth_key_process_independent_data, ptrauth_blend_discriminator(vwTableAddr, 11839)));
221
+ // CHECK-NEXT: #else
222
+ // CHECK-NEXT: auto *vwTable = *vwTableAddr;
223
+ // CHECK-NEXT: #endif
214
224
// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
215
225
// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
216
226
// CHECK-NEXT: }
@@ -228,7 +238,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
228
238
// CHECK-NEXT: }
229
239
// CHECK: inline int _getEnumTag() const {
230
240
// CHECK-NEXT: auto metadata = _impl::$s5Enums8DataCaseOMa(0);
231
- // CHECK-NEXT: auto *vwTable = *(reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1);
241
+ // CHECK-NEXT: auto *vwTableAddr = reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1;
242
+ // CHECK-NEXT: #ifdef __arm64e__
243
+ // CHECK-NEXT: auto *vwTable = reinterpret_cast<swift::_impl::ValueWitnessTable *>(ptrauth_auth_data(reinterpret_cast<void *>(*vwTableAddr), ptrauth_key_process_independent_data, ptrauth_blend_discriminator(vwTableAddr, 11839)));
244
+ // CHECK-NEXT: #else
245
+ // CHECK-NEXT: auto *vwTable = *vwTableAddr;
246
+ // CHECK-NEXT: #endif
232
247
// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
233
248
// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
234
249
// CHECK-NEXT: }
@@ -254,7 +269,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
254
269
// CHECK-NEXT: }
255
270
// CHECK: inline int _getEnumTag() const {
256
271
// CHECK-NEXT: auto metadata = _impl::$s5Enums17IntDoubleOrBignumOMa(0);
257
- // CHECK-NEXT: auto *vwTable = *(reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1);
272
+ // CHECK-NEXT: auto *vwTableAddr = reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1;
273
+ // CHECK-NEXT: #ifdef __arm64e__
274
+ // CHECK-NEXT: auto *vwTable = reinterpret_cast<swift::_impl::ValueWitnessTable *>(ptrauth_auth_data(reinterpret_cast<void *>(*vwTableAddr), ptrauth_key_process_independent_data, ptrauth_blend_discriminator(vwTableAddr, 11839)));
275
+ // CHECK-NEXT: #else
276
+ // CHECK-NEXT: auto *vwTable = *vwTableAddr;
277
+ // CHECK-NEXT: #endif
258
278
// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
259
279
// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
260
280
// CHECK-NEXT: }
@@ -280,7 +300,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
280
300
// CHECK-NEXT: }
281
301
// CHECK: inline int _getEnumTag() const {
282
302
// CHECK-NEXT: auto metadata = _impl::$s5Enums13IntOrInfinityOMa(0);
283
- // CHECK-NEXT: auto *vwTable = *(reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1);
303
+ // CHECK-NEXT: auto *vwTableAddr = reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1;
304
+ // CHECK-NEXT: #ifdef __arm64e__
305
+ // CHECK-NEXT: auto *vwTable = reinterpret_cast<swift::_impl::ValueWitnessTable *>(ptrauth_auth_data(reinterpret_cast<void *>(*vwTableAddr), ptrauth_key_process_independent_data, ptrauth_blend_discriminator(vwTableAddr, 11839)));
306
+ // CHECK-NEXT: #else
307
+ // CHECK-NEXT: auto *vwTable = *vwTableAddr;
308
+ // CHECK-NEXT: #endif
284
309
// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
285
310
// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
286
311
// CHECK-NEXT: }
@@ -318,7 +343,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
318
343
// CHECK-NEXT: }
319
344
// CHECK: inline int _getEnumTag() const {
320
345
// CHECK-NEXT: auto metadata = _impl::$s5Enums12TerminalCharOMa(0);
321
- // CHECK-NEXT: auto *vwTable = *(reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1);
346
+ // CHECK-NEXT: auto *vwTableAddr = reinterpret_cast<swift::_impl::ValueWitnessTable **>(metadata._0) - 1;
347
+ // CHECK-NEXT: #ifdef __arm64e__
348
+ // CHECK-NEXT: auto *vwTable = reinterpret_cast<swift::_impl::ValueWitnessTable *>(ptrauth_auth_data(reinterpret_cast<void *>(*vwTableAddr), ptrauth_key_process_independent_data, ptrauth_blend_discriminator(vwTableAddr, 11839)));
349
+ // CHECK-NEXT: #else
350
+ // CHECK-NEXT: auto *vwTable = *vwTableAddr;
351
+ // CHECK-NEXT: #endif
322
352
// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
323
353
// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
324
354
// CHECK-NEXT: }
0 commit comments