Author: Matheus Izvekov Date: 2025-08-28T18:59:16Z New Revision: 6af2c18fef664eec24ed490590735205aac538b3
URL: https://github.com/llvm/llvm-project/commit/6af2c18fef664eec24ed490590735205aac538b3 DIFF: https://github.com/llvm/llvm-project/commit/6af2c18fef664eec24ed490590735205aac538b3.diff LOG: [clang] fix regression parsing C enum which doesn't declare anything (#155904) The regression was introduced in #155313 Since this regression was never released, there are no release notes. Fixes #155794 Added: clang/test/Sema/GH155794.c Modified: clang/lib/Sema/SemaDecl.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 73f92f7ec9a1e..0afef106821d9 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -5291,10 +5291,8 @@ Decl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, // UNION_TYPE; <- where UNION_TYPE is a typedef union. if ((Tag && Tag->getDeclName()) || DS.getTypeSpecType() == DeclSpec::TST_typename) { - RecordDecl *Record = dyn_cast_or_null<RecordDecl>(Tag); - if (!Record) - Record = DS.getRepAsType().get()->getAsRecordDecl(); - + RecordDecl *Record = Tag ? dyn_cast<RecordDecl>(Tag) + : DS.getRepAsType().get()->getAsRecordDecl(); if (Record && getLangOpts().MicrosoftExt) { Diag(DS.getBeginLoc(), diag::ext_ms_anonymous_record) << Record->isUnion() << DS.getSourceRange(); diff --git a/clang/test/Sema/GH155794.c b/clang/test/Sema/GH155794.c new file mode 100644 index 0000000000000..1afbefaaae21a --- /dev/null +++ b/clang/test/Sema/GH155794.c @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wno-everything %s + +struct S { + enum e1 {} // expected-error {{use of empty enum}} expected-error {{expected ';' after enum}} + enum e2 {} // expected-error {{use of empty enum}} +}; // expected-error {{expected member name or ';' after declaration specifiers}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits