about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-01-01 09:56:18 +0000
committerbors <bors@rust-lang.org>2017-01-01 09:56:18 +0000
commite1279a0b30a6a36822ecf7c7cc683953e1239745 (patch)
tree39c4f3349ee7128c7d9e546b1a93eb05326fa913 /src/rustllvm/PassWrapper.cpp
parente227433dc39ab13aa2368814169c049b8f876825 (diff)
parentb14785d3d0e3093983f6d6e266b754e1b536da10 (diff)
downloadrust-e1279a0b30a6a36822ecf7c7cc683953e1239745.tar.gz
rust-e1279a0b30a6a36822ecf7c7cc683953e1239745.zip
Auto merge of #38726 - japaric:sparc64, r=sanxiyn
sparc64-linux support

This is built on top of #38656 and depends on rust-lang/libc#483

Hello world works.

The libc-test test suite passes.

`panic!` doesn't fully work:

```
$ qemu-sparc64-static ./panic
thread 'main' panicked at 'explicit panic', panic.rs:1
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Illegal instruction (core dumped)
```

Backtraces don't work either, probably related to the previous point:

```
$ export RUST_BACKTRACE=1
$ qemu-sparc64-static ./panic
thread 'main' panicked at 'explicit panic', panic.rs:1
stack backtrace:
Illegal instruction (core dumped)
```

r? @alexcrichton

@jakllsch Does panicking / backtraces work on sparc64-netbsd?

cc @glaubitz
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
-rw-r--r--src/rustllvm/PassWrapper.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
index f71dac77caf..7bc6e8b0ecb 100644
--- a/src/rustllvm/PassWrapper.cpp
+++ b/src/rustllvm/PassWrapper.cpp
@@ -141,6 +141,12 @@ extern "C" void LLVMRustAddPass(LLVMPassManagerRef PM, LLVMPassRef rust_pass) {
 #define SUBTARGET_MSP430
 #endif
 
+#ifdef LLVM_COMPONENT_SPARC
+#define SUBTARGET_SPARC SUBTARGET(Sparc)
+#else
+#define SUBTARGET_SPARC
+#endif
+
 #define GEN_SUBTARGETS                                                         \
   SUBTARGET_X86                                                                \
   SUBTARGET_ARM                                                                \
@@ -148,7 +154,8 @@ extern "C" void LLVMRustAddPass(LLVMPassManagerRef PM, LLVMPassRef rust_pass) {
   SUBTARGET_MIPS                                                               \
   SUBTARGET_PPC                                                                \
   SUBTARGET_SYSTEMZ                                                            \
-  SUBTARGET_MSP430
+  SUBTARGET_MSP430                                                             \
+  SUBTARGET_SPARC
 
 #define SUBTARGET(x)                                                           \
   namespace llvm {                                                             \