m68k.c (print_operand): Always print a float constant in hex.

* 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
This commit is contained in:
Andreas Schwab 2008-06-29 21:27:46 +00:00 committed by Andreas Schwab
parent 5b5b098dd4
commit 6ae89ea8fe
3 changed files with 17 additions and 39 deletions

View 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>

View 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
{

View 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: