[VPlan] Remove unneeded getNumUsers calls in replaceAllUsesWith (NFC).
As suggested post-commit for a00227197, replace unnecessary getNumUsers
calls by boolean variable to indicate if users changed. Note that this
also requires an early exit to detect the case where a value is replaced
by itself.
This commit is contained in:
@@ -1135,16 +1135,20 @@ void VPlanIngredient::print(raw_ostream &O) const {
|
||||
template void DomTreeBuilder::Calculate<VPDominatorTree>(VPDominatorTree &DT);
|
||||
|
||||
void VPValue::replaceAllUsesWith(VPValue *New) {
|
||||
if (this == New)
|
||||
return;
|
||||
for (unsigned J = 0; J < getNumUsers();) {
|
||||
VPUser *User = Users[J];
|
||||
unsigned NumUsers = getNumUsers();
|
||||
bool RemovedUser = false;
|
||||
for (unsigned I = 0, E = User->getNumOperands(); I < E; ++I)
|
||||
if (User->getOperand(I) == this)
|
||||
if (User->getOperand(I) == this) {
|
||||
User->setOperand(I, New);
|
||||
RemovedUser = true;
|
||||
}
|
||||
// If a user got removed after updating the current user, the next user to
|
||||
// update will be moved to the current position, so we only need to
|
||||
// increment the index if the number of users did not change.
|
||||
if (NumUsers == getNumUsers())
|
||||
if (!RemovedUser)
|
||||
J++;
|
||||
}
|
||||
}
|
||||
@@ -1152,19 +1156,22 @@ void VPValue::replaceAllUsesWith(VPValue *New) {
|
||||
void VPValue::replaceUsesWithIf(
|
||||
VPValue *New,
|
||||
llvm::function_ref<bool(VPUser &U, unsigned Idx)> ShouldReplace) {
|
||||
if (this == New)
|
||||
return;
|
||||
for (unsigned J = 0; J < getNumUsers();) {
|
||||
VPUser *User = Users[J];
|
||||
unsigned NumUsers = getNumUsers();
|
||||
bool RemovedUser = false;
|
||||
for (unsigned I = 0, E = User->getNumOperands(); I < E; ++I) {
|
||||
if (User->getOperand(I) != this || !ShouldReplace(*User, I))
|
||||
continue;
|
||||
|
||||
RemovedUser = true;
|
||||
User->setOperand(I, New);
|
||||
}
|
||||
// If a user got removed after updating the current user, the next user to
|
||||
// update will be moved to the current position, so we only need to
|
||||
// increment the index if the number of users did not change.
|
||||
if (NumUsers == getNumUsers())
|
||||
if (!RemovedUser)
|
||||
J++;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user