Fix unsafe negative type inference
Fix unsafe negative type inference

The type optimizer pass (`beam_ssa_type`) could make unsafe
negative inferences. That is, incorrectly infer that a variable
could *not* have a particular type.

This bug was found when adding another optimization. It is not
clear how write a failing test case without that added optimization.

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