Fw: [PATCH][RFC] CC_OPTIMIZE_FOR_SIZE should default to N

Rob Herring robherring2 at gmail.com
Mon Mar 7 20:08:03 UTC 2011


On 03/07/2011 01:47 PM, Tom Gall wrote:
> To quote the GCC manual:
>
> -Os
> Optimize for size. -Os enables all -O2 optimizations that do not
> typically increase code size. It also performs further optimizations
> designed to reduce code size.
> -Os disables the following optimization flags:
>
>            -falign-functions  -falign-jumps  -falign-loops
>            -falign-labels  -freorder-blocks  -freorder-blocks-and-partition
>            -fprefetch-loop-arrays  -ftree-vect-loop-version
>
>
> That said (and unless there's other undocumented differences), it
> would seem to take some expertise to comment on the trade off between
> memory efforts (cache misses, TLB etc) vs instructional effects by
> having these optimizations off.
>
> I am certainly not that expert but I suspect given the memory bus
> speeds that typical arm hardware has, we'd want -Os over -O2.
>

In my experience, -Os also turns off inlining of functions. The case I 
have looked at is swab32 function in u-boot. With -Os (and 
-march=armv7-a) I get calls to this function:

__fswab32:
	rev r0, r0
	bx lr

With -O2, I get rev inlined.

Rob




More information about the linaro-dev mailing list