diff options
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen.hs')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen.hs | 11 |
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 |