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