Skip to content

Commit d936380

Browse files
committed
[RISCV] Integrate RISCV target in baremetal toolchain object and deprecate
RISCVToolchain object This patch: - Adds CXXStdlib, runtimelib and unwindlib defaults for riscv target to BareMetal toolchain object. - Add riscv 32 and 64-bit emulation flags to linker job of BareMetal toolchain. - 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 Change-Id: I2877ac328f55a7638cc185d6034866cbd2ac4203
1 parent a09259f commit d936380

11 files changed

+61
-354
lines changed

clang/lib/Driver/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ add_clang_library(clangDriver
7474
ToolChains/OHOS.cpp
7575
ToolChains/OpenBSD.cpp
7676
ToolChains/PS4CPU.cpp
77-
ToolChains/RISCVToolchain.cpp
7877
ToolChains/Solaris.cpp
7978
ToolChains/SPIRV.cpp
8079
ToolChains/SPIRVOpenMP.cpp

clang/lib/Driver/Driver.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
#include "ToolChains/PPCFreeBSD.h"
4242
#include "ToolChains/PPCLinux.h"
4343
#include "ToolChains/PS4CPU.h"
44-
#include "ToolChains/RISCVToolchain.h"
4544
#include "ToolChains/SPIRV.h"
4645
#include "ToolChains/SPIRVOpenMP.h"
4746
#include "ToolChains/SYCL.h"
@@ -6889,16 +6888,11 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
68896888
TC = std::make_unique<toolchains::AVRToolChain>(*this, Target, Args);
68906889
break;
68916890
case llvm::Triple::msp430:
6892-
TC =
6893-
std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
6891+
TC = std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
68946892
break;
68956893
case llvm::Triple::riscv32:
68966894
case llvm::Triple::riscv64:
6897-
if (toolchains::RISCVToolChain::hasGCCToolchain(*this, Args))
6898-
TC =
6899-
std::make_unique<toolchains::RISCVToolChain>(*this, Target, Args);
6900-
else
6901-
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
6895+
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
69026896
break;
69036897
case llvm::Triple::ve:
69046898
TC = std::make_unique<toolchains::VEToolChain>(*this, Target, Args);

clang/lib/Driver/ToolChains/BareMetal.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,26 @@ BareMetal::OrderedMultilibs BareMetal::getOrderedMultilibs() const {
336336
return llvm::reverse(Default);
337337
}
338338

339+
ToolChain::CXXStdlibType BareMetal::GetDefaultCXXStdlibType() const {
340+
if (getTriple().isRISCV() && GCCInstallation.isValid())
341+
return ToolChain::CST_Libstdcxx;
342+
return ToolChain::CST_Libcxx;
343+
}
344+
345+
ToolChain::RuntimeLibType BareMetal::GetDefaultRuntimeLibType() const {
346+
if (getTriple().isRISCV() && GCCInstallation.isValid())
347+
return ToolChain::RLT_Libgcc;
348+
return ToolChain::RLT_CompilerRT;
349+
}
350+
351+
ToolChain::UnwindLibType
352+
BareMetal::GetUnwindLibType(const llvm::opt::ArgList &Args) const {
353+
if (getTriple().isRISCV())
354+
return ToolChain::UNW_None;
355+
356+
return ToolChain::GetUnwindLibType(Args);
357+
}
358+
339359
void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
340360
ArgStringList &CC1Args) const {
341361
if (DriverArgs.hasArg(options::OPT_nostdinc))

clang/lib/Driver/ToolChains/BareMetal.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,11 @@ class LLVM_LIBRARY_VISIBILITY BareMetal : public Generic_ELF {
5454
return UnwindTableLevel::None;
5555
}
5656

57-
RuntimeLibType GetDefaultRuntimeLibType() const override {
58-
return ToolChain::RLT_CompilerRT;
59-
}
60-
CXXStdlibType GetDefaultCXXStdlibType() const override {
61-
return ToolChain::CST_Libcxx;
62-
}
57+
CXXStdlibType GetDefaultCXXStdlibType() const override;
58+
59+
RuntimeLibType GetDefaultRuntimeLibType() const override;
60+
61+
UnwindLibType GetUnwindLibType(const llvm::opt::ArgList &Args) const override;
6362

6463
void
6564
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,

clang/lib/Driver/ToolChains/RISCVToolchain.cpp

Lines changed: 0 additions & 232 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)