aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2003-02-17 16:21:32 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2003-02-17 15:21:32 +0000
commit35a3fa09ad2d51d4f65f9162372dad7a5735e599 (patch)
tree8baa63521dc2e4d2a19b829e3d2256baba739f1b
parent6dc503669cd2d2ddf9e556e15a493afd8603d0b1 (diff)
downloadgcc-35a3fa09ad2d51d4f65f9162372dad7a5735e599.zip
gcc-35a3fa09ad2d51d4f65f9162372dad7a5735e599.tar.gz
gcc-35a3fa09ad2d51d4f65f9162372dad7a5735e599.tar.bz2
* recog.c (split_all_insns): Fix memory overflow.
From-SVN: r62998
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/recog.c14
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2ce31e7..bb6f61d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Mon Feb 17 16:16:54 CET 2003 Jan Hubicka <jh@suse.cz>
+
+ * recog.c (split_all_insns): Fix memory overflow.
+
2003-02-17 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (cmpqi): Remove mode from compare.
diff --git a/gcc/recog.c b/gcc/recog.c
index bfa988b..6206be1 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -2882,10 +2882,18 @@ split_all_insns (upd_life)
find_many_sub_basic_blocks (blocks);
- while (old_last_basic_block < last_basic_block)
+ if (old_last_basic_block != last_basic_block && upd_life)
{
- SET_BIT (blocks, old_last_basic_block);
- old_last_basic_block++;
+ sbitmap new_blocks = sbitmap_alloc (last_basic_block);
+
+ sbitmap_copy (new_blocks, blocks);
+ while (old_last_basic_block < last_basic_block)
+ {
+ SET_BIT (new_blocks, old_last_basic_block);
+ old_last_basic_block++;
+ }
+ sbitmap_free (blocks);
+ new_blocks = blocks;
}
}