Index: llvm/lib/Analysis/ScalarEvolution.cpp =================================================================== --- llvm/lib/Analysis/ScalarEvolution.cpp +++ llvm/lib/Analysis/ScalarEvolution.cpp @@ -3897,7 +3897,7 @@ auto AddFlags = SCEV::FlagAnyWrap; const bool RHSIsNotMinSigned = !getSignedRangeMin(RHS).isMinSignedValue(); - if ((Flags & SCEV::FlagNSW) == SCEV::FlagNSW) { + if (Flags & SCEV::FlagNSW) { // Let M be the minimum representable signed value. Then (-1)*RHS // signed-wraps if and only if RHS is M. That can happen even for // a NSW subtraction because e.g. (-1)*M signed-wraps even though @@ -11940,7 +11940,7 @@ SCEV::NoWrapFlags ScevFlags = AR->getNoWrapFlags(); IncrementWrapFlags IFlags = Flags; - if ((ScevFlags | SCEV::FlagNSW) == ScevFlags) + if (ScevFlags & SCEV::FlagNSW) IFlags &= ~IncrementNSSW; return IFlags == IncrementAnyWrap; @@ -11962,10 +11962,10 @@ SCEV::NoWrapFlags StaticFlags = AR->getNoWrapFlags(); // We can safely transfer the NSW flag as NSSW. - if ((StaticFlags | SCEV::FlagNSW) == StaticFlags) + if (StaticFlags & SCEV::FlagNSW) ImpliedFlags = IncrementNSSW; - if ((StaticFlags | SCEV::FlagNUW) == StaticFlags) { + if (StaticFlags & SCEV::FlagNUW) { // If the increment is positive, the SCEV NUW flag will also imply the // WrapPredicate NUSW flag. if (const auto *Step = dyn_cast(AR->getStepRecurrence(SE)))