grunwald@M.CS.UIUC.EDU (Dirk Grunwald) (03/21/89)
The Encore assembler chokes when MAXDOUBLE is specified using the
spec ``0l.%20e,''. Checking the output of Greenhills C, they always
generate F.P. constants using ``0f.%20e''
The following patches to tm-encore.h fix this:
*** /tmp/,RCSt1008282 Mon Mar 20 12:15:54 1989
--- tm-encore.h Mon Mar 20 12:15:06 1989
***************
*** 94,100 ****
fprintf (FILE, "\n"))
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
! fprintf (FILE, "\t.long 0l%.20e\n", (VALUE))
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
( fputs ("\t.bss ", (FILE)), \
--- 94,100 ----
fprintf (FILE, "\n"))
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
! fprintf (FILE, "\t.long 0f%.20e\n", (VALUE))
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
( fputs ("\t.bss ", (FILE)), \
***************
*** 183,189 ****
if (GET_MODE (X) == DFmode) \
{ union { double d; int i[2]; } u; \
u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X); \
! fprintf (FILE, "$0l%.20e", u.d); } \
else { union { double d; int i[2]; } u; \
u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X); \
fprintf (FILE, "$0f%.20e", u.d); } \
--- 183,189 ----
if (GET_MODE (X) == DFmode) \
{ union { double d; int i[2]; } u; \
u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X); \
! fprintf (FILE, "$0f%.20e", u.d); } \
else { union { double d; int i[2]; } u; \
u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X); \
fprintf (FILE, "$0f%.20e", u.d); } \