18#ifndef HEXAGON_LIVEVARIABLES_H
19#define HEXAGON_LIVEVARIABLES_H
37class HexagonLiveVariablesImpl;
41typedef std::pair<BitVector, BitVector>
UseDef_t;
61 return "Hexagon Live Variables Analysis";
129 std::unique_ptr<HexagonLiveVariablesImpl> HLV;
This file implements the BitVector class.
This file defines the DenseMap class.
#define HEXAGON_INSTR_SIZE
This file defines the SmallPtrSet class.
This file defines the SmallVector class.
Represent the analysis usage information of a pass.
MachineBasicBlock::const_instr_iterator MICInstIterType
void recalculate(MachineFunction &MF)
recalculate - recalculates the liveness from scratch.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
void constructUseDef(MachineBasicBlock *MBB)
Constructs use-defs of MBB by analyzing each MachineOperand.
unsigned getDistanceBetween(const MachineBasicBlock *From, const MachineBasicBlock *To, unsigned BufferPerMBB=HEXAGON_INSTR_SIZE) const
Returns the linear distance (as per layout) of MI from the Function.
bool isUsedWithin(MICInstIterType MIBegin, MICInstIterType MIEnd, unsigned Reg, MICInstIterType &Use, SmallPtrSet< MachineInstr *, 2 > *ExceptionsList=nullptr) const
bool incrementalUpdate(MICInstIterType MIDelta, MachineBasicBlock *From, MachineBasicBlock *To)
incrementalUpdate - update the liveness when MIDelta is moved from From to To.
bool runOnMachineFunction(MachineFunction &MF) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
bool updateLocalLiveness(MachineFunction &Fn)
updateLocalLiveness - update only kill flags of operands.
const BitVector & getLiveOuts(const MachineBasicBlock *MBB) const
bool isDefLiveIn(const MachineInstr *MI, const MachineBasicBlock *MBB) const
MIUseDef_t & getMIUseDefs()
void regenerateDistanceMap(const MachineFunction &Fn)
MBBUseDef_t & getMBBUseDefs()
void addNewMBB(MachineBasicBlock *MBB)
addNewMBB - inform the LiveVariable Analysis that new MBB has been added.
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
bool isLiveOut(const MachineBasicBlock *MBB, unsigned Reg) const
bool isDefinedWithin(MICInstIterType MIBegin, MICInstIterType MIEnd, unsigned Reg, MICInstIterType &Def) const
void addNewMI(MachineInstr *MI, MachineBasicBlock *MBB)
Instructions::const_iterator const_instr_iterator
MachineFunctionPass(char &ID)
Representation of each machine instruction.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
A Use represents the edge between a Value definition and its users.
This is an optimization pass for GlobalISel generic memory operations.
std::list< std::pair< int64_t, int64_t > > IntervalList_t
DenseMap< MachineBasicBlock *, UseDef_t > MBBUseDef_t
std::pair< BitVector, BitVector > UseDef_t
DenseMap< const MachineInstr *, UseDef_t > MIUseDef_t
SmallVector< IntervalList_t, 0 > IndexedLiveIntervals_t