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); } \