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