[clang] 6d140b9 - [Fix][-Wunsafe-buffer-usage] Add a new `forEachDescendant` matcher that skips callable declarations
via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 6 12:32:51 PST 2023
Author: ziqingluo-90
Date: 2023-01-06T12:32:35-08:00
New Revision: 6d140b952805bd9277fba666520ce46c19f2c637
URL: https://github.com/llvm/llvm-project/commit/6d140b952805bd9277fba666520ce46c19f2c637
DIFF: https://github.com/llvm/llvm-project/commit/6d140b952805bd9277fba666520ce46c19f2c637.diff
LOG: [Fix][-Wunsafe-buffer-usage] Add a new `forEachDescendant` matcher that skips callable declarations
The original patch does include a `new` statement without a matching
`delete`, causing Sanitizer warnings in
https://lab.llvm.org/buildbot/#/builders/5/builds/30522/steps/13/logs/stdio.
This commit is a fix to it.
Differential Revision: https://reviews.llvm.org/D138329
Added:
Modified:
clang/lib/Analysis/UnsafeBufferUsage.cpp
Removed:
################################################################################
diff --git a/clang/lib/Analysis/UnsafeBufferUsage.cpp b/clang/lib/Analysis/UnsafeBufferUsage.cpp
index d941cf5fe74f..f03fe7505ad4 100644
--- a/clang/lib/Analysis/UnsafeBufferUsage.cpp
+++ b/clang/lib/Analysis/UnsafeBufferUsage.cpp
@@ -26,7 +26,7 @@ class MatchDescendantVisitor
// Creates an AST visitor that matches `Matcher` on all
// descendants of a given node "n" except for the ones
// belonging to a
diff erent callable of "n".
- MatchDescendantVisitor(const internal::DynTypedMatcher *Matcher,
+ MatchDescendantVisitor(const internal::DynTypedMatcher &Matcher,
internal::ASTMatchFinder *Finder,
internal::BoundNodesTreeBuilder *Builder,
internal::ASTMatchFinder::BindKind Bind)
@@ -89,7 +89,7 @@ class MatchDescendantVisitor
template <typename T> bool match(const T &Node) {
internal::BoundNodesTreeBuilder RecursiveBuilder(*Builder);
- if (Matcher->matches(DynTypedNode::create(Node), Finder,
+ if (Matcher.matches(DynTypedNode::create(Node), Finder,
&RecursiveBuilder)) {
ResultBindings.addMatch(RecursiveBuilder);
Matches = true;
@@ -99,7 +99,7 @@ class MatchDescendantVisitor
return true;
}
- const internal::DynTypedMatcher *const Matcher;
+ const internal::DynTypedMatcher & Matcher;
internal::ASTMatchFinder *const Finder;
internal::BoundNodesTreeBuilder *const Builder;
internal::BoundNodesTreeBuilder ResultBindings;
@@ -108,7 +108,7 @@ class MatchDescendantVisitor
};
AST_MATCHER_P(Stmt, forEveryDescendant, internal::Matcher<Stmt>, innerMatcher) {
- MatchDescendantVisitor Visitor(new DynTypedMatcher(innerMatcher), Finder,
+ MatchDescendantVisitor Visitor(DynTypedMatcher(innerMatcher), Finder,
Builder, ASTMatchFinder::BK_All);
return Visitor.findMatch(DynTypedNode::create(Node));
}
More information about the cfe-commits
mailing list