Re: [patch 2/7] enable unit-at-a-time optimisations for gcc4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Arjan van de Ven <[email protected]> wrote:
>
> allow gcc4 compilers to optimize unit-at-a-time. 
> 
>  This flag enables gcc to "see" the entire C file before making optimisation
>  decisions such as inline, which results in gcc making better decisions. One
>  of the immediate effects of this is that static functions that are used only
>  once now get inlined.
> 
>  gcc 3.4 has this flag as well, however gcc 3.x have a problem with inlining
>  and stacks and as a result, enabling this flag there would cause excessive
>  and unacceptable stack use. This problem is fixed in the gcc 4.x series. 
>  The x86-64 architecture already enables this feature so it's well tested 
>  already.

bix:/usr/src/25> make vmlinux
/bin/sh: line 1: [: -lt: unary operator expected

Because GCC_VERSION hasn't been initialised at this stage.

<wonders about the testing status of this one>

Is there any reason why we can't do this?


From: Andrew Morton <[email protected]>

Set GCC_VERSION up-front rather than in arch Makefiles.  This reduces ordering
problems and generally consolidates things.

Cc: Sam Ravnborg <[email protected]>
Cc: Arjan van de Ven <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 Makefile              |    2 +-
 arch/ia64/Makefile    |    1 -
 arch/parisc/Makefile  |    4 ----
 arch/powerpc/Makefile |    2 --
 arch/ppc/Makefile     |    1 -
 5 files changed, 1 insertion(+), 9 deletions(-)

diff -puN arch/ia64/Makefile~kbuild-call-gcc_version-earlier arch/ia64/Makefile
--- devel/arch/ia64/Makefile~kbuild-call-gcc_version-earlier	2006-01-07 01:05:39.000000000 -0800
+++ devel-akpm/arch/ia64/Makefile	2006-01-07 01:05:39.000000000 -0800
@@ -25,7 +25,6 @@ cflags-y	:= -pipe $(EXTRA) -ffixed-r13 -
 		   -falign-functions=32 -frename-registers -fno-optimize-sibling-calls
 CFLAGS_KERNEL	:= -mconstant-gp
 
-GCC_VERSION     := $(call cc-version)
 GAS_STATUS	= $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
 CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
 
diff -puN arch/parisc/Makefile~kbuild-call-gcc_version-earlier arch/parisc/Makefile
--- devel/arch/parisc/Makefile~kbuild-call-gcc_version-earlier	2006-01-07 01:05:39.000000000 -0800
+++ devel-akpm/arch/parisc/Makefile	2006-01-07 01:05:39.000000000 -0800
@@ -35,10 +35,6 @@ FINAL_LD=$(CROSS_COMPILE)ld --warn-commo
 
 OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
 
-GCC_VERSION     := $(call cc-version)
-ifneq ($(shell if [ -z $(GCC_VERSION) ] ; then echo "bad"; fi ;),)
-$(error Sorry, couldn't find ($(cc-version)).)
-endif
 ifneq ($(shell if [ $(GCC_VERSION) -lt 0303 ] ; then echo "bad"; fi ;),)
 $(error Sorry, your compiler is too old ($(GCC_VERSION)).  GCC v3.3 or above is required.)
 endif
diff -puN arch/powerpc/Makefile~kbuild-call-gcc_version-earlier arch/powerpc/Makefile
--- devel/arch/powerpc/Makefile~kbuild-call-gcc_version-earlier	2006-01-07 01:05:39.000000000 -0800
+++ devel-akpm/arch/powerpc/Makefile	2006-01-07 01:05:39.000000000 -0800
@@ -76,7 +76,6 @@ LINUXINCLUDE    += $(LINUXINCLUDE-y)
 CHECKFLAGS	+= -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__
 
 ifeq ($(CONFIG_PPC64),y)
-GCC_VERSION     := $(call cc-version)
 GCC_BROKEN_VEC	:= $(shell if [ $(GCC_VERSION) -lt 0400 ] ; then echo "y"; fi)
 
 ifeq ($(CONFIG_POWER4_ONLY),y)
@@ -189,7 +188,6 @@ TOUT	:= .tmp_gas_check
 # Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec
 # instructions.
 # gcc-3.4 and binutils-2.14 are a fatal combination.
-GCC_VERSION	:= $(call cc-version)
 
 checkbin:
 	@if test "$(GCC_VERSION)" = "0304" ; then \
diff -puN arch/ppc/Makefile~kbuild-call-gcc_version-earlier arch/ppc/Makefile
--- devel/arch/ppc/Makefile~kbuild-call-gcc_version-earlier	2006-01-07 01:05:39.000000000 -0800
+++ devel-akpm/arch/ppc/Makefile	2006-01-07 01:05:39.000000000 -0800
@@ -128,7 +128,6 @@ TOUT	:= .tmp_gas_check
 # Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec
 # instructions.
 # gcc-3.4 and binutils-2.14 are a fatal combination.
-GCC_VERSION	:= $(call cc-version)
 
 checkbin:
 	@if test "$(GCC_VERSION)" = "0304" ; then \
diff -puN Makefile~kbuild-call-gcc_version-earlier Makefile
--- Makefile~kbuild-call-gcc_version-earlier	2006-01-07 01:05:39.000000000 -0800
+++ devel-akpm/Makefile	2006-01-07 01:05:39.000000000 -0800
@@ -300,7 +300,7 @@ cc-option-align = $(subst -functions=0,,
 # Usage gcc-ver := $(call cc-version $(CC))
 cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
               $(if $(1), $(1), $(CC)))
-
+GCC_VERSION	:= $(call cc-version)
 
 # Look for make include files relative to root of kernel src
 MAKEFLAGS += --include-dir=$(srctree)
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux