[erlang-bugs] R16: HiPE failure with /bits in funs

Loïc Hoguin <>
Tue Feb 12 23:57:48 CET 2013


The following module fails to compile with R16. It also fails on R15B03 
and probably previous versions. I do not know HiPE internals so no patch.


-module(hipe_error).
-export([run/0]).

run() ->
	fun (<< $c, _/bits >>) -> ok end.


The following errors are reported:

7> c(hipe_error, [native]).
<HiPE (v 3.9.3)> EXITED with reason 
{function_clause,[{hipe_rtl_binary_match,gen_rtl,[{bs_match_string,<<99>>,1},[],[{rtl_var,21}],16,2],[{file,[104,105,112,101,95,114,116,108,95,98,105,110,97,114,121,95,109,97,116,99,104,46,101,114,108]},{line,45}]},{hipe_rtl_binary,gen_rtl,7,[{file,[104,105,112,101,95,114,116,108,95,98,105,110,97,114,121,46,101,114,108]},{line,33}]},{hipe_rtl_primops,gen_primop,3,[{file,[104,105,112,101,95,114,116,108,95,112,114,105,109,111,112,115,46,101,114,108]},{line,147}]},{hipe_icode2rtl,gen_call,3,[{file,[104,105,112,101,95,105,99,111,100,101,50,114,116,108,46,101,114,108]},{line,189}]},{hipe_icode2rtl,translate_instrs,5,[{file,[104,105,112,101,95,105,99,111,100,101,50,114,116,108,46,101,114,108]},{line,104}]},{hipe_icode2rtl,translate,2,[{file,[104,105,112,101,95,105,99,111,100,101,50,114,116,108,46,101,114,108]},{line,71}]},{hipe_main,translate_to_rtl,2,[{file,[104,105,112,101,95,109,97,105,110,46,101,114,108]},{line,396}]},{hipe_main,icode_to_rtl,4,[{file,[104,105,112,101,95,109,97,105,110,4
6,101,114,108]},{line,376}]}]} 
@hipe:829
hipe_error.erl:none: internal error in native_compile;
crash reason: {{hipe,829,
                    {function_clause,
                        [{hipe_rtl_binary_match,gen_rtl,
                             [{bs_match_string,<<"c">>,1},
                              [],
                              [{rtl_var,21}],
                              16,2],
 
[{file,"hipe_rtl_binary_match.erl"},{line,45}]},
                         {hipe_rtl_binary,gen_rtl,7,
                             [{file,"hipe_rtl_binary.erl"},{line,33}]},
                         {hipe_rtl_primops,gen_primop,3,
                             [{file,"hipe_rtl_primops.erl"},{line,147}]},
                         {hipe_icode2rtl,gen_call,3,
                             [{file,"hipe_icode2rtl.erl"},{line,189}]},
                         {hipe_icode2rtl,translate_instrs,5,
                             [{file,"hipe_icode2rtl.erl"},{line,104}]},
                         {hipe_icode2rtl,translate,2,
                             [{file,"hipe_icode2rtl.erl"},{line,71}]},
                         {hipe_main,translate_to_rtl,2,
                             [{file,"hipe_main.erl"},{line,396}]},
                         {hipe_main,icode_to_rtl,4,
                             [{file,"hipe_main.erl"},{line,376}]}]}},
                [{hipe,finalize_fun_sequential,3,
                     [{file,"hipe.erl"},{line,829}]},
                 {hipe,'-finalize_fun_concurrent/3-fun-3-',4,
                     [{file,"hipe.erl"},{line,795}]}]}
error
8>
=ERROR REPORT==== 12-Feb-2013::23:51:59 ===
<HiPE (v 3.9.3)> Error: [hipe:828]: ERROR: {function_clause,
 
[{hipe_rtl_binary_match,gen_rtl,
                                               [{bs_match_string,<<"c">>,1},
                                                [],
                                                [{rtl_var,21}],
                                                16,2],
                                               [{file,
 
"hipe_rtl_binary_match.erl"},
                                                {line,45}]},
                                              {hipe_rtl_binary,gen_rtl,7,
 
[{file,"hipe_rtl_binary.erl"},
                                                {line,33}]},
 
{hipe_rtl_primops,gen_primop,3,
 
[{file,"hipe_rtl_primops.erl"},
                                                {line,147}]},
                                              {hipe_icode2rtl,gen_call,3,
                                               [{file,"hipe_icode2rtl.erl"},
                                                {line,189}]},
                                              {hipe_icode2rtl,
                                               translate_instrs,5,
                                               [{file,"hipe_icode2rtl.erl"},
                                                {line,104}]},
                                              {hipe_icode2rtl,translate,2,
                                               [{file,"hipe_icode2rtl.erl"},
                                                {line,71}]},
                                              {hipe_main,translate_to_rtl,2,
                                               [{file,"hipe_main.erl"},
                                                {line,396}]},
                                              {hipe_main,icode_to_rtl,4,
                                               [{file,"hipe_main.erl"},
                                                {line,376}]}]}

=ERROR REPORT==== 12-Feb-2013::23:51:59 ===
Error in process <0.120.0> with exit value: 
{{hipe,829,{function_clause,[{hipe_rtl_binary_match,gen_rtl,[{bs_match_string,<<1 
byte>>,1},[],[{rtl_var,21}],16,2],[{file,"hipe_rtl_binary_match.erl"},{line,45}]},{hipe_rtl_binary,gen_rtl,7,[{file,"hipe_rtl_binary.erl"},{line,33}]},{hipe_rtl_primops... 


-- 
Loïc Hoguin
Erlang Cowboy
Nine Nines
http://ninenines.eu


More information about the erlang-bugs mailing list