diff options
Diffstat (limited to 'llvm/lib/CodeGen/RegisterClassInfo.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/RegisterClassInfo.cpp | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/llvm/lib/CodeGen/RegisterClassInfo.cpp b/llvm/lib/CodeGen/RegisterClassInfo.cpp index 9312bc03bc52..976d41a54da5 100644 --- a/llvm/lib/CodeGen/RegisterClassInfo.cpp +++ b/llvm/lib/CodeGen/RegisterClassInfo.cpp @@ -195,40 +195,3 @@ void RegisterClassInfo::compute(const TargetRegisterClass *RC) const { // RCI is now up-to-date. RCI.Tag = Tag; } - -/// This is not accurate because two overlapping register sets may have some -/// nonoverlapping reserved registers. However, computing the allocation order -/// for all register classes would be too expensive. -unsigned RegisterClassInfo::computePSetLimit(unsigned Idx) const { - const TargetRegisterClass *RC = nullptr; - unsigned NumRCUnits = 0; - for (const TargetRegisterClass *C : TRI->regclasses()) { - const int *PSetID = TRI->getRegClassPressureSets(C); - for (; *PSetID != -1; ++PSetID) { - if ((unsigned)*PSetID == Idx) - break; - } - if (*PSetID == -1) - continue; - - // Found a register class that counts against this pressure set. - // For efficiency, only compute the set order for the largest set. - unsigned NUnits = TRI->getRegClassWeight(C).WeightLimit; - if (!RC || NUnits > NumRCUnits) { - RC = C; - NumRCUnits = NUnits; - } - } - assert(RC && "Failed to find register class"); - compute(RC); - unsigned NAllocatableRegs = getNumAllocatableRegs(RC); - unsigned RegPressureSetLimit = TRI->getRegPressureSetLimit(*MF, Idx); - // If all the regs are reserved, return raw RegPressureSetLimit. - // One example is VRSAVERC in PowerPC. - // Avoid returning zero, getRegPressureSetLimit(Idx) assumes computePSetLimit - // return non-zero value. - if (NAllocatableRegs == 0) - return RegPressureSetLimit; - unsigned NReserved = RC->getNumRegs() - NAllocatableRegs; - return RegPressureSetLimit - TRI->getRegClassWeight(RC).RegWeight * NReserved; -} |
