Skip to content

Commit f8cb798

Browse files
[RISCV] Integrate RISCV target in baremetal toolchain object and deprecate RISCVToolchain object (#121831)
This patch: - Adds CXXStdlib, runtimelib defaults for riscv target to BareMetal toolchain object. - Set the unwindlib to None for riscv target to match the behavior of RISCVToolChain. - Removes call to RISCVToolChain object from llvm. This PR is last patch in the series of patches of merging RISCVToolchain object into BareMetal toolchain object. RFC: https://discourse.llvm.org/t/merging-riscvtoolchain-and-baremetal-toolchains/75524
1 parent 24fd343 commit f8cb798

11 files changed

+62
-353
lines changed

clang/lib/Driver/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ add_clang_library(clangDriver
7676
ToolChains/OHOS.cpp
7777
ToolChains/OpenBSD.cpp
7878
ToolChains/PS4CPU.cpp
79-
ToolChains/RISCVToolchain.cpp
8079
ToolChains/Solaris.cpp
8180
ToolChains/SPIRV.cpp
8281
ToolChains/SPIRVOpenMP.cpp

clang/lib/Driver/Driver.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
#include "ToolChains/PPCFreeBSD.h"
4444
#include "ToolChains/PPCLinux.h"
4545
#include "ToolChains/PS4CPU.h"
46-
#include "ToolChains/RISCVToolchain.h"
4746
#include "ToolChains/SPIRV.h"
4847
#include "ToolChains/SPIRVOpenMP.h"
4948
#include "ToolChains/SYCL.h"
@@ -6955,16 +6954,11 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
69556954
TC = std::make_unique<toolchains::AVRToolChain>(*this, Target, Args);
69566955
break;
69576956
case llvm::Triple::msp430:
6958-
TC =
6959-
std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
6957+
TC = std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
69606958
break;
69616959
case llvm::Triple::riscv32:
69626960
case llvm::Triple::riscv64:
6963-
if (toolchains::RISCVToolChain::hasGCCToolchain(*this, Args))
6964-
TC =
6965-
std::make_unique<toolchains::RISCVToolChain>(*this, Target, Args);
6966-
else
6967-
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
6961+
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
69686962
break;
69696963
case llvm::Triple::ve:
69706964
TC = std::make_unique<toolchains::VEToolChain>(*this, Target, Args);

clang/lib/Driver/ToolChains/BareMetal.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,28 @@ BareMetal::OrderedMultilibs BareMetal::getOrderedMultilibs() const {
375375
return llvm::reverse(Default);
376376
}
377377

378+
ToolChain::CXXStdlibType BareMetal::GetDefaultCXXStdlibType() const {
379+
if (getTriple().isRISCV() && IsGCCInstallationValid)
380+
return ToolChain::CST_Libstdcxx;
381+
return ToolChain::CST_Libcxx;
382+
}
383+
384+
ToolChain::RuntimeLibType BareMetal::GetDefaultRuntimeLibType() const {
385+
if (getTriple().isRISCV() && IsGCCInstallationValid)
386+
return ToolChain::RLT_Libgcc;
387+
return ToolChain::RLT_CompilerRT;
388+
}
389+
390+
// TODO: Add a validity check for GCCInstallation.
391+
// If valid, use `UNW_Libgcc`; otherwise, use `UNW_None`.
392+
ToolChain::UnwindLibType
393+
BareMetal::GetUnwindLibType(const llvm::opt::ArgList &Args) const {
394+
if (getTriple().isRISCV())
395+
return ToolChain::UNW_None;
396+
397+
return ToolChain::GetUnwindLibType(Args);
398+
}
399+
378400
void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
379401
ArgStringList &CC1Args) const {
380402
if (DriverArgs.hasArg(options::OPT_nostdinc))

clang/lib/Driver/ToolChains/BareMetal.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,11 @@ class LLVM_LIBRARY_VISIBILITY BareMetal : public Generic_ELF {
5656
return UnwindTableLevel::None;
5757
}
5858

59-
RuntimeLibType GetDefaultRuntimeLibType() const override {
60-
return ToolChain::RLT_CompilerRT;
61-
}
59+
CXXStdlibType GetDefaultCXXStdlibType() const override;
6260

63-
CXXStdlibType GetDefaultCXXStdlibType() const override {
64-
return ToolChain::CST_Libcxx;
65-
}
61+
RuntimeLibType GetDefaultRuntimeLibType() const override;
62+
63+
UnwindLibType GetUnwindLibType(const llvm::opt::ArgList &Args) const override;
6664

6765
void
6866
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,

clang/lib/Driver/ToolChains/RISCVToolchain.cpp

Lines changed: 0 additions & 231 deletions
This file was deleted.

clang/lib/Driver/ToolChains/RISCVToolchain.h

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)