HIPE bug?
Mikael Pettersson
mikpe@REDACTED
Tue Oct 30 22:36:56 CET 2001
On Sun, 28 Oct 2001 18:44:41 +0100, Lon Willett wrote:
>-module(hipebug).
>-export([test/0]).
>
>add(X,Y) ->
> X + Y.
>
>test() ->
> 16#7FFFFFF = add(16#7FFFFFF,0),
> 16#8000000 = add(16#8000000,0),
> 16#8000001 = add(16#8000000,1),
> case add(16#7FFFFFF,1) of
> 16#8000000 -> ok;
> -16#7FFFFFF -> error
> end.
>
>with "+native", hipebug:test() return 'error', while without it, it
>returns 'ok' (this is on an i386 running redhat 6.2, OTP was built
>with gcc 3.0.1).
Yes, that's a bug. I've verified that it occurs in both HiPE/SPARC
and HiPE/x86. From the intermediate code, it looks like a conditional
(test if variable X is bignum constant Y) got inverted.
Thanks for reporting it. We'll try to have it fixed as soon as possible.
/Mikael
More information about the erlang-questions
mailing list