http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48037
--- Comment #4 from Jeffrey A. Law <law at redhat dot com> 2011-03-14 15:39:53 UTC --- -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 03/09/11 05:01, ebotcazou at gcc dot gnu.org wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48037 > > Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > CC| |ebotcazou at gcc dot > | |gnu.org > > --- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-03-09 > 12:01:10 UTC --- >> As of the register moves you are seeing, we have the long-time known problem >> that we fail to allocate registers in a way to have the function return >> value in-place. Maybe we are just confusing IRA with the explicit move >> to that register? >> >> (insn 13 11 18 2 (set (reg:V2DF 72) >> (vec_concat:V2DF (reg:DF 67) >> (reg:DF 69))) t.c:8 1557 {*vec_concatv2df} >> (expr_list:REG_DEAD (reg:DF 69) >> (expr_list:REG_DEAD (reg:DF 67) >> (nil)))) >> >> (insn 18 13 21 2 (set (reg/i:V2DF 21 xmm0) >> (reg:V2DF 72)) t.c:10 1127 {*movv2df_internal} >> (expr_list:REG_DEAD (reg:V2DF 72) >> (nil))) >> >> why is combine not able to change this to >> >> (insn 13 11 18 2 (set (reg/i:V2DF 21 xmm0) >> (vec_concat:V2DF (reg:DF 67) >> (reg:DF 69))) t.c:8 1557 {*vec_concatv2df} >> (expr_list:REG_DEAD (reg:DF 69) >> (expr_list:REG_DEAD (reg:DF 67) >> (nil)))) >> >> ? (it doesn't even try this combination) > > Probably because of the check in cant_combine_insn_p (SSE_FIRST_REG is likely > spilled on x86). Right. I recently looked into a similar problem; ISTM we ought to be able to come up with better rules than never combine if one of the regs is a likely spilled reg. Jeff -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJNfja3AAoJEBRtltQi2kC7OD4H/AxEqn3YJ/BeFNLQ3wkkz7FO 5OrwKdN4HBjVHwg8jAy5NyAtc0g+iDS3fG7CEMRc2GS8ndO6F1qiecI3E/cHyvkL 4SzaoWpL+ZCs+hp9PXKCBLUf2OzIEG2lzxOB9YkpntpNtzDNobl7qG6bchusHLme ECLTQdrMDBVVMWJJI5kTxhFxpQRvy1tF/Cx/WlnoTVWE1Yf4K+teNI+O8CEZOwa3 oemGlmxifE1dQ9ebFprMeehdVuKK+C6j7q4yJr32aGk7CTt0v4yM/hiHA6tBu7EE 4kgdHcust8LBMgSmYAYbWnbp8SVFx9t6DEGg6ICAf02/uWY4JTxpE2zhCUNCcwE= =heUd -----END PGP SIGNATURE-----