llvm-toolchain/debian/patches/clang-riscv64-rv64gc.diff
Aurelien Jarno f01d96bcb8 Add support for riscv64:
* 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.
2019-08-05 21:34:33 +02:00

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!");