anchor.diff:  %%    The state is used to allow us to determine the usage state
   %%  across branches.
   
  +-spec is_not_used(beam_asm:reg(), [instruction()], code_index()) -> boolean().
  +
   is_not_used(R, Is, D) ->
       St = #live{lbl=D,res=gb_trees:empty()},
       case check_liveness(R, Is, St) of
  
positive.code: %%  The state (constructed by index_instructions/1) is used to allow us
  %%  to determine the kill state across branches.
  
  is_killed(R, Is, D) ->
      St = #live{lbl=D,res=gb_trees:empty()},
      case check_liveness(R, Is, St) of
  
negative.code: %%  referenced in ANY way (not even indirectly by an allocate instruction);
  %%  i.e. it is OK to enter the instruction sequence with Register
  %%  containing garbage.
  
  -spec is_killed_block(beam_asm:reg(), [instruction()]) -> boolean().
  
  is_killed_block({x,X}, [{set,_,_,{alloc,Live,_}}|_]) ->
      X >= Live;
  