------- Comment #2 from hutchinsonandy at gcc dot gnu dot org 2008-05-04 12:58 ------- A testcase is difficult since it cannot be isolate from other optimisations. The the problem is "obvious". It can be seen by doing RTL dump and looking at preferred register classes.
Any source operand that can take register or immediate value should use "rL" before any "i" constraint. L is zero, which can be loaded into any destination and does not require the destination to be "d" class register used for other immediate values. There may be other instance of this in other patterns. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36055