Skip to content

Commit 7c93452

Browse files
committed
[indvars] Restructure getExtendedOperandRecurrence [nfc]
As suggested during review of #70990.
1 parent edd690b commit 7c93452

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

llvm/lib/Transforms/Utils/SimplifyIndVar.cpp

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,32 +1383,33 @@ WidenIV::getExtendedOperandRecurrence(WidenIV::NarrowIVDefUse DU) {
13831383
DU.NarrowUse->getOperand(0) == DU.NarrowDef ? 1 : 0;
13841384
assert(DU.NarrowUse->getOperand(1-ExtendOperIdx) == DU.NarrowDef && "bad DU");
13851385

1386-
const SCEV *ExtendOperExpr = nullptr;
13871386
const OverflowingBinaryOperator *OBO =
13881387
cast<OverflowingBinaryOperator>(DU.NarrowUse);
13891388
ExtendKind ExtKind = getExtendKind(DU.NarrowDef);
1390-
if (ExtKind == ExtendKind::Sign && OBO->hasNoSignedWrap())
1391-
ExtendOperExpr = SE->getSignExtendExpr(
1392-
SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType);
1393-
else if (ExtKind == ExtendKind::Zero && OBO->hasNoUnsignedWrap())
1394-
ExtendOperExpr = SE->getZeroExtendExpr(
1395-
SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType);
1396-
else if (DU.NeverNegative) {
1389+
if (!(ExtKind == ExtendKind::Sign && OBO->hasNoSignedWrap()) &&
1390+
!(ExtKind == ExtendKind::Zero && OBO->hasNoUnsignedWrap())) {
1391+
ExtKind = ExtendKind::Unknown;
1392+
13971393
// For a non-negative NarrowDef, we can choose either type of
13981394
// extension. We want to use the current extend kind if legal
13991395
// (see above), and we only hit this code if we need to check
14001396
// the opposite case.
1401-
if (OBO->hasNoSignedWrap()) {
1402-
ExtKind = ExtendKind::Sign;
1403-
ExtendOperExpr = SE->getSignExtendExpr(
1404-
SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType);
1405-
} else if (OBO->hasNoUnsignedWrap()) {
1406-
ExtKind = ExtendKind::Zero;
1407-
ExtendOperExpr = SE->getZeroExtendExpr(
1408-
SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType);
1409-
} else
1410-
return {nullptr, ExtendKind::Unknown};
1411-
} else
1397+
if (DU.NeverNegative) {
1398+
if (OBO->hasNoSignedWrap()) {
1399+
ExtKind = ExtendKind::Sign;
1400+
} else if (OBO->hasNoUnsignedWrap()) {
1401+
ExtKind = ExtendKind::Zero;
1402+
}
1403+
}
1404+
}
1405+
1406+
const SCEV *ExtendOperExpr =
1407+
SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx));
1408+
if (ExtKind == ExtendKind::Sign)
1409+
ExtendOperExpr = SE->getSignExtendExpr(ExtendOperExpr, WideType);
1410+
else if (ExtKind == ExtendKind::Zero)
1411+
ExtendOperExpr = SE->getZeroExtendExpr(ExtendOperExpr, WideType);
1412+
else
14121413
return {nullptr, ExtendKind::Unknown};
14131414

14141415
// When creating this SCEV expr, don't apply the current operations NSW or NUW

0 commit comments

Comments
 (0)