X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FnativeGen%2FRegAlloc%2FGraph%2FCoalesce.hs;h=a5d95a3adf55ab259be3ccd1104d2ef810fb1d64;hp=74eb0c2f55ced3d34a1284206cdfe0fbc04f583c;hb=85981a6fc4bb94af433b0b3655c26c5ec4dda1bd;hpb=37802abf7457723624097d8b78d5ec53a68d7f09 diff --git a/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs b/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs index 74eb0c2..a5d95a3 100644 --- a/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs +++ b/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs @@ -14,6 +14,7 @@ import Reg import Cmm import Bag +import Digraph import UniqFM import UniqSet import UniqSupply @@ -68,10 +69,9 @@ slurpJoinMovs slurpJoinMovs live = slurpCmm emptyBag live where - slurpCmm rs CmmData{} = rs - slurpCmm rs (CmmProc _ _ _ (ListGraph blocks)) = foldl' slurpComp rs blocks - slurpComp rs (BasicBlock _ blocks) = foldl' slurpBlock rs blocks - 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 (Instr _ Nothing) = rs slurpLI rs (Instr instr (Just live))