aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernardo Innocenti <bernie@gcc.gnu.org>2004-06-17 00:10:39 +0200
committerBernardo Innocenti <bernie@gcc.gnu.org>2004-06-17 00:10:39 +0200
commita7d840c7b53f775fda89ded048a2d8a7423dfcfa (patch)
tree7c22568d1595db45362859217fa9b32f2f006ede
parent18cf0da278ff255a2f60a1ed2bef3cece298ab05 (diff)
downloadgcc-a7d840c7b53f775fda89ded048a2d8a7423dfcfa.zip
gcc-a7d840c7b53f775fda89ded048a2d8a7423dfcfa.tar.gz
gcc-a7d840c7b53f775fda89ded048a2d8a7423dfcfa.tar.bz2
re PR target/13292 (-msoft-float seems to corrupt builtin defines)
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
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/m68k/m68k.h4
-rw-r--r--gcc/config/m68k/m68k.md2
3 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cb18ad6..e013ceb 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 8a07730..17a69dd 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 2e24c11..fa3a395 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";