ghc-8.0.2: The GHC API

Safe HaskellNone
LanguageHaskell2010

CmmExpr

Synopsis

Documentation

data CmmExpr #

Instances

Eq CmmExpr # 

Methods

(==) :: CmmExpr -> CmmExpr -> Bool #

(/=) :: CmmExpr -> CmmExpr -> Bool #

(Ord r, UserOfRegs r CmmReg) => UserOfRegs r CmmExpr # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> CmmExpr -> b #

data CmmReg #

Instances

Eq CmmReg # 

Methods

(==) :: CmmReg -> CmmReg -> Bool #

(/=) :: CmmReg -> CmmReg -> Bool #

Ord CmmReg # 
DefinerOfRegs GlobalReg CmmReg # 

Methods

foldRegsDefd :: DynFlags -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs LocalReg CmmReg # 

Methods

foldRegsDefd :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

UserOfRegs GlobalReg CmmReg # 

Methods

foldRegsUsed :: DynFlags -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

UserOfRegs LocalReg CmmReg # 

Methods

foldRegsUsed :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

data LocalReg #

Constructors

LocalReg !Unique CmmType

Parameters: 1. Identifier 2. Type

Instances

Eq LocalReg # 
Ord LocalReg # 
Uniquable LocalReg # 

Methods

getUnique :: LocalReg -> Unique #

DefinerOfRegs LocalReg CmmReg # 

Methods

foldRegsDefd :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

UserOfRegs LocalReg CmmReg # 

Methods

foldRegsUsed :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs LocalReg (CmmNode e x) # 

Methods

foldRegsDefd :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

UserOfRegs LocalReg (CmmNode e x) # 

Methods

foldRegsUsed :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

data VGcPtr #

Constructors

VGcPtr 
VNonGcPtr 

Instances

class Ord r => DefinerOfRegs r a where #

Minimal complete definition

foldRegsDefd

Methods

foldRegsDefd :: DynFlags -> (b -> r -> b) -> b -> a -> b #

Instances

Ord r => DefinerOfRegs r r # 

Methods

foldRegsDefd :: DynFlags -> (b -> r -> b) -> b -> r -> b #

DefinerOfRegs GlobalReg CmmReg # 

Methods

foldRegsDefd :: DynFlags -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs LocalReg CmmReg # 

Methods

foldRegsDefd :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs r a => DefinerOfRegs r (Maybe a) # 

Methods

foldRegsDefd :: DynFlags -> (b -> r -> b) -> b -> Maybe a -> b #

DefinerOfRegs r a => DefinerOfRegs r [a] # 

Methods

foldRegsDefd :: DynFlags -> (b -> r -> b) -> b -> [a] -> b #

DefinerOfRegs GlobalReg (CmmNode e x) # 

Methods

foldRegsDefd :: DynFlags -> (b -> GlobalReg -> b) -> b -> CmmNode e x -> b #

DefinerOfRegs LocalReg (CmmNode e x) # 

Methods

foldRegsDefd :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

class Ord r => UserOfRegs r a where #

Minimal complete definition

foldRegsUsed

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> a -> b #

Instances

(Ord r, UserOfRegs r CmmReg) => UserOfRegs r CmmExpr # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> CmmExpr -> b #

Ord r => UserOfRegs r r # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> r -> b #

(Ord r, UserOfRegs r CmmExpr) => UserOfRegs r ForeignTarget # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> ForeignTarget -> b #

UserOfRegs GlobalReg CmmReg # 

Methods

foldRegsUsed :: DynFlags -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

UserOfRegs LocalReg CmmReg # 

Methods

foldRegsUsed :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

UserOfRegs r a => UserOfRegs r [a] # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> [a] -> b #

UserOfRegs r a => UserOfRegs r (Maybe a) # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> Maybe a -> b #

Ord r => UserOfRegs r (RegSet r) # 

Methods

foldRegsUsed :: DynFlags -> (b -> r -> b) -> b -> RegSet r -> b #

UserOfRegs GlobalReg (CmmNode e x) # 

Methods

foldRegsUsed :: DynFlags -> (b -> GlobalReg -> b) -> b -> CmmNode e x -> b #

UserOfRegs LocalReg (CmmNode e x) # 

Methods

foldRegsUsed :: DynFlags -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

foldRegsDefd :: DefinerOfRegs r a => DynFlags -> (b -> r -> b) -> b -> a -> b #

foldRegsUsed :: UserOfRegs r a => DynFlags -> (b -> r -> b) -> b -> a -> b #

filterRegsUsed :: UserOfRegs r e => DynFlags -> (r -> Bool) -> e -> RegSet r #

foldLocalRegsDefd :: DefinerOfRegs LocalReg a => DynFlags -> (b -> LocalReg -> b) -> b -> a -> b #

foldLocalRegsUsed :: UserOfRegs LocalReg a => DynFlags -> (b -> LocalReg -> b) -> b -> a -> b #

type RegSet r = Set r #

Sets of registers

elemRegSet :: Ord r => r -> RegSet r -> Bool #

extendRegSet :: Ord r => RegSet r -> r -> RegSet r #

deleteFromRegSet :: Ord r => RegSet r -> r -> RegSet r #

mkRegSet :: Ord r => [r] -> RegSet r #

plusRegSet :: Ord r => RegSet r -> RegSet r -> RegSet r #

minusRegSet :: Ord r => RegSet r -> RegSet r -> RegSet r #

timesRegSet :: Ord r => RegSet r -> RegSet r -> RegSet r #

regSetToList :: RegSet r -> [r] #

data Area #

A stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.

Constructors

Old 
Young !BlockId 

Instances

Eq Area # 

Methods

(==) :: Area -> Area -> Bool #

(/=) :: Area -> Area -> Bool #

Ord Area # 

Methods

compare :: Area -> Area -> Ordering #

(<) :: Area -> Area -> Bool #

(<=) :: Area -> Area -> Bool #

(>) :: Area -> Area -> Bool #

(>=) :: Area -> Area -> Bool #

max :: Area -> Area -> Area #

min :: Area -> Area -> Area #

module CmmMachOp

module CmmType