Path: utzoo!telly!attcan!uunet!tut.cis.ohio-state.edu!M.CS.UIUC.EDU!grunwald From: grunwald@M.CS.UIUC.EDU (Dirk Grunwald) Newsgroups: gnu.gcc.bug Subject: tm-encore.h Message-ID: <8903201816.AA08272@m.cs.uiuc.edu> Date: 20 Mar 89 18:16:52 GMT Sender: daemon@tut.cis.ohio-state.edu Reply-To: grunwald@m.cs.uiuc.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 43 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); } \