Hi Anatoly
The attached patch correct AVR target rotate split patterns so they
correctly consider all overlapping cases of source and destination
operands.
The new patterns use mode iterators and now also split DI mode
rotates. A missing CONST_INT_P check before use of INTVAL is also
correct in QImode rotate.
The patched version was tested using the executable testsuite for AVR
target. There were no regressions.
make check-gcc RUNTESTFLAGS="execute.exp --target_board=atmega128-sim"
=== gcc Summary ===
# of expected passes 12981
# of unexpected failures 40
# of unresolved testcases 23
# of untested testcases 6
# of unsupported tests 750
/home/andy/gcchead/obj-dir/gcc/xgcc version 4.5.0 20091031
(experimental) (GCC)
Ok to comit to 4.5?
2009-10-31 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
PR target/41885
* avr.md (rotlqi3): Add CONST_INT_P check.
(rotlhi3): Delete.
(rotlhi3_8): Delete.
(rotlsi3): Delete.
(rotlsi3_8): Delete.
(rotlsi3_16): Delete.
(rotlsi3_24): Delete.
(rotl<mode>3): New.
(*rotw<mode>3): New.
(*rotb<mode>3): New.
*avr.c (avr_rotate_bytes): New function.
*avr-proto.h (avr_rotate_bytes): New function.