From 957628e97e9750d4ad8a43d06e00afb5585597ab Mon Sep 17 00:00:00 2001 From: John Holdsworth Date: Sun, 21 Jun 2020 11:27:12 +0200 Subject: [PATCH] SR-12831 workarounds to get https://github.com/johnno1962/SwiftTrace compiling on master/5.3 toolchain. --- lib/IRGen/GenType.cpp | 5 +++-- lib/Serialization/Deserialization.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/IRGen/GenType.cpp b/lib/IRGen/GenType.cpp index 7c8423d1f357b..b518a5e7cd237 100644 --- a/lib/IRGen/GenType.cpp +++ b/lib/IRGen/GenType.cpp @@ -1380,8 +1380,9 @@ TypeConverter::TypeConverter(IRGenModule &IGM) } bool error = readLegacyTypeInfo(*fs, path); - if (error) - llvm::report_fatal_error("Cannot read '" + path + "'"); +// avoids error: ":1:1: Cannot read '/usr/lib/swift/layouts-x86_64.yaml'" +// if (error) +// llvm::report_fatal_error("Cannot read '" + path + "'"); } TypeConverter::~TypeConverter() { diff --git a/lib/Serialization/Deserialization.cpp b/lib/Serialization/Deserialization.cpp index 028919584dfd6..05e288bd9f830 100644 --- a/lib/Serialization/Deserialization.cpp +++ b/lib/Serialization/Deserialization.cpp @@ -5008,7 +5008,14 @@ class TypeDeserializer { MF.fatal(); const clang::Type *clangFunctionType = nullptr; - if (clangTypeID) { + // avoids: "error: Segmentation fault: 11" (SR-12831) + // during "merge module" containing the following code: + /* + static var onEntry: @convention(c) (_ swizzle: Swizzle, _ returnAddress: UnsafeRawPointer, + _ stackPointer: UnsafeMutablePointer) -> IMP? = { + (swizzle, returnAddress, stackPointer) -> IMP? in + */ + if (clangTypeID && false) { auto loadedClangType = MF.getClangType(clangTypeID); if (!loadedClangType) return loadedClangType.takeError();