anchor.diff:    end;
   join_in_block([], Current) ->
     Current.
  -	
  +
  +
  +-spec state__get_in_block_in(#state{}, icode_lbl()) -> in_block().
   
   state__get_in_block_in(#state{fp_ebb_map = Map}, Label) ->
  -  gb_trees:get({inblock_in, Label}, Map).
  +  maps:get({inblock_in, Label}, Map).
   
   state__get_in_block_out(#state{fp_ebb_map = Map}, Label) ->
  -  gb_trees:get({inblock_out, Label}, Map).
  -
  +  maps:get({inblock_out, Label}, Map).
  +
  +
  +-spec new_worklist(#state{}) -> worklist().
   
   new_worklist(#state{cfg = Cfg}) ->
     Start = hipe_icode_cfg:start_label(Cfg),
     {[Start], [], gb_sets:insert(Start, gb_sets:empty())}.
  +
  +-spec get_work(worklist()) -> none | {icode_lbl(), worklist()}.
   
   get_work({[Label|Left], List, Set}) ->
     {Label, {Left, List, gb_sets:delete(Label, Set)}};
  
positive.code: %% ------------------------------------------------------------ 
  %% Help functions for the transformation from ordinary instruction to
  %% fp-instruction
  
  is_fop_cand(I) ->
    case hipe_icode:call_fun(I) of
  
negative.code: redirect_phis([], _OldFrom, _NewFrom, Acc) ->
    lists:reverse(Acc).
  
  -spec subst_phi(#icode_phi{}, #icode_variable{}, edge_map())
  	       -> #icode_phi{}.
  
  subst_phi(I, Dst, Map) ->
    ArgList = subst_phi_uses0(hipe_icode:phi_arglist(I), Map, []),
    hipe_icode:mk_phi(Dst, ArgList).
  
  -spec subst_phi_uses0([{icode_lbl(), #icode_variable{}}], edge_map(),
  		      [{icode_lbl(), #icode_variable{}}])
  		     -> [{icode_lbl(), #icode_variable{}}].
  
  subst_phi_uses0([{Pred, Var}|Left], Map, Acc) ->
    case Map of
      #{Var := List} ->
        case lists:keyfind(Pred, 1, List) of
  	{Pred, {assigned, _NewVar}} -> 
  	  %% The variable is untagged, but it has been assigned. Keep it!
  