diff options
| author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-05 20:29:10 +0000 |
|---|---|---|
| committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-05 20:29:10 +0000 |
| commit | 2cdb2cec3d934c4d14a37f86189e63796965d0ef (patch) | |
| tree | 00d24a9ef41ed731bdefe0def98396adcfa6252a | |
| parent | c8d055f657b3a033072fca9dc9501bffd927b04d (diff) | |
| download | ppe42-gcc-2cdb2cec3d934c4d14a37f86189e63796965d0ef.tar.gz ppe42-gcc-2cdb2cec3d934c4d14a37f86189e63796965d0ef.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110621 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/assign_7.f | 16 | ||||
| -rw-r--r-- | gcc/tree-cfg.c | 6 |
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 93a10d71d78..ece6e7eb511 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 a654677d188..d21d5a778b7 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 00000000000..cb6b8258ba7 --- /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 9ba761dcf4a..85d588a131c 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); |

