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.
Regards, Tom
On Sat, Mar 5, 2011 at 7:55 PM, Paul E. McKenney paulmck@linux.vnet.ibm.com wrote:
Thoughts?
Thanx, Paul
----- Forwarded message from Jesper Juhl jj@chaosbits.net -----
Date: Sun, 6 Mar 2011 00:49:58 +0100 (CET) From: Jesper Juhl jj@chaosbits.net To: linux-kernel@vger.kernel.org cc: Andrew Morton akpm@linux-foundation.org, "Paul E. McKenney" paulmck@linux.vnet.ibm.com, Ingo Molnar mingo@elte.hu, Daniel Lezcano daniel.lezcano@free.fr, Eric Paris eparis@redhat.com, Roman Zippel zippel@linux-m68k.org Subject: [PATCH][RFC] CC_OPTIMIZE_FOR_SIZE should default to N
I believe that the majority of systems we are built on want a -O2 compiled kernel. Optimizing for size (-Os) is mainly benneficial for embedded systems and systems with very small CPU caches (correct me if I'm wrong). So it seems wrong to me that CC_OPTIMIZE_FOR_SIZE defaults to 'y' and recommends saying 'Y' if unsure. I believe it should default to 'n' and recommend that if unsure. People who bennefit from -Os know who they are and can enable the option if needed/wanted - the majority shouldn't select this. Right?
Signed-off-by: Jesper Juhl jj@chaosbits.net
Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig index be788c0..7e16268 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -886,12 +886,12 @@ endif
config CC_OPTIMIZE_FOR_SIZE bool "Optimize for size"
- default y
- default n
help Enabling this option will pass "-Os" instead of "-O2" to gcc resulting in a smaller kernel.
- If unsure, say Y.
- If unsure, say N.
config SYSCTL bool
-- Jesper Juhl jj@chaosbits.net http://www.chaosbits.net/ Plain text mails only, please. Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
----- End forwarded message -----
linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev