|
From: | David Brown |
Subject: | [avr-gcc-list] Re: Code optimistaion in AVR Tiny13 |
Date: | Mon, 16 Feb 2009 22:30:50 +0100 |
User-agent: | Thunderbird 2.0.0.19 (Windows/20081209) |
Ruud Vlaming wrote:
On Monday 16 February 2009 15:11, Robert von Knobloch wrote:On inspection I find that the compiler has 'in-lined' at least 3 function calls that I had written as a function to achieve compactness. Is there any way I can stop this, or is this a bug?There has been some discussions about this before. After trying many different optimization settings i concluded that--param inline-call-cost=2 is -overall- the best setting for small projects. However, if you need to minimize just one app, further reduction might be possible. For example with things like: -fno-inline-small-functions -fno-split-wide-types -fno-tree-scev-cpropAlso, you can prohibit the compiler to inline on a function by function basis. Just to be sure you have no dead code around, include: -ffunction-sections -Wl,--gc-sections -Wl,--relax
An alternative to using -ffunction-sections is simply not to write extra functions - that should be easy enough for a small program!
One note about inlining - you should not disable all inlining, just limit automatic inlining of small functions (as you've done here). Automatic inlining of functions that are only used once is always a win in time and space.
Another important point in getting code as small as possible is to use -combine and -fwhole-program - it can significantly improve code, especially for functions that are called only once but live in different modules.
[Prev in Thread] | Current Thread | [Next in Thread] |