]> git.sesse.net Git - stockfish/commitdiff
Added gcc lto (Link Time Optimization) option
authorTom Vijlbrief <tvijlbrief@gmail.com>
Thu, 6 Oct 2011 16:25:36 +0000 (18:25 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 6 Oct 2011 19:10:12 +0000 (20:10 +0100)
Just by adding the -flto option to CXXFLAGS link command
we can gain a few percent in speed.

On a Core i5-2500 (3300 Mhz, Sandy Bridge):

64 bit download version:

Without -flto: 1597151 n/s
With -flto : 1659664 n/s

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/Makefile

index d81e7d707a9c638f3ffe19d513915f1851d07747..0a56e263ee800442434b6baf1ea4a5ad295d8c67 100644 (file)
@@ -52,6 +52,7 @@ OBJS = benchmark.o bitbase.o bitboard.o book.o endgame.o evaluate.o main.o \
 # bsfq = no/yes       --- -DUSE_BSFQ  --- Use bsfq x86_64 asm-instruction
 #                                     --- (Works only with GCC and ICC 64-bit)
 # popcnt = no/yes     --- -DUSE_POPCNT --- Use popcnt x86_64 asm-instruction
 # bsfq = no/yes       --- -DUSE_BSFQ  --- Use bsfq x86_64 asm-instruction
 #                                     --- (Works only with GCC and ICC 64-bit)
 # popcnt = no/yes     --- -DUSE_POPCNT --- Use popcnt x86_64 asm-instruction
+# lto = no/yes        --- -flto       --- gcc Link Time Optimization
 #
 # Note that Makefile is space sensitive, so when adding new architectures
 # or modifying existing flags, you have to make sure there are no extra spaces
 #
 # Note that Makefile is space sensitive, so when adding new architectures
 # or modifying existing flags, you have to make sure there are no extra spaces
@@ -123,6 +124,7 @@ ifeq ($(ARCH),x86-64-modern)
        prefetch = yes
        bsfq = yes
        popcnt = yes
        prefetch = yes
        bsfq = yes
        popcnt = yes
+       lto = yes
 endif
 
 ifeq ($(ARCH),x86-32)
 endif
 
 ifeq ($(ARCH),x86-32)
@@ -311,6 +313,14 @@ ifeq ($(popcnt),yes)
        CXXFLAGS += -DUSE_POPCNT
 endif
 
        CXXFLAGS += -DUSE_POPCNT
 endif
 
+### 3.11 lto.
+### Note that this is a mix of compile and link time options
+### because the lto link phase needs access to the optimization flags
+ifeq ($(lto),yes)
+       CXXFLAGS += -flto
+       LDFLAGS += $(CXXFLAGS) -static
+endif
+
 ### ==========================================================================
 ### Section 4. Public targets
 ### ==========================================================================
 ### ==========================================================================
 ### Section 4. Public targets
 ### ==========================================================================