On 3/19/19 8:22 PM, Joseph Myers wrote: > On Tue, 19 Mar 2019, Jeff Law wrote: > >> I'll note that our documentation clearly states that attributes can be >> applied to functions, variables, labels, enums, statements and types. > > A key thing here is that they can be applied to fields - that is, they can > be properties of a FIELD_DECL. Referring to a field either requires an > expression referring to that field, or some other custom syntax that uses > both a type name and a field name (like in __builtin_offsetof). > Thanks for chiming in, your opinions on this kind of thing are greatly appreciated.
Understood WRT applying to fields, and I think that's consistent with some of what Jakub has expressed elsewhere -- specifically that we should consider allowing COMPONENT_REFs as the exception, returning the attributes of the associated FIELD_DECL in that case. Is there a need to call out BIT_FIELD_REFs where we can't actually get to the underlying DECL? And if so, how do we do that in the end user documentation that is clear and consistent? One of the big worries I've got here is that documenting when an expression as an argument to __builtin_has_attribute (or any attribute query) can be expected to work. It's always easier on our end users to loosen semantics of extensions over time than it is to tighten them. Jeff