#
# Support for gcc link time optimization
#

DISABLE_LTO :=
LTO_CFLAGS :=

export DISABLE_LTO
export LTO_CFLAGS

ifdef CONFIG_LTO
# 4.7 works mostly, but it sometimes loses symbols on large builds
# This can be worked around by marking those symbols visible,
# but that is fairly ugly and the problem is gone with 4.8
# So only allow it with 4.8 for now.
ifeq ($(call cc-ifversion, -ge, 0408,y),y)
ifneq ($(call cc-option,${LTO_CFLAGS},n),n)
# We need HJ Lu's Linux binutils because mainline binutils does not
# support mixing assembler and LTO code in the same ld -r object.
# XXX check if the gcc plugin ld is the expected one too
# XXX some Fedora binutils should also support it. How to check for that?
ifeq ($(call ld-ifversion,-ge,22710001,y),y)
        LTO_CFLAGS := -flto -fno-toplevel-reorder
	LTO_FINAL_CFLAGS := -fuse-linker-plugin

# the -fno-toplevel-reorder is to preserve the order of initcalls
# everything else should tolerate reordering
        LTO_FINAL_CFLAGS +=-fno-toplevel-reorder

# enable LTO and set the jobs used by the LTO phase
# this should be -flto=jobserver to coordinate with the
# parent make, but work around
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50639
# use as many jobs as processors are online for now
# this actually seems to be a kernel bug with the pipe code
	LTO_FINAL_CFLAGS := -flto=$(shell getconf _NPROCESSORS_ONLN)
	#LTO_FINAL_CFLAGS := -flto=jobserver

	# requires plugin ar passed and very recent HJ binutils
        LTO_CFLAGS += -fno-fat-lto-objects

# Used to disable LTO for specific files (e.g. vdso)
	DISABLE_LTO := -fno-lto

	LTO_FINAL_CFLAGS += ${LTO_CFLAGS} -fwhole-program

ifdef CONFIG_LTO_DEBUG
	LTO_FINAL_CFLAGS += -dH -fdump-ipa-cgraph -fdump-ipa-inline-details
	# -Wl,-plugin-save-temps -save-temps
	LTO_CFLAGS +=
endif
ifdef CONFIG_LTO_CP_CLONE
	LTO_FINAL_CFLAGS += -fipa-cp-clone
	LTO_CFLAGS += -fipa-cp-clone
endif

	# In principle gcc should pass through options in the object files,
	# but it doesn't always work. So do it here manually
	# Note that special options for individual files does not
	# work currently (except for some special cases that only
	# affect the compiler frontend)
	# The main offenders are FTRACE and GCOV -- we exclude
	# those in the config.
	LTO_FINAL_CFLAGS += $(filter -g%,${KBUILD_CFLAGS})
	LTO_FINAL_CFLAGS += $(filter -O%,${KBUILD_CFLAGS})
	LTO_FINAL_CFLAGS += $(filter -f%,${KBUILD_CFLAGS})
	LTO_FINAL_CFLAGS += $(filter -m%,${KBUILD_CFLAGS})
	LTO_FINAL_CFLAGS += $(filter -W%,${KBUILD_CFLAGS})

	KBUILD_CFLAGS += ${LTO_CFLAGS}

	LDFINAL := ${CONFIG_SHELL} ${srctree}/scripts/gcc-ld \
                  ${LTO_FINAL_CFLAGS}

else
        $(warning "WARNING: Too old linker version $(call ld-version) for kernel LTO. You need Linux binutils. CONFIG_LTO disabled.")
endif
else
        $(warning "WARNING: Compiler/Linker does not support LTO/WHOPR with linker plugin. CONFIG_LTO disabled.")
endif
else
        $(warning "WARNING: GCC $(call cc-version) too old for LTO/WHOPR. CONFIG_LTO disabled")
endif
endif
