[erlang-patches] Patch for binary pattern matching of floats with HiPE
Paul Guyot
pguyot@REDACTED
Sat Sep 3 20:06:39 CEST 2011
Hello,
HiPE generates bad code for a pattern matching of a float with a variable size length such as :
<<F:S/float>>
The following function always fail when compiled natively and behaves as expected with BEAM:
bin_to_float(B,S) ->
<<F:S/float>> = B,
F.
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.
https://github.com/pguyot/otp/commit/79e0c0345539624ed8bdcea2450dc2252f8375e8
git fetch git://github.com/pguyot/otp.git fix-hipe-bs_get_float2
Regards,
Paul
--
Semiocast http://semiocast.com/
+33.183627948 - 20 rue Lacaze, 75014 Paris
More information about the erlang-patches
mailing list