Commit a9df3d0f authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds

[PATCH] When CONFIG_CC_OPTIMIZE_FOR_SIZE, allow gcc4 to control inlining

If optimizing for size (CONFIG_CC_OPTIMIZE_FOR_SIZE), allow gcc4 compilers
to decide what to inline and what not - instead of the kernel forcing gcc
to inline all the time.  This requires several places that require to be
inlined to be marked as such, previous patches in this series do that.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarArjan van de Ven <arjan@infradead.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ac893963
...@@ -123,6 +123,15 @@ Who: Christoph Hellwig <hch@lst.de> ...@@ -123,6 +123,15 @@ Who: Christoph Hellwig <hch@lst.de>
--------------------------- ---------------------------
What: CONFIG_FORCED_INLINING
When: June 2006
Why: Config option is there to see if gcc is good enough. (in january
2006). If it is, the behavior should just be the default. If it's not,
the option should just go away entirely.
Who: Arjan van de Ven
---------------------------
What: START_ARRAY ioctl for md What: START_ARRAY ioctl for md
When: July 2006 When: July 2006
Files: drivers/md/md.c Files: drivers/md/md.c
......
...@@ -3,6 +3,15 @@ ...@@ -3,6 +3,15 @@
/* These definitions are for GCC v4.x. */ /* These definitions are for GCC v4.x. */
#include <linux/compiler-gcc.h> #include <linux/compiler-gcc.h>
#ifdef CONFIG_FORCED_INLINING
# undef inline
# undef __inline__
# undef __inline
# define inline inline __attribute__((always_inline))
# define __inline__ __inline__ __attribute__((always_inline))
# define __inline __inline __attribute__((always_inline))
#endif
#define __attribute_used__ __attribute__((__used__)) #define __attribute_used__ __attribute__((__used__))
#define __must_check __attribute__((warn_unused_result)) #define __must_check __attribute__((warn_unused_result))
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b) #define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
......
...@@ -195,6 +195,20 @@ config FRAME_POINTER ...@@ -195,6 +195,20 @@ config FRAME_POINTER
some architectures or if you use external debuggers. some architectures or if you use external debuggers.
If you don't debug the kernel, you can say N. If you don't debug the kernel, you can say N.
config FORCED_INLINING
bool "Force gcc to inline functions marked 'inline'"
depends on DEBUG_KERNEL
default y
help
This option determines if the kernel forces gcc to inline the functions
developers have marked 'inline'. Doing so takes away freedom from gcc to
do what it thinks is best, which is desirable for the gcc 3.x series of
compilers. The gcc 4.x series have a rewritten inlining algorithm and
disabling this option will generate a smaller kernel there. Hopefully
this algorithm is so good that allowing gcc4 to make the decision can
become the default in the future, until then this option is there to
test gcc for this.
config RCU_TORTURE_TEST config RCU_TORTURE_TEST
tristate "torture tests for RCU" tristate "torture tests for RCU"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment