diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1995-03-10 10:53:01 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1995-03-10 10:53:01 -0800 |
commit | fe41a98eb213c6fd3307b57551f9b837a882f1b9 (patch) | |
tree | 311bcaff38237286fb6d9250e910caf612aefdc6 | |
parent | 63a33c946357af5aa88605e00226d3ee6509f0f0 (diff) | |
download | gcc-fe41a98eb213c6fd3307b57551f9b837a882f1b9.zip gcc-fe41a98eb213c6fd3307b57551f9b837a882f1b9.tar.gz gcc-fe41a98eb213c6fd3307b57551f9b837a882f1b9.tar.bz2 |
(steal_delay_list_from_target): Exit at the top if the
branch in SEQ is not a single set.
From-SVN: r9158
-rw-r--r-- | gcc/reorg.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c index 6c72f4c..7c5e3c8 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -1592,12 +1592,17 @@ steal_delay_list_from_target (insn, condition, seq, delay_list, /* We can't do anything if there are more delay slots in SEQ than we can handle, or if we don't know that it will be a taken branch. - We know that it will be a taken branch if it is either an unconditional - branch or a conditional branch with a stricter branch condition. */ + branch or a conditional branch with a stricter branch condition. + + Also, exit if the branch has more than one set, since then it is computing + other results that can't be ignored, e.g. the HPPA mov&branch instruction. + ??? It may be possible to move other sets into INSN in addition to + moving the instructions in the delay slots. */ if (XVECLEN (seq, 0) - 1 > slots_remaining - || ! condition_dominates_p (condition, XVECEXP (seq, 0, 0))) + || ! condition_dominates_p (condition, XVECEXP (seq, 0, 0)) + || ! single_set (XVECEXP (seq, 0, 0))) return delay_list; for (i = 1; i < XVECLEN (seq, 0); i++) |