diff options
author | Karel Gardas <karel.gardas@centrum.cz> | 2011-08-20 23:58:15 +0200 |
---|---|---|
committer | Karel Gardas <karel.gardas@centrum.cz> | 2011-08-21 08:50:58 +0200 |
commit | 748883b4f157a495dec59ba59dd1d21556778efe (patch) | |
tree | 38ce26483222506b478f69783af0ff47e9724d01 /compiler/llvmGen/LlvmCodeGen | |
parent | 3fff0020aa802250a3b469967e4c474ae7239580 (diff) | |
download | haskell-748883b4f157a495dec59ba59dd1d21556778efe.tar.gz |
enable ARM specific target data layout and triple again
This patch is allowed by the 'on ARMv7 with VFPv3[D16] support pass
appropriate -mattr value to LLVM llc' patch. The trick is that LLVM
by default (probably!) does not enable VFP, but GHC requires it
so LLVM's llc asserts on unavailable floating point register. i.e. GHC/LLVM
backend compiles into LLVM code which is using floats, but llc thinks
no float regs for this are available. Passing appropriate llc option
which is implemented in patch mentioned above fixes this issue.
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen/Ppr.hs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen/Ppr.hs b/compiler/llvmGen/LlvmCodeGen/Ppr.hs index 2f4fbfab16..399a82f451 100644 --- a/compiler/llvmGen/LlvmCodeGen/Ppr.hs +++ b/compiler/llvmGen/LlvmCodeGen/Ppr.hs @@ -51,12 +51,12 @@ moduleLayout = $+$ text "target triple = \"x86_64-linux-gnu\"" #endif --- #elif defined (arm_TARGET_ARCH) +#elif defined (arm_TARGET_ARCH) --- #if linux_TARGET_OS --- text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32\"" --- $+$ text "target triple = \"arm-unknown-linux-gnueabi\"" --- #endif +#if linux_TARGET_OS + text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32\"" + $+$ text "target triple = \"arm-unknown-linux-gnueabi\"" +#endif #else -- FIX: Other targets |