@@ -184,7 +184,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
184184// CHECK-NEXT: }
185185// CHECK: inline int _getEnumTag() const {
186186// 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
188193// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
189194// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
190195// CHECK-NEXT: }
@@ -210,7 +215,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
210215// CHECK-NEXT: }
211216// CHECK: inline int _getEnumTag() const {
212217// 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
214224// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
215225// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
216226// CHECK-NEXT: }
@@ -228,7 +238,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
228238// CHECK-NEXT: }
229239// CHECK: inline int _getEnumTag() const {
230240// 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
232247// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
233248// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
234249// CHECK-NEXT: }
@@ -254,7 +269,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
254269// CHECK-NEXT: }
255270// CHECK: inline int _getEnumTag() const {
256271// 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
258278// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
259279// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
260280// CHECK-NEXT: }
@@ -280,7 +300,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
280300// CHECK-NEXT: }
281301// CHECK: inline int _getEnumTag() const {
282302// 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
284309// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
285310// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
286311// CHECK-NEXT: }
@@ -318,7 +343,12 @@ public func checkIntDoubleOrBignum(_ x: IntDoubleOrBignum, tag: Int) -> Bool {
318343// CHECK-NEXT: }
319344// CHECK: inline int _getEnumTag() const {
320345// 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
322352// CHECK-NEXT: const auto *enumVWTable = reinterpret_cast<swift::_impl::EnumValueWitnessTable *>(vwTable);
323353// CHECK-NEXT: return enumVWTable->getEnumTag(_getOpaquePointer(), metadata._0);
324354// CHECK-NEXT: }
0 commit comments