reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
3489 if (!op.LHS->getType()->isPointerTy()) { 3490 if (op.Ty->isSignedIntegerOrEnumerationType()) { 3493 return Builder.CreateSub(op.LHS, op.RHS, "sub"); 3493 return Builder.CreateSub(op.LHS, op.RHS, "sub"); 3496 return Builder.CreateNSWSub(op.LHS, op.RHS, "sub"); 3496 return Builder.CreateNSWSub(op.LHS, op.RHS, "sub"); 3499 if (CanElideOverflowCheck(CGF.getContext(), op)) 3500 return Builder.CreateNSWSub(op.LHS, op.RHS, "sub"); 3500 return Builder.CreateNSWSub(op.LHS, op.RHS, "sub"); 3501 return EmitOverflowCheckedBinOp(op); 3505 if (op.Ty->isUnsignedIntegerType() && 3507 !CanElideOverflowCheck(CGF.getContext(), op)) 3508 return EmitOverflowCheckedBinOp(op); 3510 if (op.LHS->getType()->isFPOrFPVectorTy()) { 3512 if (Value *FMulAdd = tryEmitFMulAdd(op, CGF, Builder, true)) 3514 Value *V = Builder.CreateFSub(op.LHS, op.RHS, "sub"); 3514 Value *V = Builder.CreateFSub(op.LHS, op.RHS, "sub"); 3515 return propagateFMFlags(V, op); 3518 if (op.isFixedPointBinOp()) 3519 return EmitFixedPointBinOp(op); 3521 return Builder.CreateSub(op.LHS, op.RHS, "sub"); 3521 return Builder.CreateSub(op.LHS, op.RHS, "sub"); 3526 if (!op.RHS->getType()->isPointerTy()) 3527 return emitPointerArithmetic(CGF, op, CodeGenFunction::IsSubtraction); 3533 = Builder.CreatePtrToInt(op.LHS, CGF.PtrDiffTy, "sub.ptr.lhs.cast"); 3535 = Builder.CreatePtrToInt(op.RHS, CGF.PtrDiffTy, "sub.ptr.rhs.cast"); 3539 const BinaryOperator *expr = cast<BinaryOperator>(op.E);