mirror of
https://github.com/torvalds/linux
synced 2024-10-06 19:34:19 +00:00
kbuild: lto: limit inlining
This change limits function inlining across translation unit boundaries in order to reduce the binary size with LTO. The -import-instr-limit flag defines a size limit, as the number of LLVM IR instructions, for importing functions from other TUs, defaulting to 100. Based on testing with arm64 defconfig, we found that a limit of 5 is a reasonable compromise between performance and binary size, reducing the size of a stripped vmlinux by 11%. Suggested-by: George Burgess IV <gbiv@google.com> Signed-off-by: Sami Tolvanen <samitolvanen@google.com> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20201211184633.3213045-5-samitolvanen@google.com
This commit is contained in:
parent
38e8918490
commit
22d429e75f
3
Makefile
3
Makefile
|
@ -901,6 +901,9 @@ else
|
||||||
CC_FLAGS_LTO += -flto
|
CC_FLAGS_LTO += -flto
|
||||||
endif
|
endif
|
||||||
CC_FLAGS_LTO += -fvisibility=hidden
|
CC_FLAGS_LTO += -fvisibility=hidden
|
||||||
|
|
||||||
|
# Limit inlining across translation units to reduce binary size
|
||||||
|
KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_LTO
|
ifdef CONFIG_LTO
|
||||||
|
|
Loading…
Reference in a new issue