aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2001-09-14 22:25:05 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2001-09-14 22:25:05 +0000
commit86c7007a5748382de7d8833ed9fa6e11b86a13b8 (patch)
treea38a526192ef4bd20c83cc52bb79db9098211b99
parent9775a638f4ae31ecc4efa646668ee74bb49b1df6 (diff)
downloadgcc-86c7007a5748382de7d8833ed9fa6e11b86a13b8.zip
gcc-86c7007a5748382de7d8833ed9fa6e11b86a13b8.tar.gz
gcc-86c7007a5748382de7d8833ed9fa6e11b86a13b8.tar.bz2
reorg.c (fill_slots_from_thread): After call to steal_delay_list_from_target...
* reorg.c (fill_slots_from_thread): After call to steal_delay_list_from_target, update own_thread as new_thread may have branched. From-SVN: r45616
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reorg.c18
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 <hp@bitrange.com>
+
+ * 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 <neil@daikokuya.demon.co.uk>
* 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,