Skip to content

Commit 1dec1e0

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: Ic5d64a4ed3ebc58c30c12d9827e7e57a02eb13ca
1 parent 6a5eed6 commit 1dec1e0

11 files changed

+60
-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"
@@ -6946,16 +6945,11 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
69466945
TC = std::make_unique<toolchains::AVRToolChain>(*this, Target, Args);
69476946
break;
69486947
case llvm::Triple::msp430:
6949-
TC =
6950-
std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
6948+
TC = std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
69516949
break;
69526950
case llvm::Triple::riscv32:
69536951
case llvm::Triple::riscv64:
6954-
if (toolchains::RISCVToolChain::hasGCCToolchain(*this, Args))
6955-
TC =
6956-
std::make_unique<toolchains::RISCVToolChain>(*this, Target, Args);
6957-
else
6958-
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
6952+
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
69596953
break;
69606954
case llvm::Triple::ve:
69616955
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
@@ -375,6 +375,26 @@ 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+
ToolChain::UnwindLibType
391+
BareMetal::GetUnwindLibType(const llvm::opt::ArgList &Args) const {
392+
if (getTriple().isRISCV())
393+
return ToolChain::UNW_None;
394+
395+
return ToolChain::GetUnwindLibType(Args);
396+
}
397+
378398
void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
379399
ArgStringList &CC1Args) const {
380400
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.
Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
// Check the arguments are correctly passed
22

3-
// Make sure -T is the last with gcc-toolchain option
4-
// RUN: %clang -### --target=riscv32 --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
5-
// RUN: | FileCheck -check-prefix=CHECK-LD %s
6-
// CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-u" "foo" {{.*}} "-T" "a.lds"
7-
8-
// TODO: Merge this test with the above in the last patch when finally integrating riscv
93
// Make sure -T is the last with gcc-toolchain option
104
// RUN: %clang -### --target=aarch64-none-elf --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
11-
// RUN: | FileCheck -check-prefix=CHECK-ARM-LD %s
5+
// RUN: | FileCheck -check-prefix=CHECK-LD %s
126
// RUN: %clang -### --target=armv6m-none-eabi --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
13-
// RUN: | FileCheck -check-prefix=CHECK-ARM-LD %s
14-
// CHECK-ARM-LD: {{.*}} "-T" "a.lds" "-u" "foo" {{.*}} "--defsym=FOO=10"
7+
// RUN: | FileCheck -check-prefix=CHECK-LD %s
8+
// RUN: %clang -### --target=riscv32 --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
9+
// RUN: | FileCheck -check-prefix=CHECK-LD %s
10+
// CHECK-LD: {{.*}} "-T" "a.lds" "-u" "foo" {{.*}} "--defsym=FOO=10"

0 commit comments

Comments
 (0)