diff options
author | David Terei <davidterei@gmail.com> | 2010-06-21 12:52:20 +0000 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2010-06-21 12:52:20 +0000 |
commit | 09e6aba8000ccf52943ada4fb9ac76e0d93a202f (patch) | |
tree | c0f513c69355bcc0b5bf2975e44708e0483407f7 /compiler/llvmGen/LlvmCodeGen/Ppr.hs | |
parent | 4bb4a1cfa8b88fefae3405d101dc6ff0f7adbae3 (diff) | |
download | haskell-09e6aba8000ccf52943ada4fb9ac76e0d93a202f.tar.gz |
Reduce the number of passes over the cmm in llvm BE
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen/Ppr.hs')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen/Ppr.hs | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen/Ppr.hs b/compiler/llvmGen/LlvmCodeGen/Ppr.hs index 689be6c66c..5afbd174ce 100644 --- a/compiler/llvmGen/LlvmCodeGen/Ppr.hs +++ b/compiler/llvmGen/LlvmCodeGen/Ppr.hs @@ -15,7 +15,6 @@ import LlvmCodeGen.Data import CLabel import Cmm -import DynFlags import FastString import Pretty import Unique @@ -61,14 +60,14 @@ pprLlvmHeader = moduleLayout -- | Pretty print LLVM code -pprLlvmCmmTop :: DynFlags -> LlvmEnv -> Int -> LlvmCmmTop -> (Doc, [LlvmVar]) -pprLlvmCmmTop dflags _ _ (CmmData _ lmdata) - = (vcat $ map (pprLlvmData dflags) lmdata, []) +pprLlvmCmmTop :: LlvmEnv -> Int -> LlvmCmmTop -> (Doc, [LlvmVar]) +pprLlvmCmmTop _ _ (CmmData _ lmdata) + = (vcat $ map pprLlvmData lmdata, []) -pprLlvmCmmTop dflags env count (CmmProc info lbl _ (ListGraph blks)) +pprLlvmCmmTop env count (CmmProc info lbl _ (ListGraph blks)) = let static = CmmDataLabel lbl : info (idoc, ivar) = if not (null info) - then pprCmmStatic dflags env count static + then pprCmmStatic env count static else (empty, []) in (idoc $+$ ( let sec = mkLayoutSection (count + 1) @@ -87,18 +86,18 @@ pprLlvmCmmTop dflags env count (CmmProc info lbl _ (ListGraph blks)) -- | Pretty print LLVM data code -pprLlvmData :: DynFlags -> LlvmData -> Doc -pprLlvmData _ (globals, types) = +pprLlvmData :: LlvmData -> Doc +pprLlvmData (globals, types) = let globals' = ppLlvmGlobals globals types' = ppLlvmTypes types in types' $+$ globals' -- | Pretty print CmmStatic -pprCmmStatic :: DynFlags -> LlvmEnv -> Int -> [CmmStatic] -> (Doc, [LlvmVar]) -pprCmmStatic dflags env count stat - = let unres = genLlvmData dflags (Data,stat) - (_, (ldata, ltypes)) = resolveLlvmData dflags env unres +pprCmmStatic :: LlvmEnv -> Int -> [CmmStatic] -> (Doc, [LlvmVar]) +pprCmmStatic env count stat + = let unres = genLlvmData stat + (_, (ldata, ltypes)) = resolveLlvmData env unres setSection (gv@(LMGlobalVar s ty l _ _), d) = let v = if l == Internal then [gv] else [] @@ -107,7 +106,7 @@ pprCmmStatic dflags env count stat setSection v = (v,[]) (ldata', llvmUsed) = mapAndUnzip setSection ldata - in (pprLlvmData dflags (ldata', ltypes), concat llvmUsed) + in (pprLlvmData (ldata', ltypes), concat llvmUsed) -- | Create an appropriate section declaration for subsection <n> of text |