https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103223

--- Comment #9 from Martin Sebor <msebor at gcc dot gnu.org> ---
Outside of code comments only the user-visible attribute access interface is
documented in the manual.

The main difference is probably that attribute access can be added by the user
for any pair of arguments (without a limit on the number of arguments). 
Another difference is that the implicit attribute access captures the VLA
argument bounds and the [static N] specifier that tells us that array must have
at least N elements (this latter part could be used for optimization).  The
attribute access mode none means that the argument isn't dereferenced but must
point to an object of the specified size (I'm guessing that's not quite the
same as the 'x' character in fn spec).  For the common subset it might make
sense to transform attribute access to fnspec when it applies to the first N
arguments (with N being the fnspec limit).

Come to think of it, an alternate approach to solving the IPA problem with lost
attribute access might be to extend attr fnspec to encode the same things as it
and for the warnings to use fnspec instead.  The same caveat applies that not
all of what attribute access describes can be used for optimization, so the API
would have to make the distinction quite clear.

Reply via email to