aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-08-30 11:13:05 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-08-30 11:13:05 +0000
commit525fb35c0eee91338b5832566b1bc95f811ee509 (patch)
tree3cdbc81f740cf52e3d8329af4dd9a113b4d582ad /gcc
parent184eb658fe5d4897c705d28ad01c3bd51e8fc62f (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr45449.c22
-rw-r--r--gcc/tree-ssa-live.c9
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))