From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Arjan van de Ven <arjan@infradead.org>,
lkml <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>, Matt Mackall <mpm@selenic.com>
Subject: Re: [patch 00/2] improve .text size on gcc 4.0 and newer compilers
Date: Wed, 28 Dec 2005 22:48:45 +0100 [thread overview]
Message-ID: <20051228214845.GA7859@elte.hu> (raw)
In-Reply-To: <20051228212313.GA4388@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
> (there's a third thing that i was also playing with, -ffunction-sections
> and -fdata-sections, but those dont seem to be reliable on the binutils
> side yet.)
>
> here are the isolated unit-at-a-time numbers as well:
>
> text data bss dec hex filename
> 3286166 869852 387260 4543278 45532e vmlinux-orig
> 3259928 833176 387748 4480852 445f54 vmlinux-units -0.8%
> 3194123 955168 387260 4536551 4538e7 vmlinux-inline -2.9%
> 3119495 884960 387748 4392203 43050b vmlinux-inline+units -5.3%
>
> so both inlining and unit-at-a-time is a win independently [although
> inlining alone does bloat .data], but applied together they bring an
> additional 1.6% of .text savings. All builds done with:
>
> gcc version 4.0.2 20051109 (Red Hat 4.0.2-6)
>
> how about giving the inlining stuff some more exposure in -mm (if it's
> fine with Andrew), to check for any regressions? I'd suggest the same
> for the unit-at-a-time thing too, in any case.
another thing: i wanted to decrease the size of -Os
(CONFIG_CC_OPTIMIZE_FOR_SIZE) kernels, which e.g. Fedora uses too (to
keep the icache footprint down).
I think gcc should arguably not be forced to inline things when doing
-Os, and it's also expected to mess up much less than when optimizing
for speed. So maybe forced inlining should be dependent on
!CONFIG_CC_OPTIMIZE_FOR_SIZE?
I.e. like the patch below?
Ingo
----------------->
Subject: allow gcc4 to control inlining
allow gcc4 compilers to decide what to inline and what not - instead
of the kernel forcing gcc to inline all the time.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@infradead.org>
----
include/linux/compiler-gcc4.h | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
Index: linux-gcc.q/include/linux/compiler-gcc4.h
===================================================================
--- linux-gcc.q.orig/include/linux/compiler-gcc4.h
+++ linux-gcc.q/include/linux/compiler-gcc4.h
@@ -3,14 +3,19 @@
/* These definitions are for GCC v4.x. */
#include <linux/compiler-gcc.h>
-#define inline inline __attribute__((always_inline))
-#define __inline__ __inline__ __attribute__((always_inline))
-#define __inline __inline __attribute__((always_inline))
+
+#ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
+# define inline inline __attribute__((always_inline))
+# define __inline__ __inline__ __attribute__((always_inline))
+# define __inline __inline __attribute__((always_inline))
+#endif
+
#define __deprecated __attribute__((deprecated))
#define __attribute_used__ __attribute__((__used__))
#define __attribute_pure__ __attribute__((pure))
#define __attribute_const__ __attribute__((__const__))
-#define noinline __attribute__((noinline))
+#define noinline __attribute__((noinline))
+#define __always_inline inline __attribute__((always_inline))
#define __must_check __attribute__((warn_unused_result))
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
next prev parent reply other threads:[~2005-12-28 21:49 UTC|newest]
Thread overview: 210+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-28 11:46 [patch 00/2] improve .text size on gcc 4.0 and newer compilers Ingo Molnar
2005-12-28 19:17 ` Linus Torvalds
2005-12-28 19:34 ` Arjan van de Ven
2005-12-28 21:02 ` Linus Torvalds
2005-12-28 21:17 ` Arjan van de Ven
2005-12-28 21:23 ` Ingo Molnar
2005-12-28 21:48 ` Ingo Molnar [this message]
2005-12-28 23:56 ` Krzysztof Halasa
2005-12-29 7:41 ` Ingo Molnar
2005-12-29 8:02 ` Dave Jones
2005-12-29 19:44 ` Krzysztof Halasa
2005-12-29 4:11 ` Andrew Morton
2005-12-29 7:32 ` Ingo Molnar
2005-12-29 14:58 ` Horst von Brand
2005-12-29 15:40 ` Adrian Bunk
2005-12-29 17:41 ` Linus Torvalds
2005-12-29 18:42 ` Arjan van de Ven
2005-12-29 18:45 ` Arjan van de Ven
2005-12-29 20:19 ` Ingo Molnar
2005-12-29 22:20 ` Matt Mackall
2005-12-29 20:28 ` Dave Jones
2005-12-29 20:49 ` Linus Torvalds
2005-12-29 21:25 ` Linus Torvalds
[not found] ` <20051229224839.GA12247@elte.hu>
2005-12-29 22:58 ` Arjan van de Ven
2005-12-30 2:03 ` Tim Schmielau
2005-12-30 2:15 ` Tim Schmielau
2005-12-30 7:49 ` Ingo Molnar
2005-12-31 14:38 ` Adrian Bunk
2005-12-31 14:45 ` Ingo Molnar
2005-12-31 15:08 ` Adrian Bunk
2006-01-02 10:37 ` Ingo Molnar
2006-01-02 10:48 ` Arjan van de Ven
2006-01-02 13:43 ` Adrian Bunk
2006-01-02 14:05 ` Ingo Molnar
2006-01-02 15:01 ` Adrian Bunk
2006-01-02 18:44 ` Krzysztof Halasa
2006-01-02 18:51 ` Arjan van de Ven
2006-01-02 19:49 ` Krzysztof Halasa
2006-01-02 19:54 ` Arjan van de Ven
2006-01-02 20:05 ` Krzysztof Halasa
2006-01-02 20:18 ` Jörn Engel
2006-01-02 22:23 ` Russell King
2006-01-02 23:55 ` Alan Cox
2006-01-03 3:59 ` Daniel Jacobowitz
2006-01-03 8:53 ` Russell King
2006-01-03 8:56 ` Arjan van de Ven
2006-01-03 9:00 ` Russell King
2006-01-03 9:10 ` Arjan van de Ven
2006-01-03 9:14 ` Vitaly Wool
2006-01-02 19:03 ` Andrew Morton
2006-01-02 19:17 ` Jakub Jelinek
2006-01-02 19:30 ` Andrew Morton
2006-01-02 19:41 ` Linus Torvalds
2006-01-02 19:53 ` Ingo Molnar
2006-01-02 20:28 ` Jakub Jelinek
2006-01-02 20:09 ` Ingo Molnar
2006-01-02 20:24 ` Andrew Morton
2006-01-02 20:40 ` Ingo Molnar
2006-01-02 20:30 ` Ingo Molnar
2006-01-02 19:12 ` Linus Torvalds
2006-01-02 19:59 ` Krzysztof Halasa
2006-01-02 20:13 ` Ingo Molnar
2006-01-02 21:00 ` Jan Engelhardt
2006-01-02 22:43 ` Linus Torvalds
2006-01-02 13:42 ` Adrian Bunk
2006-01-02 18:28 ` Andrew Morton
2006-01-02 18:49 ` Arjan van de Ven
2006-01-02 19:26 ` Jörn Engel
2006-01-02 21:51 ` Grant Coady
2006-01-02 22:03 ` Antonio Vargas
2006-01-02 22:56 ` Arjan van de Ven
2006-01-02 23:10 ` Grant Coady
2006-01-02 23:57 ` Alan Cox
2006-01-02 23:58 ` Grant Coady
2006-01-03 5:31 ` Nick Piggin
2006-01-03 23:40 ` Martin J. Bligh
2006-01-04 4:28 ` Matt Mackall
2006-01-04 5:51 ` Martin J. Bligh
2006-01-04 17:10 ` Matt Mackall
2006-01-04 22:37 ` Linus Torvalds
2006-01-05 0:55 ` Martin Bligh
2006-01-04 17:36 ` Zwane Mwaikambo
2005-12-31 3:51 ` Kurt Wall
2005-12-30 3:31 ` Nicolas Pitre
2005-12-29 22:41 ` userspace breakage Dave Jones
2005-12-29 21:23 ` Jeff V. Merkey
2005-12-29 23:42 ` Linus Torvalds
2005-12-29 22:17 ` Jeff V. Merkey
2005-12-30 0:10 ` Linus Torvalds
2005-12-29 23:54 ` Jeff V. Merkey
2005-12-30 0:32 ` Linus Torvalds
2005-12-30 14:45 ` Jeff V. Merkey
2005-12-30 16:17 ` Rik van Riel
2005-12-30 15:01 ` Jeff V. Merkey
2005-12-30 11:17 ` Bernd Petrovitsch
2005-12-30 14:59 ` Jeff V. Merkey
2005-12-30 20:22 ` Steven Rostedt
2005-12-30 21:26 ` Linus Torvalds
2005-12-30 23:49 ` Andrew Morton
2005-12-31 8:33 ` Arjan van de Ven
2005-12-31 15:30 ` Steven Rostedt
2005-12-31 16:40 ` Francois Romieu
2005-12-30 11:19 ` Bernd Petrovitsch
2005-12-30 14:53 ` Jeff V. Merkey
2005-12-30 17:17 ` Bernd Petrovitsch
2005-12-29 22:47 ` Ismail Donmez
2005-12-29 22:56 ` Linus Torvalds
2005-12-29 23:03 ` Dave Jones
2006-01-03 20:28 ` Greg KH
2006-01-03 20:37 ` Dave Jones
2006-01-04 23:00 ` Paolo Ciarrocchi
2006-01-05 4:42 ` Greg KH
2005-12-29 23:25 ` Adrian Bunk
2005-12-29 23:52 ` Linus Torvalds
2005-12-30 8:09 ` Arjan van de Ven
2006-01-03 20:28 ` Greg KH
2005-12-29 23:07 ` Dmitry Torokhov
2005-12-30 0:38 ` Ryan Anderson
2005-12-30 0:46 ` Dave Jones
2005-12-30 1:05 ` Linus Torvalds
2005-12-30 1:19 ` Dave Airlie
2005-12-30 1:21 ` Dave Jones
2005-12-30 2:10 ` Jiri Slaby
2005-12-30 2:14 ` Dave Jones
2005-12-30 2:35 ` Jiri Slaby
2005-12-30 5:14 ` Theodore Ts'o
2005-12-30 0:49 ` Linus Torvalds
2005-12-30 3:47 ` [patch 00/2] improve .text size on gcc 4.0 and newer compilers Mark Lord
2005-12-30 3:56 ` Dave Jones
2005-12-30 3:57 ` Mark Lord
2005-12-30 4:02 ` Dave Jones
2005-12-30 4:11 ` Mark Lord
2005-12-30 4:14 ` Mark Lord
2005-12-30 4:20 ` Mark Lord
2005-12-30 5:04 ` Dave Jones
2005-12-29 23:16 ` Willy Tarreau
2005-12-30 8:05 ` Arjan van de Ven
2005-12-30 8:15 ` Willy Tarreau
2005-12-30 8:24 ` Arjan van de Ven
2005-12-30 9:20 ` Willy Tarreau
2005-12-30 13:38 ` Adrian Bunk
2005-12-30 8:33 ` Jesper Juhl
2005-12-30 9:28 ` Willy Tarreau
2005-12-30 9:37 ` Jesper Juhl
2005-12-30 9:38 ` Willy Tarreau
2005-12-30 19:53 ` Alistair John Strachan
2005-12-29 7:49 ` Arjan van de Ven
2005-12-29 15:01 ` Horst von Brand
2005-12-30 15:28 ` Alan Cox
2005-12-30 20:59 ` Adrian Bunk
2005-12-30 22:12 ` Matt Mackall
2005-12-30 23:54 ` Adrian Bunk
2005-12-31 9:20 ` Arjan van de Ven
2005-12-29 14:38 ` Christoph Hellwig
2005-12-29 14:54 ` Arjan van de Ven
2005-12-29 15:35 ` Adrian Bunk
2005-12-29 15:38 ` Arjan van de Ven
2005-12-29 15:42 ` Jakub Jelinek
2005-12-29 19:14 ` Adrian Bunk
2005-12-30 9:28 ` Andi Kleen
2005-12-30 9:40 ` Ingo Molnar
2005-12-30 10:14 ` Ingo Molnar
2005-12-30 13:31 ` Adrian Bunk
2005-12-30 14:08 ` Christian Trefzer
2005-12-30 10:25 ` Andi Kleen
2005-12-29 0:37 ` Rogério Brito
2006-01-03 3:36 ` Daniel Jacobowitz
2005-12-29 4:38 ` Adrian Bunk
2005-12-29 7:59 ` Ingo Molnar
2005-12-29 13:52 ` Adrian Bunk
2005-12-29 19:57 ` Horst von Brand
2005-12-29 20:25 ` Ingo Molnar
2005-12-31 15:22 ` Adrian Bunk
2006-01-05 0:55 Chuck Ebbert
2006-01-05 1:07 ` Martin Bligh
2006-01-05 12:19 ` Arjan van de Ven
2006-01-05 14:30 ` Jakub Jelinek
2006-01-05 16:55 ` Linus Torvalds
2006-01-05 18:42 ` Daniel Jacobowitz
2006-01-05 17:02 ` Matt Mackall
2006-01-05 17:59 ` Martin Bligh
2006-01-05 18:09 ` Arjan van de Ven
2006-01-05 18:43 ` Daniel Jacobowitz
2006-01-05 19:17 ` Linus Torvalds
2006-01-05 19:40 ` Linus Torvalds
2006-01-05 19:49 ` Martin Bligh
2006-01-05 20:13 ` Linus Torvalds
2006-01-05 20:15 ` Linus Torvalds
2006-01-05 23:30 ` Ingo Molnar
2006-01-05 23:54 ` Linus Torvalds
2006-01-06 0:15 ` Ingo Molnar
2006-01-06 0:27 ` Linus Torvalds
2006-01-06 0:54 ` Ingo Molnar
2006-01-06 0:02 ` Martin Bligh
2006-01-06 0:40 ` Ingo Molnar
2006-01-06 0:55 ` Martin Bligh
2006-01-06 1:48 ` Mitchell Blank Jr
2006-01-06 0:50 ` Mitchell Blank Jr
2006-01-06 0:58 ` Ingo Molnar
2006-01-06 1:22 ` Mitchell Blank Jr
2006-01-05 21:34 ` Matt Mackall
2006-01-05 22:08 ` Linus Torvalds
2006-01-05 22:36 ` Matt Mackall
2006-01-05 22:49 ` Martin Bligh
2006-01-05 23:02 ` Matt Mackall
2006-01-05 22:55 ` Ingo Molnar
2006-01-05 23:11 ` Matt Mackall
2006-01-05 23:27 ` Jesse Barnes
2006-01-05 23:58 ` Ingo Molnar
2006-01-05 21:32 ` Grzegorz Kulewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051228214845.GA7859@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@osdl.org \
--cc=arjan@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).