reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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);