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:
Родитель
38e8918490
Коммит
22d429e75f
3
Makefile
3
Makefile
|
@ -901,6 +901,9 @@ else
|
|||
CC_FLAGS_LTO += -flto
|
||||
endif
|
||||
CC_FLAGS_LTO += -fvisibility=hidden
|
||||
|
||||
# Limit inlining across translation units to reduce binary size
|
||||
KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
|
||||
endif
|
||||
|
||||
ifdef CONFIG_LTO
|
||||
|
|
Загрузка…
Ссылка в новой задаче