X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FnativeGen%2FRegAlloc%2FGraph%2FCoalesce.hs;h=1eaf00f3a2a2f16ee865473ee1d4ab045e0b0045;hb=HEAD;hp=e0fad17f835fc11a471d5520bcd811015c55acd4;hpb=e17cf7ff32778f4e6b3622855f25426251e843d6;p=ghc-hetmet.git diff --git a/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs b/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs index e0fad17..1eaf00f 100644 --- a/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs +++ b/compiler/nativeGen/RegAlloc/Graph/Coalesce.hs @@ -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