Skip to content

Commit 9cb5327

Browse files
committed
Runtimes: support generic metadata prespecialization for all of Core
Also provide a flag to enabled/disable it. Addresses rdar://144255917
1 parent 4306b57 commit 9cb5327

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

Runtimes/Core/CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,13 @@ option(SwiftCore_ENABLE_FILESYSTEM_SUPPORT "Build for systems that have a filesy
103103
option(SwiftCore_ENABLE_OS_TRACE_LAZY_INIT "Use os_trace call to check if lazy init has been completed before making os_signpost calls." ${SwiftCore_HAS_OS_TRACE})
104104
option(SwiftCore_HAS_DARWIN_LIBMALLOC "Use Darwin malloc features" ${APPLE})
105105

106+
if("${APPLE}" OR "${LINUX}")
107+
set(SwiftCore_ENABLE_PRESPECIALIZATION_default ON)
108+
else()
109+
set(SwiftCore_ENABLE_PRESPECIALIZATION_default OFF)
110+
endif()
111+
option(SwiftCore_ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization" "${SwiftCore_ENABLE_PRESPECIALIZATION_default}")
112+
106113
defaulted_option(SwiftCore_ENABLE_BACKTRACING "Enable backtracing runtime support")
107114
defaulted_set(SwiftCore_BACKTRACER_PATH STRING "Set a fixed path to the Swift backtracer")
108115
defaulted_option(SwiftCore_ENABLE_FATALERROR_BACKTRACE "Build stdlib fatalError with backtrace output")
@@ -181,7 +188,8 @@ add_compile_options(
181188
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -target-min-inlining-version -Xfrontend min>"
182189
"$<$<AND:$<NOT:$<BOOL:${SwiftCore_ENABLE_OBJC_INTEROP}>>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -disable-objc-interop>"
183190
"$<$<AND:$<PLATFORM_ID:Windows>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xcc -Xclang -Xcc -fbuiltin-headers-in-system-modules>"
184-
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>")
191+
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
192+
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>")
185193

186194
include_directories(include)
187195

Runtimes/Core/core/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,7 @@ target_compile_options(swiftCore PRIVATE
283283
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -group-info-path -Xfrontend ${CMAKE_CURRENT_SOURCE_DIR}/GroupInfo.json>"
284284
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -disable-autolinking-runtime-compatibility-concurrency>"
285285
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -disable-objc-attr-requires-foundation-module>"
286-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -require-explicit-availability=ignore>"
287-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -prespecialize-generic-metadata>")
286+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -require-explicit-availability=ignore>")
288287

289288
if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
290289
# Using these in MinSizeRel would result in a 15% increase in the binary size

0 commit comments

Comments
 (0)