X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Futils%2FGraphColor.hs;h=46bf384bd6d244706d21e9ae4244d537b7f4ec80;hb=d5938fb228511bfdce45e148ea4906129692e67f;hp=307803a988109660ca35c224bb2f1b1c7e4436c5;hpb=b01110d1352de5d972d8fb63f28c244d2c1ff99b;p=ghc-hetmet.git diff --git a/compiler/utils/GraphColor.hs b/compiler/utils/GraphColor.hs index 307803a..46bf384 100644 --- a/compiler/utils/GraphColor.hs +++ b/compiler/utils/GraphColor.hs @@ -51,9 +51,8 @@ colorGraph colorGraph iterative colors triv spill graph0 = let - -- if we're not doing iterative coalescing, then just do a single coalescing - -- pass at the front. This won't be as good but should still eat up a - -- lot of the reg-reg moves. + -- If we're not doing iterative coalescing then just do a conservative + -- coalescing stage at the front. (graph_coalesced, kksCoalesce1) = if not iterative then coalesceGraph False triv graph0 @@ -154,23 +153,23 @@ colorScan_spin iterative triv spill graph $ graph , ksTrivFound <- map nodeId nsTrivFound - , graph3 <- foldr (\k g -> let Just g' = delNode k g + , graph2 <- foldr (\k g -> let Just g' = delNode k g in g') graph ksTrivFound - = colorScan_spin iterative triv spill graph3 + = colorScan_spin iterative triv spill graph2 (ksTrivFound ++ ksTriv) ksSpill kksCoalesce -- Coalesce: -- If we're doing iterative coalescing and no triv nodes are avaliable - -- then it's type for a coalescing pass. + -- then it's time for a coalescing pass. | iterative = case coalesceGraph False triv graph of -- we were able to coalesce something - -- go back and see if this frees up more nodes to be trivially colorable. + -- go back to Simplify and see if this frees up more nodes to be trivially colorable. (graph2, kksCoalesceFound @(_:_)) -> colorScan_spin iterative triv spill graph2 ksTriv ksSpill (kksCoalesceFound ++ kksCoalesce)