Optimize find_yregs pass from beam_ssa_pre_codegen
Optimize find_yregs pass from beam_ssa_pre_codegen

The current pass gets very expensive the longer the
code block is. This commit address it. For example,
imagine this code:

    -module(bar).
    -export([bar/0]).
    bar() ->
      foo:bar(),
      % repeat foo:bar() 999 times
      ok.

Prior to this patch, it would take:

    find_yregs                 :      0.212 s  73 %

After this patch, it takes:

    find_yregs                 :      0.013 s  14 %

Another example is the code in this gist:
https://gist.github.com/josevalim/acac154996e1e61058f367a5b3a161aa

After the patch, find_yregs goes from 3.5s to 0.8s.

dgud/otp,getong/otp,uabboli/otp,ferd/otp,bjorng/otp,vinoski/otp,mikpe/otp,ferd/otp,mikpe/otp,dgud/otp,potatosalad/otp,g-andrade/otp,mikpe/otp,erlang/otp,emacsmirror/erlang,rlipscombe/otp,dgud/otp,getong/otp,bjorng/otp,jj1bdx/otp,bjorng/otp,bjorng/otp,rlipscombe/otp,erlang/otp,getong/otp,vladdu/otp,getong/otp,jj1bdx/otp,bjorng/otp,erlang/otp,rlipscombe/otp,erlang/otp,uabboli/otp,getong/otp,vinoski/otp,mikpe/otp,ferd/otp,vinoski/otp,getong/otp,emacsmirror/erlang,bjorng/otp,isvilen/otp,potatosalad/otp,isvilen/otp,dumbbell/otp,dumbbell/otp,isvilen/otp,g-andrade/otp,g-andrade/otp,isvilen/otp,vinoski/otp,mikpe/otp,vladdu/otp,rlipscombe/otp,vladdu/otp,rlipscombe/otp,dumbbell/otp,isvilen/otp,uabboli/otp,potatosalad/otp,vinoski/otp,jj1bdx/otp,isvilen/otp,dgud/otp,vinoski/otp,dgud/otp,bjorng/otp,uabboli/otp,erlang/otp,g-andrade/otp,bjorng/otp,g-andrade/otp,vladdu/otp,dumbbell/otp,potatosalad/otp,dgud/otp,g-andrade/otp,erlang/otp,emacsmirror/erlang,dgud/otp,getong/otp,emacsmirror/erlang,mikpe/otp,jj1bdx/otp,rlipscombe/otp,potatosalad/otp,dumbbell/otp,vinoski/otp,rlipscombe/otp,vladdu/otp,dgud/otp,ferd/otp,bjorng/otp,erlang/otp,erlang/otp,potatosalad/otp,potatosalad/otp,isvilen/otp,potatosalad/otp,dgud/otp,rlipscombe/otp,jj1bdx/otp,isvilen/otp,isvilen/otp,uabboli/otp,bjorng/otp,dumbbell/otp,vladdu/otp,emacsmirror/erlang,erlang/otp,ferd/otp,g-andrade/otp,getong/otp,mikpe/otp,ferd/otp,getong/otp,dumbbell/otp,ferd/otp,emacsmirror/erlang,getong/otp,emacsmirror/erlang,ferd/otp,uabboli/otp,jj1bdx/otp,jj1bdx/otp,jj1bdx/otp,dgud/otp,emacsmirror/erlang,dumbbell/otp,vladdu/otp,mikpe/otp,potatosalad/otp,g-andrade/otp,uabboli/otp,dumbbell/otp,jj1bdx/otp,vinoski/otp,potatosalad/otp,emacsmirror/erlang,g-andrade/otp,uabboli/otp,ferd/otp,vladdu/otp,erlang/otp,jj1bdx/otp,vinoski/otp,rlipscombe/otp,isvilen/otp,vinoski/otp,mikpe/otp,emacsmirror/erlang,uabboli/otp,vladdu/otp,g-andrade/otp,mikpe/otp,dumbbell/otp,rlipscombe/otp