]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
flow.c (update_life_info, [...]): Fixed latent bug that could happen if update_life_i...
authorKenneth Zadeck <zadeck@gcc.gnu.org>
Mon, 19 Dec 2005 02:35:44 +0000 (02:35 +0000)
committerKenneth Zadeck <zadeck@gcc.gnu.org>
Mon, 19 Dec 2005 02:35:44 +0000 (02:35 +0000)
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

gcc/ChangeLog
gcc/flow.c

index c7deb7152f7642d31781bd8b5fb3c55fb9fc4ac7..20d15eb8d31d6724970a2d047651f9195d147eb3 100644 (file)
@@ -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
        * 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_".
        * 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
        * 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.
        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.
index 436bfd7b29bcdaaaad1394a7894894c988ac9485..ca2f1e14f6bc1664d8e247276e8a6816f22aa491 100644 (file)
@@ -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