diff options
author | Richard Guenther <rguenther@suse.de> | 2008-08-18 15:36:15 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-08-18 15:36:15 +0000 |
commit | e46587281e54e3a8f1eedd70bc322b53cb1fbdcd (patch) | |
tree | 0dbbbb43b073bfe9473ff5176b4bb98c84ecdbed /gcc/tree-ssa-reassoc.c | |
parent | 5289e80852bb30d7e6afd90ea77ad1ed66d30bc7 (diff) | |
download | gcc-e46587281e54e3a8f1eedd70bc322b53cb1fbdcd.tar.gz |
tree-ssa-reassoc.c (reassociate_bb): Properly reset the statement iterator after statement removal.
2008-08-18 Richard Guenther <rguenther@suse.de>
* tree-ssa-reassoc.c (reassociate_bb): Properly reset the
statement iterator after statement removal.
From-SVN: r139201
Diffstat (limited to 'gcc/tree-ssa-reassoc.c')
-rw-r--r-- | gcc/tree-ssa-reassoc.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index be68331faf2..e4e7db69d2e 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -1771,6 +1771,18 @@ reassociate_bb (basic_block bb) { gsi_remove (&gsi, true); release_defs (stmt); + /* We might end up removing the last stmt above which + places the iterator to the end of the sequence. + Reset it to the last stmt in this case which might + be the end of the sequence as well if we removed + the last statement of the sequence. In which case + we need to bail out. */ + if (gsi_end_p (gsi)) + { + gsi = gsi_last_bb (bb); + if (gsi_end_p (gsi)) + break; + } } continue; } |