X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2FPprCmm.hs;h=65e2f6feb3ccaeb10a93346f7c2c324365e0c355;hp=424943778f2801ef9daab5eaf4923dc3f7cbaab4;hb=16dc208aaad7aadaea970e47b8055d7d7f8781e5;hpb=807b00a759afd11530949f91bd523bb45f01bd40 diff --git a/compiler/cmm/PprCmm.hs b/compiler/cmm/PprCmm.hs index 4249437..65e2f6f 100644 --- a/compiler/cmm/PprCmm.hs +++ b/compiler/cmm/PprCmm.hs @@ -59,7 +59,7 @@ import Data.List import System.IO import Data.Maybe -pprCmms :: (Outputable info) => [GenCmm CmmStatic info CmmStmt] -> SDoc +pprCmms :: (Outputable info) => [GenCmm CmmStatic info (ListGraph CmmStmt)] -> SDoc pprCmms cmms = pprCode CStyle (vcat (intersperse separator $ map ppr cmms)) where separator = space $$ ptext SLIT("-------------------") $$ space @@ -69,13 +69,16 @@ writeCmms handle cmms = printForC handle (pprCmms cmms) ----------------------------------------------------------------------------- -instance (Outputable info) => Outputable (GenCmm CmmStatic info CmmStmt) where +instance (Outputable info) => Outputable (GenCmm CmmStatic info (ListGraph CmmStmt)) where ppr c = pprCmm c instance (Outputable d, Outputable info, Outputable i) => Outputable (GenCmmTop d info i) where ppr t = pprTop t +instance Outputable i => Outputable (ListGraph i) where + ppr (ListGraph blocks) = vcat (map ppr blocks) + instance (Outputable instr) => Outputable (GenBasicBlock instr) where ppr b = pprBBlock b @@ -107,20 +110,20 @@ instance Outputable CmmInfo where ----------------------------------------------------------------------------- -pprCmm :: (Outputable info) => GenCmm CmmStatic info CmmStmt -> SDoc +pprCmm :: (Outputable info) => GenCmm CmmStatic info (ListGraph CmmStmt) -> SDoc pprCmm (Cmm tops) = vcat $ intersperse (text "") $ map pprTop tops -- -------------------------------------------------------------------------- -- Top level `procedure' blocks. -- -pprTop :: (Outputable d, Outputable info, Outputable i) - => GenCmmTop d info i -> SDoc +pprTop :: (Outputable d, Outputable info, Outputable g) + => GenCmmTop d info g -> SDoc -pprTop (CmmProc info lbl params blocks ) +pprTop (CmmProc info lbl params graph) = vcat [ pprCLabel lbl <> parens (commafy $ map ppr params) <+> lbrace , nest 8 $ lbrace <+> ppr info $$ rbrace - , nest 4 $ vcat (map ppr blocks) + , nest 4 $ ppr graph , rbrace ] -- --------------------------------------------------------------------------