From aaa51f4f755256f9a53b5bfba8054b135050dbeb Mon Sep 17 00:00:00 2001 From: "max.ma" Date: Sun, 9 Oct 2022 00:19:02 -0700 Subject: [PATCH 8/8] change baremetal multilib directory name to align with gcc 12.1 --- clang/lib/Driver/ToolChains/Gnu.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 045f063b28f2..208671a4f962 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -1657,7 +1657,11 @@ static void findRISCVBareMetalMultilibs(const Driver &D, {"rv32i", "ilp32"}, {"rv32im", "ilp32"}, {"rv32iac", "ilp32"}, {"rv32imac", "ilp32"}, {"rv32imafc", "ilp32f"}, {"rv64imac", "lp64"}, {"rv64imafdc", "lp64d"}, {"rv64imafdc_zba_zbb_zbc_zbs", "lp64d"}, - {"rv64imafdcv_zba_zbb_zbc_zbs", "lp64d"}, {"rv64imafdcv", "lp64d"},}; + {"rv64imafdc_zicsr_zifencei", "lp64d"}, + {"rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs", "lp64d"}, + {"rv64imafdcv_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b", "lp64d"}, + {"rv64imafdcv_zicsr_zifencei_zba_zbb_zbc_zbs_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b", "lp64d"}, + }; std::vector Ms; for (auto Element : RISCVMultilibSet) { @@ -1683,8 +1687,10 @@ static void findRISCVBareMetalMultilibs(const Driver &D, llvm::StringSet<> Added_ABIs; StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple); StringRef MArch = tools::riscv::getRISCVArch(Args, TargetTriple); + std::string Ext, Extra; - for (auto I = MArch.begin(), E = MArch.end(); I != E; ) { + Ext = "rv"; + for (auto I = MArch.begin() + 2, E = MArch.end(); I != E; ) { char c = *I; switch (c) { default: @@ -1693,12 +1699,18 @@ static void findRISCVBareMetalMultilibs(const Driver &D, case 'g': Ext += "imafd"; + Extra += "_zicsr_zifencei"; break; case 'b': Extra += "_zba_zbb_zbc_zbs"; break; + case 'v': + Ext += c; + Extra += "_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b"; + break; + case '_': for (;I != E; I++) Ext += *I; -- 2.25.1