diff options
Diffstat (limited to 'llvm/include/llvm/CodeGen/LiveIntervals.h')
-rw-r--r-- | llvm/include/llvm/CodeGen/LiveIntervals.h | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/llvm/include/llvm/CodeGen/LiveIntervals.h b/llvm/include/llvm/CodeGen/LiveIntervals.h index 2bfc99624937..945a40829714 100644 --- a/llvm/include/llvm/CodeGen/LiveIntervals.h +++ b/llvm/include/llvm/CodeGen/LiveIntervals.h @@ -22,7 +22,6 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/IndexedMap.h" #include "llvm/ADT/SmallVector.h" -#include "llvm/Analysis/AliasAnalysis.h" #include "llvm/CodeGen/LiveInterval.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineFunctionPass.h" @@ -40,8 +39,9 @@ namespace llvm { extern cl::opt<bool> UseSegmentSetForPhysRegs; +class AAResults; class BitVector; -class LiveRangeCalc; +class LiveIntervalCalc; class MachineBlockFrequencyInfo; class MachineDominatorTree; class MachineFunction; @@ -56,10 +56,10 @@ class VirtRegMap; MachineRegisterInfo* MRI; const TargetRegisterInfo* TRI; const TargetInstrInfo* TII; - AliasAnalysis *AA; + AAResults *AA; SlotIndexes* Indexes; MachineDominatorTree *DomTree = nullptr; - LiveRangeCalc *LRCalc = nullptr; + LiveIntervalCalc *LICalc = nullptr; /// Special pool allocator for VNInfo's (LiveInterval val#). VNInfo::Allocator VNInfoAllocator; @@ -212,7 +212,7 @@ class VirtRegMap; return Indexes; } - AliasAnalysis *getAliasAnalysis() const { + AAResults *getAliasAnalysis() const { return AA; } @@ -256,8 +256,9 @@ class VirtRegMap; return Indexes->getMBBFromIndex(index); } - void insertMBBInMaps(MachineBasicBlock *MBB) { - Indexes->insertMBBInMaps(MBB); + void insertMBBInMaps(MachineBasicBlock *MBB, + MachineInstr *InsertionPoint = nullptr) { + Indexes->insertMBBInMaps(MBB, InsertionPoint); assert(unsigned(MBB->getNumber()) == RegMaskBlocks.size() && "Blocks must be added in order."); RegMaskBlocks.push_back(std::make_pair(RegMaskSlots.size(), 0)); @@ -310,16 +311,16 @@ class VirtRegMap; /// \param UpdateFlags Update live intervals for nonallocatable physregs. void handleMove(MachineInstr &MI, bool UpdateFlags = false); - /// Update intervals for operands of \p MI so that they begin/end on the - /// SlotIndex for \p BundleStart. + /// Update intervals of operands of all instructions in the newly + /// created bundle specified by \p BundleStart. /// /// \param UpdateFlags Update live intervals for nonallocatable physregs. /// - /// Requires MI and BundleStart to have SlotIndexes, and assumes - /// existing liveness is accurate. BundleStart should be the first - /// instruction in the Bundle. - void handleMoveIntoBundle(MachineInstr &MI, MachineInstr &BundleStart, - bool UpdateFlags = false); + /// Assumes existing liveness is accurate. + /// \pre BundleStart should be the first instruction in the Bundle. + /// \pre BundleStart should not have a have SlotIndex as one will be assigned. + void handleMoveIntoNewBundle(MachineInstr &BundleStart, + bool UpdateFlags = false); /// Update live intervals for instructions in a range of iterators. It is /// intended for use after target hooks that may insert or remove @@ -333,7 +334,7 @@ class VirtRegMap; void repairIntervalsInRange(MachineBasicBlock *MBB, MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, - ArrayRef<unsigned> OrigRegs); + ArrayRef<Register> OrigRegs); // Register mask functions. // |