enable ARM specific target data layout and triple again
authorKarel Gardas <karel.gardas@centrum.cz>
Sat, 20 Aug 2011 21:58:15 +0000 (23:58 +0200)
committerKarel Gardas <karel.gardas@centrum.cz>
Sun, 21 Aug 2011 06:50:58 +0000 (08:50 +0200)
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.

compiler/llvmGen/LlvmCodeGen/Ppr.hs

index 2f4fbfa..399a82f 100644 (file)
@@ -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