#include #include #include "clang/AST/StmtNodes.inc" #include "clang/AST/OperationKinds.def"">

clang: lib/AST/Expr.cpp File Reference (original) (raw)

#include "[clang/AST/Expr.h](Expr%5F8h%5Fsource.html)"
#include "[clang/AST/APValue.h](APValue%5F8h%5Fsource.html)"
#include "[clang/AST/ASTContext.h](ASTContext%5F8h%5Fsource.html)"
#include "[clang/AST/ASTLambda.h](ASTLambda%5F8h%5Fsource.html)"
#include "[clang/AST/Attr.h](AST%5F2Attr%5F8h%5Fsource.html)"
#include "[clang/AST/ComputeDependence.h](ComputeDependence%5F8h%5Fsource.html)"
#include "[clang/AST/DeclCXX.h](DeclCXX%5F8h%5Fsource.html)"
#include "[clang/AST/DeclObjC.h](DeclObjC%5F8h%5Fsource.html)"
#include "[clang/AST/DeclTemplate.h](DeclTemplate%5F8h%5Fsource.html)"
#include "[clang/AST/DependenceFlags.h](DependenceFlags%5F8h%5Fsource.html)"
#include "[clang/AST/EvaluatedExprVisitor.h](EvaluatedExprVisitor%5F8h%5Fsource.html)"
#include "[clang/AST/ExprCXX.h](ExprCXX%5F8h%5Fsource.html)"
#include "[clang/AST/IgnoreExpr.h](IgnoreExpr%5F8h%5Fsource.html)"
#include "[clang/AST/Mangle.h](Mangle%5F8h%5Fsource.html)"
#include "[clang/AST/RecordLayout.h](RecordLayout%5F8h%5Fsource.html)"
#include "[clang/Basic/Builtins.h](Builtins%5F8h%5Fsource.html)"
#include "[clang/Basic/CharInfo.h](CharInfo%5F8h%5Fsource.html)"
#include "[clang/Basic/SourceManager.h](SourceManager%5F8h%5Fsource.html)"
#include "[clang/Basic/TargetInfo.h](include%5F2clang%5F2Basic%5F2TargetInfo%5F8h%5Fsource.html)"
#include "[clang/Lex/Lexer.h](Lexer%5F8h%5Fsource.html)"
#include "[clang/Lex/LiteralSupport.h](LiteralSupport%5F8h%5Fsource.html)"
#include "[clang/Lex/Preprocessor.h](Preprocessor%5F8h%5Fsource.html)"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstring>
#include <optional>
#include "clang/AST/StmtNodes.inc"
#include "clang/AST/OperationKinds.def"

Go to the source code of this file.

Macros
#define ABSTRACT_STMT(type)
#define STMT(type, base)
#define EXPR(type, base)
#define UNARY_OPERATION(Name, Spelling)
#define CAST_OPERATION(Name)
#define ABSTRACT_STMT(x)
#define CASTEXPR(Type, Base)
#define STMT(Type, Base)
#define BINARY_OPERATION(Name, Spelling)
#define ABSTRACT_STMT(Type)
#define STMT(Type, Base)
#define EXPR(Type, Base)
Functions
static void AssertResultStorageKind (ConstantResultStorageKind Kind)
static unsigned SizeOfCallExprInstance (Expr::StmtClass SC)
static bool IsDecompositionDeclRefExpr (const Expr *E)
Helper to determine wether E is a CXXConstructExpr constructing a DecompositionDecl.
static const Expr * skipTemporaryBindingsNoOpCastsAndParens (const Expr *E)
Skip over any no-op casts and any temporary-binding expressions.
static std::optional< BinaryOperator * > getOverflowPatternBinOp (const BinaryOperator *E)
Certain overflow-dependent code patterns can have their integer overflow sanitization disabled.
static void computeOverflowPatternExclusion (const ASTContext &Ctx, const BinaryOperator *E)
Compute and set the OverflowPatternExclusion bit based on whether the [BinaryOperator](classclang%5F1%5F1BinaryOperator.html "A builtin binary operation expression such as "x + y" or "x <= y".") expression matches an overflow pattern being ignored by -fsanitize-undefined-ignore-overflow-pattern=add-signed-overflow-test or -fsanitize-undefined-ignore-overflow-pattern=add-unsigned-overflow-test.

ABSTRACT_STMT [1/3]

#define ABSTRACT_STMT ( Type )

ABSTRACT_STMT [2/3]

#define ABSTRACT_STMT ( type )

ABSTRACT_STMT [3/3]

#define ABSTRACT_STMT ( x )

BINARY_OPERATION

#define BINARY_OPERATION ( Name,
Spelling )

Value:

case BO_##Name: return Spelling;

CAST_OPERATION

#define CAST_OPERATION ( Name )

Value:

case CK_##Name: return #Name;

CASTEXPR

#define CASTEXPR ( Type,
Base )

Value:

case Stmt::Type##Class: \

return static_cast<Type *>(this) \

->getTrailingObjectsNonStrict<CXXBaseSpecifier *>();

The base class of the type hierarchy.

EXPR [1/2]

#define EXPR ( Type,
Base )

EXPR [2/2]

#define EXPR ( type,
base )

Value:

case Stmt::type##Class: return getExprLocImpl(this, &type::getExprLoc);

STMT [1/3]

#define STMT ( Type,
Base )

STMT [2/3]

#define STMT ( Type,
Base )

STMT [3/3]

#define STMT ( type,
base )

Value:

case Stmt::type##Class: break;

UNARY_OPERATION

#define UNARY_OPERATION ( Name,
Spelling )

Value:

case UO_##Name: return Spelling;

AssertResultStorageKind()

computeOverflowPatternExclusion()

getOverflowPatternBinOp()

IsDecompositionDeclRefExpr()

bool IsDecompositionDeclRefExpr ( const Expr * E) static

SizeOfCallExprInstance()

unsigned SizeOfCallExprInstance ( Expr::StmtClass SC) static

skipTemporaryBindingsNoOpCastsAndParens()

const Expr * skipTemporaryBindingsNoOpCastsAndParens ( const Expr * E) static