This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/46278] avr-gcc 4.5.1 doing suboptimal reloads using X
- From: "gjl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 7 Jul 2011 12:20:45 +0000
- Subject: [Bug target/46278] avr-gcc 4.5.1 doing suboptimal reloads using X
- Auto-submitted: auto-generated
- References: <bug-46278-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46278
Georg-Johann Lay <gjl at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2011-07-07
CC|avr at gjlay dot de |gjl at gcc dot gnu.org
Known to work| |3.4.6
Target Milestone|--- |4.7.0
Known to fail| |4.6.1, 4.7.0
--- Comment #4 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-07 12:19:13 UTC ---
For the Created attachment 22240 "vektor-zeichen-i.c"
http://gcc.gnu.org/bugzilla/attachment.cgi?id=22240
I get the following sizes (-Os -mmcu=atmega128):
avr-gcc-4.6.1:
text data bss dec hex filename
1076 0 190 1266 4f2 vektor-zeichen-i.o
avr-gcc-4.7.0:
text data bss dec hex filename
1088 0 190 1278 4fe vektor-zeichen-i.o
avr-gcc-4.7.0 with patch:
text data bss dec hex filename
728 0 190 918 396 vektor-zeichen-i.o
For the Created attachment 24582 "snake.c"
http://gcc.gnu.org/bugzilla/attachment.cgi?id=24582
I get the following sizes (-Os -mmcu=atmega168 -std=gnu99):
avr-gcc-4.6.1:
text data bss dec hex filename
1549 0 0 1549 60d snake-i.o
avr-gcc-4.7.0
text data bss dec hex filename
1625 0 0 1625 659 snake-i.o
avr-gcc-4.7.0 with patch:
text data bss dec hex filename
1507 0 0 1507 5e3 snake-i.o
the "with patch" version patches by the tentative patch attached in
http://gcc.gnu.org/ml/gcc-patches/2011-07/msg00437.html
This shows that the fake X addresses increase the code size and that avoiding
fake X addresses as proposed by the patch are pointing into the right
direction.
BTW: With avr-gcc-3.4.6 I get a codesize of ~1400 bytes for the "snake.c"
testcase which is because the old compiler is smarter with register allocation
and no function needs a frame whereas 4.7 needs frame for some functions.
But that's a different story.