diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2011-01-21 14:57:33 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2011-01-21 14:57:33 +0000 |
commit | 1c7d0b34dcb5810c6da08a672af1ab7d1499fe1b (patch) | |
tree | 755d1d58491daff3fda926aecf62711e4f7c668b /gcc/cfgexpand.c | |
parent | f99cc488e2dce167370c00d1948fe2846acab19c (diff) | |
download | gcc-1c7d0b34dcb5810c6da08a672af1ab7d1499fe1b.zip gcc-1c7d0b34dcb5810c6da08a672af1ab7d1499fe1b.tar.gz gcc-1c7d0b34dcb5810c6da08a672af1ab7d1499fe1b.tar.bz2 |
re PR debug/47106 (-fcompare-debug failure (length) with -fpartial-inlining -flto -fconserve-stack)
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.
From-SVN: r169093
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index aeb2361..bb60c33 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -1325,7 +1325,7 @@ account_used_vars_for_block (tree block, bool toplevel) /* 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); |