forked from OSchip/llvm-project
Use hasNItemsOrLess() in MRI::hasAtMostUserInstrs().
This commit is contained in:
parent
16e0620d6d
commit
65246d3eb4
|
@ -422,12 +422,8 @@ bool MachineRegisterInfo::hasOneNonDBGUser(Register RegNo) const {
|
||||||
|
|
||||||
bool MachineRegisterInfo::hasAtMostUserInstrs(Register Reg,
|
bool MachineRegisterInfo::hasAtMostUserInstrs(Register Reg,
|
||||||
unsigned MaxUsers) const {
|
unsigned MaxUsers) const {
|
||||||
unsigned NumUsers = 0;
|
return hasNItemsOrLess(use_instr_nodbg_begin(Reg), use_instr_nodbg_end(),
|
||||||
auto UI = use_instr_nodbg_begin(Reg), UE = use_instr_nodbg_end();
|
MaxUsers);
|
||||||
for (; UI != UE && NumUsers < MaxUsers; ++UI)
|
|
||||||
NumUsers++;
|
|
||||||
// If we haven't reached the end yet then there are more than MaxUses users.
|
|
||||||
return UI == UE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// clearKillFlags - Iterate over all the uses of the given register and
|
/// clearKillFlags - Iterate over all the uses of the given register and
|
||||||
|
|
|
@ -2325,7 +2325,7 @@ bool TargetLoweringBase::shouldLocalize(const MachineInstr &MI,
|
||||||
auto maxUses = [](unsigned RematCost) {
|
auto maxUses = [](unsigned RematCost) {
|
||||||
// A cost of 1 means remats are basically free.
|
// A cost of 1 means remats are basically free.
|
||||||
if (RematCost == 1)
|
if (RematCost == 1)
|
||||||
return UINT_MAX;
|
return std::numeric_limits<unsigned>::max();
|
||||||
if (RematCost == 2)
|
if (RematCost == 2)
|
||||||
return 2U;
|
return 2U;
|
||||||
|
|
||||||
|
|
|
@ -20837,7 +20837,7 @@ bool AArch64TargetLowering::shouldLocalize(
|
||||||
auto maxUses = [](unsigned RematCost) {
|
auto maxUses = [](unsigned RematCost) {
|
||||||
// A cost of 1 means remats are basically free.
|
// A cost of 1 means remats are basically free.
|
||||||
if (RematCost == 1)
|
if (RematCost == 1)
|
||||||
return UINT_MAX;
|
return std::numeric_limits<unsigned>::max();
|
||||||
if (RematCost == 2)
|
if (RematCost == 2)
|
||||||
return 2U;
|
return 2U;
|
||||||
|
|
||||||
|
@ -20867,6 +20867,9 @@ bool AArch64TargetLowering::shouldLocalize(
|
||||||
unsigned RematCost = *Cost.getValue();
|
unsigned RematCost = *Cost.getValue();
|
||||||
Register Reg = MI.getOperand(0).getReg();
|
Register Reg = MI.getOperand(0).getReg();
|
||||||
unsigned MaxUses = maxUses(RematCost);
|
unsigned MaxUses = maxUses(RematCost);
|
||||||
|
// Don't pass UINT_MAX sentinal value to hasAtMostUserInstrs().
|
||||||
|
if (MaxUses == std::numeric_limits<unsigned>::max())
|
||||||
|
--MaxUses;
|
||||||
return MRI.hasAtMostUserInstrs(Reg, MaxUses);
|
return MRI.hasAtMostUserInstrs(Reg, MaxUses);
|
||||||
}
|
}
|
||||||
// If we legalized G_GLOBAL_VALUE into ADRP + G_ADD_LOW, mark both as being
|
// If we legalized G_GLOBAL_VALUE into ADRP + G_ADD_LOW, mark both as being
|
||||||
|
|
Loading…
Reference in New Issue