anchor.diff:      end;
   simplify_not(#b_br{bool=#b_literal{}}=Br, _Sub, _Ts, _Ds) ->
       Br.
  +
  +simplify_phi_args([{Arg0, From} | Rest], Ls, Sub, Type0, Args) ->
  +    case Ls of
  +        #{ From := Outgoing } ->
  +            {outgoing, Ts} = Outgoing,          %Assertion.
  +
  +            Arg = simplify_arg(Arg0, Ts, Sub),
  +            Type = beam_types:join(raw_type(Arg, Ts), Type0),
  +            Phi = {Arg, From},
  +
  +            simplify_phi_args(Rest, Ls, Sub, Type, [Phi | Args]);
  +        #{} ->
  +            simplify_phi_args(Rest, Ls, Sub, Type0, Args)
  +    end;
  +simplify_phi_args([], _Ls, _Sub, Type, Args) ->
  +    %% We return the arguments in their incoming order so that they won't
  +    %% change back and forth and ruin fixpoint iteration in beam_ssa_opt.
  +    {Type, reverse(Args)}.
  +
  +phi_all_same([{Arg, _From} | Phis]) ->
  +    phi_all_same_1(Phis, Arg).
  +
  +phi_all_same_1([{Arg, _From} | Phis], Arg) ->
  +    phi_all_same_1(Phis, Arg);
  +phi_all_same_1([], _Arg) ->
  +    true;
  +phi_all_same_1(_Phis, _Arg) ->
  +    false.
   
   %% Simplify a remote call to a pure BIF.
   simplify_remote_call(erlang, '++', [#b_literal{val=[]},Tl], _I) ->
  
positive.code:     end.
  
  sig_bs([{L, #b_blk{is=Is,last=Last0}} | Bs],
         Ds0, Ls0, Fdb, Sub0, SuccTypes0, Meta, State0) when is_map_key(L, Ls0) ->
  
      #{ L := Ts0 } = Ls0,
  
      {Ts, Ds, Sub, State} = sig_is(Is, Ts0, Ds0, Ls0, Fdb, Sub0, State0),
  
      Last = simplify_terminator(Last0, Ts, Ds, Sub),
      SuccTypes = update_success_types(Last, Ts, Ds, Meta, SuccTypes0),
      {_, Ls} = update_successors(Last, Ts, Ds, Ls0, Meta#metadata.used_once),
  
      sig_bs(Bs, Ds, Ls, Fdb, Sub, SuccTypes, Meta, State);
  sig_bs([_Blk | Bs], Ds, Ls, Fdb, Sub, SuccTypes, Meta, State) ->
      %% This block is never reached. Ignore it.
      sig_bs(Bs, Ds, Ls, Fdb, Sub, SuccTypes, Meta, State);
  sig_bs([], _Ds, _Ls, _Fdb, _Sub, SuccTypes, _Meta, State) ->
      {State, SuccTypes}.
  
  
negative.code:     Ds = maps:from_list([{Var, FakeCall#b_set{dst=Var}} ||
                              #b_var{}=Var <- Args]),
  
      Ls = #{ ?EXCEPTION_BLOCK => {incoming, Ts},
              0 => {incoming, Ts} },
  
      Meta = init_metadata(Id, Linear0, Args),
  
  