Lines Matching refs:BO
270 bool SimplifyIndvar::strengthenOverflowingOperation(BinaryOperator *BO, in strengthenOverflowingOperation() argument
274 if (BO->hasNoUnsignedWrap() && BO->hasNoSignedWrap()) in strengthenOverflowingOperation()
280 switch (BO->getOpcode()) { in strengthenOverflowingOperation()
297 unsigned BitWidth = cast<IntegerType>(BO->getType())->getBitWidth(); in strengthenOverflowingOperation()
298 Type *WideTy = IntegerType::get(BO->getContext(), BitWidth * 2); in strengthenOverflowingOperation()
299 const SCEV *LHS = SE->getSCEV(BO->getOperand(0)); in strengthenOverflowingOperation()
300 const SCEV *RHS = SE->getSCEV(BO->getOperand(1)); in strengthenOverflowingOperation()
304 if (!BO->hasNoUnsignedWrap()) { in strengthenOverflowingOperation()
305 const SCEV *ExtendAfterOp = SE->getZeroExtendExpr(SE->getSCEV(BO), WideTy); in strengthenOverflowingOperation()
310 BO->setHasNoUnsignedWrap(); in strengthenOverflowingOperation()
311 SE->forgetValue(BO); in strengthenOverflowingOperation()
316 if (!BO->hasNoSignedWrap()) { in strengthenOverflowingOperation()
317 const SCEV *ExtendAfterOp = SE->getSignExtendExpr(SE->getSCEV(BO), WideTy); in strengthenOverflowingOperation()
322 BO->setHasNoSignedWrap(); in strengthenOverflowingOperation()
323 SE->forgetValue(BO); in strengthenOverflowingOperation()
491 if (BinaryOperator *BO = dyn_cast<BinaryOperator>(UseOper.first)) { in simplifyUsers() local
492 if (isa<OverflowingBinaryOperator>(BO) && in simplifyUsers()
493 strengthenOverflowingOperation(BO, IVOperand)) { in simplifyUsers()