diff options
author | Richard Guenther <rguenther@suse.de> | 2010-08-30 11:13:05 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-08-30 11:13:05 +0000 |
commit | 525fb35c0eee91338b5832566b1bc95f811ee509 (patch) | |
tree | 3cdbc81f740cf52e3d8329af4dd9a113b4d582ad /gcc | |
parent | 184eb658fe5d4897c705d28ad01c3bd51e8fc62f (diff) | |
download | gcc-525fb35c0eee91338b5832566b1bc95f811ee509.zip gcc-525fb35c0eee91338b5832566b1bc95f811ee509.tar.gz gcc-525fb35c0eee91338b5832566b1bc95f811ee509.tar.bz2 |
re PR tree-optimization/45449 (-fcompare-debug failure with -O2 -fno-tree-pre -fno-tree-pta)
2010-08-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45449
* tree-ssa-live.c (remove_unused_locals): Also remove address-taken
variables.
* gcc.dg/pr45449.c: New testcase.
From-SVN: r163638
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr45449.c | 22 | ||||
-rw-r--r-- | gcc/tree-ssa-live.c | 9 |
4 files changed, 35 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 37106bf..e4e5f4c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-08-30 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/45449 + * tree-ssa-live.c (remove_unused_locals): Also remove address-taken + variables. + 2010-08-30 Joseph Myers <joseph@codesourcery.com> * opts.h (CL_ERR_NEGATIVE): Define. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 984c2f4..f01e477 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-08-30 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/45449 + * gcc.dg/pr45449.c: New testcase. + 2010-08-30 Joseph Myers <joseph@codesourcery.com> * gcc.dg/opts-1.c: Expect errors, not warnings. diff --git a/gcc/testsuite/gcc.dg/pr45449.c b/gcc/testsuite/gcc.dg/pr45449.c new file mode 100644 index 0000000..d7b69a1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr45449.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-tree-pre -fno-tree-pta -fcompare-debug" } */ + +struct S +{ +}; + +void +baz (void) +{ + struct S s; + &s; +} + +int bar (void); + +void +foo (void) +{ + if (bar ()) + baz (); +} diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 1eb6822..821be7f 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -813,18 +813,13 @@ remove_unused_locals (void) BITMAP_FREE (global_unused_vars); } - /* Remove unused variables from REFERENCED_VARs. As a special - exception keep the variables that are believed to be aliased. - Those can't be easily removed from the alias sets and operand - caches. They will be removed shortly after the next may_alias - pass is performed. */ + /* Remove unused variables from REFERENCED_VARs. */ FOR_EACH_REFERENCED_VAR (t, rvi) if (!is_global_var (t) && TREE_CODE (t) != PARM_DECL && TREE_CODE (t) != RESULT_DECL && !(ann = var_ann (t))->used - && !ann->is_heapvar - && !TREE_ADDRESSABLE (t)) + && !ann->is_heapvar) remove_referenced_var (t); remove_unused_scope_block_p (DECL_INITIAL (current_function_decl)); if (dump_file && (dump_flags & TDF_DETAILS)) |