diff options
author | Michael Matz <matz@suse.de> | 2011-11-17 16:03:56 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2011-11-17 16:03:56 +0000 |
commit | f14c43566a1fc02c036396baec3c04f27817899f (patch) | |
tree | 245143a3e05707fc470557d9f2aeca06bcf98851 /gcc/tree-ssa-live.c | |
parent | d846e425c90211f07c13797880a4a0cd94879440 (diff) | |
download | gcc-f14c43566a1fc02c036396baec3c04f27817899f.zip gcc-f14c43566a1fc02c036396baec3c04f27817899f.tar.gz gcc-f14c43566a1fc02c036396baec3c04f27817899f.tar.bz2 |
re PR tree-optimization/50644 (ICE in set_is_used added today)
PR middle-end/50644
PR middle-end/50741
* tree-ssa-live.c (mark_all_vars_used_1): Recurse only for decls of
current function.
(remove_unused_locals): Ditto.
testsuite/
* g++.dg/tree-ssa/pr50741.C: New.
From-SVN: r181443
Diffstat (limited to 'gcc/tree-ssa-live.c')
-rw-r--r-- | gcc/tree-ssa-live.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 2a2c133..b8a056e 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -374,7 +374,8 @@ mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data) eliminated as unused. */ if (TREE_CODE (t) == VAR_DECL) { - if (data != NULL && bitmap_clear_bit ((bitmap) data, DECL_UID (t))) + if (data != NULL && bitmap_clear_bit ((bitmap) data, DECL_UID (t)) + && DECL_CONTEXT (t) == current_function_decl) mark_all_vars_used (&DECL_INITIAL (t), data); set_is_used (t); } @@ -836,7 +837,8 @@ remove_unused_locals (void) if (TREE_CODE (var) == VAR_DECL && is_global_var (var) && var_ann (var) != NULL - && is_used_p (var)) + && is_used_p (var) + && DECL_CONTEXT (var) == current_function_decl) mark_all_vars_used (&DECL_INITIAL (var), global_unused_vars); num = VEC_length (tree, cfun->local_decls); |