On Fri, Aug 1, 2014 at 9:17 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Mon, Jul 28, 2014 at 06:14:08PM +0400, Yury Gribov wrote:
>> On 07/24/2014 11:48 AM, Jakub Jelinek wrote:
>> > So, either support for just EAF*, or perhaps support for DECL_ATTRIBUTES
>> > for internal-fns, say by having some tree array where you'd store what you
>> > stick into DECL_ATTRIBUTES normally.
>>
>> I'd prefer to avoid attributes. Would something like this be enough?
>> (not yet fully tested, just ran asan.exp tests).
>
> I think I'd prefer if you'd specify the fnspec as either NULL (most internal
> functions) or normal string and reuse the string parsing in
> gimple_call_arg_flags.

Yeah, me too.

Richard.

> So, you'd just replace the:
>   tree attr = gimple_call_fnspec (stmt);
>
>   if (!attr || 1 + arg >= (unsigned) TREE_STRING_LENGTH (attr))
>     return 0;
>
>   switch (TREE_STRING_POINTER (attr)[1 + arg])
> with:
>   const char *fnspec;
>   if (gimple_call_arg_flags (stmt))
>     {
>       fnspec = ...;
>       if (!fnspec || 1 + arg >= strlen (fnspec))
>         return 0;
>     }
>   else
>     {
>       tree attr = gimple_call_fnspec (stmt);
>
>       if (!attr || 1 + arg >= (unsigned) TREE_STRING_LENGTH (attr))
>         return 0;
>
>       fnspec = TREE_STRING_POINTER (attr);
>     }
>   switch (fnspec[1 + arg])
>
>         Jakub

Reply via email to