From 99c86df1856f133ed3c2bd7563fbcd469d67db5c Mon Sep 17 00:00:00 2001
From: bernie <bernie@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 16 Jun 2004 22:10:39 +0000
Subject: [PATCH] 	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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83268 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog           | 12 +++++++++++-
 gcc/config/m68k/m68k.h  |  4 ++--
 gcc/config/m68k/m68k.md |  2 +-
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cb18ad6ea5bd..e013ceb39bf5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index 8a0773088425..17a69dddc330 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -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
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 2e24c113b2d2..fa3a39524c19 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -1548,7 +1548,7 @@
   [(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";
-- 
GitLab