[patch] [struct-reorg] port to ssa - 47% on art on ppc

Daniel Berlin dberlin@dberlin.org
Wed Aug 16 18:57:00 GMT 2006


Olga Golovanevsky wrote:
> 
> "Richard Guenther" <richard.guenther@gmail.com> wrote on 16/08/2006
> 12:54:18:
> 
>> On 8/16/06, Olga Golovanevsky <OLGA@il.ibm.com> wrote:
>>> Dan,
>>>
>>> Thank you for comments. Preparing fixes.
>>>
>>> Daniel Berlin <dberlin@dberlin.org> wrote on 15/08/2006 15:54:46:
>>>
>>>> Please instead use call_expr_flags (<CALL_EXPR>) & ECF_MALLOC
>>> thank you for tip. I only wonder whether ECF_MALLOC stands for all
>>> allocation functions, i.e. malloc, calloc, realloc, xmalloc, or only
> for
>>> malloc?
>> It only says the function has malloc behavior in that it returns a
>> pointer that
>> does not alias with any other memory.  So
>>
>> /* Nonzero if this is a call to malloc or a related function.  */
>> #define ECF_MALLOC              4
>>
>> is not really useful documentation ;)  flags_from_decl_or_type has
>> the slightly
>> more informative
>>
>>       /* The function exp may have the `malloc' attribute.  */
>>       if (DECL_IS_MALLOC (exp))
>>         flags |= ECF_MALLOC;
>>
> 
> ok, I see.
> 
> So DECL_IS_MALLOC is actually defines family of functions that return
> pointer.
> 
>   if (TREE_CODE (*node) == FUNCTION_DECL
>       && POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (*node))))
>     DECL_IS_MALLOC (*node) = 1;
> 

No, look closer.
It's the est of functions that have the "malloc" attribute set on them.


> I can use it for rough identification, but 
n order to analyze closely
> I still need this ugly
> 
> if (strcmp (IDENTIFIER_POINTER (DECL_NAME (fn_decl)),
>                    "malloc") == 0)

You can at least use get_name in place of IDENTIFIER_POINTER (DECL_NAME))



More information about the Gcc-patches mailing list