Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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
When:	July 2006
Files:	drivers/md/md.c
+9 −0
Original line number Diff line number Diff line
@@ -3,6 +3,15 @@
/* These definitions are for GCC v4.x.  */
#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 __must_check 		__attribute__((warn_unused_result))
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
+14 −0
Original line number Diff line number Diff line
@@ -195,6 +195,20 @@ config FRAME_POINTER
	  some architectures or if you use external debuggers.
	  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
	tristate "torture tests for RCU"
	depends on DEBUG_KERNEL