On Sat, 18 Apr 2009, Sean D'Epagnier wrote:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=77805

This is cool, though I largely agree with the message in this thread which says that most of the time, poor avr-gcc output should simply be filed as bugs in the AVR backend.

The superoptimizer must be extremely careful in rewriting loads and stores. Probably the best policy would be to never duplicate or eliminate a memory operation. The reason is that volatile qualifiers have been lost by the time the compiler finishes.

Sean the limit case of what you are working on is something like Diablo, you should read some of their papers:

  http://diablo.elis.ugent.be/publications

It is an excellent tool.

Many benefits of something like Diablo come from optimizing the application and all of its libraries together. Someone should figure out how to get this kind of benefit for AVR. I have spent a bunch of time looking at avr-gcc output over the past couple weeks and have seen many cases where better code could have been generated by perforing IPO on the application + libraries. In many cases simply propagating constants into avr-libc would get most of the benefit.

John Regehr


_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to