beam_ssa_opt: Use is_tagged_tuple more
beam_ssa_opt: Use is_tagged_tuple more

Consider this code:

    foo(X) ->
       case X of
         {ok,A} -> A;
         error -> X
    end.

The `is_tagged_tuple` instruction would not be used
because not all instructions in the tuple matching
sequence had the same failure label:

    function t:foo(_0) {
    0:
      @ssa_bool:7 = bif:is_tuple _0
      br @ssa_bool:7, label 8, label 4

    8:
      @ssa_arity = bif:tuple_size _0
      @ssa_bool:9 = bif:'=:=' @ssa_arity, literal 2
      br @ssa_bool:9, label 6, label 3

    6:
      _4 = get_tuple_element _0, literal 0
      @ssa_bool = bif:'=:=' _4, literal ok
      br @ssa_bool, label 5, label 3

    5:
      _3 = get_tuple_element _0, literal 1
      ret _3

    4:
      @ssa_bool:11 = bif:'=:=' _0, literal error
      br @ssa_bool:11, label 10, label 3

    10:
      ret _0

    3:
      _2 = put_tuple literal case_clause, _0

      %% t.erl:5
      @ssa_ret:12 = call remote (literal erlang):(literal error)/1, _2
      ret @ssa_ret:12
    }

Enhance the ssa_opt_record optimization to use
`is_tagged_tuple` even if all failure labels are not the
same:

    function t:foo(_0) {
    0:
      @ssa_bool:7 = bif:is_tuple _0
      br @ssa_bool:7, label 8, label 4

    8:
      @ssa_bool:9 = is_tagged_tuple _0, literal 2, literal ok
      br @ssa_bool:9, label 6, label 3

    6:
      _3 = get_tuple_element _0, literal 1
      ret _3

    4:
      @ssa_bool:11 = bif:'=:=' _0, literal error
      br @ssa_bool:11, label 10, label 3

    10:
      ret _0

    3:
      _2 = put_tuple literal case_clause, _0

      %% t.erl:5
      @ssa_ret:12 = call remote (literal erlang):(literal error)/1, _2
      ret @ssa_ret:12
    }

The tuple test will be repeated, but since four instructions
are replaced by two instructions, the code will still be faster
and smaller.

getong/otp,rlipscombe/otp,ferd/otp,vinoski/otp,getong/otp,dgud/otp,mikpe/otp,potatosalad/otp,emacsmirror/erlang,g-andrade/otp,jj1bdx/otp,ferd/otp,dgud/otp,aboroska/otp,getong/otp,isvilen/otp,uabboli/otp,potatosalad/otp,vladdu/otp,isvilen/otp,rlipscombe/otp,dumbbell/otp,bjorng/otp,bsmr-erlang/otp,legoscia/otp,mikpe/otp,jj1bdx/otp,ferd/otp,isvilen/otp,lrascao/otp,dgud/otp,vladdu/otp,kvakvs/otp,RoadRunnr/otp,ferd/otp,vinoski/otp,uabboli/otp,dgud/otp,ferd/otp,RoadRunnr/otp,aboroska/otp,bsmr-erlang/otp,potatosalad/otp,g-andrade/otp,electricimp/otp,g-andrade/otp,jj1bdx/otp,kvakvs/otp,isvilen/otp,getong/otp,erlang/otp,getong/otp,potatosalad/otp,bjorng/otp,isvilen/otp,dumbbell/otp,g-andrade/otp,mikpe/otp,electricimp/otp,kvakvs/otp,bsmr-erlang/otp,kvakvs/otp,mikpe/otp,vinoski/otp,legoscia/otp,uabboli/otp,uabboli/otp,g-andrade/otp,mikpe/otp,rlipscombe/otp,vladdu/otp,vladdu/otp,aboroska/otp,legoscia/otp,dumbbell/otp,RoadRunnr/otp,bsmr-erlang/otp,dgud/otp,isvilen/otp,rlipscombe/otp,lrascao/otp,bjorng/otp,vladdu/otp,RoadRunnr/otp,aboroska/otp,uabboli/otp,RoadRunnr/otp,kvakvs/otp,getong/otp,electricimp/otp,legoscia/otp,erlang/otp,lrascao/otp,rlipscombe/otp,dumbbell/otp,erlang/otp,vladdu/otp,vladdu/otp,uabboli/otp,RoadRunnr/otp,uabboli/otp,legoscia/otp,bjorng/otp,erlang/otp,erlang/otp,rlipscombe/otp,vinoski/otp,emacsmirror/erlang,potatosalad/otp,vladdu/otp,potatosalad/otp,ferd/otp,rlipscombe/otp,dumbbell/otp,bsmr-erlang/otp,potatosalad/otp,ferd/otp,RoadRunnr/otp,aboroska/otp,lrascao/otp,vinoski/otp,bsmr-erlang/otp,emacsmirror/erlang,legoscia/otp,getong/otp,lrascao/otp,g-andrade/otp,erlang/otp,g-andrade/otp,aboroska/otp,electricimp/otp,aboroska/otp,bjorng/otp,vinoski/otp,dumbbell/otp,aboroska/otp,mikpe/otp,isvilen/otp,isvilen/otp,mikpe/otp,mikpe/otp,kvakvs/otp,vinoski/otp,erlang/otp,dgud/otp,jj1bdx/otp,bjorng/otp,emacsmirror/erlang,erlang/otp,legoscia/otp,getong/otp,bsmr-erlang/otp,dumbbell/otp,vladdu/otp,emacsmirror/erlang,dumbbell/otp,dgud/otp,potatosalad/otp,bsmr-erlang/otp,dumbbell/otp,lrascao/otp,lrascao/otp,g-andrade/otp,rlipscombe/otp,jj1bdx/otp,kvakvs/otp,g-andrade/otp,dgud/otp,ferd/otp,isvilen/otp,getong/otp,bjorng/otp,mikpe/otp,electricimp/otp,vinoski/otp,mikpe/otp,erlang/otp,legoscia/otp,dgud/otp,isvilen/otp,uabboli/otp,RoadRunnr/otp,kvakvs/otp,emacsmirror/erlang,uabboli/otp,dumbbell/otp,jj1bdx/otp,g-andrade/otp,RoadRunnr/otp,bjorng/otp,kvakvs/otp,emacsmirror/erlang,lrascao/otp,jj1bdx/otp,jj1bdx/otp,erlang/otp,emacsmirror/erlang,bjorng/otp,vinoski/otp,electricimp/otp,potatosalad/otp,aboroska/otp,emacsmirror/erlang,emacsmirror/erlang,getong/otp,electricimp/otp,dgud/otp,rlipscombe/otp,bsmr-erlang/otp,bjorng/otp,potatosalad/otp,vinoski/otp,rlipscombe/otp,electricimp/otp,jj1bdx/otp,legoscia/otp,electricimp/otp,lrascao/otp,ferd/otp,jj1bdx/otp