Am Montag, dem 05.01.2026 um 15:21 +0100 schrieb Alejandro Colomar:
> Hi Martin,
>
> On Mon, Jan 05, 2026 at 03:15:27PM +0100, Martin Uecker wrote:
> [...]
> > > This indeed matches the default behavior of both GCC and Clang, and
> > > I expect to also match every other quality compiler.
> > >
> > > alx@devuan:~/tmp$ cat attr.c
> > > [[attr]]
> > > int
> > > main(void)
> > > {
> > > return 0;
> > > }
> > > alx@devuan:~/tmp$ gcc attr.c
> > > attr.c:1:1: warning: ‘attr’ attribute ignored [-Wattributes]
> > > 1 | [[attr]]
> > > | ^
> > > alx@devuan:~/tmp$ clang attr.c
> > > attr.c:1:3: warning: unknown attribute 'attr' ignored
> > > [-Wunknown-attributes]
> > > 1 | [[attr]]
> > > | ^~~~
> > > 1 warning generated.
> > >
> > > And in compilers that don't want to implement any attributes, it should
> > > be trivial to emit a diagnostic saying "Attributes are not supported".
> > >
> > > Is that okay to you?
> >
> > I will keep arguing (and vote) against this. The reason is that attributes
> > are
> > syntactically designed and are useful as a language feature that is
> > forwards-compatible, i.e. programmers can add annotations that can simply
> > ignored by older C23 compiler (when looking from the future) without having
> > to use macro wrappers. I think this is extremely useful in a long-term
> > perspective, especially with regard to future annotations for safety.
> > We also have no other feature like this, and if we invent yet another
> > feature the oldest compiler to support it would be a future C2Y compiler
> > and not a C23 compiler. So let's please not break attributes for this
> > important use case before we even have started to use them properly.
>
> But both GCC and Clang (and every quality compiler, actually; show me
> one that doesn't) ignore the C standard in this regard, because the
> C standard has an Earthly Demon. You're ignoring reality.
>
> And after all, you're free to explicitly turn off this diagnostic, but
> that's your choice. Constraint violations aren't hard errors.
If you make it a constraint violation, a conforming implementation
can reject a program with unknown attributes while now it is required
to translate it. I would also perfer if Clang and GCC would not
emit the warning by default, but a warning is still ok as long as the
program is translated.
Martin