m68k.c (print_operand): Always print a float constant in hex.
authorAndreas Schwab <schwab@suse.de>
Sun, 29 Jun 2008 21:27:46 +0000 (21:27 +0000)
committerAndreas Schwab <schwab@gcc.gnu.org>
Sun, 29 Jun 2008 21:27:46 +0000 (21:27 +0000)
* config/m68k/m68k.c (print_operand): Always print a float
constant in hex.
* config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
(ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
Remove macros.

From-SVN: r137259

gcc/ChangeLog
gcc/config/m68k/m68k.c
gcc/config/m68k/m68k.h

index 92c90a9134249cb6027f1212f39b671f2f9eee2c..995aa82a31f1e9fb70ac74e7e63220f102abca5f 100644 (file)
@@ -1,5 +1,11 @@
 2008-06-29  Andreas Schwab  <schwab@suse.de>
 
+       * config/m68k/m68k.c (print_operand): Always print a float
+       constant in hex.
+       * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
+       (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
+       Remove macros.
+
        * config/rs6000/x-linux64: Remove never used file.
 
 2008-06-29  Richard Guenther  <rguenther@suse.de>
index 947304f56a08a1114c5f26de001a9e4565dddcb5..046132088bc7d1038e4219ca1d7b1348f4cbf717 100644 (file)
@@ -1,6 +1,6 @@
 /* Subroutines for insn-output.c for Motorola 68000 family.
    Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2003, 2004, 2005, 2006, 2007
+   2001, 2003, 2004, 2005, 2006, 2007, 2008
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -3884,20 +3884,26 @@ print_operand (FILE *file, rtx op, int letter)
   else if (GET_CODE (op) == CONST_DOUBLE && GET_MODE (op) == SFmode)
     {
       REAL_VALUE_TYPE r;
+      long l;
       REAL_VALUE_FROM_CONST_DOUBLE (r, op);
-      ASM_OUTPUT_FLOAT_OPERAND (letter, file, r);
+      REAL_VALUE_TO_TARGET_SINGLE (r, l);
+      asm_fprintf (file, "%I0x%lx", l);
     }
   else if (GET_CODE (op) == CONST_DOUBLE && GET_MODE (op) == XFmode)
     {
       REAL_VALUE_TYPE r;
+      long l[3];
       REAL_VALUE_FROM_CONST_DOUBLE (r, op);
-      ASM_OUTPUT_LONG_DOUBLE_OPERAND (file, r);
+      REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
+      asm_fprintf (file, "%I0x%lx%08lx%08lx", l[0], l[1], l[2]);
     }
   else if (GET_CODE (op) == CONST_DOUBLE && GET_MODE (op) == DFmode)
     {
       REAL_VALUE_TYPE r;
+      long l[2];
       REAL_VALUE_FROM_CONST_DOUBLE (r, op);
-      ASM_OUTPUT_DOUBLE_OPERAND (file, r);
+      REAL_VALUE_TO_TARGET_DOUBLE (r, l);
+      asm_fprintf (file, "%I0x%lx%08lx", l[0], l[1]);
     }
   else
     {
index 2bb725f04231d7f7509c395b27e67fb4b8ecbdd0..55de085d4a09fa5929b1a3fb2783bfda88990227 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GCC for Motorola 680x0/ColdFire.
    Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -1015,40 +1015,6 @@ do { if (cc_prev_status.flags & CC_IN_68881)                     \
   assemble_name ((FILE), (NAME)),              \
   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
 
-/* Output a float value (represented as a C double) as an immediate operand.
-   This macro is m68k-specific.  */
-#define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE)              \
- do {                                                          \
-      if (CODE == 'f')                                         \
-        {                                                      \
-          char dstr[30];                                       \
-         real_to_decimal (dstr, &(VALUE), sizeof (dstr), 9, 0); \
-          asm_fprintf ((FILE), "%I0r%s", dstr);                        \
-        }                                                      \
-      else                                                     \
-        {                                                      \
-          long l;                                              \
-          REAL_VALUE_TO_TARGET_SINGLE (VALUE, l);              \
-          asm_fprintf ((FILE), "%I0x%lx", l);                  \
-        }                                                      \
-     } while (0)
-
-/* Output a double value (represented as a C double) as an immediate operand.
-   This macro is m68k-specific.  */
-#define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE)                          \
- do { char dstr[30];                                                   \
-      real_to_decimal (dstr, &(VALUE), sizeof (dstr), 0, 1);           \
-      asm_fprintf (FILE, "%I0r%s", dstr);                              \
-    } while (0)
-
-/* Note, long double immediate operands are not actually
-   generated by m68k.md.  */
-#define ASM_OUTPUT_LONG_DOUBLE_OPERAND(FILE,VALUE)                     \
- do { char dstr[30];                                                   \
-      real_to_decimal (dstr, &(VALUE), sizeof (dstr), 0, 1);           \
-      asm_fprintf (FILE, "%I0r%s", dstr);                              \
-    } while (0)
-
 /* On the 68000, we use several CODE characters:
    '.' for dot needed in Motorola-style opcode names.
    '-' for an operand pushing on the stack: