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

References

tools/clang/lib/AST/ExprConstant.cpp
11769   if (!Info.keepEvaluatingAfterFailure() && E->isAssignmentOp())
11770     return Error(E);
11772   DelayedNoteFailureRAII MaybeNoteFailureLater(Info, E->isAssignmentOp());
11773   if (DataRecursiveIntBinOpEvaluator::shouldEnqueue(E))
11774     return DataRecursiveIntBinOpEvaluator(*this, Result).Traverse(E);
11776   assert((!E->getLHS()->getType()->isIntegralOrEnumerationType() ||
11777           !E->getRHS()->getType()->isIntegralOrEnumerationType()) &&
11780   if (E->isComparisonOp()) {
11802     return EvaluateComparisonBinaryOperator(Info, E, OnSuccess, [&]() {
11803       return ExprEvaluatorBaseTy::VisitBinaryOperator(E);
11807   QualType LHSTy = E->getLHS()->getType();
11808   QualType RHSTy = E->getRHS()->getType();
11811       E->getOpcode() == BO_Sub) {
11814     bool LHSOK = EvaluatePointer(E->getLHS(), LHSValue, Info);
11818     if (!EvaluatePointer(E->getRHS(), RHSValue, Info) || !LHSOK)
11826         return Error(E);
11830         return Error(E);
11834         return Error(E);
11838         return Error(E);
11839       return Success(APValue(LHSAddrExpr, RHSAddrExpr), E);
11854       Info.CCEDiag(E, diag::note_constexpr_pointer_subtraction_not_same_array);
11856     QualType Type = E->getLHS()->getType();
11860     if (!HandleSizeof(Info, E->getExprLoc(), ElementType, ElementSize))
11867       Info.FFDiag(E, diag::note_constexpr_pointer_subtraction_zero_size)
11885     APSInt Result = TrueResult.trunc(Info.Ctx.getIntWidth(E->getType()));
11888         !HandleOverflow(Info, E, TrueResult, E->getType()))
11888         !HandleOverflow(Info, E, TrueResult, E->getType()))
11890     return Success(Result, E);
11893   return ExprEvaluatorBaseTy::VisitBinaryOperator(E);