Skip to content

Commit 91d4a57

Browse files
committed
Rebase and address reviewer comments
1 parent d369a68 commit 91d4a57

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

llvm/lib/CodeGen/GlobalISel/Utils.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1771,26 +1771,22 @@ static bool isGuaranteedNotToBeUndefOrPoison(Register Reg,
17711771

17721772
MachineInstr *RegDef = MRI.getVRegDef(Reg);
17731773

1774-
auto OpCheck = [&](MachineOperand &Operand) {
1775-
if (!Operand.isReg())
1776-
return true;
1777-
1778-
return isGuaranteedNotToBeUndefOrPoison(Operand.getReg(), MRI, Depth + 1,
1779-
Kind);
1780-
};
1781-
17821774
switch (RegDef->getOpcode()) {
17831775
case TargetOpcode::G_FREEZE:
17841776
return true;
17851777
case TargetOpcode::G_IMPLICIT_DEF:
17861778
return !includesUndef(Kind);
1787-
default:
1788-
GenericMachineInstr *Opr = dyn_cast<GBinOp>(RegDef);
1789-
if (!Opr)
1790-
Opr = dyn_cast<GCastOp>(RegDef);
1791-
1792-
return Opr && !::llvm::canCreateUndefOrPoison(Reg, MRI) &&
1793-
all_of(Opr->operands(), OpCheck);
1779+
default: {
1780+
auto MOCheck = [&](const MachineOperand &MO) {
1781+
if (!MO.isReg())
1782+
return true;
1783+
return ::isGuaranteedNotToBeUndefOrPoison(MO.getReg(), MRI, Depth + 1,
1784+
Kind);
1785+
};
1786+
return !::canCreateUndefOrPoison(Reg, MRI,
1787+
/*ConsiderFlagsAndMetadata=*/true, Kind) &&
1788+
all_of(RegDef->uses(), MOCheck);
1789+
}
17941790
}
17951791
}
17961792

0 commit comments

Comments
 (0)