Hello, As explained in the audit trail, the problem was that in the selective scheduler I assumed that SUBREG_REG will always be a REG, which seems to be not the case. This is not quite in line with what documentation says, if I read it correctly, but it seems to be used in a number of backends, so the below patch just gives up substitution also when SUBREG_REG is not a register. Bootstrapped and tested on ia64, and verified that the test is fixed on x86_64. I think that this qualifies as obvious, so unless Vlad or other people have any comments, I'll commit it tomorrow. Yours, Andrey 2010-08-18 Andrey Belevantsev PR rtl-optimization/44691 * sel-sched.c (count_occurrences_1): Also punt when SUBREG_REG is not a register.