From 3d5f877adf14a980c6bc38a5f93ecb25c1f5c553 Mon Sep 17 00:00:00 2001 From: Kenneth Zadeck Date: Mon, 19 Dec 2005 02:35:44 +0000 Subject: [PATCH] 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 * 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 --- gcc/ChangeLog | 20 ++++++++++++++------ gcc/flow.c | 22 +++++++++++++++------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7deb7152f7..20d15eb8d31 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-12-17 Danny Berlin + Kenneth Zadeck + + * 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 * 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 +2005-12-11 Rafael vila de Espndola * 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 +2005-12-07 Rafael vila de Espndola * 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 +2005-12-07 Rafael vila de Espndola * Makefile.in: Document the use of stamps. -2005-12-07 Rafael Ávila de Espíndola +2005-12-07 Rafael vila de Espndola * 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 +2005-07-13 Adrian Straetling * 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 +2005-07-13 Adrian Straetling * config/s390/s390.md: ("cmpstrsi", "*cmpstr"): New pattern. diff --git a/gcc/flow.c b/gcc/flow.c index 436bfd7b29b..ca2f1e14f6b 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -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