ghc-7.6.3: The GHC API

Safe Haskell | None

CmmLive

Synopsis

- type CmmLive = RegSet
- cmmLiveness :: CmmGraph -> BlockEntryLiveness
- liveLattice :: DataflowLattice CmmLive
- noLiveOnEntry :: BlockId -> CmmLive -> a -> a
- xferLive :: BwdTransfer CmmNode CmmLive
- gen :: UserOfLocalRegs a => a -> RegSet -> RegSet
- kill :: DefinerOfLocalRegs a => a -> RegSet -> RegSet
- gen_kill :: (DefinerOfLocalRegs a, UserOfLocalRegs a) => a -> CmmLive -> CmmLive
- removeDeadAssignments :: CmmGraph -> UniqSM (CmmGraph, BlockEnv CmmLive)

# Documentation

type CmmLive = RegSet

The variables live on entry to a block

cmmLiveness :: CmmGraph -> BlockEntryLiveness

Calculated liveness info for a CmmGraph

liveLattice :: DataflowLattice CmmLive

The dataflow lattice

noLiveOnEntry :: BlockId -> CmmLive -> a -> a

On entry to the procedure, there had better not be any LocalReg's live-in.

xferLive :: BwdTransfer CmmNode CmmLive

The transfer function

gen :: UserOfLocalRegs a => a -> RegSet -> RegSet

The transfer equations use the traditional `gen` and `kill` notations, which should be familiar from the Dragon Book.

kill :: DefinerOfLocalRegs a => a -> RegSet -> RegSet

gen_kill :: (DefinerOfLocalRegs a, UserOfLocalRegs a) => a -> CmmLive -> CmmLive

removeDeadAssignments :: CmmGraph -> UniqSM (CmmGraph, BlockEnv CmmLive)