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<abel@ispras.ru>
PR rtl-optimization/44691
* sel-sched.c (count_occurrences_1): Also punt when SUBREG_REG
is not a register.