X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FZipCfg.hs;h=78eeaed3e6b0639c1d15ce3c8338a730f637780a;hb=5a5b4cb261056baae6832aa2d79672475863b6c5;hp=c7aa1ff6c7c25fa57d3714bebb9d2e9166e2f118;hpb=25628e2771424cae1b3366322e8ce6f8a85440f9;p=ghc-hetmet.git diff --git a/compiler/cmm/ZipCfg.hs b/compiler/cmm/ZipCfg.hs index c7aa1ff..78eeaed 100644 --- a/compiler/cmm/ZipCfg.hs +++ b/compiler/cmm/ZipCfg.hs @@ -36,8 +36,9 @@ where #include "HsVersions.h" +import BlockId ( BlockId, BlockEnv, emptyBlockEnv, lookupBlockEnv, extendBlockEnv + , BlockSet, emptyBlockSet, elemBlockSet, extendBlockSet) import CmmExpr ( UserOfLocalRegs(..) ) --for an instance -import StackSlot import Outputable hiding (empty) import Panic @@ -378,7 +379,7 @@ lastTail :: ZTail m l -> ZLast l lastTail (ZLast l) = l lastTail (ZTail _ t) = lastTail t -tailOfLast l = ZLast (LastOther l) -- ^ tedious to write in every client +tailOfLast l = ZLast (LastOther l) -- tedious to write in every client ------------------ simple graph manipulations @@ -404,7 +405,7 @@ splitp_blocks p blocks = lift $ foldUFM scan (Nothing, emptyBlockEnv) blocks lift (Nothing, _) = Nothing lift (Just b, bs) = Just (b, bs) --- | 'insertBlock' should not be used to *replace* an existing block +-- | 'insertBlock' should not be used to /replace/ an existing block -- but only to insert a new one insertBlock :: Block m l -> BlockEnv (Block m l) -> BlockEnv (Block m l) insertBlock b bs = @@ -442,9 +443,11 @@ single_exitg (Graph tail blocks) = foldUFM add (exit_count (lastTail tail)) bloc -- more mathematically elegant (but results in more complicated code). -- -- Here's an easy way to go wrong! Consider +-- @ -- A -> [B,C] -- B -> D -- C -> D +-- @ -- Then ordinary dfs would give [A,B,D,C] which has a back ref from C to D. -- Better to geot [A,B,C,D]