[clang] [Clang] Optimize -Wunsafe-buffer-usage. (PR #125492)
Ilya Biryukov via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 27 03:52:05 PST 2025
================
@@ -1711,25 +2008,38 @@ class PointerDereferenceGadget : public FixableGadget {
const UnaryOperator *Op = nullptr;
public:
- PointerDereferenceGadget(const MatchFinder::MatchResult &Result)
+ PointerDereferenceGadget(const MatchResult &Result)
: FixableGadget(Kind::PointerDereference),
- BaseDeclRefExpr(
- Result.Nodes.getNodeAs<DeclRefExpr>(BaseDeclRefExprTag)),
- Op(Result.Nodes.getNodeAs<UnaryOperator>(OperatorTag)) {}
+ BaseDeclRefExpr(Result.getNodeAs<DeclRefExpr>(BaseDeclRefExprTag)),
+ Op(Result.getNodeAs<UnaryOperator>(OperatorTag)) {}
static bool classof(const Gadget *G) {
return G->getKind() == Kind::PointerDereference;
}
- static Matcher matcher() {
- auto Target =
- unaryOperator(
- hasOperatorName("*"),
- has(expr(ignoringParenImpCasts(
- declRefExpr(toSupportedVariable()).bind(BaseDeclRefExprTag)))))
- .bind(OperatorTag);
-
- return expr(isInUnspecifiedLvalueContext(Target));
+ static bool matches(const Stmt *S, llvm::SmallVector<MatchResult> &Results) {
----------------
ilya-biryukov wrote:
NIT: it's better to accept `llvm::SmallVectorImpl`, it allows to pass small vectors of arbitrary sizes from the outside.
(it's a common pattern in LLVM that's useful to be aware of)
https://github.com/llvm/llvm-project/pull/125492
More information about the cfe-commits
mailing list