Message ID | 20200903203053.3411268-13-samitolvanen@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for Clang LTO | expand |
On Thu, Sep 03, 2020 at 01:30:37PM -0700, Sami Tolvanen wrote: > 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>
diff --git a/Makefile b/Makefile index 2752be67b460..c69e07bd506a 100644 --- a/Makefile +++ b/Makefile @@ -917,6 +917,10 @@ else CC_FLAGS_LTO_CLANG := -flto endif CC_FLAGS_LTO_CLANG += -fvisibility=default + +# Limit inlining across translation units to reduce binary size +LD_FLAGS_LTO_CLANG := -mllvm -import-instr-limit=5 +KBUILD_LDFLAGS += $(LD_FLAGS_LTO_CLANG) endif ifdef CONFIG_LTO
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> --- Makefile | 4 ++++ 1 file changed, 4 insertions(+)