From 9a45115e136a4b7f448c0f417ff02815d525d0aa Mon Sep 17 00:00:00 2001 From: hp Date: Fri, 14 Sep 2001 22:25:05 +0000 Subject: [PATCH] * reorg.c (fill_slots_from_thread): After call to steal_delay_list_from_target, update own_thread as new_thread may have branched. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45616 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/reorg.c | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4834001..aeb7d7e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-09-15 Hans-Peter Nilsson + + * reorg.c (fill_slots_from_thread): After call to + steal_delay_list_from_target, update own_thread as new_thread may + have branched. + 2001-09-14 Neil Booth * cpperror.c (print_location): Take line and column, for diff --git a/gcc/reorg.c b/gcc/reorg.c index 5cff4b3..2039945 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -2800,12 +2800,18 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely, /* If this is the `true' thread, we will want to follow the jump, so we can only do this if we have taken everything up to here. */ if (thread_if_true && trial == new_thread) - delay_list - = steal_delay_list_from_target (insn, condition, PATTERN (trial), - delay_list, &set, &needed, - &opposite_needed, slots_to_fill, - pslots_filled, &must_annul, - &new_thread); + { + delay_list + = steal_delay_list_from_target (insn, condition, PATTERN (trial), + delay_list, &set, &needed, + &opposite_needed, slots_to_fill, + pslots_filled, &must_annul, + &new_thread); + /* If we owned the thread and are told that it branched + elsewhere, make sure we own the thread at the new location. */ + if (own_thread && trial != new_thread) + own_thread = own_thread_p (new_thread, new_thread, 0); + } else if (! thread_if_true) delay_list = steal_delay_list_from_fallthrough (insn, condition, -- 2.7.4