Index: lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h =================================================================== --- lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h +++ lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h @@ -24,7 +24,7 @@ virtual void anchor(); public: - explicit ARMMCAsmInfoDarwin(bool IsLittleEndian_); + explicit ARMMCAsmInfoDarwin(bool IsLittleEndian_, Triple::OSType OS); }; class ARMELFMCAsmInfo : public MCAsmInfoELF { Index: lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp =================================================================== --- lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp +++ lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp @@ -17,7 +17,8 @@ void ARMMCAsmInfoDarwin::anchor() { } -ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin(bool IsLittleEndian_) { +ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin(bool IsLittleEndian_, + Triple::OSType OS) { IsLittleEndian = IsLittleEndian_; Data64bitsDirective = nullptr; @@ -29,7 +30,7 @@ SupportsDebugInformation = true; // Exceptions handling - ExceptionsType = TheTriple.isWatchOS() ? ExceptionHandling::DwarfCFI + ExceptionsType = OS == Triple::WatchOS ? ExceptionHandling::DwarfCFI : ExceptionHandling::SjLj; UseIntegratedAssembler = true; Index: lib/Target/ARM/MCTargetDesc/ARMMCTargetMachine.cpp =================================================================== --- lib/Target/ARM/MCTargetDesc/ARMMCTargetMachine.cpp +++ lib/Target/ARM/MCTargetDesc/ARMMCTargetMachine.cpp @@ -30,7 +30,7 @@ ARMMCTargetMachine::createMCAsmInfo(const MCRegisterInfo &MRI) const { MCAsmInfo *MAI; if (TheTriple.isOSDarwin() || TheTriple.isOSBinFormatMachO()) - MAI = new ARMMCAsmInfoDarwin(IsLittleEndian); + MAI = new ARMMCAsmInfoDarwin(IsLittleEndian, TheTriple.getOS()); else if (TheTriple.isWindowsMSVCEnvironment()) MAI = new ARMCOFFMCAsmInfoMicrosoft(); else if (TheTriple.isOSWindows())