On Mon, Jan 18, 2010 at 10:30 AM, Richard Guenther
<richard.guent...@gmail.com> wrote:
> On Mon, Jan 18, 2010 at 11:24 AM, Paulo J. Matos <pocma...@gmail.com> wrote:
>> Hi,
>>
>> As a continuation of my previous issue, what's the difference between
>> cfun and current_function_decl and which one should I use to walk the
>> tree during TARGET_FUNCTION_OK_FOR_SIBCALL?
>>
>> [In the internals document I only found references to cfun and even
>> there was hard to understand what it actually is]
>
> It's supposed to be that cfun->decl == current_function_decl.  Use
> cfun in the middle-end, current_function_decl is used by frontends
> as long as there is no struct function allocated for a function.
>

Hello Richard,

Thanks for your reply. I tried cfun hoping that would do something
different than current_function_decl but I was wrong.
cfun->decl during the expand pass seems to only contain parts of the
function instead of the whole thing.

print_c_tree(stderr, cfun->decl); (in the TARGET_FUNCTION_OK_FOR_SIBCALL hook)
only prints part of the first basic block.

My theory is that the expand pass during the conversion to RTL
destroyed the tree of the caller (cfun), and therefore you cannot
actually access it during the hooks execution.
Do you know if this is the case?

Thanks,

Paulo Matos

> Richard.
>



-- 
Paulo Jorge Matos - pocmatos at gmail.com
http://www.pmatos.net

Reply via email to