cleanup leftover non-local variable checks

Ulrich Weigand weigand@i1.informatik.uni-erlangen.de
Thu Aug 5 13:54:00 GMT 2004


Richard Henderson wrote:

>Index: gcc/tree-tailcall.c
>===================================================================
>RCS file: /cvs/gcc/gcc/gcc/tree-tailcall.c,v
>retrieving revision 2.17
>diff -c -p -d -r2.17 tree-tailcall.c
>*** gcc/tree-tailcall.c	16 Jul 2004 21:13:04 -0000	2.17
>--- gcc/tree-tailcall.c	23 Jul 2004 22:31:11 -0000
>*************** suitable_for_tail_opt_p (void)
>*** 143,150 ****
>      {
>        tree var = VARRAY_TREE (referenced_vars, i);
>  
>!       if (decl_function_context (var) == current_function_decl
>! 	  && !TREE_STATIC (var)
>  	  && var_ann (var)->mem_tag_kind == NOT_A_TAG
>  	  && is_call_clobbered (var))
>  	return false;
>--- 143,149 ----
>      {
>        tree var = VARRAY_TREE (referenced_vars, i);
>  
>!       if (!TREE_STATIC (var)
>  	  && var_ann (var)->mem_tag_kind == NOT_A_TAG
>  	  && is_call_clobbered (var))
>  	return false;

This apparently has the effect of disabling tail calls in any
function that uses any (non-static) global variable; e.g.
dwarf2_name in dwarf2out.c no longer uses a tail call.

Was this intentional?

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  weigand@informatik.uni-erlangen.de



More information about the Gcc-patches mailing list