https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107166
Bug ID: 107166
Summary: "useless type name in empty declaration" diagnostic
may refer to wrong location
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: stephenheumann at gmail dot com
Target Milestone: ---
GCC seems to give a "useless type name in empty declaration" diagnostic for any
empty declaration containing a type, but it always just points to the first
token of the declaration, which is not necessarily the type (or may only be a
part of it). E.g.:
static int;
_Alignas(int) char;
long long;
gives the following diagnostics:
<source>:1:1: warning: useless type name in empty declaration
1 | static int;
| ^~~~~~
<source>:2:1: warning: useless type name in empty declaration
2 | _Alignas(int) char;
| ^~~~~~~~
<source>:3:1: warning: useless type name in empty declaration
3 | long long;
| ^~~~
These could be changed to actually refer to the location of the type
specifier(s), or they could be changed to different diagnostics that already
exist for empty declarations without a type, such as "useless storage class
specifier in empty declaration".