beam_dead: Remove redundant 'bif' instructions
beam_dead: Remove redundant 'bif' instructions

A 'bif' or 'gc_bif' instruction is redundant if it has the same
failure label as a 'jump' instruction immediately following it.

There is no need to test for liveness of the destination register,
because the code at the failure label cannot safely assume that
the destination register is initialized. See the comments in the
code for further details.

In practice, this optimization will only apply to contrived guards
that are almost never used in real applications. The only reason we
add this optimization is to help approach the goal of zero tolerance
for 'bif' instructions instead of 'test' instructions in guards.

rlipscombe/otp,potatosalad/otp,emacsmirror/erlang,vinoski/otp,aboroska/otp,tuncer/otp,vinoski/otp,potatosalad/otp,rlipscombe/otp,kvakvs/otp,bsmr-erlang/otp,isvilen/otp,mikpe/otp,fenollp/otp,erlang/otp,release-project/otp,bjorng/otp,fenollp/otp,isvilen/otp,bjorng/otp,kvakvs/otp,legoscia/otp,legoscia/otp,kvakvs/otp,dgud/otp,mikpe/otp,bernardd/otp,erlang/otp,emacsmirror/erlang,bsmr-erlang/otp,goertzenator/otp,potatosalad/otp,matwey/otp,cobusc/otp,lrascao/otp,vinoski/otp,bjorng/otp,falkevik/otp,jj1bdx/otp,electricimp/otp,saleyn/otp,legoscia/otp,getong/otp,lrascao/otp,release-project/otp,getong/otp,tuncer/otp,aboroska/otp,dgud/otp,RoadRunnr/otp,uabboli/otp,mikpe/otp,getong/otp,release-project/otp,fenollp/otp,release-project/otp,dgud/otp,RaimoNiskanen/otp,emacsmirror/erlang,vinoski/otp,saleyn/otp,fenollp/otp,uabboli/otp,isvilen/otp,electricimp/otp,fenollp/otp,uabboli/otp,bjorng/otp,g-andrade/otp,kvakvs/otp,goertzenator/otp,vladdu/otp,isvilen/otp,lrascao/otp,tuncer/otp,legoscia/otp,ferd/otp,RoadRunnr/otp,cobusc/otp,potatosalad/otp,jj1bdx/otp,dumbbell/otp,lrascao/otp,dumbbell/otp,uabboli/otp,goertzenator/otp,RaimoNiskanen/otp,dumbbell/otp,dgud/otp,mikpe/otp,kvakvs/otp,isvilen/otp,electricimp/otp,RaimoNiskanen/otp,jj1bdx/otp,bernardd/otp,electricimp/otp,RoadRunnr/otp,potatosalad/otp,falkevik/otp,g-andrade/otp,falkevik/otp,potatosalad/otp,tuncer/otp,massemanet/otp,rlipscombe/otp,legoscia/otp,massemanet/otp,bernardd/otp,rlipscombe/otp,g-andrade/otp,vinoski/otp,release-project/otp,bsmr-erlang/otp,jj1bdx/otp,rlipscombe/otp,bsmr-erlang/otp,jj1bdx/otp,fenollp/otp,release-project/otp,vinoski/otp,ferd/otp,getong/otp,g-andrade/otp,rlipscombe/otp,matwey/otp,emacsmirror/erlang,legoscia/otp,goertzenator/otp,legoscia/otp,dumbbell/otp,vladdu/otp,emacsmirror/erlang,aboroska/otp,isvilen/otp,saleyn/otp,aboroska/otp,isvilen/otp,RaimoNiskanen/otp,falkevik/otp,vladdu/otp,bsmr-erlang/otp,goertzenator/otp,cobusc/otp,uabboli/otp,RaimoNiskanen/otp,getong/otp,jj1bdx/otp,dumbbell/otp,g-andrade/otp,bernardd/otp,matwey/otp,potatosalad/otp,getong/otp,falkevik/otp,tuncer/otp,kvakvs/otp,bernardd/otp,potatosalad/otp,bsmr-erlang/otp,bsmr-erlang/otp,goertzenator/otp,lrascao/otp,emacsmirror/erlang,vinoski/otp,dumbbell/otp,erlang/otp,RoadRunnr/otp,matwey/otp,vladdu/otp,goertzenator/otp,g-andrade/otp,uabboli/otp,RaimoNiskanen/otp,bjorng/otp,release-project/otp,saleyn/otp,mikpe/otp,kvakvs/otp,aboroska/otp,g-andrade/otp,bsmr-erlang/otp,bernardd/otp,tuncer/otp,getong/otp,emacsmirror/erlang,emacsmirror/erlang,isvilen/otp,release-project/otp,RaimoNiskanen/otp,mikpe/otp,getong/otp,vladdu/otp,g-andrade/otp,dgud/otp,legoscia/otp,lrascao/otp,getong/otp,erlang/otp,tuncer/otp,bjorng/otp,ferd/otp,electricimp/otp,massemanet/otp,lrascao/otp,erlang/otp,RaimoNiskanen/otp,matwey/otp,fenollp/otp,rlipscombe/otp,legoscia/otp,rlipscombe/otp,ferd/otp,dgud/otp,erlang/otp,vladdu/otp,erlang/otp,mikpe/otp,falkevik/otp,goertzenator/otp,lrascao/otp,matwey/otp,vladdu/otp,isvilen/otp,aboroska/otp,mikpe/otp,dumbbell/otp,uabboli/otp,isvilen/otp,lrascao/otp,uabboli/otp,vladdu/otp,mikpe/otp,cobusc/otp,tuncer/otp,ferd/otp,RoadRunnr/otp,falkevik/otp,rlipscombe/otp,dumbbell/otp,goertzenator/otp,bjorng/otp,matwey/otp,uabboli/otp,jj1bdx/otp,massemanet/otp,matwey/otp,massemanet/otp,ferd/otp,emacsmirror/erlang,bjorng/otp,erlang/otp,RoadRunnr/otp,vinoski/otp,ferd/otp,dgud/otp,cobusc/otp,saleyn/otp,RoadRunnr/otp,kvakvs/otp,jj1bdx/otp,cobusc/otp,electricimp/otp,kvakvs/otp,erlang/otp,dgud/otp,release-project/otp,erlang/otp,vinoski/otp,potatosalad/otp,vinoski/otp,ferd/otp,dumbbell/otp,aboroska/otp,mikpe/otp,RoadRunnr/otp,aboroska/otp,bjorng/otp,cobusc/otp,dumbbell/otp,fenollp/otp,aboroska/otp,saleyn/otp,emacsmirror/erlang,jj1bdx/otp,g-andrade/otp,bernardd/otp,dgud/otp,electricimp/otp,bernardd/otp,falkevik/otp,getong/otp,saleyn/otp,jj1bdx/otp,massemanet/otp,bjorng/otp,g-andrade/otp,matwey/otp,massemanet/otp,ferd/otp,electricimp/otp,electricimp/otp,saleyn/otp,falkevik/otp,massemanet/otp,RaimoNiskanen/otp,massemanet/otp,dgud/otp,cobusc/otp,potatosalad/otp,vladdu/otp,bernardd/otp,tuncer/otp,fenollp/otp,bsmr-erlang/otp,RoadRunnr/otp,rlipscombe/otp,saleyn/otp