X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FnativeGen%2FPprMach.hs;h=91f9cdf48c3eb208ff9f21cac020680cc7670cc0;hb=f8c52d7fde2d7408b4f734251c373f8d3e2c558e;hp=a2ae0e38eb21dc9525ec873d6bc5e363068e4931;hpb=0168c633a9d209e978528f059193d19cdb5e6740;p=ghc-hetmet.git diff --git a/compiler/nativeGen/PprMach.hs b/compiler/nativeGen/PprMach.hs index a2ae0e3..91f9cdf 100644 --- a/compiler/nativeGen/PprMach.hs +++ b/compiler/nativeGen/PprMach.hs @@ -10,6 +10,13 @@ -- (e.g., 'pprReg'); we conclude with the no-commonality monster, -- 'pprInstr'. +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + #include "nativeGen/NCG.h" module PprMach ( @@ -61,27 +68,23 @@ pprNatCmmTop (CmmData section dats) = pprSectionHeader section $$ vcat (map pprData dats) -- special case for split markers: -pprNatCmmTop (CmmProc [] lbl _ []) = pprLabel lbl +pprNatCmmTop (CmmProc [] lbl _ (ListGraph [])) = pprLabel lbl -pprNatCmmTop (CmmProc info lbl params blocks) = +pprNatCmmTop (CmmProc info lbl params (ListGraph blocks)) = pprSectionHeader Text $$ - (if not (null info) - then + (if null info then -- blocks guaranteed not null, so label needed + pprLabel lbl + else #if HAVE_SUBSECTIONS_VIA_SYMBOLS pprCLabel_asm (mkDeadStripPreventer $ entryLblToInfoLbl lbl) <> char ':' $$ #endif - vcat (map pprData info) $$ - pprLabel (entryLblToInfoLbl lbl) - else empty) $$ - (case blocks of - [] -> empty - (BasicBlock _ instrs : rest) -> - (if null info then pprLabel lbl else empty) $$ - -- the first block doesn't get a label: - vcat (map pprInstr instrs) $$ - vcat (map pprBasicBlock rest) - ) + vcat (map pprData info) $$ + pprLabel (entryLblToInfoLbl lbl) + ) $$ + vcat (map pprBasicBlock blocks) + -- ^ Even the first block gets a label, because with branch-chain + -- elimination, it might be the target of a goto. #if HAVE_SUBSECTIONS_VIA_SYMBOLS -- If we are using the .subsections_via_symbols directive -- (available on recent versions of Darwin), @@ -1227,17 +1230,6 @@ pprSizeRegRegReg name size reg1 reg2 reg3 #if i386_TARGET_ARCH || x86_64_TARGET_ARCH -{- -- BUGS: changed for coloring allocator -pprInstr v@(MOV size s@(OpReg src) d@(OpReg dst)) -- hack -- write a pass for this and patch linear allocator with it - | src == dst - = -#if 0 /* #ifdef DEBUG */ - (<>) (ptext SLIT("# warning: ")) (pprSizeOpOp SLIT("mov") size s d) -#else - empty -#endif --} - pprInstr (SPILL reg slot) = hcat [ ptext SLIT("\tSPILL"),