Re: [PATCH v2 09/28] kbuild: add support for Clang LTO
From: Sami Tolvanen <samitolvanen@google.com>
Date: 2020-09-08 17:11:13
Also in:
linux-arch, linux-kbuild, linux-pci, lkml
On Sun, Sep 06, 2020 at 04:36:32AM +0900, Masahiro Yamada wrote:
On Fri, Sep 4, 2020 at 5:31 AM Sami Tolvanen [off-list ref] wrote:quoted
This change adds build system support for Clang's Link Time Optimization (LTO). With -flto, instead of ELF object files, Clang produces LLVM bitcode, which is compiled into native code at link time, allowing the final binary to be optimized globally. For more details, see: https://llvm.org/docs/LinkTimeOptimization.html The Kconfig option CONFIG_LTO_CLANG is implemented as a choice, which defaults to LTO being disabled.What is the reason for doing this in a choice? To turn off LTO_CLANG for compile-testing? I would rather want to give LTO_CLANG more chances to be enabled/tested.
It's a choice to prevent LTO from being enabled by default with allyesconfig and allmodconfig. It would take hours to build these even on a fast computer, and probably days on older hardware.
quoted
+ifdef CONFIG_LTO_CLANG +ifdef CONFIG_THINLTO +CC_FLAGS_LTO_CLANG := -flto=thin -fsplit-lto-unit +KBUILD_LDFLAGS += --thinlto-cache-dir=.thinlto-cacheI think this would break external module builds because it would create cache files in the kernel source tree. External module builds should never ever touch the kernel tree, which is usually located under the read-only /usr/src/ in distros. .thinlto-cache should be created in the module tree when it is built with M=.
Thanks for pointing this out, I'll fix the path in v3.
quoted
# Directories & files removed with 'make distclean' -DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS +DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS .thinlto-cacheThis was suggested in v1, but I could not understand why doing this in distclean was appropriate. Is keeping cache files of kernel objects useful for external module builds?
No, the cache only speeds up incremental kernel builds.
Also, please clean up .thinlto-cache for external module builds.
Ack. Sami _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel