diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2022-07-29 13:16:10 -0400 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2022-07-29 13:18:44 -0400 |
commit | d8352abd3a4f411828dbe46c7dfd3e935ab4dd4a (patch) | |
tree | 0c6bc0ba0e0d0c99bf3c8a6a201088e8d761690b /clang/lib/Parse/ParseDecl.cpp | |
parent | b9a662919344355d81f7eda4c8ebdd3d1ecd808c (diff) | |
download | llvm-d8352abd3a4f411828dbe46c7dfd3e935ab4dd4a.zip llvm-d8352abd3a4f411828dbe46c7dfd3e935ab4dd4a.tar.gz llvm-d8352abd3a4f411828dbe46c7dfd3e935ab4dd4a.tar.bz2 |
Diagnose use of _Noreturn on a struct/union field
C99 6.7.4p2 clarifies that a function specifier can only be used in the
declaration of a function. _Noreturn is a function specifier, so it is
a constraint violation to write it on a structure or union field, but
we missed that case.
Fixes #56800
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index aef9909..fa19c6a0c 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -2599,6 +2599,8 @@ void Parser::ParseSpecifierQualifierList(DeclSpec &DS, AccessSpecifier AS, Diag(DS.getVirtualSpecLoc(), diag::err_typename_invalid_functionspec); if (DS.hasExplicitSpecifier()) Diag(DS.getExplicitSpecLoc(), diag::err_typename_invalid_functionspec); + if (DS.isNoreturnSpecified()) + Diag(DS.getNoreturnSpecLoc(), diag::err_typename_invalid_functionspec); DS.ClearFunctionSpecs(); } |