File tree Expand file tree Collapse file tree 3 files changed +18
-2
lines changed Expand file tree Collapse file tree 3 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "
11
11
12
12
set (LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "" )
13
13
set (LLVM_ENABLE_DIA_SDK OFF CACHE BOOL "" )
14
+ set (LLVM_ENABLE_FATLTO ON CACHE BOOL "" )
14
15
set (LLVM_ENABLE_HTTPLIB ON CACHE BOOL "" )
15
16
set (LLVM_ENABLE_LIBCXX ON CACHE BOOL "" )
16
17
set (LLVM_ENABLE_LIBEDIT OFF CACHE BOOL "" )
Original file line number Diff line number Diff line change @@ -1637,8 +1637,14 @@ function(add_unittest test_suite test_name)
1637
1637
# The runtime benefits of LTO don't outweight the compile time costs for tests.
1638
1638
if(LLVM_ENABLE_LTO)
1639
1639
if((UNIX OR MINGW) AND LINKER_IS_LLD)
1640
- set_property(TARGET ${test_name} APPEND_STRING PROPERTY
1641
- LINK_FLAGS " -Wl,--lto-O0 ")
1640
+ if(LLVM_ENABLE_FATLTO)
1641
+ # When using FatLTO, just use relocatable linking.
1642
+ set_property(TARGET ${test_name} APPEND_STRING PROPERTY
1643
+ LINK_FLAGS " -Wl,--no-fat-lto-objects ")
1644
+ else()
1645
+ set_property(TARGET ${test_name} APPEND_STRING PROPERTY
1646
+ LINK_FLAGS " -Wl,--lto-O0 ")
1647
+ endif()
1642
1648
elseif(LINKER_IS_LLD_LINK)
1643
1649
set_property(TARGET ${test_name} APPEND_STRING PROPERTY
1644
1650
LINK_FLAGS " /opt:lldlto=0 ")
Original file line number Diff line number Diff line change @@ -32,6 +32,8 @@ endif()
32
32
set (LLVM_ENABLE_LTO OFF CACHE STRING "Build LLVM with LTO. May be specified as Thin or Full to use a particular kind of LTO" )
33
33
string (TOUPPER "${LLVM_ENABLE_LTO} " uppercase_LLVM_ENABLE_LTO )
34
34
35
+ option (LLVM_ENABLE_FATLTO "Build LLVM with -ffat-lto-objects." OFF )
36
+
35
37
# Ninja Job Pool support
36
38
# The following only works with the Ninja generator in CMake >= 3.0.
37
39
set (LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING
@@ -1280,6 +1282,13 @@ elseif(LLVM_ENABLE_LTO)
1280
1282
endif ()
1281
1283
endif ()
1282
1284
1285
+ if (LLVM_ENABLE_FATLTO AND (FUCHSIA OR UNIX ))
1286
+ append ("-ffat-lto-objects" CMAKE_C_FLAGS CMAKE_CXX_FLAGS )
1287
+ if (NOT LINKER_IS_LLD_LINK )
1288
+ append ("-ffat-lto-objects" CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS )
1289
+ endif ()
1290
+ endif ()
1291
+
1283
1292
# Set an AIX default for LLVM_EXPORT_SYMBOLS_FOR_PLUGINS based on whether we are
1284
1293
# doing dynamic linking (see below).
1285
1294
set (LLVM_EXPORT_SYMBOLS_FOR_PLUGINS_AIX_default OFF )
You can’t perform that action at this time.
0 commit comments