diff options
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11ce53b..2a26741 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -9,6 +9,8 @@ * sh.md (floatsisf2_i4, floatsidf2_i, extendsfdf2_i4): Use it for input operand that needs to be in fpul. (fix_truncsfsi2, fix_truncsfsi2_i4): Use register_operand for output. + * sh.c (find_barrier): Take into account that machine_dependent_reorg + might add new insns. 2000-09-18 Alexandre Oliva <aoliva@redhat.com> diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index bd2a382..afc0dca 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -2201,6 +2201,14 @@ find_barrier (num_mova, mova, from) if (num_mova) si_limit -= GET_MODE_SIZE (mode); } + + /* See the code in machine_dependent_reorg, which has a similar if + statement that generates new mova insn in many cases. */ + if (GET_CODE (dst) == REG + && ((REGNO (dst) >= FIRST_FP_REG + && REGNO (dst) <= LAST_XD_REG) + || REGNO (dst) == FPUL_REG)) + inc += 2; } if (mova_p (from)) |