This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

floating point war casualty list



Here is a list of all tm.h files that defined ASM_OUTPUT_DOUBLE in
gcc-2.95.  I have tried to categorize them as still ok or not ok.
The 26 ports marked ok had already been checked out, I believe, to work
with floating point values printed in hex and therefore they would not be
adversely affected by the recent barbarian invasion.  The others,
35 in number, have to be treated with deep suspicion or are certainly
broken.

The 10 m68k targets marked bad will fail if you try to compile
an infinity or NaN bit pattern.  The only known way to make infinity
on them is to feed them a decimal string like 0r99e999, but since
the barbarians that is no longer an option.

About 19 of the targets used the native arithmetic of the host
computer.  That is, very unfortunately, no longer an option either.
It was our safety net.  That loss of compiler configuration ability
will make it harder to develop new ports for native targets that have
unusual machine characteristics.  These ports are marked * and are
very likely to be broken now.  Some of them were also reportedly on a
list to be abandoned.

The five lines marked ? are for computers that I am not personally familiar
with and I cannot tell by looking at the code which category they belong in.
All of them used to print float values as decimal strings and are suspect.

A few machines do not appear in this list because they did not define
ASM_OUTPUT_DOUBLE in gcc-2.95.  That may or may not be a good sign for them.


*   a29k/a29k.h-  fprintf (FILE, "\t.double %.20e\n", (VALUE))
bad alpha/alpha.h- fprintf (FILE, "\t.%c_floating %s\n", (TARGET_FLOAT_VAX)?
ok arc/arc.h-  fprintf (FILE, "\t.word\t0x%lx %s %s\n\t.word\t0x%lx\n",
ok arm/aof.h-  fprintf ((STREAM), "\tDCD &%lx, &%lx\t%s double %s\n",
ok arm/aout.h-  fprintf (STREAM, "\t.long 0x%lx, 0x%lx\t%s double %s\n", l[0],
ok arm/thumb.h-  fprintf (STREAM, "\t.long 0x%lx, 0x%lx\t%s double %s\n", l[0],
ok clipper/clix.h- printf (FILE, "\t.long 0x%08x,0x%08x\n", _d_.i[0],_d_.i[1]);
*  convex
ok dsp16xx fprintf (file, "0x%-4.4x, 0x%-4.4x", (value & 0xffff), (value >> 16)
*  elxsi/elxsi.h- fprintf (FILE, "\t.data\t%d{32}, %d{32}\n", tem.i[0], tem.i
*  fx80/fx80.h-   fprintf (FILE, "\t.long 0x%x,0x%x\n", tem.v[0], tem.v[1]);
*  gmicro/gmicro.h- fprintf (FILE, "\t.fdata.d h'%x%08x.d\n", tem.l[0], tem.l
?  h8300/h8300.h-     fprintf (FILE, "\t.double %s\n", dstr);
*  i370/i370.h-  fprintf (FILE, "\tDC\tD'%.18G'\n", (VALUE))
ok i386/i386.h- fprintf (FILE, "%s 0x%lx,0x%lx\n", ASM_LONG, l[0], l[1]);
ok i386/next.h- fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n", hex[0], hex[1]);
ok i386/ptx4-i.h-         fprintf((FILE), "%s\t0x%x\n", ASM_LONG, value[0]);
ok i386/sysv4.h-   fprintf((FILE), "%s\t0x%x\n", ASM_LONG, value[0]);
*  i860/fx2800.h-  fprintf(FILE, "\t.double %.20e\n", (VALUE))
*  i860/i860.h-  fprintf (FILE, "\t.double %.20e\n", (VALUE))
*  i860/paragon.h-fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n", t[0], t[1]);
*  i860/sysv4.h-fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", t[0], t[1]);
ok i960/i960.h  i960_output_long_double(FILE, VALUE)
ok m32r/m32r.h-  fprintf (FILE, "\t.word\t0x%lx %s %s\n\t.word\t0x%lx\n",
ok m68k/3b1.h-     fprintf (FILE, "\tlong 0x%x,0x%x\n", l[0], l[1]);
bad m68k/altos3068.h-       fprintf (FILE, "\t.double 0r%s\n", dstr);
ok  m68k/crds.h-     fprintf (FILE, "\t.long 0x%x, 0x%x\n", l[0], l[1]);
bad m68k/dpx2.h-       fprintf (FILE, "\tdc.d %s\n", dstr);
bad m68k/hp320.h-       fprintf (FILE, "\tdouble 0f%s\n", dstr);
bad m68k/m68k.h-       fprintf (FILE, "\t.double 0r%s\n", dstr);
bad m68k/mot3300.h-   fprintf (FILE, "\t%s 0x%x,0x%x\n", ASM_LONG, l[0], l[1]);
bad m68k/news.h-     fprintf (FILE, "\t.double 0d%s\n", dstr);
ok  m68k/next.h-fprintf (FILE, "\t.long 0x%x\n\t.long 0x%x\n", hex[0], hex[1]);
bad m68k/next.h-            fprintf (FILE, "\t.double 0r99e999\n");
bad m68k/next21.h-            fprintf (FILE, "#0r99e999");
ok  m68k/sgs.h-     fprintf ((FILE), "\t%s 0x%x,0x%x\n", LONG_ASM_OP,
bad m68k/sun2o4.h-            fprintf (FILE, "\t.double 0r99e999\n");
bad m68k/sun3.h-          fprintf (FILE, "\t.double 0r99e999\n");
ok m68k/tower-as.h-     fprintf (FILE, "\tlong 0x%x,0x%x\n", l[0], l[1]);
ok m88k/m88k.h-    fprintf (FILE, "\t%s\t 0x%.8x, 0x%.8x\n", INT_ASM_OP,
ok mips/mips.h    mips_output_double
?  mn10200/mn10200.h-   fprintf (FILE, "\t.double %s\n", dstr);
?  mn10300/mn10300.h-   fprintf (FILE, "\t.double %s\n", dstr);
*  ns32k/encore.h- fprintf (FILE, "\t.long 0f%.20e\n", (VALUE))
*  ns32k/genix.h- fprintf (FILE, "\t.long 0l%.20e\n", (VALUE))
*  ns32k/ns32k.h-  fprintf (FILE, "\t.double 0d%.20e\n", (VALUE))
ok pa/pa.h-     fprintf (FILE, "\t.word 0x%lx\n\t.word 0x%lx\n", l[0], l[1]);
*  pdp11/pdp11.h-  fprintf (FILE, "\tdouble %.20e\n", (VALUE))
*  pyr/pyr.h-  fprintf (FILE, "\t.double 0d%.20e\n", (VALUE))
*  romp/romp.h-  fprintf (FILE, "\t.double 0d%.20e\n", (VALUE))
ok rs6000/rs6000.h-    fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n",
ok rs6000/sol2.h-	fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n",
ok rs6000/win-nt.h-	fprintf (FILE, "\t.ualong 0x%lx\n\t.long 0x%lx\n",
?  sh/sh.h-     fprintf ((FILE), "\t.double %s\n", dstr);
ok sparc/sparc.h-    fprintf (FILE, "\t%s\t0x%lx %s ~%s\n", ASM_LONG, t[0],
*  spur/spur.h-  fprintf (FILE, "\t.double %.20e\n", (VALUE))
*  tahoe/tahoe.h-  fprintf (FILE, "\t.double 0d%.20e\n", (VALUE))
?  v850/v850.h-     fprintf (FILE, "\t.double %s\n", dstr);
ok vax/vax.h-     fprintf (FILE, "\t.%cfloat 0%c%s\n", ASM_DOUBLE_CHAR,
ok vax/vaxv.h-     fprintf (FILE, "\t.double 0d%s\n", dstr);
*  we32k/we32k.h-  fprintf (FILE, "\t.double 0r%.20g\n", (VALUE))


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]