Skip to content

Commit b607743

Browse files
Merge pull request #4641 from swiftwasm/katei/merge-main-2022-06-11
Merge main 2022-06-11
2 parents c0d8455 + 526e329 commit b607743

File tree

298 files changed

+7320
-4212
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

298 files changed

+7320
-4212
lines changed

CHANGELOG.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,22 +177,33 @@ _**Note:** This is in reverse chronological order, so newer entries are added to
177177
For example, this allows writing down the types `some Collection<Int>` and
178178
`any Collection<Int>`.
179179

180-
* References to `optional` methods on a protocol metatype, as well as references to dynamically looked up methods on the `AnyObject` metatype are now supported. These references always have the type of a function that accepts a single argument and returns an optional value of function type:
180+
* References to `optional` methods on a protocol metatype, as well as references to dynamically looked up methods on `AnyObject` are now supported on par with other function references. The type of such a reference (formerly an immediate optional by mistake) has been altered to that of a function that takes a single argument and returns an optional value of function type:
181181

182182
```swift
183183
class Object {
184-
@objc func getTag() -> Int
184+
@objc func getTag() -> Int { ... }
185185
}
186186

187-
@objc protocol P {
187+
let getTag: (AnyObject) -> (() -> Int)? = AnyObject.getTag
188+
189+
@objc protocol Delegate {
188190
@objc optional func didUpdateObject(withTag tag: Int)
189191
}
190192

191-
let getTag: (AnyObject) -> (() -> Int)? = AnyObject.getTag
192-
193-
let didUpdateObject: (any P) -> ((Int) -> Void)? = P.didUpdateObject
193+
let didUpdateObjectWithTag: (Delegate) -> ((Int) -> Void)? = Delegate.didUpdateObject
194194
```
195195

196+
> **Warning**
197+
> Due to the type change, selectors for aforementioned method references that require writing out their type explicitly for disambiguation will no longer compile. To fix this, simply adjust the written type, or resort to a `#if swift(<5.7)` directive when compatibility with older compiler versions is warranted. For example:
198+
>
199+
> ```swift
200+
> #if swift(<5.7)
201+
> let decidePolicyForNavigationAction = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:) as ((WKNavigationDelegate) -> (WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> Void)?)
202+
> #else
203+
> let decidePolicyForNavigationAction = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:) as (WKNavigationDelegate) -> ((WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> Void)?)
204+
> #endif
205+
> ```
206+
196207
* [SE-0349][]:
197208
198209
Loading data from raw memory represented by `UnsafeRawPointer`,

CMakeLists.txt

Lines changed: 114 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,95 @@ else()
6666
any compiler host sources written in Swift")
6767
endif()
6868

