22 llvm::FPClassTest Mask = llvm::fcNone;
23 if (LangOpts.NoHonorInfs)
25 if (LangOpts.NoHonorNaNs)
35 const auto *OCE = dyn_cast<CXXOperatorCallExpr>(E);
39 if (OCE->isAssignmentOp())
42 switch (OCE->getOperator()) {
44 case OO_GreaterGreater:
Defines the clang::Expr interface and subclasses for C++ expressions.
Defines the TargetCXXABI class, which abstracts details of the C++ ABI that we're targeting.
Represents a static or instance method of a struct/union/class.
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
Represents a canonical, potentially-qualified type.
CanProxy< U > getAs() const
Retrieve a canonical type pointer with a different static type, upcasting or downcasting as needed.
Represents a prototype with parameter type info, e.g.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
The basic abstraction for the target C++ ABI.
bool areArgsDestroyedLeftToRightInCallee() const
Are arguments to a call destroyed left to right in the callee?
CanQualType getCanonicalTypeUnqualified() const
CanQual< FunctionProtoType > getFormalType(const CXXMethodDecl *MD)
Returns the canonical formal type of the given C++ method.
EvaluationOrder getCallArgEvaluationOrder(const CallExpr *E)
Returns the argument evaluation order the language requires for the given call.
llvm::FPClassTest getNoFPClassTestMask(const LangOptions &LangOpts)
Returns the set of floating-point value kinds that the language options promise never reach a functio...
EvaluationOrder
The order in which the arguments of a call must be evaluated.
@ ForceLeftToRight
! Language semantics require left-to-right evaluation.
@ Default
! No language constraints on evaluation order.
@ ForceRightToLeft
! Language semantics require right-to-left evaluation.
bool shouldEvaluateArgsLeftToRight(EvaluationOrder Order, const TargetCXXABI &ABI)
Returns true if call arguments should be emitted left-to-right, given the order the language requires...