diff options
author | Bernardo Innocenti <bernie@gcc.gnu.org> | 2004-06-17 00:10:39 +0200 |
---|---|---|
committer | Bernardo Innocenti <bernie@gcc.gnu.org> | 2004-06-17 00:10:39 +0200 |
commit | a7d840c7b53f775fda89ded048a2d8a7423dfcfa (patch) | |
tree | 7c22568d1595db45362859217fa9b32f2f006ede /gcc | |
parent | 18cf0da278ff255a2f60a1ed2bef3cece298ab05 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.h | 4 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.md | 2 |
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"; |