This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: spill failure after IF-CASE-2 transformation
- From: "Henderson, Stuart" <Stuart dot Henderson at analog dot com>
- To: "Henderson, Stuart" <Stuart dot Henderson at analog dot com>, Bernd Schmidt <bernds at codesourcery dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 20 Feb 2012 15:41:32 +0000
- Subject: RE: spill failure after IF-CASE-2 transformation
- References: <05E9E85E39C35B4D96ED3A3190E35A10AF0C445892@LIMKCMBX1.ad.analog.com> <4F32A9D6.6080204@codesourcery.com> <05E9E85E39C35B4D96ED3A3190E35A10AF0C514920@LIMKCMBX1.ad.analog.com>
Ping.
>>looks like an invalid transformation, but I suspect rather than setting
>>the CC register, the (*) insn is setting a pseudo (more accurate RTL
>>would be useful). There are some cases in ifcvt.c which check
>>targetm.small_register_classes_for_mode already, this is probably what
>>should be done to prevent this transformation.
>
>You suspect correctly, cc=x sets CC whereas cc=y is a pseudo which can
>only match CC.
>
>Presumably I must check all instructions in the else_bb for
>modifications to small_register_classes_for_mode_p? e.g. see below.
>
>Does this seem reasonable?
Patch here:
http://gcc.gnu.org/ml/gcc/2012-02/msg00296.html
Thanks,
Stu