summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/clang/clang/0020-clang-default-to-lp64d-ABI-and-rv64gc-ISA.patch
blob: f9d47337abe316c2f85e22d1db93bee9077e28ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From a11464585a13998f97e837a62b299bf66e2f90f0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 12 Aug 2019 08:59:28 -0700
Subject: [PATCH] clang: default to lp64d ABI and rv64gc ISA

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 clang/lib/Driver/ToolChains/Arch/RISCV.cpp | 9 ++++++++-
 clang/lib/Driver/ToolChains/Clang.cpp      | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

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 08165a60206..c6882f74e93 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -1878,7 +1878,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!");