import UniqFM
import UniqSet
import ZipCfg
-import ZipCfgCmm
+import ZipCfgCmmRep
import ZipDataflow
-- Compute a minimal set of proc points for a control-flow graph.
-- more proc points than b and is not already a proc
-- point. If found, it can become a proc point.
newId succ_id = not (elemBlockSet succ_id procPoints') &&
- nreached id > my_nreached
+ nreached succ_id > my_nreached
in listToMaybe $ filter newId $ succs b
-}
-data Protocol = Protocol Convention CmmHintFormals
+data Protocol = Protocol Convention CmmFormals
deriving Eq
-- | Function 'optimize_calls' chooses protocols only for those proc
-- points that are relevant to the optimization explained above.
-- The others are assigned by 'add_unassigned', which is not yet clever.
-addProcPointProtocols :: ProcPointSet -> CmmFormals -> CmmGraph -> CmmGraph
+addProcPointProtocols :: ProcPointSet -> CmmFormalsWithoutKinds -> CmmGraph -> CmmGraph
addProcPointProtocols procPoints formals g =
snd $ add_unassigned procPoints $ optimize_calls g
where optimize_calls g = -- see Note [Separate Adams optimization]
let (Block _ t) = lookupBlockEnv (gr_blocks g) id `orElse`
panic "jump out of graph"
in case t of
- ZTail (CopyOut {}) (ZLast (LastOther (LastBranch pee [])))
+ ZTail (CopyIn {}) (ZLast (LastOther (LastBranch pee [])))
| elemBlockSet pee procPoints -> Just pee
_ -> Nothing
init_protocols = fold_blocks maybe_add_proto emptyBlockEnv g