Author: Balazs Benics Date: 2021-11-29T09:56:43+01:00 New Revision: e1d0673aeeece138d4865385a24a86f6954dff72
URL: https://github.com/llvm/llvm-project/commit/e1d0673aeeece138d4865385a24a86f6954dff72 DIFF: https://github.com/llvm/llvm-project/commit/e1d0673aeeece138d4865385a24a86f6954dff72.diff LOG: [clang-tidy] Fix crashing altera-struct-pack-align on invalid RecordDecls Reviewed-By: martong Differential Revision: https://reviews.llvm.org/D114256 Added: clang-tools-extra/test/clang-tidy/checkers/altera-struct-pack-align-invalid-decl-no-crash.cpp Modified: clang-tools-extra/clang-tidy/altera/StructPackAlignCheck.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clang-tidy/altera/StructPackAlignCheck.cpp b/clang-tools-extra/clang-tidy/altera/StructPackAlignCheck.cpp index ef5fe41fd8c9c..6ae53512fca5e 100644 --- a/clang-tools-extra/clang-tidy/altera/StructPackAlignCheck.cpp +++ b/clang-tools-extra/clang-tidy/altera/StructPackAlignCheck.cpp @@ -51,6 +51,10 @@ void StructPackAlignCheck::check(const MatchFinder::MatchResult &Result) { if (Struct->isTemplated()) return; + // Packing and alignment requirements for invalid decls are meaningless. + if (Struct->isInvalidDecl()) + return; + // Get sizing info for the struct. llvm::SmallVector<std::pair<unsigned int, unsigned int>, 10> FieldSizes; unsigned int TotalBitSize = 0; diff --git a/clang-tools-extra/test/clang-tidy/checkers/altera-struct-pack-align-invalid-decl-no-crash.cpp b/clang-tools-extra/test/clang-tidy/checkers/altera-struct-pack-align-invalid-decl-no-crash.cpp new file mode 100644 index 0000000000000..d52ff94446213 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/altera-struct-pack-align-invalid-decl-no-crash.cpp @@ -0,0 +1,6 @@ +// RUN: %check_clang_tidy -expect-clang-tidy-error %s altera-struct-pack-align %t -- -header-filter=.* + +struct Foo { + member; // no-crash +}; +// CHECK-MESSAGES: :[[@LINE-2]]:3: error: C++ requires a type specifier for all declarations [clang-diagnostic-error] _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits