[erlang-patches] Patch for binary pattern matching of floats with HiPE

Paul Guyot <>
Sat Sep 3 20:06:39 CEST 2011


HiPE generates bad code for a pattern matching of a float with a variable size length such as :

The following function always fail when compiled natively and behaves as expected with BEAM:

bin_to_float(B,S) ->
    <<F:S/float>> = B,

Judging from the almost identical code for integers, this obviously is a typo. I guess both code could be factorized, although I do not know what the policy is for duplicate code in HiPE (it's just about 14x2 lines).

The following commit fixes this bug. Also, a test is obvious to implement and I wish HiPE tests were open source, so we could enrich them.

git fetch git://github.com/pguyot/otp.git fix-hipe-bs_get_float2


Semiocast            http://semiocast.com/
+33.183627948 - 20 rue Lacaze, 75014 Paris

More information about the erlang-patches mailing list