Subzero: Improve effectiveness of local register availability peephole.

X86 only.  The register availability peephole optimization during lowering disallows available register substitution when the variable is pre-colored.  This is for good reasons (too complex to be discussed here).  However, that leaves some potential substitutions on the table.

Specifically, this happens a lot around register arguments to function calls, both at the call site and in the prolog.

The simplest solution seems to be to launder the pre-colored variable through a separate infinite-weight variable, as implemented in this CL through a combination of such copies and extra legalize() calls.

There are other situations where this technique can also work, which may be handled in a separate CL.

This CL also fixes a problem where the stack pointer adjustment in the prolog is subject to dead-code elimination if the function has no epilog.  This would only happen in asm-verbose mode, in the final liveness analysis pass prior to code emission.

BUG= none
R=eholk@chromium.org

Review URL: https://codereview.chromium.org/2052683003 .
3 files changed