Merge in new code generator branch.
[ghc-hetmet.git] / compiler / nativeGen / RegAlloc / Graph / Coalesce.hs
index e0fad17..1eaf00f 100644 (file)
@@ -12,7 +12,7 @@ import RegAlloc.Liveness
 import Instruction
 import Reg
 
-import Cmm
+import OldCmm
 import Bag
 import Digraph
 import UniqFM
@@ -25,7 +25,6 @@ import Data.List
 --     For Reg -> Reg moves, if the first reg dies at the same time the second reg is born
 --     then the mov only serves to join live ranges. The two regs can be renamed to be 
 --     the same and the move instruction safely erased.
-
 regCoalesce 
        :: Instruction instr
        => [LiveCmmTop instr] 
@@ -60,7 +59,6 @@ sinkReg fm r
 -- | Slurp out mov instructions that only serve to join live ranges.
 --     During a mov, if the source reg dies and the destiation reg is born
 --     then we can rename the two regs to the same thing and eliminate the move.
---
 slurpJoinMovs 
        :: Instruction instr
        => LiveCmmTop instr 
@@ -69,11 +67,11 @@ slurpJoinMovs
 slurpJoinMovs live
        = slurpCmm emptyBag live
  where 
-       slurpCmm   rs  CmmData{}                = rs
-       slurpCmm   rs (CmmProc _ _ _ sccs)      = foldl' slurpBlock rs (flattenSCCs sccs)
-        slurpBlock rs (BasicBlock _ instrs)    = foldl' slurpLI    rs instrs
+       slurpCmm   rs  CmmData{}                    = rs
+       slurpCmm   rs (CmmProc _ _ sccs)        = foldl' slurpBlock rs (flattenSCCs sccs)
+       slurpBlock rs (BasicBlock _ instrs)     = foldl' slurpLI    rs instrs
                 
-        slurpLI    rs (LiveInstr _     Nothing) = rs
+       slurpLI    rs (LiveInstr _      Nothing)    = rs
        slurpLI    rs (LiveInstr instr (Just live))
                | Just (r1, r2) <- takeRegRegMoveInstr instr
                , elementOfUniqSet r1 $ liveDieRead live