mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-07-25 10:58:24 +00:00

* Add support for riscv64: - Always link with -latomic on riscv64. - patches/clang-riscv64-multiarch.diff: add multiarch paths for riscv64. - patches/clang-riscv64-rv64gc.diff: default to lp64d ABI and rv64gc ISA. - patches/libcxx/libcxx-riscv64-cycletimer.diff: backport riscv64 cycletimer support from upstream.
39 lines
1.5 KiB
Diff
39 lines
1.5 KiB
Diff
diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
|
|
index b6768de4d29..9671ea270ef 100644
|
|
--- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
|
|
+++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
|
|
@@ -350,6 +350,13 @@ void riscv::getRISCVTargetFeatures(const Driver &D, const ArgList &Args,
|
|
|
|
// Handle all other types of extensions.
|
|
getExtensionFeatures(D, Args, Features, MArch, OtherExts);
|
|
+ } else {
|
|
+ // Default to imafdc aka gc
|
|
+ Features.push_back("+m");
|
|
+ Features.push_back("+a");
|
|
+ Features.push_back("+f");
|
|
+ Features.push_back("+d");
|
|
+ Features.push_back("+c");
|
|
}
|
|
|
|
// -mrelax is default, unless -mno-relax is specified.
|
|
@@ -375,5 +382,5 @@ StringRef riscv::getRISCVABI(const ArgList &Args, const llvm::Triple &Triple) {
|
|
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
|
|
return A->getValue();
|
|
|
|
- return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64";
|
|
+ return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64d";
|
|
}
|
|
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
|
|
index 60062d5c327..bb4536cafb0 100644
|
|
--- a/clang/lib/Driver/ToolChains/Clang.cpp
|
|
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
|
|
@@ -1850,7 +1850,7 @@ void Clang::AddRISCVTargetArgs(const ArgList &Args,
|
|
else if (Triple.getArch() == llvm::Triple::riscv32)
|
|
ABIName = "ilp32";
|
|
else if (Triple.getArch() == llvm::Triple::riscv64)
|
|
- ABIName = "lp64";
|
|
+ ABIName = "lp64d";
|
|
else
|
|
llvm_unreachable("Unexpected triple!");
|
|
|