On Mon, Jan 14, 2008 at 07:41:11AM +0100, Paolo Bonzini wrote:
> Steve Langasek wrote:
>> On Sun, Jan 13, 2008 at 02:01:41PM +0100, Paolo Bonzini wrote:
>>> Is the math-emu module loaded (or compiled in the kernel) on the buildd 
>>> alpha machines?  The gnu-smalltalk package is failing for 3.0 because the 
>>> emulator converts erroneously a denormal float to double:

>>> st> p:= (FloatE coerce: 1) timesTwoPower: -149.
>>> 2.6524948e-315

>>> (2^-149 is actually ~1e-44) despite the program is compiled with -mieee.

>>> If it is, it is a bug in the emulator and the best solution is to XFAIL 
>>> the test on alpha.  But if it is not loaded, maybe it should...

>> The alpha buildd is an ev68; math-emu is not relevant on that chip.

> So that might be a known errata?  The following program should yield
> 1.4013e-45 twice (the bug might show up only at -mieee -O0, I don't know).

> float x = 1.0;
> double y;

> int g(float z)
> {
>   printf ("%g\n", z);
> }

Well, AFAICS this is an error; %g refers to a double, and you're passing a
float, so that output would be undefined.

But regardless of whether I add a (double) cast here, and regardless of
whether I use -mieee (which should still be the default now on Debian's
gcc), if I build with -O2, I get 2.65249e-315 printed out twice.  If I build
with -O0 I instead get

  2.65249e-315
  0

Building with gcc-4.1 makes things worse, not better, as the second value is
always returned as a zero then regardless of optimization.

I've tested this on an ev56 with a 2.6.24 kernel, and an ev68 with a 2.6.18
kernel.  (Both had CONFIG_MATHEMU=y.)

Beyond that, I haven't looked closely at the math you're doing to verify
that the alpha is getting it wrong, but I can confirm that this problem is
consistently reproducible and isn't tied to math-emu.

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
[EMAIL PROTECTED]                                     [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to