Skip to content

Commit d66f653

Browse files
authored
[MachinePipeliner] Skip reserved registers when computing register pressure (#120694)
We used to skip fixed registers, but fixed registers are not enough because there are some runtime unusable registers like registers reserved by `-ffixed-xxx` options. Here we change to use reserved registers so that the estimated pressure is more accurate.
1 parent 2fa2c21 commit d66f653

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

llvm/lib/CodeGen/MachinePipeliner.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,9 +1283,9 @@ class HighRegisterPressureDetector {
12831283
}
12841284
}
12851285

1286-
// Return true if Reg is fixed one, for example, stack pointer
1287-
bool isFixedRegister(Register Reg) const {
1288-
return Reg.isPhysical() && TRI->isFixedRegister(MF, Reg.asMCReg());
1286+
// Return true if Reg is reserved one, for example, stack pointer
1287+
bool isReservedRegister(Register Reg) const {
1288+
return Reg.isPhysical() && MRI.isReserved(Reg.asMCReg());
12891289
}
12901290

12911291
bool isDefinedInThisLoop(Register Reg) const {
@@ -1311,7 +1311,7 @@ class HighRegisterPressureDetector {
13111311
// because it's used only at the first iteration.
13121312
if (MI.isPHI() && Reg != getLoopPhiReg(MI, OrigMBB))
13131313
continue;
1314-
if (isFixedRegister(Reg))
1314+
if (isReservedRegister(Reg))
13151315
continue;
13161316
if (isDefinedInThisLoop(Reg))
13171317
continue;
@@ -1423,7 +1423,7 @@ class HighRegisterPressureDetector {
14231423

14241424
const auto InsertReg = [this, &CurSetPressure](RegSetTy &RegSet,
14251425
Register Reg) {
1426-
if (!Reg.isValid() || isFixedRegister(Reg))
1426+
if (!Reg.isValid() || isReservedRegister(Reg))
14271427
return;
14281428

14291429
bool Inserted = RegSet.insert(Reg).second;
@@ -1437,7 +1437,7 @@ class HighRegisterPressureDetector {
14371437

14381438
const auto EraseReg = [this, &CurSetPressure](RegSetTy &RegSet,
14391439
Register Reg) {
1440-
if (!Reg.isValid() || isFixedRegister(Reg))
1440+
if (!Reg.isValid() || isReservedRegister(Reg))
14411441
return;
14421442

14431443
// live-in register

0 commit comments

Comments
 (0)