LLVM API Documentation
#include <LiveInterval.h>
Public Member Functions | |
| ConnectedVNInfoEqClasses (LiveIntervals &lis) | |
| unsigned | Classify (const LiveInterval *LI) |
| unsigned | getEqClass (const VNInfo *VNI) const |
| void | Distribute (LiveInterval *LIV[], MachineRegisterInfo &MRI) |
ConnectedVNInfoEqClasses - Helper class that can divide VNInfos in a LiveInterval into equivalence clases of connected components. A LiveInterval that has multiple connected components can be broken into multiple LiveIntervals.
Given a LiveInterval that may have multiple connected components, run:
unsigned numComps = ConEQ.Classify(LI); if (numComps > 1) { allocate numComps-1 new LiveIntervals into LIS[1..] ConEQ.Distribute(LIS); }
Definition at line 647 of file LiveInterval.h.
| llvm::ConnectedVNInfoEqClasses::ConnectedVNInfoEqClasses | ( | LiveIntervals & | lis | ) | [inline, explicit] |
Definition at line 657 of file LiveInterval.h.
| unsigned ConnectedVNInfoEqClasses::Classify | ( | const LiveInterval * | LI | ) |
Classify - Classify the values in LI into connected components. Return the number of connected components.
Definition at line 856 of file LiveInterval.cpp.
References llvm::IntEqClasses::clear(), llvm::IntEqClasses::compress(), llvm::VNInfo::def, llvm::LiveIntervals::getMBBEndIdx(), llvm::LiveIntervals::getMBBFromIndex(), llvm::IntEqClasses::getNumClasses(), llvm::LiveInterval::getNumValNums(), llvm::LiveInterval::getVNInfoBefore(), llvm::IntEqClasses::grow(), I, llvm::VNInfo::id, llvm::VNInfo::isPHIDef(), llvm::VNInfo::isUnused(), llvm::IntEqClasses::join(), llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_end(), llvm::LiveInterval::vni_begin(), and llvm::LiveInterval::vni_end().
Referenced by llvm::LiveRangeEdit::eliminateDeadDefs(), and llvm::SplitEditor::finish().
| void ConnectedVNInfoEqClasses::Distribute | ( | LiveInterval * | LIV[], |
| MachineRegisterInfo & | MRI | ||
| ) |
Distribute - Distribute values in LIV[0] into a separate LiveInterval for each connected component. LIV must have a LiveInterval for each connected component. The LiveIntervals in Liv[1..] must be empty. Instructions using LIV[0] are rewritten.
Definition at line 901 of file LiveInterval.cpp.
References llvm::LiveInterval::begin(), llvm::LiveInterval::end(), getEqClass(), llvm::SlotIndexes::getIndexBefore(), llvm::LiveIntervals::getInstructionIndex(), llvm::LiveInterval::getNumValNums(), llvm::MachineOperand::getParent(), llvm::LiveIntervals::getSlotIndexes(), llvm::LiveInterval::getValNumInfo(), I, llvm::VNInfo::id, llvm::MachineInstr::isDebugValue(), LI, llvm::A64CC::MI, llvm::LiveInterval::ranges, llvm::MachineOperand::readsReg(), llvm::LiveInterval::reg, llvm::MachineRegisterInfo::reg_begin(), llvm::MachineRegisterInfo::reg_end(), llvm::MachineOperand::setReg(), llvm::LiveRange::valno, llvm::LiveInterval::valnos, llvm::LiveRangeQuery::valueDefined(), and llvm::LiveRangeQuery::valueIn().
Referenced by llvm::LiveRangeEdit::eliminateDeadDefs(), and llvm::SplitEditor::finish().
getEqClass - Classify creates equivalence classes numbered 0..N. Return the equivalence class assigned the VNI.
Definition at line 665 of file LiveInterval.h.
References llvm::VNInfo::id.
Referenced by Distribute().