"Dmitry K." <address@hidden> wrote:
Here's the smallest reproducible test case:
Avr-gcc 3.3.5 is correct:
By trial & error, I narrowed it down to be a change between GCC 3.4.3
and GCC 3.4.4. After reviewing the ChangeLog, the following caught my
attention:
2005-03-19 Andy Hutchinson <address@hidden>
PR target/18251
* config/avr/avr.md (movstrhi): Rewrite as RTL loop.
(*movstrqi_insn): Delete.
(*movstrhi): Delete.
It corresponds to the following SVN log entry:
Revision 96732 - (view) (download) - [select for diffs]
Modified Sat Mar 19 15:45:41 2005 UTC (11 months, 1 week ago) by marekm
File length: 79688 byte(s)
Diff to previous 96394 (colored)
PR target/18251
* config/avr/avr.md (movstrhi): Rewrite as RTL loop.
(*movstrqi_insn): Delete.
(*movstrhi): Delete.
I'm attaching the diff that caused it. If I unpatch a GCC 3.4.4
(using patch -p2 -R < avr.md.patch -- remember you have to revert the
original change, thus the -R), it generates the correct code again.