mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
We don't need to scan the blocks that we are live-in on every
access. Rather we only have to do it on the creation of the interval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
913a934b36
commit
ad48cd6327
@ -162,23 +162,24 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock* mbb,
|
||||
// update interval index for this register
|
||||
r2iMap_.insert(r2iit, std::make_pair(reg, --intervals_.end()));
|
||||
interval = &intervals_.back();
|
||||
|
||||
// iterate over all of the blocks that the variable is
|
||||
// completely live in, adding them to the live
|
||||
// interval. obviously we only need to do this once.
|
||||
for (unsigned i = 0, e = vi.AliveBlocks.size(); i != e; ++i) {
|
||||
if (vi.AliveBlocks[i]) {
|
||||
MachineBasicBlock* mbb = lv_->getIndexMachineBasicBlock(i);
|
||||
if (!mbb->empty()) {
|
||||
interval->addRange(getInstructionIndex(mbb->front()),
|
||||
getInstructionIndex(mbb->back()) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
interval = &*r2iit->second;
|
||||
}
|
||||
|
||||
// iterate over all of the blocks that the variable is completely
|
||||
// live in, adding them to the live interval
|
||||
for (unsigned i = 0, e = vi.AliveBlocks.size(); i != e; ++i) {
|
||||
if (vi.AliveBlocks[i]) {
|
||||
MachineBasicBlock* mbb = lv_->getIndexMachineBasicBlock(i);
|
||||
if (!mbb->empty()) {
|
||||
interval->addRange(getInstructionIndex(mbb->front()),
|
||||
getInstructionIndex(mbb->back()) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool killedInDefiningBasicBlock = false;
|
||||
for (int i = 0, e = vi.Kills.size(); i != e; ++i) {
|
||||
MachineBasicBlock* killerBlock = vi.Kills[i].first;
|
||||
|
Loading…
x
Reference in New Issue
Block a user