diff options
author | Kenneth Zadeck <zadeck@gcc.gnu.org> | 2005-12-19 02:35:44 +0000 |
---|---|---|
committer | Kenneth Zadeck <zadeck@gcc.gnu.org> | 2005-12-19 02:35:44 +0000 |
commit | 3d5f877adf14a980c6bc38a5f93ecb25c1f5c553 (patch) | |
tree | 0b4ed2d9a152aff6f7733ec523309ca8eb5951d1 /gcc | |
parent | fd0bd278031c12e1148fb28b4fd66849cfe61781 (diff) | |
download | gcc-3d5f877adf14a980c6bc38a5f93ecb25c1f5c553.zip gcc-3d5f877adf14a980c6bc38a5f93ecb25c1f5c553.tar.gz gcc-3d5f877adf14a980c6bc38a5f93ecb25c1f5c553.tar.bz2 |
flow.c (update_life_info, [...]): Fixed latent bug that could happen if update_life_info was called with a blocks...
2005-12-17 Kenneth Zadeck <zadeck@naturalbridge.com>
* flow.c (update_life_info, count_or_remove_death_notes): Fixed
latent bug that could happen if update_life_info was called with a
blocks parameter and the call to cleanup_cfg actually deleted one
of those blocks.
From-SVN: r108777
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/flow.c | 22 |
2 files changed, 29 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7deb71..20d15eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-12-17 Danny Berlin <dberlin@dberlin.org> + Kenneth Zadeck <zadeck@naturalbridge.com> + + * flow.c (update_life_info, count_or_remove_death_notes): Fixed + latent bug that could happen if update_life_info was called with a + blocks parameter and the call to cleanup_cfg actually deleted one + of those blocks. + 2005-12-19 Zdenek Dvorak <dvorakz@suse.cz> * tree-ssa-structalias.c (update_alias_info): Remove handling @@ -988,7 +996,7 @@ * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Pass -meabi=gnu for apcs/atpcs. -2005-12-11 Rafael Ávila de Espíndola <rafael.espindola@gmail.com> +2005-12-11 Rafael vila de Espndola <rafael.espindola@gmail.com> * tree-flow.h: Allow compilation with a C++ compiler. (struct edge_prediction): Prefix all field names with "ep_". @@ -1397,18 +1405,18 @@ * coretypes.h (section): Provide dummy definition for target files. * config/darwin.h: Revert previous change. -2005-12-07 Rafael Ávila de Espíndola <rafael.espindola@gmail.com> +2005-12-07 Rafael vila de Espndola <rafael.espindola@gmail.com> * doc/sourcebuild.texi (all.build, install-normal): Remove. * configure.ac: Remove all.build and install-normal from target_list * configure: Regenerate. * Makefile.in (install): Don't depend on install-normal. -2005-12-07 Rafael Ávila de Espíndola <rafael.espindola@gmail.com> +2005-12-07 Rafael vila de Espndola <rafael.espindola@gmail.com> * Makefile.in: Document the use of stamps. -2005-12-07 Rafael Ávila de Espíndola <rafael.espindola@gmail.com> +2005-12-07 Rafael vila de Espndola <rafael.espindola@gmail.com> * doc/gty.texi: Remove instructions for adding a dependency on s-gtype. * Makefile.in: Add code to compute some dependencies on s-gtype @@ -10991,7 +10999,7 @@ * gcc.c (main): Compare language[0] with '*' when iterating over the infiles. -2005-07-13 Adrian Strae½tling <straetling@de.ibm.com> +2005-07-13 Adrian Straetling <straetling@de.ibm.com> * config/s390/s390.c: (s390_cc_modes_compatible): Move before "s390_emit_compare". Add handling of CCZ1mode. @@ -11004,7 +11012,7 @@ Use CCZ1mode instead of CCZmode. * config/s390/s390-modes.def: Add CCZ1mode. Comment new mode. -2005-07-13 Adrian Strae½tling <straetling@de.ibm.com> +2005-07-13 Adrian Straetling <straetling@de.ibm.com> * config/s390/s390.md: ("cmpstrsi", "*cmpstr<mode>"): New pattern. @@ -658,12 +658,16 @@ update_life_info (sbitmap blocks, enum update_life_extent extent, EXECUTE_IF_SET_IN_SBITMAP (blocks, 0, i, sbi) { bb = BASIC_BLOCK (i); - - COPY_REG_SET (tmp, bb->il.rtl->global_live_at_end); - propagate_block (bb, tmp, NULL, NULL, stabilized_prop_flags); - - if (extent == UPDATE_LIFE_LOCAL) - verify_local_live_at_start (tmp, bb); + if (bb) + { + /* The bitmap may be flawed in that one of the basic + blocks may have been deleted before you get here. */ + COPY_REG_SET (tmp, bb->il.rtl->global_live_at_end); + propagate_block (bb, tmp, NULL, NULL, stabilized_prop_flags); + + if (extent == UPDATE_LIFE_LOCAL) + verify_local_live_at_start (tmp, bb); + } }; } else @@ -4456,7 +4460,11 @@ count_or_remove_death_notes (sbitmap blocks, int kill) EXECUTE_IF_SET_IN_SBITMAP (blocks, 0, i, sbi) { - count += count_or_remove_death_notes_bb (BASIC_BLOCK (i), kill); + basic_block bb = BASIC_BLOCK (i); + /* The bitmap may be flawed in that one of the basic blocks + may have been deleted before you get here. */ + if (bb) + count += count_or_remove_death_notes_bb (bb, kill); }; } else |