Commit Graph

3841 Commits

Author SHA1 Message Date
swift-ci
6625e7f9e4 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-20 00:36:12 -07:00
Kuba Mracek
a31c3388e4 [embedded] Add a temporary flag that turns throws into traps so that programs that use throwing can at least be compiled for now 2023-09-19 22:00:51 -07:00
swift-ci
8b97d43de6 Merge pull request #68598 from artemcm/ExplicitInterfaceTypecheckFix
[Explicit Modules] Fix detection of a type-checking action in `ExplicitModuleInterfaceBuilder`
2023-09-19 14:52:27 -07:00
Artem Chikin
373d49134a [Explicit Modules] Fix detection of a type-checking action in 'ExplicitModuleInterfaceBuilder'
When we run an interface verification tasks with Explicit module builds, we directly invoke a '-explicit-interface-module-build' instance with a '-typecheck-module-from-interface' action. So the builder needs to recognize this as a typechecking invocation. In implicit builds, this gets lowered into a separate compiler sub-instance with a '-typecheck' action, for some reason.

resolves rdar://115565571
2023-09-19 10:38:42 -07:00
swift-ci
af093b3243 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-19 09:34:51 -07:00
Kuba Mracek
e898a9a4fd [embedded] Build the stdlib for x86_64 too, and run executable tests on x86_64 2023-09-18 20:25:32 -07:00
Allan Shortlidge
12019c5781 Frontend: Describe all reasons a module could not be loaded.
The `unable to load compiled module` diagnostic could be incomplete because
`invalidModuleReason()` did not have a description for every serialization
status code.

Resolves rdar://115664927
2023-09-18 17:04:26 -07:00
Ben Barham
041691184c [CMake] Replace early swift-syntax with FetchContent
Use FetchContent to include swift-syntax directly in swift. This can be
thought of as an `add_subdirectory` for a directory outside the root.

The default build directory will be `_deps/swiftsyntax-subbuild/`, though
the modules and shared libraries will be built in `lib/swift/host` by
passing down `SWIFT_HOST_LIBRARIES_DEST_DIR` to avoid copying them as we
were doing previously.
2023-09-18 14:44:10 -07:00
swift-ci
7d8091fe2e Merge remote-tracking branch 'origin/main' into rebranch 2023-09-18 12:14:41 -07:00
Kuba Mracek
11221d815c [embedded] DisableLegacyTypeInfo in embedded mode and add missing REQUIRES: swift_in_compiler in a test 2023-09-17 13:17:08 -07:00
Kuba Mracek
9f9e90657d [embedded] Detect WMO via .hasPrimaryInputs() instead of -wmo flag presense 2023-09-16 12:56:23 -07:00
Kuba Mracek
ae2e903574 [embedded] Build an initial embedded Swift standard library
This isn't a "complete" port of the standard library for embedded Swift, but
something that should serve as a starting point for further iterations on the
stdlib.

