aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKenneth Zadeck <zadeck@gcc.gnu.org>2005-12-19 02:35:44 +0000
committerKenneth Zadeck <zadeck@gcc.gnu.org>2005-12-19 02:35:44 +0000
commit3d5f877adf14a980c6bc38a5f93ecb25c1f5c553 (patch)
tree0b4ed2d9a152aff6f7733ec523309ca8eb5951d1 /gcc
parentfd0bd278031c12e1148fb28b4fd66849cfe61781 (diff)
downloadgcc-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/ChangeLog20
-rw-r--r--gcc/flow.c22
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.
diff --git a/gcc/flow.c b/gcc/flow.c
index 436bfd7..ca2f1e1 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