Skip to content

Conversation

mizvekov
Copy link
Contributor

The regression was introduced in #155313

Since this regression was never released, there are no release notes.

Fixes #155794

The regression was introduced in #155313

Since this regression was never released, there are no release notes.

Fixes #155794
@mizvekov mizvekov self-assigned this Aug 28, 2025
@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" labels Aug 28, 2025
@llvmbot
Copy link
Member

llvmbot commented Aug 28, 2025

@llvm/pr-subscribers-clang

Author: Matheus Izvekov (mizvekov)

Changes

The regression was introduced in #155313

Since this regression was never released, there are no release notes.

Fixes #155794


Full diff: https://github.com/llvm/llvm-project/pull/155904.diff

2 Files Affected:

  • (modified) clang/lib/Sema/SemaDecl.cpp (+2-4)
  • (added) clang/test/Sema/GH155794.c (+6)
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index a47c5ab3aaff7..00dcbff0f68e1 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}}

@mizvekov mizvekov enabled auto-merge (squash) August 28, 2025 18:42
@mizvekov mizvekov merged commit 6af2c18 into main Aug 28, 2025
12 checks passed
@mizvekov mizvekov deleted the users/mizvekov/GH155794 branch August 28, 2025 18:59
Copy link
Collaborator

@shafik shafik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the quick fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[clang] Assertion `isTypeRep((TST) TypeSpecType) && "DeclSpec does not store a type"' failed.
3 participants