[Bug c/116130] Implement C23 N2956 paper - [[unsequenced]] and [[reproducible]] function type arguments
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Tue Jul 30 07:38:37 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116130
--- Comment #10 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 30 Jul 2024, jakub at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116130
>
> --- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> (In reply to rguenther@suse.de from comment #8)
> > IMO this asks for metadata on each (standard) attribute whether it
> > merges conservatively by union or by intersection since there are
> > two classes of attributes.
>
> Well, doing so would violate the standard, which added a clear:
> "If one of the types has a standard attribute, the composite type also has that
> attribute."
We do violate the standard in other places - IMO QOI/safety should be
a priority. I view the above as a defect.
I'd at least emit an unconditional diagnostic when doing this kind
of merging in any place (also for GCC type/decl attributes).
> > And then there's things like [[gnu::warn_unused_result]] where
> > it's not at all clear what is "conservative" (drop valid diagnostics
> > or introduce broken ones?).
>
> gnu::warn_unused_result is not a standard attribute (but currently we merge all
> of them), but more importantly it isn't a function type attribute, but function
> decl attribute. Those aren't merged.
Huh, that's an odd distinction. I hope we document this somewhere
in a way understandable by users since IIRC it's not possible to
distinguish those syntactically when placed in a function declaration?
More information about the Gcc-bugs
mailing list