mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Teach ConnectedVNInfoEqClasses::Classify to deal with unused values.
We don't want unused values forming their own equivalence classes, so we lump them all together in one class, and then merge them with the class of the last used value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117670 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c94fcb1507
commit
6d309059a7
@ -740,11 +740,20 @@ unsigned ConnectedVNInfoEqClasses::Classify(const LiveInterval *LI) {
|
||||
for (unsigned i = 0, e = LI->getNumValNums(); i != e; ++i)
|
||||
eqClass_.push_back(i);
|
||||
|
||||
const VNInfo *used = 0, *unused = 0;
|
||||
|
||||
// Determine connections.
|
||||
for (LiveInterval::const_vni_iterator I = LI->vni_begin(), E = LI->vni_end();
|
||||
I != E; ++I) {
|
||||
const VNInfo *VNI = *I;
|
||||
assert(!VNI->isUnused() && "Cannot handle unused values");
|
||||
// Group all unused values into one class.
|
||||
if (VNI->isUnused()) {
|
||||
if (unused)
|
||||
Connect(unused->id, VNI->id);
|
||||
unused = VNI;
|
||||
continue;
|
||||
}
|
||||
used = VNI;
|
||||
if (VNI->isPHIDef()) {
|
||||
const MachineBasicBlock *MBB = lis_.getMBBFromIndex(VNI->def);
|
||||
assert(MBB && "Phi-def has no defining MBB");
|
||||
@ -762,6 +771,11 @@ unsigned ConnectedVNInfoEqClasses::Classify(const LiveInterval *LI) {
|
||||
Connect(VNI->id, UVNI->id);
|
||||
}
|
||||
}
|
||||
|
||||
// Lump all the unused values in with the last used value.
|
||||
if (used && unused)
|
||||
Connect(used->id, unused->id);
|
||||
|
||||
return Renumber();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user