anchor.diff:              end
       end.
   
  +update_unset_vars(L, Br, SetInThisBlock, UnsetVars, #st{skippable=Skippable}) ->
  +    case is_map_key(L, Skippable) of
  +        true ->
  +            %% None of the variables used in this block are used in
  +            %% the successors. We can speed up compilation by avoiding
  +            %% adding variables to the UnsetVars if the presence of
  +            %% those variable would not change the outcome of the
  +            %% tests in is_br_safe/2.
  +            case Br of
  +                #b_br{bool=Bool} ->
  +                    case member(Bool, SetInThisBlock) of
  +                        true ->
  +                            %% Bool is a variable defined in this
  +                            %% block. It will change the outcome of
  +                            %% the `not member(V, UnsetVars)` check in
  +                            %% is_br_safe/2. The other variables
  +                            %% defined in this block will not.
  +                            ordsets:add_element(Bool, UnsetVars);
  +                        false ->
  +                            %% Bool is either a variable not defined
  +                            %% in this block or a literal. Adding it
  +                            %% to the UnsetVars set would not change
  +                            %% the outcome of the tests in
  +                            %% is_br_safe/2.
  +                            UnsetVars
  +                    end
  +            end;
  +        false ->
  +            ordsets:union(UnsetVars, ordsets:from_list(SetInThisBlock))
  +    end.
  +
   shortcut_two_way(#b_br{succ=Succ,fail=Fail}, Bs0, UnsetVars0, St) ->
       case shortcut_2(Succ, Bs0, UnsetVars0, St#st{target=Fail}) of
           {#b_br{bool=#b_literal{},succ=Fail},_,_}=Res ->
  
positive.code:     Used = used_vars_blk(Blk, Used0),
      UsedVars = used_vars_phis(Is, L, Used, UsedVars0),
  
      %% combine_eqs/1 needs different variable usage
      %% information than shortcut_opt/1. The Skip
      %% map will have an entry for each block that
      %% can be skipped (does not bind any variable used
      %% in successor).
  
      Defined0 = [Def || #b_set{dst=Def} <- Is],
      Defined = ordsets:from_list(Defined0),
  
negative.code:                     %% We have a potentially suitable br.
                      %% Now update the set of variables that will never
                      %% be set if this block will be skipped.
                      SetInThisBlock = [V || #b_set{dst=V} <- Is],
                      UnsetVars = update_unset_vars(L, Br, SetInThisBlock,
                                                    UnsetVars0, St),
  
                      %% Continue checking whether this br is suitable.
                      shortcut_3(Br, Bs#{from:=L}, UnsetVars, St)
  