anchor.diff:  x_live([{x,N}|Rs], Regs) -> x_live(Rs, Regs bor (1 bsl N));
   x_live([_|Rs], Regs) -> x_live(Rs, Regs);
   x_live([], Regs) -> Regs.
  +
  +%% defined_regs(ReversedInstructions) -> RegBitmap.
  +%%  Given a reversed instruction stream, determine the
  +%%  the registers that are defined.
  +
  +defined_regs([{'%def',Def}|_], Regs) ->
  +    Def bor Regs;
  +defined_regs([{set,Ds,_,{alloc,Live,_}}|_], Regs) ->
  +    x_live(Ds, Regs bor ((1 bsl Live) - 1));
  +defined_regs([{set,Ds,_,_}|Is], Regs) ->
  +    defined_regs(Is, x_live(Ds, Regs)).
  
positive.code:     [I|move_allocates(Is)];
  move_allocates([]) -> [].
  
  move_allocates_1([I|Is], [{set,[],[],{alloc,Live0,Info}}|Acc]=Acc0) ->
      case {alloc_may_pass(I),alloc_live_regs(I, Live0)} of
  	{false,_} ->
  	    move_allocates_1(Is, [I|Acc0]);
  	{true,not_possible} ->
  	    move_allocates_1(Is, [I|Acc0]);
  	{true,Live} when is_integer(Live) ->
  	    A = {set,[],[],{alloc,Live,Info}},
  	    move_allocates_1(Is, [A,I|Acc])
      end;
  move_allocates_1([I|Is], Acc) ->
      move_allocates_1(Is, [I|Acc]);
  
negative.code: 	%% Collect basic blocks and optimize them.
  	Is1 = blockify(Is0),
  	Is2 = embed_lines(Is1),
          Is3 = beam_utils:anno_defs(Is2),
          Is4 = move_allocates(Is3),
          Is5 = beam_utils:live_opt(Is4),
          Is6 = opt_blocks(Is5),
          Is = beam_utils:delete_live_annos(Is6),
  
          %% Done.
          {function,Name,Arity,CLabel,Is}
      catch
  	Class:Error ->
  	    Stack = erlang:get_stacktrace(),
  