llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-risc-v Author: None (mihailo-stojanovic) <details> <summary>Changes</summary> Fix the issue where Baremetal toolchain is created instead of the RISCVToolchain when GCC installation is explicitly passed via the gcc-install-dir option. --- Full diff: https://github.com/llvm/llvm-project/pull/71803.diff 4 Files Affected: - (modified) clang/lib/Driver/ToolChains/RISCVToolchain.cpp (+3) - (added) clang/test/Driver/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/include/c++/8.2.0/.keep () - (added) clang/test/Driver/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/include/c++/8.2.0/backward/.keep () - (modified) clang/test/Driver/gcc-install-dir.cpp (+12) ``````````diff diff --git a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp index 7e6abd144428783..6b27ea224eb02ee 100644 --- a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp +++ b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp @@ -40,6 +40,9 @@ bool RISCVToolChain::hasGCCToolchain(const Driver &D, if (Args.getLastArg(options::OPT_gcc_toolchain)) return true; + if (Args.getLastArg(options::OPT_gcc_install_dir_EQ)) + return true; + SmallString<128> GCCDir; llvm::sys::path::append(GCCDir, D.Dir, "..", D.getTargetTriple(), "lib/crt0.o"); diff --git a/clang/test/Driver/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/include/c++/8.2.0/.keep b/clang/test/Driver/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/include/c++/8.2.0/.keep new file mode 100644 index 000000000000000..e69de29bb2d1d64 diff --git a/clang/test/Driver/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/include/c++/8.2.0/backward/.keep b/clang/test/Driver/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/include/c++/8.2.0/backward/.keep new file mode 100644 index 000000000000000..e69de29bb2d1d64 diff --git a/clang/test/Driver/gcc-install-dir.cpp b/clang/test/Driver/gcc-install-dir.cpp index 955f162a2ce3a19..d22ca545508370d 100644 --- a/clang/test/Driver/gcc-install-dir.cpp +++ b/clang/test/Driver/gcc-install-dir.cpp @@ -37,6 +37,18 @@ // DEBIAN_X86_64_M32-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/32" // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib32" +/// Test GCC installation on bare-metal RISCV64. +// RUN: %clang -### %s --target=riscv64-unknown-elf --sysroot=%S/Inputs/multilib_riscv_elf_sdk/riscv64-unknown-elf/ --stdlib=platform --rtlib=platform \ +// RUN: --gcc-install-dir=%S/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/ 2>&1 \ +// RUN: | FileCheck %s --check-prefix=ELF_RISCV64 +// ELF_RISCV64: "-internal-isystem" +// ELF_RISCV64-SAME: {{^}} "[[SYSROOT:[^"]+]]/include/c++/8.2.0" +// ELF_RISCV64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/include/c++/8.2.0/riscv64-unknown-elf/rv64imac/lp64" +// ELF_RISCV64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/include/c++/8.2.0/backward" +// ELF_RISCV64: "-L +// ELF_RISCV64-SAME: {{^}}[[SYSROOT:[^"]+]]/lib/gcc/riscv64-unknown-elf/8.2.0/rv64imac/lp64" +// ELF_RISCV64-SAME: {{^}} "-L[[SYSROOT]]/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib/rv64imac/lp64" + // RUN: not %clangxx %s -### --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \ // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir --stdlib=platform --rtlib=platform \ // RUN: --gcc-install-dir=%S/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu 2>&1 | FileCheck %s --check-prefix=INVALID `````````` </details> https://github.com/llvm/llvm-project/pull/71803 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits