X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FnativeGen%2FRegCoalesce.hs;h=e64dc09ebe074cb3bd801ccd508aeea5f19bc838;hb=08652e67c4d5d9a40687f93c286021a867c1bca0;hp=f3b19ad5aef7da17d482a5dd276bbc97533a271a;hpb=0f7d268d00795a58a06ae3c92ebbd14571295b84;p=ghc-hetmet.git diff --git a/compiler/nativeGen/RegCoalesce.hs b/compiler/nativeGen/RegCoalesce.hs index f3b19ad..e64dc09 100644 --- a/compiler/nativeGen/RegCoalesce.hs +++ b/compiler/nativeGen/RegCoalesce.hs @@ -1,4 +1,3 @@ - -- | Register coalescing. -- @@ -62,12 +61,12 @@ slurpJoinMovs :: LiveCmmTop -> Bag (Reg, Reg) slurpJoinMovs live = slurpCmm emptyBag live where - slurpCmm rs CmmData{} = rs - slurpCmm rs (CmmProc _ _ _ blocks) = foldl' slurpComp rs blocks - slurpComp rs (BasicBlock i blocks) = foldl' slurpBlock rs blocks - slurpBlock rs (BasicBlock i instrs) = foldl' slurpLI rs instrs - - slurpLI rs (Instr _ Nothing) = rs + 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 + + slurpLI rs (Instr _ Nothing) = rs slurpLI rs (Instr instr (Just live)) | Just (r1, r2) <- isRegRegMove instr , elementOfUniqSet r1 $ liveDieRead live