diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 2 | ||||
-rw-r--r-- | gcc/recog.c | 10 |
3 files changed, 9 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7095903..0fa8476 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Mar 14 19:04:29 CET 2002 Jan HUbicka <jh@suse.cz> + + * emit-rtl.c (try_split): Use delete_insns. + * recog.c (split_all_insns): Fix terminating condition. + 2002-03-14 Richard Earnshaw <rearnsha@arm.com> Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com> diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 4d82afb..937bd20 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3076,7 +3076,7 @@ try_split (pat, trial, last) tem = emit_insn_after (seq, trial); - delete_related_insns (trial); + delete_insn (trial); if (has_barrier) emit_barrier_after (tem); diff --git a/gcc/recog.c b/gcc/recog.c index 8ad3ed2..cb1cb66 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -2735,14 +2735,16 @@ split_all_insns (upd_life) { basic_block bb = BASIC_BLOCK (i); rtx insn, next; + bool finish = false; - for (insn = bb->head; insn ; insn = next) + for (insn = bb->head; !finish ; insn = next) { rtx last; /* Can't use `next_real_insn' because that might go across CODE_LABELS and short-out basic blocks. */ next = NEXT_INSN (insn); + finish = (insn == bb->end); last = split_insn (insn); if (last) { @@ -2756,13 +2758,7 @@ split_all_insns (upd_life) changed = 1; insn = last; } - - if (next == NEXT_INSN (bb->end)) - break; } - - if (insn == NULL) - abort (); } if (changed) |