On Mon, 3 Feb 2014, Jason Merrill wrote:
On 01/18/2014 05:33 PM, Marc Glisse wrote:
So when we have: __attribute__((nonnull(bar,bar)))
the parser will keep bar as an identifier for the first argument, but
parse the second one as an expr-list and thus find the associated
function_decl.
OK, that makes sense. But why do we need to handle that specially? Isn't
that an invalid argument whether or not it decays to a pointer?
The C version of default_conversion does not convert a function_decl to a
pointer (that's done earlier, during parsing), it ICEs. As you can see for
the one attribute that is C++-only, I don't have any protection before
calling default_conversion, it is only for the C front-end (for which
calling default_conversion is useless anyway, but that's how it is
already done in a couple other attributes).
--
Marc Glisse