anchor.diff:      [R|merge_ranges_1(Rs)];
   merge_ranges_1([]) -> [].
   
  -live_interval_blk(L, Blocks, {Vars0,Aliases0,LiveMap0}) ->
  +live_interval_blk(L, Blocks, {Vars0,LiveMap0}) ->
       Live0 = [],
       Successors = beam_ssa:successors(L, Blocks),
       Live1 = update_successors(Successors, L, Blocks, LiveMap0, Live0),
  
positive.code:     make_block_ranges(Vs, First, [{V,{First,Last}}|Acc]);
  make_block_ranges([], _, Acc) -> Acc.
  
  live_interval_blk_1([#b_set{op=phi,dst=Dst}|Is],
                      FirstNumber, Aliases, Acc0) ->
      Acc = [{Dst,{def,FirstNumber}}|Acc0],
      live_interval_blk_1(Is, FirstNumber, Aliases, Acc);
  live_interval_blk_1([#b_set{op=bs_start_match}=I|Is], FirstNumber,
                      Aliases, Acc0) ->
      N = beam_ssa:get_anno(n, I),
      #b_set{dst=Dst} = I,
      Acc1 = [{Dst,{def,N}}|Acc0],
      Acc = [{V,{use,N}} || V <- beam_ssa:used(I)] ++ Acc1,
      live_interval_blk_1(Is, FirstNumber, Aliases, Acc);
  live_interval_blk_1([I|Is], FirstNumber, Aliases, Acc0) ->
      N = beam_ssa:get_anno(n, I),
      Acc1 = case I of
                 #b_set{dst=Dst} ->
  
negative.code:     Vars0 = [{V,{0,1}} || #b_var{}=V <- Args],
      F = fun(L, _, A) -> live_interval_blk(L, Blocks, A) end,
      LiveMap0 = #{},
      Acc0 = {[],LiveMap0},
      {Vars,_} = beam_ssa:fold_po(F, Acc0, Blocks),
      Intervals = merge_ranges(rel2fam(Vars0++Vars)),
      St#st{intervals=Intervals}.
  
  merge_ranges([{V,Rs}|T]) ->
      [{V,merge_ranges_1(Rs)}|merge_ranges(T)];
  