diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 1993-05-14 20:37:56 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 1993-05-14 20:37:56 +0000 |
commit | 700119230a53a83eb787a235d1361e0188526d8b (patch) | |
tree | 1ce9ec4a464e2ac2e322abe6d66285d977c7567d /gcc/reorg.c | |
parent | b4bf13a89e99e8bd7fa60c9813003467db60d365 (diff) | |
download | gcc-700119230a53a83eb787a235d1361e0188526d8b.zip gcc-700119230a53a83eb787a235d1361e0188526d8b.tar.gz gcc-700119230a53a83eb787a235d1361e0188526d8b.tar.bz2 |
Don't leave new_thread hanging if it was split by try_split
From-SVN: r4458
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r-- | gcc/reorg.c | 8 |
1 files changed, 7 insertions, 1 deletions
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) |