Lines Matching defs:BO
106 bool strengthenBinaryOp(BinaryOperator *BO, Instruction *IVOperand);
109 bool strengthenRightShift(BinaryOperator *BO, Instruction *IVOperand);
463 BinaryOperator *BO = BinaryOperator::Create(
466 BO->setHasNoSignedWrap();
468 BO->setHasNoUnsignedWrap();
470 SI->replaceAllUsesWith(BO);
471 BO->setDebugLoc(SI->getDebugLoc());
794 bool SimplifyIndvar::strengthenBinaryOp(BinaryOperator *BO,
796 return (isa<OverflowingBinaryOperator>(BO) &&
797 strengthenOverflowingOperation(BO, IVOperand)) ||
798 (isa<ShlOperator>(BO) && strengthenRightShift(BO, IVOperand));
801 /// Annotate BO with nsw / nuw if it provably does not signed-overflow /
803 bool SimplifyIndvar::strengthenOverflowingOperation(BinaryOperator *BO,
806 cast<OverflowingBinaryOperator>(BO));
811 BO->setHasNoUnsignedWrap(ScalarEvolution::maskFlags(*Flags, SCEV::FlagNUW) ==
813 BO->setHasNoSignedWrap(ScalarEvolution::maskFlags(*Flags, SCEV::FlagNSW) ==
827 bool SimplifyIndvar::strengthenRightShift(BinaryOperator *BO,
829 if (BO->getOpcode() == Instruction::Shl) {
832 for (auto *U : BO->users()) {
975 if (BinaryOperator *BO = dyn_cast<BinaryOperator>(UseInst)) {
976 if (strengthenBinaryOp(BO, IVOperand)) {