mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
LiveInterval: A LiveRange is enough for ConnectedVNInfoEqClasses::Classify()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257129 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1328,15 +1328,15 @@ void LiveRangeUpdater::flush() {
|
||||
LR->verify();
|
||||
}
|
||||
|
||||
unsigned ConnectedVNInfoEqClasses::Classify(const LiveInterval *LI) {
|
||||
unsigned ConnectedVNInfoEqClasses::Classify(const LiveRange &LR) {
|
||||
// Create initial equivalence classes.
|
||||
EqClass.clear();
|
||||
EqClass.grow(LI->getNumValNums());
|
||||
EqClass.grow(LR.getNumValNums());
|
||||
|
||||
const VNInfo *used = nullptr, *unused = nullptr;
|
||||
|
||||
// Determine connections.
|
||||
for (const VNInfo *VNI : LI->valnos) {
|
||||
for (const VNInfo *VNI : LR.valnos) {
|
||||
// Group all unused values into one class.
|
||||
if (VNI->isUnused()) {
|
||||
if (unused)
|
||||
@@ -1351,14 +1351,14 @@ unsigned ConnectedVNInfoEqClasses::Classify(const LiveInterval *LI) {
|
||||
// Connect to values live out of predecessors.
|
||||
for (MachineBasicBlock::const_pred_iterator PI = MBB->pred_begin(),
|
||||
PE = MBB->pred_end(); PI != PE; ++PI)
|
||||
if (const VNInfo *PVNI = LI->getVNInfoBefore(LIS.getMBBEndIdx(*PI)))
|
||||
if (const VNInfo *PVNI = LR.getVNInfoBefore(LIS.getMBBEndIdx(*PI)))
|
||||
EqClass.join(VNI->id, PVNI->id);
|
||||
} else {
|
||||
// Normal value defined by an instruction. Check for two-addr redef.
|
||||
// FIXME: This could be coincidental. Should we really check for a tied
|
||||
// operand constraint?
|
||||
// Note that VNI->def may be a use slot for an early clobber def.
|
||||
if (const VNInfo *UVNI = LI->getVNInfoBefore(VNI->def))
|
||||
if (const VNInfo *UVNI = LR.getVNInfoBefore(VNI->def))
|
||||
EqClass.join(VNI->id, UVNI->id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user