http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50107
--- Comment #2 from Vladimir Makarov <vmakarov at redhat dot com> 2011-08-17 17:16:11 UTC --- I guess something wrong with hard register preferencing for multi-register pseudos in ira-color.c::ira_assign. I believe it works fine for one-register pseudos. I'll look at this. Thanks for reporting. By the way, your patch is wrong. There should be TARGET_64BIT in define_split instead of !TARGET_64BIT.