summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SlotIndexes.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-11-11 00:19:20 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-11-11 00:19:20 +0000
commitc400670bf1f7fce0ef09aa649c6d7863cf39fea6 (patch)
tree5f19b39cbcc88a6408dce205ba2b0cc6fd9c9b58 /llvm/lib/CodeGen/SlotIndexes.cpp
parentfd0ad36c28065c4e069e4fa6f7c9e6e55bc4051b (diff)
downloadbcm5719-llvm-c400670bf1f7fce0ef09aa649c6d7863cf39fea6.tar.gz
bcm5719-llvm-c400670bf1f7fce0ef09aa649c6d7863cf39fea6.zip
Insert two blank SlotIndexes between basic blocks instead of just one.
This is the first small step towards using closed intervals for liveness instead of the half-open intervals we're using now. We want to be able to distinguish between a SlotIndex that represents a variable being live-out of a basic block, and an index representing a variable live-in to its successor. That requires two separate indexes between blocks. One for live-outs and one for live-ins. With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays greater than any instructions inserted at the end of MBB. llvm-svn: 118747
Diffstat (limited to 'llvm/lib/CodeGen/SlotIndexes.cpp')
-rw-r--r--llvm/lib/CodeGen/SlotIndexes.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SlotIndexes.cpp b/llvm/lib/CodeGen/SlotIndexes.cpp
index adab9ff3a5a..277cce3db88 100644
--- a/llvm/lib/CodeGen/SlotIndexes.cpp
+++ b/llvm/lib/CodeGen/SlotIndexes.cpp
@@ -127,8 +127,12 @@ bool SlotIndexes::runOnMachineFunction(MachineFunction &fn) {
index += (Slots + 1) * SlotIndex::NUM;
}
- // One blank instruction at the end.
- push_back(createEntry(0, index));
+ // We insert two blank instructions between basic blocks.
+ // One to represent live-out registers and one to represent live-ins.
+ push_back(createEntry(0, index));
+ index += SlotIndex::NUM;
+
+ push_back(createEntry(0, index));
SlotIndex blockEndIndex(back(), SlotIndex::LOAD);
mbb2IdxMap.insert(
OpenPOWER on IntegriCloud