summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/LlvmCodeGen/Ppr.hs
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2010-06-21 12:52:20 +0000
committerDavid Terei <davidterei@gmail.com>2010-06-21 12:52:20 +0000
commit09e6aba8000ccf52943ada4fb9ac76e0d93a202f (patch)
treec0f513c69355bcc0b5bf2975e44708e0483407f7 /compiler/llvmGen/LlvmCodeGen/Ppr.hs
parent4bb4a1cfa8b88fefae3405d101dc6ff0f7adbae3 (diff)
downloadhaskell-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.hs25
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