[gnu.gcc.bug] tm-encore.h

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