unsigned preference; // preferred register to allocate for this interval
float weight; // weight of this interval
Ranges ranges; // the ranges in which this register is live
- unsigned numvals; // number of value#'s
VNInfoList valnos; // value#'s
public:
LiveInterval(unsigned Reg, float Weight)
- : reg(Reg), preference(0), weight(Weight), numvals(0) {
+ : reg(Reg), preference(0), weight(Weight) {
}
typedef Ranges::iterator iterator;
return I;
}
- bool containsOneValue() const { return numvals == 1; }
+ bool containsOneValue() const { return valnos.size() == 1; }
- unsigned getNumValNums() const { return numvals; }
+ unsigned getNumValNums() const { return valnos.size(); }
/// getFirstValNumInfo - Returns pointer to the first val#.
///
/// getNextValue - Create a new value number and return it. MIIdx specifies
/// the instruction that defines the value number.
VNInfo *getNextValue(unsigned MIIdx, unsigned SrcReg) {
- VNInfo *VNI = new VNInfo(this, numvals++, MIIdx, SrcReg);
+ VNInfo *VNI = new VNInfo(this, valnos.size(), MIIdx, SrcReg);
valnos.push_back(VNI);
return VNI;
}
// Update val# info. Renumber them and make sure they all belong to this
// LiveInterval now.
valnos.clear();
- numvals = 0;
for (unsigned i = 0, e = NewVNInfo.size(); i != e; ++i) {
VNInfo *VNI = NewVNInfo[i];
VNI->parent = this;
VNI->id = i; // Renumber val#.
valnos.push_back(VNI);
- ++numvals;
}
// Okay, now insert the RHS live ranges into the LHS.
VNInfo *VNI = valnos.back();
valnos.pop_back();
delete VNI;
- --numvals;
} while (valnos.back()->def == ~1U);
} else {
V1->def = ~1U;