aboutsummaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>1993-05-14 20:37:56 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>1993-05-14 20:37:56 +0000
commit700119230a53a83eb787a235d1361e0188526d8b (patch)
tree1ce9ec4a464e2ac2e322abe6d66285d977c7567d /gcc/reorg.c
parentb4bf13a89e99e8bd7fa60c9813003467db60d365 (diff)
downloadgcc-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.c8
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)