From 74fce8307c37ed2990b5ee1a8fe63e24195a4ae2 From: Dario Rexin Date: Tue, 30 Mar 2021 13:36:08 -0700 Subject: [PATCH] [IRGen] Disable pre-specialization for 32-bit ARM on Linux This is a temporary workaround for segfaults we observed in TargetMetadata, caused by invalid pointers. diff --git a/swift/lib/IRGen/IRGenModule.cpp b/swift/lib/IRGen/IRGenModule.cpp index b36302a16c0be..b1ede0772218d 100644 --- a/swift/lib/IRGen/IRGenModule.cpp +++ b/swift/lib/IRGen/IRGenModule.cpp @@ -1641,7 +1641,8 @@ bool IRGenModule::useDllStorage() { return ::useDllStorage(Triple); } bool IRGenModule::shouldPrespecializeGenericMetadata() { auto canPrespecializeTarget = - (Triple.isOSDarwin() || Triple.isTvOS() || Triple.isOSLinux()); + (Triple.isOSDarwin() || Triple.isTvOS() || + (Triple.isOSLinux() && !(Triple.isARM() && Triple.isArch32Bit()))); if (canPrespecializeTarget && isStandardLibrary()) { return true; }