https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90524
Bug ID: 90524 Summary: attribute name and argument mixed up in an error message Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- The first message below is backwards: the name of the argument is 'target' and the argument to it is "foobar": $ cat x.c && gcc -O2 -S -Wall x.c __attribute__ ((target ("foobar"))) void foo () { } __attribute__ ((foobar ("target"))) void bar () { } x.c:1:42: error: attribute ‘foobar’ argument ‘target’ is unknown 1 | __attribute__ ((target ("foobar"))) void foo () { } | ^~~ x.c:3:1: warning: ‘foobar’ attribute directive ignored [-Wattributes] 3 | __attribute__ ((foobar ("target"))) void bar () { } | ^~~~~~~~~~~~~ Contrast that to Clang: $ clang -S -Wall x.c x.c:1:25: warning: unsupported 'foobar' in the 'target' attribute string; 'target' attribute ignored [-Wignored-attributes] __attribute__ ((target ("foobar"))) void foo () { } ^ x.c:3:17: warning: unknown attribute 'foobar' ignored [-Wunknown-attributes] __attribute__ ((foobar ("target"))) void bar () { } ^ 2 warnings generated.