X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FllvmGen%2FLlvmCodeGen%2FPpr.hs;fp=compiler%2FllvmGen%2FLlvmCodeGen%2FPpr.hs;h=55bb5d04a9487cdc72e9a90dda48f2de16de8cd6;hb=3aadff5e31bf6b665cf7ae7606c94cdab85624d2;hp=5afbd174ce3c9a094ea1fdcf5b015f28ea8ecbfe;hpb=09e6aba8000ccf52943ada4fb9ac76e0d93a202f;p=ghc-hetmet.git diff --git a/compiler/llvmGen/LlvmCodeGen/Ppr.hs b/compiler/llvmGen/LlvmCodeGen/Ppr.hs index 5afbd17..55bb5d0 100644 --- a/compiler/llvmGen/LlvmCodeGen/Ppr.hs +++ b/compiler/llvmGen/LlvmCodeGen/Ppr.hs @@ -59,6 +59,17 @@ pprLlvmHeader :: Doc pprLlvmHeader = moduleLayout +-- | Pretty print LLVM data code +pprLlvmData :: LlvmData -> Doc +pprLlvmData (globals, types) = + let tryConst (v, Just s ) = ppLlvmGlobal (v, Just s) + tryConst g@(_, Nothing) = ppLlvmGlobal g + + types' = ppLlvmTypes types + globals' = vcat $ map tryConst globals + in types' $+$ globals' + + -- | Pretty print LLVM code pprLlvmCmmTop :: LlvmEnv -> Int -> LlvmCmmTop -> (Doc, [LlvmVar]) pprLlvmCmmTop _ _ (CmmData _ lmdata) @@ -85,24 +96,16 @@ pprLlvmCmmTop env count (CmmProc info lbl _ (ListGraph blks)) ), ivar) --- | Pretty print LLVM data code -pprLlvmData :: LlvmData -> Doc -pprLlvmData (globals, types) = - let globals' = ppLlvmGlobals globals - types' = ppLlvmTypes types - in types' $+$ globals' - - -- | Pretty print CmmStatic pprCmmStatic :: LlvmEnv -> Int -> [CmmStatic] -> (Doc, [LlvmVar]) pprCmmStatic env count stat - = let unres = genLlvmData stat + = let unres = genLlvmData (Text, stat) (_, (ldata, ltypes)) = resolveLlvmData env unres - setSection (gv@(LMGlobalVar s ty l _ _), d) + setSection (gv@(LMGlobalVar s ty l _ _ c), d) = let v = if l == Internal then [gv] else [] sec = mkLayoutSection count - in ((LMGlobalVar s ty l sec llvmInfAlign, d), v) + in ((LMGlobalVar s ty l sec llvmInfAlign c, d), v) setSection v = (v,[]) (ldata', llvmUsed) = mapAndUnzip setSection ldata