summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/LlvmCodeGen
diff options
context:
space:
mode:
authorKarel Gardas <karel.gardas@centrum.cz>2011-08-20 23:58:15 +0200
committerKarel Gardas <karel.gardas@centrum.cz>2011-08-21 08:50:58 +0200
commit748883b4f157a495dec59ba59dd1d21556778efe (patch)
tree38ce26483222506b478f69783af0ff47e9724d01 /compiler/llvmGen/LlvmCodeGen
parent3fff0020aa802250a3b469967e4c474ae7239580 (diff)
downloadhaskell-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.hs10
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