[clang] [-Wunsafe-buffer-usage] Fix false positives for constant cases (PR #92432)
via cfe-commits
cfe-commits at lists.llvm.org
Thu May 16 12:49:06 PDT 2024
================
@@ -420,25 +420,63 @@ AST_MATCHER(ArraySubscriptExpr, isSafeArraySubscript) {
// already duplicated
// - call both from Sema and from here
- const auto *BaseDRE =
- dyn_cast<DeclRefExpr>(Node.getBase()->IgnoreParenImpCasts());
- if (!BaseDRE)
+ if (const auto *BaseDRE =
+ dyn_cast<DeclRefExpr>(Node.getBase()->IgnoreParenImpCasts())) {
+ if (!BaseDRE->getDecl())
+ return false;
+ if (const auto *CATy = Finder->getASTContext().getAsConstantArrayType(
+ BaseDRE->getDecl()->getType())) {
+ if (const auto *IdxLit = dyn_cast<IntegerLiteral>(Node.getIdx())) {
----------------
pkasting wrote:
It feels like this block is repeated, more or less, several times. Is there a way to factor it?
https://github.com/llvm/llvm-project/pull/92432
More information about the cfe-commits
mailing list