Index: include/llvm/ADT/Triple.h =================================================================== --- include/llvm/ADT/Triple.h +++ include/llvm/ADT/Triple.h @@ -630,6 +630,16 @@ return getArch() == Triple::nvptx || getArch() == Triple::nvptx64; } + /// Tests whether the target is Thumb (little and big endian). + bool isThumb() const { + return getArch() == Triple::thumb || getArch() == Triple::thumbeb; + } + + /// Tests whether the target is ARM (little and big endian). + bool isARM() const { + return getArch() == Triple::arm || getArch() == Triple::armeb; + } + /// Tests wether the target supports comdat bool supportsCOMDAT() const { return !isOSBinFormatMachO(); } Index: lib/MC/MCSectionELF.cpp =================================================================== --- lib/MC/MCSectionELF.cpp +++ lib/MC/MCSectionELF.cpp @@ -113,8 +113,7 @@ OS << 'c'; if (Flags & ELF::XCORE_SHF_DP_SECTION) OS << 'd'; - } else if (Arch == Triple::arm || Arch == Triple::armeb || - Arch == Triple::thumb || Arch == Triple::thumbeb) { + } else if (T.isARM() || T.isThumb()) { if (Flags & ELF::SHF_ARM_PURECODE) OS << 'y'; } Index: lib/Object/ELFObjectFile.cpp =================================================================== --- lib/Object/ELFObjectFile.cpp +++ lib/Object/ELFObjectFile.cpp @@ -260,8 +260,7 @@ std::string Triple; // Default to ARM, but use the triple if it's been set. - if (TheTriple.getArch() == Triple::thumb || - TheTriple.getArch() == Triple::thumbeb) + if (TheTriple.isThumb()) Triple = "thumb"; else Triple = "arm"; Index: lib/Target/ARM/ARMAsmPrinter.h =================================================================== --- lib/Target/ARM/ARMAsmPrinter.h +++ lib/Target/ARM/ARMAsmPrinter.h @@ -135,8 +135,7 @@ const Triple &TT = TM.getTargetTriple(); if (!TT.isOSBinFormatMachO()) return 0; - bool isThumb = TT.getArch() == Triple::thumb || - TT.getArch() == Triple::thumbeb || + bool isThumb = TT.isThumb() || TT.getSubArch() == Triple::ARMSubArch_v7m || TT.getSubArch() == Triple::ARMSubArch_v6m; return isThumb ? ARM::DW_ISA_ARM_thumb : ARM::DW_ISA_ARM_arm; Index: lib/Target/ARM/ARMAsmPrinter.cpp =================================================================== --- lib/Target/ARM/ARMAsmPrinter.cpp +++ lib/Target/ARM/ARMAsmPrinter.cpp @@ -476,11 +476,7 @@ // Use the triple's architecture and subarchitecture to determine // if we're thumb for the purposes of the top level code16 assembler // flag. - bool isThumb = TT.getArch() == Triple::thumb || - TT.getArch() == Triple::thumbeb || - TT.getSubArch() == Triple::ARMSubArch_v7m || - TT.getSubArch() == Triple::ARMSubArch_v6m; - if (!M.getModuleInlineAsm().empty() && isThumb) + if (!M.getModuleInlineAsm().empty() && TT.isThumb()) OutStreamer->EmitAssemblerFlag(MCAF_Code16); } Index: lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp =================================================================== --- lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp +++ lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp @@ -131,16 +131,13 @@ #include "ARMGenSubtargetInfo.inc" std::string ARM_MC::ParseARMTriple(const Triple &TT, StringRef CPU) { - bool isThumb = - TT.getArch() == Triple::thumb || TT.getArch() == Triple::thumbeb; - std::string ARMArchFeature; ARM::ArchKind ArchID = ARM::parseArch(TT.getArchName()); if (ArchID != ARM::ArchKind::INVALID && (CPU.empty() || CPU == "generic")) ARMArchFeature = (ARMArchFeature + "+" + ARM::getArchName(ArchID)).str(); - if (isThumb) { + if (TT.isThumb()) { if (ARMArchFeature.empty()) ARMArchFeature = "+thumb-mode"; else