- General CMake logic for building a library as ".swiftmodule only" (ONLY_SWIFTMODULE).
- CMake logic in stdlib/public/core/CMakeLists.txt to start building the embedded stdlib for a handful of hardcoded target triples.
- Lots of annotations throughout the standard library to make types, functions, protocols unavailable in embedded Swift (@_unavailableInEmbedded).
- Mainly this is about stdlib functionality that relies on existentials, type erasure, metatypes, reflection, string interpolations.
- We rely on function body removal of unavailable functions to eliminate the actual problematic SIL code (existentials).
- Many .swift files are not included in the compilation of embedded stdlib at all, to simplify the scope of the annotations.
- EmbeddedStubs.swift is used to stub out (as unavailable and fatalError'd) the missing functionality.
2023-09-16 12:38:46 -07:00
swift-ci
f316c11bd3 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-16 08:12:44 -07:00
Kuba (Brecka) Mracek
c6ce442856 Merge pull request #68358 from zoecarver/embedded-requires-wmo
[embedded] Require whole module optimization in embedded mode.
2023-09-16 08:11:50 -07:00
swift-ci
17a5d30d54 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-15 16:14:15 -07:00
zoecarver
a5d7d2f020 [embedded] Require whole module optimization in embedded mode. 2023-09-15 16:41:06 -06:00
Hamish Knight
746128c7aa Use StringMap in EditorDiagConsumer
As noted by the comment, storing a `StringRef` is
indeed brittle. Update to use a StringMap.

rdar://111589090
2023-09-15 18:27:49 +01:00
swift-ci
6b5cd2f7b4 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-14 19:15:16 -07:00
Alexis Laferrière
19271140ef Merge pull request #68523 from xymus/print-public
ModuleInterface: prepare to accept access-level on imports in swiftinterfaces
2023-09-14 19:08:24 -07:00
Alexis Laferrière
3496a74fd9 [ModuleInterface] Print the public keyword on imports in Swift 6 mode
If the access-level on imports proposal is accepted as written, all
imports printed in swiftinterfaces will be `public`. Whether or not we
require the explicit `public` keyword in Swift 6 mode, printing it will
have no downside. It also goes along with the mentality that
swiftinterfaces should be more explicit than implicit.

rdar://115455383
2023-09-14 10:47:37 -07:00
swift-ci
a9f9785399 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-13 21:02:48 -07:00
Shubham Sandeep Rastogi
712e87c23c Merge pull request #68441 from rastogishubham/MCCASSwift2
Add driver options to swift to enable MCCAS
2023-09-13 10:18:07 -07:00
Kuba Mracek
d90cf10fae [embedded] Avoid marking all public symbols as 'do not dead strip' in embedded Swift 2023-09-12 22:25:27 -07:00
Shubham Sandeep Rastogi
7a1a3d61ed Add MCCAS options to swift and guard mccas.swift properly
Revert "Revert "Add driver options to swift to enable MCCAS.""

This reverts commit 0e8554bb15.
2023-09-12 14:10:59 -07:00
swift-ci
1363f59915 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-12 03:54:25 -07:00
Evan Wilde
0e8554bb15 Revert "Add driver options to swift to enable MCCAS."
This reverts commit 3c949028e8.
2023-09-11 13:36:36 -07:00
Kuba Mracek
9a380212c1 [embedded] Add an interim attr to mark declarations as unavailable in embedded Swift
Implemented as custom parsing logic instead of a proper attribute because we want it to be rewritten at parse time (into nothing in regular Swift mode, and into unconditional unavailable attr in embedded Swift mode), no serialization, printing, etc.
2023-09-10 08:23:31 -07:00
swift-ci
e77b2ee5b0 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-08 18:56:08 -07:00
Pavel Yaskevich
c75aea3654 Merge pull request #68390 from xedin/checked-continuations-for-foreign-callbacks
Provide ability to use CheckedContinuation when suspending for an async ObjC call
2023-09-08 18:52:04 -07:00
Shubham Sandeep Rastogi
585c700965 Merge pull request #68138 from rastogishubham/MCCASSwift
Add driver options to swift to enable MCCAS.
2023-09-08 10:17:10 -07:00
swift-ci
42afa01a39 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-08 08:13:53 -07:00
Alexis Laferrière
0a3ca91275 Merge pull request #68382 from xymus/serial-special-case-here
Serialization: Tagged compilers should rebuild modules from swiftinterface under the resource-dir
2023-09-08 07:56:26 -07:00
Shubham Sandeep Rastogi
3c949028e8 Add driver options to swift to enable MCCAS.
To enable MCCAS, the following driver options have been added

-cas-backend: Enable MCCAS backend in swift, the option
-cache-compile-job must also be used.

-cas-backend-mode=native: Set the CAS Backend mode to emit an object
file after materializing it from the CAS.

-cas-backend-mode=casid: Emit a file with the CASID for the CAS that was
created.

-cas-backend-mode=verify: Verify that the object file created is
identical to the object file materialized from the CAS.

-cas-emit-casid-file: Emit a .casid file next to the object file when
CAS Backend is enabled.
2023-09-08 07:13:57 -07:00
swift-ci
b73bfe4686 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-07 21:14:44 -07:00
Allan Shortlidge
e7d32503af Merge pull request #68384 from tshortli/emit-module-lazy-typecheck-inherited-protocol-printing
ModuleInterface: Fix inheritance clauses in lazily emitted swiftinterfaces
2023-09-07 20:56:36 -07:00
Pavel Yaskevich
b8fb94b73c [Frontend] NFC: Add a flag to enable bridging of completion handlers to checked continuations 2023-09-07 17:35:35 -07:00
swift-ci
6dcf2a4872 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-07 16:36:57 -07:00
Doug Gregor
b7c2cb8a9e Merge pull request #68379 from DougGregor/swift-syntax-multiple-files 2023-09-07 16:20:41 -07:00
Alexis Laferrière
52f2cc381d Serialization: allow rebuilding modules from swiftinterface in release builds
There is some special logic for loading modules from under the
resource-dir. In this case, if there's a swiftmodule next to the
swiftinterface we refuse to rebuild the module from the swiftinterface.
It was designed to catch misconfigurations, either locally if we forget
to rebuild the stdlib from source or at deployement.

It has been causing issues recently with LLDB and other tools. Let's
keep this behavior only for the local scenario by limiting it to
untagged compilers. This restriction aligns well with the strict
compiler tag check for swiftmodule compatibility.
2023-09-07 14:42:34 -07:00
Allan Shortlidge
7c1b150f39 ModuleInterface: Resolve inherited types when computing unsatisfiable conformances.
Previously, unsatisfiable conformances could be omitted from emitted
`.swiftinterface` files in lazy typechecking mode since inherited types might
be unresolved when gathering the conformances.

Adding these test cases also revealed that serialization restrictions needed to
be relaxed in order to accomodate unsatisfiable conformances.
2023-09-07 13:57:39 -07:00
Allan Shortlidge
eee122c093 ModuleInterface: Resolve inherited types when recording indirect conformances.
Previously, indirect public conformances provided by conforming to an internal
protocol could be skipped in a `.swiftinterface` in lazy typechecking mode
since inherited types might not be resolved before collecting the indirect
conformances.
2023-09-07 13:57:39 -07:00
swift-ci
5bb21c1303 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-07 01:14:42 -07:00
Kuba Mracek
25eb997a28 [embedded] Add basics of module serialization, importing and validation in embedded Swift.
- Add a flag to the serialized module (IsEmbeddedSwiftModule)
- Check on import that the mode matches (don't allow importing non-embedded module in embedded mode and vice versa)
- Drop TBD support, it's not expected to work in embedded Swift for now
- Drop auto-linking backdeploy libraries, it's not expected to backdeploy embedded Swift for now
- Drop prespecializations, not expected to work in embedded Swift for now
- Use CMO to serialize everything when emitting an embedded Swift module
- Change SILLinker to deserialize/import everything when importing an embedded Swift module
- Add an IR test for importing modules
- Add a deserialization validation test
2023-09-06 20:06:36 -07:00
swift-ci
f52fc06ac7 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-06 18:14:46 -07:00
Zoe Carver
74e22dc450 Merge pull request #68244 from zoecarver/embedded-swift 2023-09-06 17:58:39 -07:00
swift-ci
1c2e216cd5 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-06 15:13:57 -07:00
Steven Wu
f5407533ee Merge pull request #68164 from cachemeifyoucan/eng/PR-swift-caching-option-declare
[Option][Caching] Clean up option caching exclusion list
2023-09-06 14:56:18 -07:00
swift-ci
2b13c6e4b3 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-06 14:34:53 -07:00
Steven Wu
afc2bab7f9 Merge pull request #67942 from cachemeifyoucan/eng/PR-swift-scan-plugin-cas-support
[SwiftScan][Caching] Add support for plugin CAS for caching
2023-09-06 14:18:42 -07:00
swift-ci
0407c3d3b2 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-06 13:34:53 -07:00