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
_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev