Index: lib/Basic/Targets.cpp =================================================================== --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -4874,7 +4874,7 @@ // the frontend matches that. if (Triple.getEnvironment() == llvm::Triple::EABI || Triple.getOS() == llvm::Triple::UnknownOS || - StringRef(CPU).startswith("cortex-m")) { + ArchProfile == llvm::ARM::PK_M) { setABI("aapcs"); } else if (Triple.isWatchABI()) { setABI("aapcs16"); @@ -5203,7 +5203,7 @@ if (SoftFloat) Builder.defineMacro("__SOFTFP__"); - if (CPU == "xscale") + if (ArchKind == llvm::ARM::AK_XSCALE) Builder.defineMacro("__XSCALE__"); if (isThumb()) { Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -7458,11 +7458,14 @@ void darwin::setTripleTypeForMachOArchName(llvm::Triple &T, StringRef Str) { const llvm::Triple::ArchType Arch = getArchTypeForMachOArchName(Str); + unsigned ArchKind = llvm::ARM::parseArch(Str); T.setArch(Arch); if (Str == "x86_64h") T.setArchName(Str); - else if (Str == "armv6m" || Str == "armv7m" || Str == "armv7em") { + else if (ArchKind == llvm::ARM::AK_ARMV6M || + ArchKind == llvm::ARM::AK_ARMV7M || + ArchKind == llvm::ARM::AK_ARMV7EM) { T.setOS(llvm::Triple::UnknownOS); T.setObjectFormat(llvm::Triple::MachO); }