Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
cd8de4a
Introduce refactored algorithmic scheme in `ExprEngine::ProcessStmt`
tigbr Aug 5, 2026
9477afa
`ExprEngine::VisitCXXBindTemporaryExpr`
tigbr Aug 5, 2026
c24938e
`ExprEngine::VisitStmtExpr`
tigbr Aug 7, 2026
6695599
`ExprEngine::OffsetOfExpr`
tigbr Aug 7, 2026
19d7f0c
`ExprEngine::VisitUnaryOperator`
tigbr Aug 10, 2026
f26640f
`ExprEngine::VisitPseudoObjectExpr`
tigbr Aug 10, 2026
4876853
`ExprEngine::VisitObjCIndirectCopyRestoreClass`
tigbr Aug 10, 2026
ab222e4
`ExprEngine::VisitMaterializeTemporaryExpr`
tigbr Aug 10, 2026
6db5fb6
`ExprEngine::VisitCXXParenListInitExpr`
tigbr Aug 10, 2026
da0c6f9
`ExprEngine::VisitCastExpr`
tigbr Aug 10, 2026
17716d6
`ExprEngine::VisitCXXNewExpr`
tigbr Aug 12, 2026
1db773a
`ExprEngine::VisitLambdaExpr`
tigbr Aug 12, 2026
5717201
`ExprEngine::VisitGCCAsmStmt`
tigbr Aug 12, 2026
7b68df1
`ExprEngine::VisitUnaryExprOrTypeTraitExpr`
tigbr Aug 12, 2026
d6a329e
`ExprEngine::VisitReturnStmt`
tigbr Aug 12, 2026
1fea98f
`ExprEngine::VisitAtomicExpr`
tigbr Aug 12, 2026
a543f02
`ExprEngine::VisitMemberExpr`
tigbr Aug 12, 2026
eddd694
`ExprEngine::VisitBlockExpr`
tigbr Aug 12, 2026
b5ff694
`ExprEngine::VisitArraySubscriptExpr`
tigbr Aug 12, 2026
a5be3d4
`ExprEngine::VisitAttributedStmt`
tigbr Aug 12, 2026
01b503f
`ExprEngine::VisitArrayInitLoopExpr`
tigbr Aug 13, 2026
75032f1
Refactor cases that are unsupported or that do not have to be explici…
tigbr Aug 13, 2026
9ebb3b4
`Stmt::CXXDefaultArgExprClass`, `Stmt::CXXDefaultInitExprClass`
tigbr Aug 13, 2026
a6d1729
`Stmt::CXXStdInitializerListExprClass`, `Expr::ObjCArrayLiteralClass`,
tigbr Aug 13, 2026
4542665
`ExprEngine::VisitLvalObjCIvarRefExpr`
tigbr Aug 13, 2026
40570db
`ExprEngine::VisitObjCForCollectionStmt`
tigbr Aug 13, 2026
db5a009
`ExprEngine::VisitObjCAtSynchronizedStmt`
tigbr Aug 14, 2026
c602cc0
Merge functions `justRunCheckersAsPreVisit` and `justRunCheckersAsPos…
tigbr Aug 14, 2026
9da48e9
Handle new statement kinds after rebase.
tigbr Aug 24, 2026
915e362
`ExprEngine::VisitCXXDeleteExpr`
tigbr Aug 24, 2026
89b9472
Fix formatting.
tigbr Aug 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 20 additions & 8 deletions clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
Original file line number Diff line number Diff line change
Expand Up @@ -546,9 +546,10 @@ class ExprEngine {
void VisitCallExpr(const CallExpr *CE, ExplodedNode *Pred,
ExplodedNodeSet &Dst);

/// VisitCast - Transfer function logic for all casts (implicit and explicit).
void VisitCast(const CastExpr *CastE, const Expr *Ex, ExplodedNode *Pred,
ExplodedNodeSet &Dst);
/// VisitCastExpr - Transfer function logic for all casts (implicit and
/// explicit).
void VisitCastExpr(const CastExpr *CastE, ExplodedNode *Pred,
ExplodedNodeSet &Dst);

/// VisitCompoundLiteralExpr - Transfer function logic for compound literals.
void VisitCompoundLiteralExpr(const CompoundLiteralExpr *CL,
Expand Down Expand Up @@ -618,22 +619,34 @@ class ExprEngine {
void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *Ex,
ExplodedNode *Pred, ExplodedNodeSet &Dst);

void VisitStmtExpr(const StmtExpr *S, ExplodedNode *Pred,
ExplodedNodeSet &Dst);

/// VisitUnaryOperator - Transfer function logic for unary operators.
void VisitUnaryOperator(const UnaryOperator* B, ExplodedNode *Pred,
ExplodedNodeSet &Dst);

void VisitPseudoObjectExpr(const PseudoObjectExpr *PE, ExplodedNode *Pred,
ExplodedNodeSet &Dst);

void VisitObjCIndirectCopyRestoreClass(const ObjCIndirectCopyRestoreExpr *OIE,
ExplodedNode *Pred,
ExplodedNodeSet &Dst);

/// Handle ++ and -- (both pre- and post-increment).
void VisitIncrementDecrementOperator(const UnaryOperator* U,
ExplodedNode *Pred,
ExplodedNodeSet &Dst);

void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *BTE,
ExplodedNodeSet &PreVisit,
ExplodedNodeSet &Dst);
ExplodedNode *Pred, ExplodedNodeSet &Dst);

void VisitCXXCatchStmt(const CXXCatchStmt *CS, ExplodedNode *Pred,
ExplodedNodeSet &Dst);

void VisitCXXParenListInitExpr(const CXXParenListInitExpr *E,
ExplodedNode *Pred, ExplodedNodeSet &Dst);

void VisitCXXThisExpr(const CXXThisExpr *TE, ExplodedNode *Pred,
ExplodedNodeSet & Dst);

Expand All @@ -659,9 +672,8 @@ class ExprEngine {
ExplodedNodeSet &Dst);

/// Create a C++ temporary object for an rvalue.
void CreateCXXTemporaryObject(const MaterializeTemporaryExpr *ME,
ExplodedNode *Pred,
ExplodedNodeSet &Dst);
void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *MTE,
ExplodedNode *Pred, ExplodedNodeSet &Dst);

void ConstructInitList(const Expr *Source, ArrayRef<Expr *> Args,
bool IsTransparent, ExplodedNode *Pred,
Expand Down
Loading
Loading