On Tue, 26 Mar 2024, Qing Zhao wrote:

> > What happens when there are multiple counted_by attributes on the same 
> > field?  As far as I can see, all but one end up being ignored (by the code 
> > that actually uses the attribute).
> 
> In general, is there any rule for handling multiple same attributes in 
> GCC? i.e, from left to right, the last one wins? Or something else? I’d 
> like to following the consistent rule with other places in GCC.

Sometimes, they are meaningful and all can be respected.  (An example is 
the format_arg attribute, where ngettext legitimately has two such 
attributes.)

When not meaningful, an error is appropriate.  For example, with section 
attributes you can get

        error ("section of %q+D conflicts with previous declaration",
               *node);

if different sections are named.  I think that's a suitable model for the 
new attribute here: allow duplicates if they name the same field, but give 
errors if they name different fields, just as with the section attribute.

Once you give an error for multiple attributes naming different fields, 
which one wins is just a question of error recovery; the specific choice 
doesn't matter much, as long as you don't get an ICE in later processing.

-- 
Joseph S. Myers
josmy...@redhat.com

Reply via email to