X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmContFlowOpt.hs;h=8f4e3f5ce87118671c90a7d3b3d6c1ee1ee51dfc;hb=63a69b6790c0df41533c572bb53bc048efd48ff9;hp=4e319c82b20837254078f9d47543df42df3f2899;hpb=b822c1e46cd64d1dba23fbab0f775b731bf0f12b;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmContFlowOpt.hs b/compiler/cmm/CmmContFlowOpt.hs index 4e319c8..8f4e3f5 100644 --- a/compiler/cmm/CmmContFlowOpt.hs +++ b/compiler/cmm/CmmContFlowOpt.hs @@ -1,4 +1,4 @@ -{-# OPTIONS -Wall -fno-warn-name-shadowing #-} + module CmmContFlowOpt ( runCmmOpts, cmmCfgOpts, cmmCfgOptsZ , branchChainElimZ, removeUnreachableBlocksZ @@ -85,7 +85,7 @@ branchChainElimZ g@(G.LGraph eid _) lookup id = G.lookupBlockEnv env id `orElse` id isLoneBranchZ :: CmmBlock -> Either (G.BlockId, G.BlockId) CmmBlock -isLoneBranchZ (G.Block id (G.ZLast (G.LastOther (LastBranch target [])))) +isLoneBranchZ (G.Block id (G.ZLast (G.LastOther (LastBranch target)))) | id /= target = Left (id,target) isLoneBranchZ other = Right other -- ^ An infinite loop is not a link in a branch chain! @@ -94,7 +94,7 @@ replaceLabelsZ :: BlockEnv G.BlockId -> CmmGraph -> CmmGraph replaceLabelsZ env = replace_eid . G.map_nodes id id last where replace_eid (G.LGraph eid blocks) = G.LGraph (lookup eid) blocks - last (LastBranch id args) = LastBranch (lookup id) args + last (LastBranch id) = LastBranch (lookup id) last (LastCondBranch e ti fi) = LastCondBranch e (lookup ti) (lookup fi) last (LastSwitch e tbl) = LastSwitch e (map (fmap lookup) tbl) last (LastCall tgt (Just id)) = LastCall tgt (Just $ lookup id)