http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47521
--- Comment #4 from Jeffrey A. Law <law at redhat dot com> 2011-02-03 13:54:16 UTC --- I'd hoped it would be possible to define a set of conditions under which combine could combine the conditional move with the subsequent move into a hard register. Without special casing the instruction patterns, reading the constraints and the like, I doubt that's going to be possible. The other approach I see is to have copyrename avoid coalescing the temporaries with "a". That in turn prevents "a" from being live throughout the entire function and we get the desired register allocations and code.