This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/37874] gcc sometimes accepts attribute in identifier list
- From: "egallager at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 25 Jul 2017 18:12:11 +0000
- Subject: [Bug c/37874] gcc sometimes accepts attribute in identifier list
- Auto-submitted: auto-generated
- References: <bug-37874-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37874
Eric Gallager <egallager at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |egallager at gcc dot gnu.org
--- Comment #5 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Chris Lattner from comment #0)
> GCC rejects the former, but not the later.
>
> void f2(y, __attribute__(()) x);
> void f3(__attribute__(()) x, y);
GCC can be made to reject f3() with -Werror:
$ /usr/local/bin/gcc -c -Wall -Wextra -pedantic -Werror 37874.c
37874.c:1:12: error: expected ‘)’ before ‘__attribute__’
void f2(y, __attribute__(()) x);
^~~~~~~~~~~~~
37874.c:2:1: error: parameter names (without types) in function declaration
[-Werror]
void f3(__attribute__(()) x, y);
^~~~
cc1: all warnings being treated as errors
I see you fixed this for f4() at least for clang:
$ /sw/opt/llvm-3.1/bin/clang-3.1 -c 37874.c
37874.c:1:12: error: expected identifier
void f2(y, __attribute__(()) x);
^
37874.c:2:27: warning: type specifier missing, defaults to 'int'
[-Wimplicit-int]
void f3(__attribute__(()) x, y);
~~~~~~~~~~~~~ ^
37874.c:2:30: warning: type specifier missing, defaults to 'int'
[-Wimplicit-int]
void f3(__attribute__(()) x, y);
^
37874.c:3:9: error: expected parameter declarator
void f4(__attribute__(()));
^
2 warnings and 2 errors generated.