aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/SplitKit.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2021-07-29 20:15:26 +0000
committerDimitry Andric <dim@FreeBSD.org>2021-07-29 20:15:26 +0000
commit344a3780b2e33f6ca763666c380202b18aab72a3 (patch)
treef0b203ee6eb71d7fdd792373e3c81eb18d6934dd /llvm/lib/CodeGen/SplitKit.h
parentb60736ec1405bb0a8dd40989f67ef4c93da068ab (diff)
downloadsrc-344a3780b2e33f6ca763666c380202b18aab72a3.tar.gz
src-344a3780b2e33f6ca763666c380202b18aab72a3.zip
the upstream release/13.x branch was created.
Diffstat (limited to 'llvm/lib/CodeGen/SplitKit.h')
-rw-r--r--llvm/lib/CodeGen/SplitKit.h18
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SplitKit.h b/llvm/lib/CodeGen/SplitKit.h
index a94518f5a4fc..fbcffacb49ab 100644
--- a/llvm/lib/CodeGen/SplitKit.h
+++ b/llvm/lib/CodeGen/SplitKit.h
@@ -44,6 +44,7 @@ class MachineRegisterInfo;
class TargetInstrInfo;
class TargetRegisterInfo;
class VirtRegMap;
+class VirtRegAuxInfo;
/// Determines the latest safe point in a block in which we can insert a split,
/// spill or other instruction related with CurLI.
@@ -131,6 +132,9 @@ public:
bool isOneInstr() const {
return SlotIndex::isSameInstr(FirstInstr, LastInstr);
}
+
+ void print(raw_ostream &OS) const;
+ void dump() const;
};
private:
@@ -235,6 +239,10 @@ public:
return IPA.getLastInsertPoint(*CurLI, *MF.getBlockNumbered(Num));
}
+ SlotIndex getLastSplitPoint(MachineBasicBlock *BB) {
+ return IPA.getLastInsertPoint(*CurLI, *BB);
+ }
+
MachineBasicBlock::iterator getLastSplitPointIter(MachineBasicBlock *BB) {
return IPA.getLastInsertPointIter(*CurLI, *BB);
}
@@ -265,6 +273,7 @@ class LLVM_LIBRARY_VISIBILITY SplitEditor {
const TargetInstrInfo &TII;
const TargetRegisterInfo &TRI;
const MachineBlockFrequencyInfo &MBFI;
+ VirtRegAuxInfo &VRAI;
public:
/// ComplementSpillMode - Select how the complement live range should be
@@ -450,9 +459,9 @@ private:
public:
/// Create a new SplitEditor for editing the LiveInterval analyzed by SA.
/// Newly created intervals will be appended to newIntervals.
- SplitEditor(SplitAnalysis &sa, AAResults &aa, LiveIntervals &lis,
- VirtRegMap &vrm, MachineDominatorTree &mdt,
- MachineBlockFrequencyInfo &mbfi);
+ SplitEditor(SplitAnalysis &SA, AAResults &AA, LiveIntervals &LIS,
+ VirtRegMap &VRM, MachineDominatorTree &MDT,
+ MachineBlockFrequencyInfo &MBFI, VirtRegAuxInfo &VRAI);
/// reset - Prepare for a new split.
void reset(LiveRangeEdit&, ComplementSpillMode = SM_Partition);
@@ -502,7 +511,8 @@ public:
SlotIndex leaveIntvAtTop(MachineBasicBlock &MBB);
/// overlapIntv - Indicate that all instructions in range should use the open
- /// interval, but also let the complement interval be live.
+ /// interval if End does not have tied-def usage of the register and in this
+ /// case compliment interval is used. Let the complement interval be live.
///
/// This doubles the register pressure, but is sometimes required to deal with
/// register uses after the last valid split point.