diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -968,14 +968,9 @@ void CodeGenModule::EmitBackendOptionsMetadata( const CodeGenOptions CodeGenOpts) { - switch (getTriple().getArch()) { - default: - break; - case llvm::Triple::riscv32: - case llvm::Triple::riscv64: + if (getTriple().isRISCV()) { getModule().addModuleFlag(llvm::Module::Error, "SmallDataLimit", CodeGenOpts.SmallDataLimit); - break; } } diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp --- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp @@ -52,7 +52,7 @@ const llvm::opt::ArgList &Args, const llvm::opt::Arg *A, StringRef Mcpu, std::vector &Features) { - bool Is64Bit = (Triple.getArch() == llvm::Triple::riscv64); + bool Is64Bit = Triple.isRISCV64(); llvm::RISCV::CPUKind CPUKind = llvm::RISCV::parseCPUKind(Mcpu); if (!llvm::RISCV::checkCPUKind(CPUKind, Is64Bit) || !llvm::RISCV::getCPUFeaturesExceptStdExt(CPUKind, Features)) { @@ -163,9 +163,7 @@ } StringRef riscv::getRISCVABI(const ArgList &Args, const llvm::Triple &Triple) { - assert((Triple.getArch() == llvm::Triple::riscv32 || - Triple.getArch() == llvm::Triple::riscv64) && - "Unexpected triple"); + assert(Triple.isRISCV() && "Unexpected triple"); // GCC's logic around choosing a default `-mabi=` is complex. If GCC is not // configured using `--with-abi=`, then the logic for the default choice is @@ -213,7 +211,7 @@ // We deviate from GCC's defaults here: // - On `riscv{XLEN}-unknown-elf` we use the integer calling convention only. // - On all other OSs we use the double floating point calling convention. - if (Triple.getArch() == llvm::Triple::riscv32) { + if (Triple.isRISCV32()) { if (Triple.getOS() == llvm::Triple::UnknownOS) return "ilp32"; else @@ -228,9 +226,7 @@ StringRef riscv::getRISCVArch(const llvm::opt::ArgList &Args, const llvm::Triple &Triple) { - assert((Triple.getArch() == llvm::Triple::riscv32 || - Triple.getArch() == llvm::Triple::riscv64) && - "Unexpected triple"); + assert(Triple.isRISCV() && "Unexpected triple"); // GCC's logic around choosing a default `-march=` is complex. If GCC is not // configured using `--with-arch=`, then the logic for the default choice is @@ -291,7 +287,7 @@ // We deviate from GCC's defaults here: // - On `riscv{XLEN}-unknown-elf` we default to `rv{XLEN}imac` // - On all other OSs we use `rv{XLEN}imafdc` (equivalent to `rv{XLEN}gc`) - if (Triple.getArch() == llvm::Triple::riscv32) { + if (Triple.isRISCV32()) { if (Triple.getOS() == llvm::Triple::UnknownOS) return "rv32imac"; else diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -39,7 +39,7 @@ StringRef Arch = riscv::getRISCVArch(Args, TargetTriple); StringRef Abi = tools::riscv::getRISCVABI(Args, TargetTriple); - if (TargetTriple.getArch() == llvm::Triple::riscv64) { + if (TargetTriple.isRISCV64()) { Multilib Imac = makeMultilib("").flag("+march=rv64imac").flag("+mabi=lp64"); Multilib Imafdc = makeMultilib("/rv64imafdc/lp64d") .flag("+march=rv64imafdc") @@ -57,7 +57,7 @@ Result.Multilibs = MultilibSet().Either(Imac, Imafdc); return Result.Multilibs.select(Flags, Result.SelectedMultilib); } - if (TargetTriple.getArch() == llvm::Triple::riscv32) { + if (TargetTriple.isRISCV32()) { Multilib Imac = makeMultilib("").flag("+march=rv32imac").flag("+mabi=ilp32"); Multilib I = @@ -140,8 +140,7 @@ } static bool isRISCVBareMetal(const llvm::Triple &Triple) { - if (Triple.getArch() != llvm::Triple::riscv32 && - Triple.getArch() != llvm::Triple::riscv64) + if (!Triple.isRISCV()) return false; if (Triple.getVendor() != llvm::Triple::UnknownVendor)