69+
# A convenience pattern to match Darwin platforms. Example:
70+
# if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
71+
# ...
72+
# endif()
73+
set(SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")
74+
set(SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")
75+
76+
# A convenient list to match Darwin SDKs. Example:
77+
# if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
78+
# ...
79+
# endif()
80+
set(SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX")
81+
82+
set(SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS})
83+
if(SWIFT_FREESTANDING_FLAVOR STREQUAL "apple")
84+
list(APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING")
85+
if(SWIFT_FREESTANDING_IS_DARWIN)
86+
list(APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING")
87+
endif()
88+
endif()
89+
90+
# If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
91+
if(SWIFT_HOST_VARIANT_SDK)
92+
set(SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
93+
else()
94+
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
95+
set(SWIFT_HOST_VARIANT_SDK_default "LINUX")
96+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
97+
set(SWIFT_HOST_VARIANT_SDK_default "FREEBSD")
98+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
99+
set(SWIFT_HOST_VARIANT_SDK_default "OPENBSD")
100+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
101+
set(SWIFT_HOST_VARIANT_SDK_default "CYGWIN")
102+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
103+
set(SWIFT_HOST_VARIANT_SDK_default "WINDOWS")
104+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
105+
set(SWIFT_HOST_VARIANT_SDK_default "HAIKU")
106+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
107+
set(SWIFT_HOST_VARIANT_SDK_default "ANDROID")
108+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
109+
set(SWIFT_HOST_VARIANT_SDK_default "OSX")
110+
else()
111+
message(FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME}")
112+
endif()
113+
endif()
114+
115+
# If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
116+
if(SWIFT_HOST_VARIANT_ARCH)
117+
set(SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
118+
else()
119+
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
120+
set(SWIFT_HOST_VARIANT_ARCH_default "x86_64")
121+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64")
122+
if(SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX)
123+
set(SWIFT_HOST_VARIANT_ARCH_default "arm64")
124+
else()
125+
set(SWIFT_HOST_VARIANT_ARCH_default "aarch64")
126+
endif()
127+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
128+
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64")
129+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc")
130+
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc")
131+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
132+
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le")
133+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
134+
set(SWIFT_HOST_VARIANT_ARCH_default "s390x")
135+
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te")
136+
set(SWIFT_HOST_VARIANT_ARCH_default "armv5")
137+
# FIXME: Only matches v6l/v7l - by far the most common variants
138+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
139+
set(SWIFT_HOST_VARIANT_ARCH_default "armv6")
140+
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv7l|armv7-a")
141+
set(SWIFT_HOST_VARIANT_ARCH_default "armv7")
142+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
143+
set(SWIFT_HOST_VARIANT_ARCH_default "itanium")
144+
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86|i686)")
145+
set(SWIFT_HOST_VARIANT_ARCH_default "i686")
146+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "wasm32")
147+
set(SWIFT_HOST_VARIANT_ARCH_default "wasm32")
148+
else()
149+
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
150+
endif()
151+
endif()
152+
153+
set(SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default}" CACHE STRING
154+
"Deployment sdk for Swift host tools (the compiler).")
155+
set(SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default}" CACHE STRING
156+
"Deployment arch for Swift host tools (the compiler).")
157+
69158
#
70159
# User-configurable options that control the inclusion and default build
71160
# behavior for components which may not strictly be necessary (tools, examples,
@@ -103,6 +192,16 @@ option(SWIFT_STDLIB_ENABLE_UNICODE_DATA
103192
NOTE: Disabling this will cause many String methods to crash."
104193
TRUE)
105194

195+
include(Threading)
196+
197+
threading_package_default("${SWIFT_HOST_VARIANT_SDK}"
198+
SWIFT_THREADING_PACKAGE_default)
199+
200+
set(SWIFT_THREADING_PACKAGE "${SWIFT_THREADING_PACKAGE_default}"
201+
CACHE STRING
202+
"The threading package to use. Must be one of 'none', 'pthreads',
203+
'darwin', 'linux', 'win32', 'c11'.")
204+
106205
option(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY
107206
"Build dynamic variants of the Swift SDK overlay"
108207
TRUE)
@@ -636,6 +735,7 @@ set(SWIFT_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
636735
set(SWIFT_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin")
637736
set(SWIFT_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib")
638737
if("${SWIFT_NATIVE_SWIFT_TOOLS_PATH}" STREQUAL "")
738+
# This is the normal case. We are not cross-compiling.
639739
set(SWIFT_NATIVE_SWIFT_TOOLS_PATH "${SWIFT_RUNTIME_OUTPUT_INTDIR}")
640740
set(SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER}")
641741
elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
@@ -650,6 +750,12 @@ elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
650750
else()
651751
set(BOOTSTRAPPING_MODE "HOSTTOOLS")
652752
endif()
753+
elseif(BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS")
754+
# We are building using a pre-installed host toolchain but not bootstrapping
755+
# the Swift modules. This happens when building using 'build-tooling-libs'
756+
# where we haven't built a new Swift compiler. Use the Swift compiler from the
757+
# pre-installed host toolchain to build the Swift modules.
758+
set(SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER}")
653759
endif()
654760

655761
if(BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|.*-WITH-HOSTLIBS")
@@ -676,27 +782,6 @@ include_directories(BEFORE
676782
${SWIFT_INCLUDE_DIR}
677783
)
678784

679-
# A convenience pattern to match Darwin platforms. Example:
680-
# if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
681-
# ...
682-
# endif()
683-
set(SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")
684-
set(SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)")
685-
686-
# A convenient list to match Darwin SDKs. Example:
687-
# if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
688-
# ...
689-
# endif()
690-
set(SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX")
691-
692-
set(SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS})
693-
if(SWIFT_FREESTANDING_FLAVOR STREQUAL "apple")
694-
list(APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING")
695-
if(SWIFT_FREESTANDING_IS_DARWIN)
696-
list(APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING")
697-
endif()
698-
endif()
699-
700785
# Configuration flags passed to all of our invocations of gyb. Try to
701786
# avoid making up new variable names here if you can find a CMake
702787
# variable that will do the job.
@@ -713,74 +798,6 @@ if(XCODE)
713798
swift_common_xcode_cxx_config()
714799
endif()
715800

716-
# If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
717-
if(SWIFT_HOST_VARIANT_SDK)
718-
set(SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
719-
else()
720-
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
721-
set(SWIFT_HOST_VARIANT_SDK_default "LINUX")
722-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
723-
set(SWIFT_HOST_VARIANT_SDK_default "FREEBSD")
724-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
725-
set(SWIFT_HOST_VARIANT_SDK_default "OPENBSD")
726-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
727-
set(SWIFT_HOST_VARIANT_SDK_default "CYGWIN")
728-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
729-
set(SWIFT_HOST_VARIANT_SDK_default "WINDOWS")
730-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
731-
set(SWIFT_HOST_VARIANT_SDK_default "HAIKU")
732-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
733-
set(SWIFT_HOST_VARIANT_SDK_default "ANDROID")
734-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
735-
set(SWIFT_HOST_VARIANT_SDK_default "OSX")
736-
else()
737-
message(FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME}")
738-
endif()
739-
endif()
740-
741-
# If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
742-
if(SWIFT_HOST_VARIANT_ARCH)
743-
set(SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
744-
else()
745-
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
746-
set(SWIFT_HOST_VARIANT_ARCH_default "x86_64")
747-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64")
748-
if(SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX)
749-
set(SWIFT_HOST_VARIANT_ARCH_default "arm64")
750-
else()
751-
set(SWIFT_HOST_VARIANT_ARCH_default "aarch64")
752-
endif()
753-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
754-
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64")
755-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc")
756-
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc")
757-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
758-
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le")
759-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
760-
set(SWIFT_HOST_VARIANT_ARCH_default "s390x")
761-
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te")
762-
set(SWIFT_HOST_VARIANT_ARCH_default "armv5")
763-
# FIXME: Only matches v6l/v7l - by far the most common variants
764-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
765-
set(SWIFT_HOST_VARIANT_ARCH_default "armv6")
766-
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv7l|armv7-a")
767-
set(SWIFT_HOST_VARIANT_ARCH_default "armv7")
768-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")
769-
set(SWIFT_HOST_VARIANT_ARCH_default "itanium")
770-
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86|i686)")
771-
set(SWIFT_HOST_VARIANT_ARCH_default "i686")
772-
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "wasm32")
773-
set(SWIFT_HOST_VARIANT_ARCH_default "wasm32")
774-
else()
775-
message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}")
776-
endif()
777-
endif()
778-
779-
set(SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default}" CACHE STRING
780-
"Deployment sdk for Swift host tools (the compiler).")
781-
set(SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default}" CACHE STRING
782-
"Deployment arch for Swift host tools (the compiler).")
783-
784801
# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
785802
# our own defaults. This should only be possible in a unified (not stand alone)
786803
# build environment.
@@ -1042,11 +1059,12 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
10421059
message(STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER}")
10431060
message(STATUS "")
10441061

1062+
message(STATUS "Threading Package: ${SWIFT_THREADING_PACKAGE}")
10451063
message(STATUS "Differentiable Programming Support: ${SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING}")
1046-
message(STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY}")
1047-
message(STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED}")
1048-
message(STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING}")
1049-
message(STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA}")
1064+
message(STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY}")
1065+
message(STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED}")
1066+
message(STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING}")
1067+
message(STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA}")
10501068
message(STATUS "")
10511069
else()
10521070
message(STATUS "Not building Swift standard library, SDK overlays, and runtime")
@@ -1120,6 +1138,9 @@ endif()
11201138
if(SWIFT_BUILD_STDLIB)
11211139
add_subdirectory(stdlib)
11221140
else()
1141+
# Some of the things below depend on the threading library
1142+
add_subdirectory(stdlib/public/Threading)
1143+
11231144
if(SWIFT_BUILD_STDLIB_EXTRA_TOOLCHAIN_CONTENT)
11241145
add_subdirectory(stdlib/toolchain)
11251146
endif()

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,14 @@ will be created in the directory you run the script with a filename
113113
of the form: ``swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz``.
114114

115115
Beyond building the toolchain, ``build-toolchain`` also supports the
116-
following (non-exhaustive) set of useful options::
116+
following (non-exhaustive) set of useful options:
117117

118118
- ``--dry-run``: Perform a dry run build. This is off by default.
119119
- ``--test``: Test the toolchain after it has been compiled. This is off by default.
120-
- ``--distcc``: Use distcc to speed up the build by distributing the c++ part of
120+
- ``--distcc``: Use distcc to speed up the build by distributing the C++ part of
121121
the swift build. This is off by default.
122122
- ``--sccache``: Use sccache to speed up subsequent builds of the compiler by
123-
caching more c++ build artifacts. This is off by default.
123+
caching more C++ build artifacts. This is off by default.
124124

125125
More options may be added over time. Please pass ``--help`` to
126126
``build-toolchain`` to see the full set of options.

SwiftCompilerSources/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ else()
229229
message(FATAL_ERROR "The Swift compiler (${CMAKE_Swift_COMPILER}) differs from the Swift compiler in SWIFT_NATIVE_SWIFT_TOOLS_PATH (${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/swiftc).")
230230
endif()
231231

232-
set(min_supported_swift_version 5.5)
232+
set(min_supported_swift_version 5.8)
233233
if(CMAKE_Swift_COMPILER_VERSION VERSION_LESS "${min_supported_swift_version}")
234234
message(FATAL_ERROR
235235
"Outdated Swift compiler: building with host tools requires Swift ${min_supported_swift_version} or newer. "

SwiftCompilerSources/Sources/Basic/Utils.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
@_exported import BasicBridging
14+
import std
1415

1516
//===----------------------------------------------------------------------===//
1617
// StringRef
@@ -60,6 +61,13 @@ extension String {
6061
return c(BridgedStringRef(data: buffer.baseAddress, length: buffer.count))
6162
}
6263
}
64+
65+
/// Underscored to avoid name collision with the std overlay.
66+
/// To be replaced with an overlay call once the CI uses SDKs built with Swift 5.8.
67+
public init(_cxxString s: std.string) {
68+
self.init(cString: s.c_str())
69+
withExtendedLifetime(s) {}
70+
}
6371
}
6472

6573
extension Array {

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ swift_compiler_sources(Optimizer
1010
AssumeSingleThreaded.swift
1111
ComputeEffects.swift
1212
EscapeInfoDumper.swift
13+
ObjCBridgingOptimization.swift
1314
SILPrinter.swift
1415
MergeCondFails.swift
1516
RangeDumper.swift

0 commit comments

Comments
 (0)