This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG2e490676ea2e: [analyzer] Extract InterestingLValueHandler (authored by vsavchenko).
Changed prior to commit: https://reviews.llvm.org/D103917?vs=350663&id=352069#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103917/new/ https://reviews.llvm.org/D103917 Files: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp Index: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp =================================================================== --- clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -2151,7 +2151,8 @@ } }; -class DefaultExpressionHandler final : public ExpressionHandler { +// TODO: extract it into more handlers +class InterestingLValueHandler final : public ExpressionHandler { public: using ExpressionHandler::ExpressionHandler; @@ -2219,13 +2220,26 @@ // previously. Report.addVisitor<SuppressInlineDefensiveChecksVisitor>(*DV, InputNode); - getParentTracker().track(V, R, Opts, SFC); - - return Result; } } + return Result; + } +}; + +class DefaultExpressionHandler final : public ExpressionHandler { +public: + using ExpressionHandler::ExpressionHandler; + + Tracker::Result handle(const Expr *Inner, const ExplodedNode *InputNode, + const ExplodedNode *LVNode, + TrackingOptions Opts) override { + ProgramStateRef LVState = LVNode->getState(); + const StackFrameContext *SFC = LVNode->getStackFrame(); + PathSensitiveBugReport &Report = getParentTracker().getReport(); + Tracker::Result Result; + // If the expression is not an "lvalue expression", we can still // track the constraints on its contents. SVal V = LVState->getSValAsScalarOrLoc(Inner, LVNode->getLocationContext()); @@ -2332,6 +2346,7 @@ addLowPriorityHandler<ControlDependencyHandler>(); addLowPriorityHandler<NilReceiverHandler>(); addLowPriorityHandler<ArrayIndexHandler>(); + addLowPriorityHandler<InterestingLValueHandler>(); addLowPriorityHandler<DefaultExpressionHandler>(); addLowPriorityHandler<PRValueHandler>(); // Default store handlers.
Index: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp =================================================================== --- clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -2151,7 +2151,8 @@ } }; -class DefaultExpressionHandler final : public ExpressionHandler { +// TODO: extract it into more handlers +class InterestingLValueHandler final : public ExpressionHandler { public: using ExpressionHandler::ExpressionHandler; @@ -2219,13 +2220,26 @@ // previously. Report.addVisitor<SuppressInlineDefensiveChecksVisitor>(*DV, InputNode); - getParentTracker().track(V, R, Opts, SFC); - - return Result; } } + return Result; + } +}; + +class DefaultExpressionHandler final : public ExpressionHandler { +public: + using ExpressionHandler::ExpressionHandler; + + Tracker::Result handle(const Expr *Inner, const ExplodedNode *InputNode, + const ExplodedNode *LVNode, + TrackingOptions Opts) override { + ProgramStateRef LVState = LVNode->getState(); + const StackFrameContext *SFC = LVNode->getStackFrame(); + PathSensitiveBugReport &Report = getParentTracker().getReport(); + Tracker::Result Result; + // If the expression is not an "lvalue expression", we can still // track the constraints on its contents. SVal V = LVState->getSValAsScalarOrLoc(Inner, LVNode->getLocationContext()); @@ -2332,6 +2346,7 @@ addLowPriorityHandler<ControlDependencyHandler>(); addLowPriorityHandler<NilReceiverHandler>(); addLowPriorityHandler<ArrayIndexHandler>(); + addLowPriorityHandler<InterestingLValueHandler>(); addLowPriorityHandler<DefaultExpressionHandler>(); addLowPriorityHandler<PRValueHandler>(); // Default store handlers.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits