diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index ed679e65c9274932e2fc82bc3b996e96923518a3..cabbe67a1cbdeb928c02783b1d5a7958faad3efc 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -8454,8 +8454,15 @@ static void handleCountFuncPtrParams(Sema &S, Decl *D, const ParsedAttr &AL, Qua } static void handleCountAttr(Sema &S, Decl *D, const ParsedAttr &AL, bool isByte = false) { + bool isFlexibleArrayMember = false; + if (D->getKind() == Decl::Field) { + const auto *FD = dyn_cast(D); + if (FD->getType()->isIncompleteArrayType()) { + isFlexibleArrayMember = true; + } + } const auto *VD = dyn_cast(D); - if (VD != nullptr && + if (VD != nullptr && !isFlexibleArrayMember && !attrNonNullArgCheck(S, VD->getType(), AL, SourceRange(), D->getSourceRange())) { return; }