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 |
|---|