From: Igor Munkin <imun@tarantool.org> To: Olga Arkhangelskaia <arkholga@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH] cmake: add LTO support for building luajit Date: Tue, 14 Apr 2020 12:18:03 +0300 [thread overview] Message-ID: <20200414091803.GJ5713@tarantool.org> (raw) In-Reply-To: <20200312100549.31608-1-arkholga@tarantool.org> Olya, Thanks for the patch! I left several comments below, please consider them. On 12.03.20, Olga Arkhangelskaia wrote: > Tarantool has LTO support, however while building luajit this opt. was > omitted. Patch adds necessary flag to turn it on. > > Minimum compiler/linker versions: clang 3.4, gcc 5.0+, ld 2.27+. > > Closes #3743 > --- > Branch: OKriw/gh-3743-LuaJIT-does-not-use-LTO-with-DENABLE_LTO=ON-full-ci > cmake/lto.cmake | 3 ++- > cmake/luajit.cmake | 26 ++++++++++++++++++++++++++ > 2 files changed, 28 insertions(+), 1 deletion(-) > > diff --git a/cmake/lto.cmake b/cmake/lto.cmake > index 95ade75f4..9f29f3324 100644 > --- a/cmake/lto.cmake > +++ b/cmake/lto.cmake > @@ -78,7 +78,8 @@ if (NOT TARGET_OS_DARWIN) > if (linker_version VERSION_LESS "2.31") > message(FATAL_ERROR "ld.bfd >= 2.31 is needed for LTO") > endif() > - elseif(matched_gold) > + > + elseif(matched_gold) Typo: there is a mess with whitespace above. However this chunk provides no changes except whitespace and newline. Please drop it. > set(linker_version ${CMAKE_MATCH_1}) > message(STATUS "Found ld.gold version: ${linker_version}") > > diff --git a/cmake/luajit.cmake b/cmake/luajit.cmake > index 072db8269..da1b4926d 100644 > --- a/cmake/luajit.cmake > +++ b/cmake/luajit.cmake > @@ -225,6 +225,32 @@ macro(luajit_build) > set(luajit_xcflags ${luajit_xcflags} -D${def}) > endforeach() > > + # Add LTO option to luajit > + if (CMAKE_INTERPROCEDURAL_OPTIMIZATION) > + message("Setting LTO flags for building luajit") > + # Clang opt to support LTO > + if (CMAKE_COMPILER_IS_CLANG AND > + NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.4) So, if clang toolchain is used but version is less than 3.4, then gcc toolchain settings are used. It's either totally wrong or definitely need to be clarified with a corresponding comment. Also, AFAICS LTO support for toolchain is checked via CheckIPOSupported CMake module. So additional check here looks to be excess or also need to be clarified. > + if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.9) > + set(luajit_cflags ${luajit_cflags} -flto=full) > + else() > + set(luajit_cflags ${luajit_cflags} -flto=full) > + endif() I see no difference in the branches above. > + if (NOT TARGET_OS_DARWIN) > + # Depending of compiler we need to set appropriate llvm/gcc-ar lib > + set (CMAKE_AR llvm-ar) What ar is used on systems different from Darwin based ones when clang toolchain is used? > + endif() > + # GNU opts to support lto > + else() > + #Due to some problems (bugs, slow work, etc) we support LTO only for 5.0+ > + #The same is for binutils prior 2.27 > + if (NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 5.0 > + AND NOT ${linker_version} VERSION_LESS 2.27) > + set(luajit_cflags ${luajit_cflags} -flto -fuse-linker-plugin -fno-fat-lto-objects) > + endif() > + set (CMAKE_AR gcc-ar) Could you please clarify why ar is set explicitly here? > + endif() > + endif() Typo: there is a mess with indent above. Unfortunately I failed to find our CMake style guide, so please adjust your changes considering the code nearby. > # Pass the same toolchain that is used for building of > # tarantool itself, because tools from different toolchains > # can be incompatible. A compiler and a linker are already set > -- > 2.20.1 (Apple Git-117) > -- Best regards, IM
next prev parent reply other threads:[~2020-04-14 9:25 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-12 10:05 Olga Arkhangelskaia 2020-03-12 10:10 ` Cyrill Gorcunov 2020-04-14 9:18 ` Igor Munkin [this message] 2020-04-14 9:59 ` Olga Arkhangelskaia 2020-04-14 12:32 ` Olga Arkhangelskaia 2020-04-14 17:00 ` Igor Munkin 2020-04-15 13:22 ` Olga Arkhangelskaia 2020-04-17 11:47 ` Igor Munkin 2020-04-17 14:41 ` Olga Arkhangelskaia 2020-04-27 23:04 ` Igor Munkin 2020-05-06 10:47 ` Olga Arkhangelskaia 2020-04-14 14:33 ` Olga Arkhangelskaia 2020-05-25 12:58 ` Sergey Bronnikov 2020-05-25 15:00 ` Olga Arkhangelskaia 2020-05-25 15:12 ` Olga Arkhangelskaia 2020-05-25 15:43 ` Sergey Bronnikov 2020-05-26 10:11 ` Igor Munkin 2020-05-27 10:01 ` Olga Arkhangelskaia 2020-06-16 1:02 ` Alexander Turenko 2020-06-16 11:36 ` Olga Arkhangelskaia 2020-06-16 12:01 ` Olga Arkhangelskaia 2020-06-16 17:34 ` Alexander Turenko 2020-06-25 9:19 ` Timur Safin 2020-06-16 18:31 ` Alexander Turenko 2020-06-29 20:16 ` Olga Arkhangelskaia 2020-06-16 12:53 ` Igor Munkin 2020-06-25 9:45 ` Timur Safin 2020-06-25 9:47 ` Timur Safin 2020-07-08 12:23 ` Alexander Turenko 2020-07-08 12:34 ` Kirill Yukhin 2020-07-08 12:42 ` Kirill Yukhin 2020-07-08 12:38 ` Alexander Turenko 2020-07-09 5:13 ` Olga Arkhangelskaia
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200414091803.GJ5713@tarantool.org \ --to=imun@tarantool.org \ --cc=arkholga@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] cmake: add LTO support for building luajit' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox