[ELF][RISCV] Support RISC-V in getBitcodeMachineKind
authorKito Cheng <kito.cheng@gmail.com>
Wed, 3 Jul 2019 02:13:11 +0000 (02:13 +0000)
committerKito Cheng <kito.cheng@gmail.com>
Wed, 3 Jul 2019 02:13:11 +0000 (02:13 +0000)
Add Triple::riscv64 and Triple::riscv32 to getBitcodeMachineKind for get right
e_machine during LTO.

Reviewed By: ruiu, MaskRay

Differential Revision: https://reviews.llvm.org/D52165

llvm-svn: 364996

lld/ELF/InputFiles.cpp
lld/test/ELF/lto/riscv32.ll [new file with mode: 0644]
lld/test/ELF/lto/riscv64.ll [new file with mode: 0644]

index d1a72f0..e7bbfa1 100644 (file)
@@ -1402,6 +1402,9 @@ static uint8_t getBitcodeMachineKind(StringRef Path, const Triple &T) {
   case Triple::ppc64:
   case Triple::ppc64le:
     return EM_PPC64;
+  case Triple::riscv32:
+  case Triple::riscv64:
+    return EM_RISCV;
   case Triple::x86:
     return T.isOSIAMCU() ? EM_IAMCU : EM_386;
   case Triple::x86_64:
diff --git a/lld/test/ELF/lto/riscv32.ll b/lld/test/ELF/lto/riscv32.ll
new file mode 100644 (file)
index 0000000..1fe5547
--- /dev/null
@@ -0,0 +1,10 @@
+; REQUIRES: riscv
+
+; RUN: llvm-as %s -o %t.o
+; RUN: ld.lld %t.o -o %t
+target datalayout = "e-m:e-p:32:32-i64:64-n32-S128"
+target triple = "riscv32-unknown-elf"
+
+define void @f() {
+  ret void
+}
diff --git a/lld/test/ELF/lto/riscv64.ll b/lld/test/ELF/lto/riscv64.ll
new file mode 100644 (file)
index 0000000..59de1de
--- /dev/null
@@ -0,0 +1,10 @@
+; REQUIRES: riscv
+
+; RUN: llvm-as %s -o %t.o
+; RUN: ld.lld %t.o -o %t
+target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
+target triple = "riscv64-unknown-elf"
+
+define void @f() {
+  ret void
+}