This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: build_function_call and TREE_ADDRESSABLE


On Thu, Mar 03, 2011 at 04:43:15PM +0100, Richard Guenther wrote:
> On Thu, Mar 3, 2011 at 4:42 PM, Richard Guenther
> <richard.guenther@gmail.com> wrote:
> > On Thu, Mar 3, 2011 at 3:33 PM, Alan Modra <amodra@gmail.com> wrote:
> >> TREE_ADDRESSABLE comment says "In a FUNCTION_DECL, nonzero means its
> >> address is needed". ?However, as I point out in
> >> http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01525.html, this flag
> >> gets set when making normal calls. ?It wasn't always like this.
> >> gcc-4.0 was careful to not set TREE_ADDRESSABLE on FUNCTION_DECLs in
> >> build_function_call, a feature lost in revision 100984. ?I'd like to
> >> have that feature back for the above patch. ?Bootstrapped and
> >> regression tested powerpc-linux. ?OK for 4.6?
> >
> > You'll get the addressable flag re-applied by the operand scanner.

Eh?  I didn't see that happening.  Are you confusing the FUNCTION_TYPE
node with the FUNCTION_DECL?

> The proper way to check "if its address is needed" is via cgraph
> predicates.

That was the first thing that occurred to me too.  Then I noticed

Breakpoint 1, init_cumulative_args (cum=0xffffe620, fntype=0xf7eee540, libname=0x0, incoming=1, libcall=0, n_named_args=1000, fndecl=0xf7f51100, return_mode=VOIDmode) at /home/alan/src/gcc-current/gcc/config/rs6000/rs6000.c:7896
(gdb) up
#1  0x103c10a0 in assign_parms_initialize_all (all=0xffffe620) at /home/alan/src/gcc-current/gcc/function.c:2195
(gdb) 
#2  0x103c6bb4 in gimplify_parameters () at /home/alan/src/gcc-current/gcc/function.c:3576
(gdb) 
#3  0x1040fa88 in gimplify_body (body_p=0xf7f5115c, fndecl=0xf7f51100, do_parms=<value optimized out>) at /home/alan/src/gcc-current/gcc/gimplify.c:7706
(gdb) 
#4  0x1040fd64 in gimplify_function_tree (fndecl=0xf7f51100) at /home/alan/src/gcc-current/gcc/gimplify.c:7846
(gdb) 
#5  0x1076457c in cgraph_analyze_function (node=0xf7ed22b8) at /home/alan/src/gcc-current/gcc/cgraphunit.c:797

That scared me away from that idea.  Hmm, I guess all I need to do is
check cgraph node->analyzed.

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]