Relax copy uses
Summary: Lower copy to a copyplan (parallel copy) similar to how we handle
copyargs. Then, srcs of copy, copyargs, phidef, and phijcc are all
handled by insertCopiesAt(), which knows how to handle immediates
and loads from spill locations.
Because of this, add another use constraint "CopySrc" which means
that src doesn't have to be in a register. Ignore such uses when
looking for split positions. This should reduces the cases of
loading something into a register, just to move it into another
register. It also generally reduces the # of places that constants
must be in a register, which should increase the chances that non-
constants are assigned callee-saved registers.
Reviewed By: @swtaarrs
Differential Revision:
D2128563