[erlang-questions] R12B-0 HiPE option no_remove_comments

Mikael Pettersson <>
Thu Dec 6 10:31:49 CET 2007


On Thu, 6 Dec 2007 02:38:13 +0100, Roger Larsson wrote:
> I have a script that can be used to look at hipe steps.
> 
> ----
> #!/bin/sh
> erlc +native +\{hipe,\[no_remove_comments,pp_all\]\} $1
> ---- fac.erl
> -module(fac).
> -export([fac/2]).
> 
> fac(A,0)->A;
> fac(A,N)->fac(A*N,N-1).
> ----
> 
> This does not work in R12B, it is the no_remove_comments fault.
> bash> ./get_icode.sh fac.erl
>   label 1:
>     {func_info,{atom,fac},{atom,fac},2}
>   label 2:
>     {test,is_eq_exact,{f,3},[{x,1},{integer,0}]}
>     return
>   label 3:
>     {gc_bif,'*',{f,0},2,[{x,0},{x,1}],{x,0}}
>     {gc_bif,'-',{f,0},2,[{x,1},{integer,1}],{x,1}}
>     {call_only,2,{fac,fac,2}}
> 
> fac:fac/2(v0, v5) ->
> %% Info:['Not a closure','Leaf function']
> 1:
>     _ := redtest() (primop)
>     if is_{integer,0}(v5) then 3 (0.50) else 6
> 3:
>     return(v0)
> 6:
>     v0 := '*'(v0, v5) (primop)
>     v8 := 1
>     v5 := '-'(v5, v8) (primop)
>     % self_tail_recursive
>     goto 1
> %% Data:
> <HiPE (v 3.6.4)> EXITED with reason {{case_clause,
> {comment,self_tail_recursive}},[{hipe_icode_range,analyse_insn,3},
> {hipe_icode_range,analyse_BB,5},{hipe_icode_range,analyse_block,4},
> {hipe_icode_range,analyse_blocks,3},{hipe_icode_range,analyse,2},
> {hipe_icode_range,do_analysis,3},{hipe_icode_range,concurrent_cfg,4},
> {hipe_main,icode_range_analysis,3}]} @hipe:907

We generally don't compile with no_remove_comments,
and it's entirely possible that some newer code fails
to ignore comments.

Thanks for reporting this issue. We'll look into it.

/Mikael
The HiPE group



More information about the erlang-questions mailing list