re PR target/13292 (-msoft-float seems to corrupt builtin defines)
authorBernardo Innocenti <bernie@gcc.gnu.org>
Wed, 16 Jun 2004 22:10:39 +0000 (00:10 +0200)
committerBernardo Innocenti <bernie@gcc.gnu.org>
Wed, 16 Jun 2004 22:10:39 +0000 (00:10 +0200)
PR target/13292
* config/m68k/m68k.h (TARGET_SWITCHES): Don't remove MASK_68040_ONLY
on -msoft-float.
(TARGET_FLT_EVAL_METHOD): Don't advertise extended precision for
68040 and soft-float.
* config/m68k/m68k.md (truncdfsf2): Explicitly require TARGET_68881
in the TARGET_68040_ONLY case.

From-SVN: r83268

gcc/ChangeLog
gcc/config/m68k/m68k.h
gcc/config/m68k/m68k.md

index cb18ad6..e013ceb 100644 (file)
@@ -1,4 +1,14 @@
-2004-06-15  Peter Barada  <peter@the-baradas.com>
+2004-06-16  Bernardo Innocenti  <bernie@develer.com>
+
+       PR target/13292
+       * config/m68k/m68k.h (TARGET_SWITCHES): Don't remove MASK_68040_ONLY
+       on -msoft-float.
+       (TARGET_FLT_EVAL_METHOD): Don't advertise extended precision for
+       68040 and soft-float.
+       * config/m68k/m68k.md (truncdfsf2): Explicitly require TARGET_68881
+       in the TARGET_68040_ONLY case.
+
+2004-06-16 Peter Barada  <peter@the-baradas.com>
 
        * config/m68k/m68k.md (movsi_cfv4): New pattern to allow mov3q.
        (movsi_cf): Make named, don't match TARGET_CFV4.
index 8a07730..17a69dd 100644 (file)
@@ -257,7 +257,7 @@ extern int target_flags;
     { "noshort", - MASK_SHORT,                                         \
       N_("Consider type `int' to be 32 bits wide") },                  \
     { "68881", MASK_68881, "" },                                       \
-    { "soft-float", - (MASK_68040_ONLY|MASK_68881),                    \
+    { "soft-float", - MASK_68881,                                      \
       N_("Generate code with library calls for floating point") },     \
     { "68020-40", -(MASK_ALL_CF_BITS|MASK_68060|MASK_68040_ONLY),      \
       N_("Generate code for a 68040, without any new instructions") }, \
@@ -355,7 +355,7 @@ extern int target_flags;
 /* target machine storage layout */
 
 #define LONG_DOUBLE_TYPE_SIZE 96
-#define TARGET_FLT_EVAL_METHOD (TARGET_68040_ONLY ? 0 : 2)
+#define TARGET_FLT_EVAL_METHOD ((TARGET_68040_ONLY || ! TARGET_68881) ? 0 : 2)
 
 #define BITS_BIG_ENDIAN 1
 #define BYTES_BIG_ENDIAN 1
index 2e24c11..fa3a395 100644 (file)
   [(set (match_operand:SF 0 "nonimmediate_operand" "=f")
        (float_truncate:SF
          (match_operand:DF 1 "general_operand" "fmG")))]
-  "TARGET_68040_ONLY"
+  "TARGET_68881 && TARGET_68040_ONLY"
 {
   if (FP_REG_P (operands[1]))
     return "f%$move%.x %1,%0";