From 700119230a53a83eb787a235d1361e0188526d8b Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 14 May 1993 20:37:56 +0000 Subject: [PATCH] Don't leave new_thread hanging if it was split by try_split From-SVN: r4458 --- gcc/reorg.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/reorg.c b/gcc/reorg.c index 409bf81..3c62918 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3095,7 +3095,7 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely, ! stop_search_p (trial, ! thread_if_true) && (! lose || own_thread); trial = next_nonnote_insn (trial)) { - rtx pat; + rtx pat, old_trial; /* If we have passed a label, we no longer own this thread. */ if (GET_CODE (trial) == CODE_LABEL) @@ -3142,7 +3142,10 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely, || (! insn_sets_resource_p (trial, &opposite_needed, 1) && ! may_trap_p (pat))) { + old_trial = trial; trial = try_split (pat, trial, 0); + if (new_thread == old_trial) + new_thread = trial; pat = PATTERN (trial); if (eligible_for_delay (insn, *pslots_filled, trial, flags)) goto winner; @@ -3156,7 +3159,10 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely, #endif ) { + old_trial = trial; trial = try_split (pat, trial, 0); + if (new_thread == old_trial) + new_thread = trial; pat = PATTERN (trial); if ((thread_if_true ? eligible_for_annul_false (insn, *pslots_filled, trial, flags) -- 2.7.4