aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2006-02-05 20:29:10 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2006-02-05 12:29:10 -0800
commitcea0f4f1bd67b7539388cbf2d0fa554c3a88fcf3 (patch)
tree00d24a9ef41ed731bdefe0def98396adcfa6252a /gcc
parentd78f3f787f098ce3c535883b1ba47c3b1820b983 (diff)
downloadgcc-cea0f4f1bd67b7539388cbf2d0fa554c3a88fcf3.zip
gcc-cea0f4f1bd67b7539388cbf2d0fa554c3a88fcf3.tar.gz
gcc-cea0f4f1bd67b7539388cbf2d0fa554c3a88fcf3.tar.bz2
re PR tree-optimization/25251 ([4.1 only] NIST Failure - FM013.f at -O2)
2006-02-05 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/25251 * tree-cfg.c (cleanup_dead_labels): Also don't remove forced labels. 2006-02-05 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/25251 * gfortran.dg/assign_7.f: New test. From-SVN: r110621
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/assign_7.f16
-rw-r--r--gcc/tree-cfg.c6
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 93a10d7..ece6e7e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-02-05 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/25251
+ * tree-cfg.c (cleanup_dead_labels): Also don't remove
+ forced labels.
+
2006-02-04 Zdenek Dvorak <dvorakz@suse.cz>
* tree-vrp.c (cfg_loops): Removed.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a654677..d21d5a7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-02-05 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/25251
+ * gfortran.dg/assign_7.f: New test.
+
2006-02-05 H.J. Lu <hongjiu.lu@intel.com>
PR fortran/26041
diff --git a/gcc/testsuite/gfortran.dg/assign_7.f b/gcc/testsuite/gfortran.dg/assign_7.f
new file mode 100644
index 0000000..cb6b825
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assign_7.f
@@ -0,0 +1,16 @@
+C { dg-do compile }
+C Option passed to avoid excess errors from obsolete warning
+C { dg-options "-w" }
+
+ PROGRAM FM013
+ IF (ICZERO) 31270, 1270, 31270
+ 1270 CONTINUE
+ 1272 ASSIGN 1273 TO J
+ 1273 ASSIGN 1274 TO J
+ 1274 ASSIGN 1275 TO J
+ GOTO 1276
+ 1275 continue
+ 1276 GOTO J, ( 1272, 1273, 1274, 1275 )
+31270 IVDELE = IVDELE + 1
+ END
+
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 9ba761d..85d588a 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -1108,7 +1108,8 @@ cleanup_dead_labels (void)
for_each_eh_region (update_eh_label);
/* Finally, purge dead labels. All user-defined labels and labels that
- can be the target of non-local gotos are preserved. */
+ can be the target of non-local gotos and labels which have their
+ address taken are preserved. */
FOR_EACH_BB (bb)
{
block_stmt_iterator i;
@@ -1128,7 +1129,8 @@ cleanup_dead_labels (void)
if (label == label_for_this_bb
|| ! DECL_ARTIFICIAL (label)
- || DECL_NONLOCAL (label))
+ || DECL_NONLOCAL (label)
+ || FORCED_LABEL (label))
bsi_next (&i);
else
bsi_remove (&i, true);