[clang] [analyzer] Implement BugReporterVisitor for UseAfterLifetimeEnd to trace lifetime source binding (PR #207052)
Gábor Horváth via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 27 03:36:12 PDT 2026
================
@@ -8,12 +8,35 @@ using namespace ento;
namespace {
class UseAfterLifetimeEnd : public Checker<check::EndFunction> {
public:
- void reportDanglingSource(const MemRegion *Source, ExplodedNode *N,
+ void reportDanglingSource(const MemRegion *Source, SVal Val, ExplodedNode *N,
CheckerContext &C) const;
void checkEndFunction(const ReturnStmt *RS, CheckerContext &C) const;
const BugType BugMsg{this, "UseAfterLifetimeEnd", "LifetimeBound"};
};
+class UseAfterLifetimeEndBRVisitor : public BugReporterVisitor {
+ SVal BoundVal;
+ const MemRegion *SourceRegion;
+
+public:
+ explicit UseAfterLifetimeEndBRVisitor(SVal Val, const MemRegion *Source)
+ : BoundVal(Val), SourceRegion(Source) {}
+
+ void Profile(llvm::FoldingSetNodeID &ID) const override {
+ static int X = 0;
+ ID.AddPointer(&X);
----------------
Xazax-hun wrote:
Maybe we could use addresses of some functions unique to these checkers? That could potentially do the trick although that also has consequences. But any changes like this should probably be independent of this PR and done wholesale.
https://github.com/llvm/llvm-project/pull/207052
More information about the cfe-commits
mailing list