X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FnativeGen%2FRegAlloc%2FLinear%2FMain.hs;fp=compiler%2FnativeGen%2FRegAlloc%2FLinear%2FMain.hs;h=229fd32f5722f53ff5c2dec7cbf20dd56845c86e;hb=85981a6fc4bb94af433b0b3655c26c5ec4dda1bd;hp=3eab7856abc6dfd3f322f861ede53754e8090b23;hpb=37802abf7457723624097d8b78d5ec53a68d7f09;p=ghc-hetmet.git diff --git a/compiler/nativeGen/RegAlloc/Linear/Main.hs b/compiler/nativeGen/RegAlloc/Linear/Main.hs index 3eab785..229fd32 100644 --- a/compiler/nativeGen/RegAlloc/Linear/Main.hs +++ b/compiler/nativeGen/RegAlloc/Linear/Main.hs @@ -132,20 +132,16 @@ regAlloc (CmmData sec d) ( CmmData sec d , Nothing ) -regAlloc (CmmProc (LiveInfo info _ _) lbl params (ListGraph [])) +regAlloc (CmmProc (LiveInfo info _ _) lbl params []) = return ( CmmProc info lbl params (ListGraph []) , Nothing ) -regAlloc (CmmProc static lbl params (ListGraph comps)) +regAlloc (CmmProc static lbl params sccs) | LiveInfo info (Just first_id) (Just block_live) <- static = do -- do register allocation on each component. (final_blocks, stats) - <- linearRegAlloc first_id block_live - $ map (\b -> case b of - BasicBlock _ [b] -> AcyclicSCC b - BasicBlock _ bs -> CyclicSCC bs) - $ comps + <- linearRegAlloc first_id block_live sccs -- make sure the block that was first in the input list -- stays at the front of the output