CmmLive

ghc-8.0.2: The GHC API

Safe Haskell | None
Language | Haskell2010

CmmLive

Synopsis

- type CmmLocalLive = CmmLive LocalReg
- type CmmGlobalLive = CmmLive GlobalReg
- cmmLocalLiveness :: DynFlags -> CmmGraph -> BlockEntryLiveness LocalReg
- cmmGlobalLiveness :: DynFlags -> CmmGraph -> BlockEntryLiveness GlobalReg
- liveLattice :: Ord r => DataflowLattice (CmmLive r)
- noLiveOnEntry :: BlockId -> CmmLive LocalReg -> a -> a
- xferLive :: forall r. (UserOfRegs r (CmmNode O O), DefinerOfRegs r (CmmNode O O), UserOfRegs r (CmmNode O C), DefinerOfRegs r (CmmNode O C)) => DynFlags -> BwdTransfer CmmNode (CmmLive r)
- gen :: UserOfRegs r a => DynFlags -> a -> RegSet r -> RegSet r
- kill :: DefinerOfRegs r a => DynFlags -> a -> RegSet r -> RegSet r
- gen_kill :: (DefinerOfRegs r a, UserOfRegs r a) => DynFlags -> a -> CmmLive r -> CmmLive r

# Documentation

type CmmLocalLive = CmmLive LocalReg Source #

type CmmGlobalLive = CmmLive GlobalReg Source #

cmmLocalLiveness :: DynFlags -> CmmGraph -> BlockEntryLiveness LocalReg Source #

Calculated liveness info for a CmmGraph

cmmGlobalLiveness :: DynFlags -> CmmGraph -> BlockEntryLiveness GlobalReg Source #

liveLattice :: Ord r => DataflowLattice (CmmLive r) Source #

The dataflow lattice

noLiveOnEntry :: BlockId -> CmmLive LocalReg -> a -> a Source #

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

xferLive :: forall r. (UserOfRegs r (CmmNode O O), DefinerOfRegs r (CmmNode O O), UserOfRegs r (CmmNode O C), DefinerOfRegs r (CmmNode O C)) => DynFlags -> BwdTransfer CmmNode (CmmLive r) Source #

The transfer function

gen :: UserOfRegs r a => DynFlags -> a -> RegSet r -> RegSet r Source #

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

kill :: DefinerOfRegs r a => DynFlags -> a -> RegSet r -> RegSet r Source #

gen_kill :: (DefinerOfRegs r a, UserOfRegs r a) => DynFlags -> a -> CmmLive r -> CmmLive r Source #