Live Range Splitting after initial Register Allocation

After register allocation is done once, this pass targets
the variables that do not get registers, break them into
multiple variables with shorter (at most spanning a basic
block) live ranges. After discarding the new variables with
too few uses, the register allocator is run again and
the new variables that manage to get registers are inserted.

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/2172313002 .
13 files changed