Fix for sh minipool generation
authorBernd Schmidt <bernds@redhat.co.uk>
Mon, 18 Sep 2000 17:21:25 +0000 (17:21 +0000)
committerBernd Schmidt <crux@gcc.gnu.org>
Mon, 18 Sep 2000 17:21:25 +0000 (17:21 +0000)
From-SVN: r36500

gcc/ChangeLog
gcc/config/sh/sh.c

index 11ce53b6a0217600252c8aa005dc6a46e0b77e71..2a26741ead240b1f295c6a2fec0feeeeeee726e6 100644 (file)
@@ -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>
 
index bd2a3828de2ee511cf16340024d0e7a4267e28c2..afc0dca0c177378f25e42b14c7172c5199ac8dc6 100644 (file)
@@ -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))