summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/LlvmCodeGen.hs
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2018-10-11 10:31:58 -0400
committerBen Gamari <ben@smart-cactus.org>2018-10-11 10:31:58 -0400
commit52b514003c60492f21790a823c488c49ec5fc89d (patch)
treea87141d383de4bb147dfdb7ae2a8fb751376d462 /compiler/llvmGen/LlvmCodeGen.hs
parent2fc8ce5f0c8c81771c26266ac0b150ca9b75c5f3 (diff)
parent7ce9ead4fddfbffb5cb63cce0f1b4533b7bcc0ad (diff)
downloadhaskell-ghc-8.2.tar.gz
Merge commit '7ce9ead4fddfbffb5cb63cce0f1b4533b7bcc0ad' into ghc-8.2ghc-8.2
John Ericson from Obsidian Systems proposed that we merge these backports, which Obsidian bases its cross-compiled builds on, to the upstream stable branch. I don't see why not.
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen.hs')
-rw-r--r--compiler/llvmGen/LlvmCodeGen.hs11
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen.hs b/compiler/llvmGen/LlvmCodeGen.hs
index 5596d599c4..d5d76ea4ba 100644
--- a/compiler/llvmGen/LlvmCodeGen.hs
+++ b/compiler/llvmGen/LlvmCodeGen.hs
@@ -71,7 +71,7 @@ llvmCodeGen dflags h us cmm_stream
llvmCodeGen' :: Stream.Stream LlvmM RawCmmGroup () -> LlvmM ()
llvmCodeGen' cmm_stream
= do -- Preamble
- renderLlvm pprLlvmHeader
+ renderLlvm header
ghcInternalFunctions
cmmMetaLlvmPrelude
@@ -84,6 +84,15 @@ llvmCodeGen' cmm_stream
-- Postamble
cmmUsedLlvmGens
+ where
+ header :: SDoc
+ header = sdocWithDynFlags $ \dflags ->
+ let target = LLVM_TARGET
+ layout = case lookup target (llvmTargets dflags) of
+ Just (LlvmTarget dl _ _) -> dl
+ Nothing -> error $ "Failed to lookup the datalayout for " ++ target ++ "; available targets: " ++ show (map fst $ llvmTargets dflags)
+ in text ("target datalayout = \"" ++ layout ++ "\"")
+ $+$ text ("target triple = \"" ++ target ++ "\"")
llvmGroupLlvmGens :: RawCmmGroup -> LlvmM ()
llvmGroupLlvmGens cmm = do