On November 23, 2004 11:37 am, Jim Seymour wrote:
> Stefan Kaltenbrunner <stefan@kaltenbrunner.cc> wrote:
> > Darcy Buskermolen wrote:
> > > On November 19, 2004 10:55 am, you wrote:
> > >>The answer is: it's a gcc bug. The attached program should print
> > >>x = 12.3
> > >>y = 12.3
> > >>
> > >>but if compiled with -O or -O2 on Stefan's machine, I get garbage:
> > >>
> > >>$ gcc -O ftest.c
> > >>$ ./a.out
> > >>x = 12.3
> > >>y = 1.47203e-39
> > >>$ gcc -v
> > >>Reading specs from
> > >> /usr/lib/gcc-lib/sparc64-unknown-openbsd3.6/3.3.2/specs Configured
> > >> with:
> > >>Thread model: single
> > >>gcc version 3.3.2 (propolice)
> > >>$
> > >
> > > I can confirm this behavior on Solaris 8/sparc 64 as well.
> >
> > some more datapoints:
> >
> > solaris 2.9 with gcc 3.1 is broken(-O3 does not help here)
> > linux/sparc64 (debian) with gcc 3.3.5 is broken too
> >
> > So it looks like at least gcc 3.1 and gcc 3.3.x are affected on Sparc64
> > on all operating systems.
>
> Yet Another Datapoint:
>
> $ uname -a
> SunOS jimsun 5.7 Generic_106541-29 sun4u sparc SUNW,UltraSPARC-IIi-Engine
> $ gcc -v
> ...
> gcc version 3.3.1
> $ gcc -O -m64 test.c
> $ a.out
> x = 12.3
> y = 2.55036e-42
>
> Same on a "real" UltraSparc box, running Solaris 8 and gcc 3.3.1
> at work.
>
> Looks like it's time for a gcc upgrade.
>
> Jim
The following compilers work fine producing 12.3 at all optimization levels:
Sun C 5.5 2003/03/12
and
sparc-sun-solaris2.9-gcc (GCC) 3.4.1
I'm guessing we need to add some more configure logic to detect gcc versions
3.4 on sparc trying to produce 64bit code and disable optimizations, or else
bail out and ask them to upgrade.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
--
Darcy Buskermolen
Wavefire Technologies Corp.
ph: 250.717.0200
fx: 250.763.1759
http://www.wavefire.com