[erlang-bugs] bug (HiPE)

Sebastian Egner <>
Mon Feb 25 13:48:54 CET 2013


Hello,

Consider the following module:

---- a.erl ----
-module(a).
-export([foo/1]).

foo(X) when is_number(X) ->
    is_integer(X).
----

Then a:foo(0) evaluates to 'false' when compiled with HiPE:

1> c(a).
2> a:foo(0).
true 
3> hipe:c(a, []).           
4> a:foo(0).
false      % *** WRONG ***

The bug seems to be related to HiPE's icode type analysis:

5> hipe:c(a, [no_icode_type]).
6> a:foo(0).                  
true

For what it is worth, we have reproduced the problem on R14B04, R15B02, R15B03,
R16A and OTP_R16A_RELEASE_CANDIDATE-434-gc8651ed on Debian GNU/Linux
and for MacOSX (10.8.2).

Kind regards,

Sebastian Egner and Johannes Weißl



More information about the erlang-bugs mailing list