reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGExprScalar.cpp
 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);