This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR debug/47106] account used vars only once
On Jan 10, 2011, Richard Guenther <richard.guenther@gmail.com> wrote:
> I guess I'm more happy with the patch if you switch the
> initialization in create_var_ann to mark the variable used.
Like this?
for gcc/ChangeLog
from Alexandre Oliva <aoliva@redhat.com>
PR debug/47106
* cfgexpand.c (account_used_vars_for_block): Only account vars
that are annotated as used.
(estimated_stack_frame_size): Don't set TREE_USED.
* tree-dfa.c (create_var_ann): Mark variable as used.
Index: gcc/cfgexpand.c
===================================================================
--- gcc/cfgexpand.c.orig 2011-01-20 14:55:54.405562397 -0200
+++ gcc/cfgexpand.c 2011-01-20 15:18:29.628014702 -0200
@@ -1325,7 +1325,7 @@ account_used_vars_for_block (tree block,
/* Expand all variables at this level. */
for (t = BLOCK_VARS (block); t ; t = DECL_CHAIN (t))
- if (TREE_USED (t))
+ if (var_ann (t) && var_ann (t)->used)
size += expand_one_var (t, toplevel, false);
/* Expand all variables at containing levels. */
@@ -1389,9 +1389,10 @@ estimated_stack_frame_size (tree decl)
FOR_EACH_LOCAL_DECL (cfun, ix, var)
{
+ /* TREE_USED marks local variables that do not appear in lexical
+ blocks. We don't want to expand those that do twice. */
if (TREE_USED (var))
size += expand_one_var (var, true, false);
- TREE_USED (var) = 1;
}
size += account_used_vars_for_block (outer_block, true);
Index: gcc/tree-dfa.c
===================================================================
--- gcc/tree-dfa.c.orig 2011-01-20 15:42:18.837908738 -0200
+++ gcc/tree-dfa.c 2011-01-20 15:44:10.794077945 -0200
@@ -137,6 +137,9 @@ create_var_ann (tree t)
ann = ggc_alloc_cleared_var_ann_d ();
*DECL_VAR_ANN_PTR (t) = ann;
+ /* Assume the variable is used, at least for now. */
+ ann->used = true;
+
return ann;
}
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist Red Hat Brazil Compiler Engineer