summaryrefslogtreecommitdiff
path: root/gcc/sched-rgn.c
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <mkuvyrkov@ispras.ru>2006-12-07 10:02:35 +0000
committerMaxim Kuvyrkov <mkuvyrkov@gcc.gnu.org>2006-12-07 10:02:35 +0000
commit1d49ee6a7985f8eb2a759a3d22fb3c8fec92a403 (patch)
tree01128e69b85502902d613f0576dd919bc469c33f /gcc/sched-rgn.c
parent9f9195633a4a608e677cfafd4e8d355342123cda (diff)
downloadgcc-1d49ee6a7985f8eb2a759a3d22fb3c8fec92a403.tar.gz
re PR target/29794 (cc1 segfaults with -O3 -msched-control-spec)
2006-12-07 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> PR target/29794 * sched-rgn.c (add_block1): Use correct initializer. From-SVN: r119613
Diffstat (limited to 'gcc/sched-rgn.c')
-rw-r--r--gcc/sched-rgn.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c
index 8b9cf9931be..7f7f5869238 100644
--- a/gcc/sched-rgn.c
+++ b/gcc/sched-rgn.c
@@ -3124,9 +3124,15 @@ add_block1 (basic_block bb, basic_block after)
is _always_ valid for access. */
i = BLOCK_TO_BB (after->index) + 1;
- for (pos = ebb_head[i]; rgn_bb_table[pos] != after->index; pos--);
+ pos = ebb_head[i] - 1;
+ /* Now POS is the index of the last block in the region. */
+
+ /* Find index of basic block AFTER. */
+ for (; rgn_bb_table[pos] != after->index; pos--);
+
pos++;
gcc_assert (pos > ebb_head[i - 1]);
+
/* i - ebb right after "AFTER". */
/* ebb_head[i] - VALID. */