<div dir="ltr">snarky ..<div><br></div><div>Before anyone goes on a wild-goose chase, there exists another sample code, without maps, that also crashes the HiPE compiler on,</div><div>- 18.1</div><div>- 17.5.6</div><div>- OTP_R16B03-1</div><div>- OTP_R15B03-1</div><div>- stopped testing here .. perhaps the bug is in the original implementation ..</div><div><br></div><font face="monospace, monospace">f(A, C, D, E, L) -><br>    lists:foldl(fun (X, P) -><br>                        AVar = case A of<br>                                   0 -> 1 / D;<br>                                   N -> N / C<br>                               end,<br>                        BVar = case E of<br>                                   atom1 -> 1.0;<br>                                   atom2 -> 0.8;<br>                                   _ -> E<br>                               end,<br>                        CVar = case X of<br>                                   atom1 -> 0.1 * AVar;<br>                                   _ -> 1.0<br>                               end,<br>                        P * BVar * CVar<br>                end, 1, L).</font><div><br></div><div>Not necessarily the same bug as above but it has the same symptoms, i.e. function clause on hipe_icode_fp assert_assigned and no_inline_fp compiles fine.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-25 22:20 GMT+01:00 Kostis Sagonas <span dir="ltr"><<a href="mailto:kostis@cs.ntua.gr" target="_blank">kostis@cs.ntua.gr</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 11/25/2015 08:46 PM, Mikael Pettersson wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  > The code compiles without problem if running the compiler without the +native flag. With the flag, the compiler will crash.<br>
  > If compiling with the no_inline_fp flag enabled, the compiler does not crash.<br>
<br>
I can reproduce the compiler crash with OTP 18.1 on Linux/x86_64, but not with OTP 17.5.<br>
The crash is in a sanity check (hipe_icode_fp:assert_assigned/1) at the ICode level, well<br>
before any target-dependent code is generated.<br>
<br>
This could be caused by changes in the BEAM compiler's output, or by some change in HiPE.<br>
Presumably a git bisect ought to identify it; care to try that?<br>
</blockquote>
<br></span>
I've also looked at this one this afternoon.  I am willing to bet this is related to the presence of maps in the code -- most likely due to their "better" compilation by BEAM in 18.x.<br>
<br>
Given that the code that propagates floating point values in ICode was written back in 2003 or so and practically not much changed since then, it's not surprising that this code breaks as new types and instructions are introduced to the BEAM compiler.<br>
<br>
I'll try to find some time to look into this, but would not mind if somebody else beats me to it.<span class="HOEnZb"><font color="#888888"><br>
<br>
Kostis</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
_______________________________________________<br>
erlang-bugs mailing list<br>
<a href="mailto:erlang-bugs@erlang.org" target="_blank">erlang-bugs@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-bugs" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a><br>
</div></div></blockquote></div><br></div>