Couple responses:
I have a student who has hacked gcc so that stack slots are reused, when
possible, eliminating the "stack bloat under inlining" problem. He has
also increased the precision of the live range analysis. All of this is
towards the goal of greatly reducing stack memory usage (we can already
substantially reduce stack usage vs. default avr-gcc, at least for some
applications). He's integrating with IRA now, not sure when this'll all
be ready to share. We hope to publish something in the Fall but there's a
big gap between publishability and usability.
My original stack analysis tool for AVR was too complicated and had to be
abandoned. I have a newer, simpler one that needs a bit more work before
it can be deployed. It is (in most cases) not hard to compute a stack
bound for a single C function. It is also (in most cases) not hard to
compute a callgraph for an embedded application. The hard part, which
cannot be automated, is turning these parts into a sound and precise
global stack bound. To see why this is hard, consider that there may be
threads, there may be coroutines, there may be reentrant and/or nested
interrupts, etc.
John Regehr
_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list