------- Comment #5 from hutchinsonandy at aim dot com 2009-09-13 16:14 ------- It looks like most of AVR shift/rotates are messed up. For the case we where we have non constant shifts, the peephole may grab a scratch register. In this case it look like it grabs one that is free afterwards and not before. Hence overlap issue
The rotate split pattern problem is different as noted in message links. . In this case it is not apparent why the split is used for only different source/destination registers. If the split were constrained so that src=dest the overlap would be much easily to handle and it would seemingly produce better code for the common case where src=dest. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39635