sparc.c (eligible_for_epilogue_delay): Don't put assignments from FP constants sonce...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sun, 18 Feb 2001 23:39:28 +0000 (23:39 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 18 Feb 2001 23:39:28 +0000 (18:39 -0500)
* config/sparc/sparc.c (eligible_for_epilogue_delay): Don't put
assignments from FP constants sonce 'Y' output code can't handle it.
(eligible_for_sibcall_delay): Likewise.

From-SVN: r39854

gcc/ChangeLog
gcc/config/sparc/sparc.c

index a388b58daabe78a3f2d3127c75846ea773ff9a4a..e35a5af6f5572f641895257dedd451a37708799c 100644 (file)
@@ -1,5 +1,9 @@
 Sun Feb 18 15:45:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
+       * config/sparc/sparc.c (eligible_for_epilogue_delay): Don't put
+       assignments from FP constants sonce 'Y' output code can't handle it.
+       (eligible_for_sibcall_delay): Likewise.
+
        * flow.c (print_rtl_and_abort_fcn): Renamed from print_rtl_and_abort.
        Call fancy_abort directly, passing args.
        (print_rtl_and_abort): Now a macro, like fancy_abort.
index a84b095cb7d82a6bffb43525a878bf9567b7c477..2072fec8932624cc61428037d90390d59e129cfd 100644 (file)
@@ -2414,7 +2414,8 @@ eligible_for_epilogue_delay (trial, slot)
   src = SET_SRC (pat);
 
   /* This matches "*return_[qhs]i" or even "*return_di" on TARGET_ARCH64.  */
-  if (arith_operand (src, GET_MODE (src)))
+  if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+      && arith_operand (src, GET_MODE (src)))
     {
       if (TARGET_ARCH64)
         return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
@@ -2423,7 +2424,8 @@ eligible_for_epilogue_delay (trial, slot)
     }
 
   /* This matches "*return_di".  */
-  else if (arith_double_operand (src, GET_MODE (src)))
+  else if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+          && arith_double_operand (src, GET_MODE (src)))
     return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
 
   /* This matches "*return_sf_no_fpu".  */
@@ -2520,7 +2522,8 @@ eligible_for_sibcall_delay (trial)
 
   src = SET_SRC (pat);
 
-  if (arith_operand (src, GET_MODE (src)))
+  if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+      && arith_operand (src, GET_MODE (src)))
     {
       if (TARGET_ARCH64)
         return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
@@ -2528,7 +2531,8 @@ eligible_for_sibcall_delay (trial)
         return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (SImode);
     }
 
-  else if (arith_double_operand (src, GET_MODE (src)))
+  else if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+          && arith_double_operand (src, GET_MODE (src)))
     return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
 
   else if (! TARGET_FPU && restore_operand (SET_DEST (pat), SFmode)