Skip to content

Commit 2a36723

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 2a36723

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

Runtimes/Core/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ option(SwiftCore_HAS_DARWIN_LIBMALLOC "Use Darwin malloc features" ${APPLE})
106106
defaulted_option(SwiftCore_ENABLE_BACKTRACING "Enable backtracing runtime support")
107107
defaulted_set(SwiftCore_BACKTRACER_PATH STRING "Set a fixed path to the Swift backtracer")
108108
defaulted_option(SwiftCore_ENABLE_FATALERROR_BACKTRACE "Build stdlib fatalError with backtrace output")
109+
defaulted_option(SwiftCore_ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization")
109110

110111
option(SwiftCore_ENABLE_CLOBBER_FREED_OBJECTS "" OFF)
111112
option(SwiftCore_ENABLE_RUNTIME_LEAK_CHECKER "" OFF)
@@ -181,7 +182,8 @@ add_compile_options(
181182
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -target-min-inlining-version -Xfrontend min>"
182183
"$<$<AND:$<NOT:$<BOOL:${SwiftCore_ENABLE_OBJC_INTEROP}>>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -disable-objc-interop>"
183184
"$<$<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>")
185+
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
186+
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>")
185187

186188
include_directories(include)
187189

Runtimes/Core/cmake/modules/DefaultSettings.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ if(APPLE)
4141
set(SwiftCore_ENABLE_RUNTIME_OS_VERSIONING ON)
4242
set(SwiftCore_ENABLE_OVERRIDABLE_RETAIN_RELEASE ON)
4343
set(SwiftCore_THREADING_PACKAGE "DARWIN")
44+
set(SwiftCore_ENABLE_PRESPECIALIZATION_default ON)
4445
elseif(CMAKE_SYSTEM_NAME STREQUAL "WASM")
4546
set(SwiftCore_OBJECT_FORMAT_default "elf")
4647
set(SwiftCore_THREADING_PACKAGE "NONE")
@@ -49,13 +50,15 @@ elseif(LINUX OR ANDROID OR BSD)
4950
set(SwiftCore_ENABLE_FATALERROR_BACKTRACE_default ON)
5051
if(LINUX)
5152
set(SwiftCore_THREADING_PACKAGE "LINUX")
53+
set(SwiftCore_ENABLE_PRESPECIALIZATION_default ON)
5254
else()
5355
set(SwiftCore_THREADING_PACKAGE "PTHREADS")
5456
endif()
5557
elseif(WIN32)
5658
set(SwiftCore_OBJECT_FORMAT_default "coff")
5759
set(SwiftCore_THREADING_PACKAGE "WIN32")
5860
set(SwiftCore_ENABLE_FATALERROR_BACKTRACE_default ON)
61+
set(SwiftCore_ENABLE_PRESPECIALIZATION_default ON)
5962
endif()
6063

6164
include("${SwiftCore_VENDOR_MODULE_DIR}/DefaultSettings.cmake" OPTIONAL)

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)