Commit Graph

184973 Commits

Author SHA1 Message Date
eeckstein
d985bf6435 Merge pull request #81567 from eeckstein/fix-builtin-emplace
SILGen: insert an `end_lifetime` in the throw-branch of a `Builtin.emplace`
2025-05-17 23:40:25 +02:00
Michael Gottesman
010443c854 [rbi] Treat a partial_apply as nonisolated(unsafe) if all of its captures are nonisolated(unsafe).
rdar://144111950
2025-05-17 12:21:21 -07:00
finagolfin
35ee368bb9 [android][test] Fix or disable the remaining failing tests on the Android CI (#81398)
Also, fix and enable `IRGen/lto_autolink` for all non-Wasm targets and
`IRGen/static_initializer` for aarch64.


This should get [the community Android
CI](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-24.04-android-build/)
green
[again](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-24.04-android-arm64/).
2025-05-17 13:27:33 +05:30
Karoy Lorentey
02adf95cfb Merge pull request #78799 from lorentey/note-cas-loops
[doc] Atomic.add, .subtract: Add note on atomic codegen
2025-05-16 19:05:10 -07:00
Karoy Lorentey
58dec75066 [test] Oh, we export protocol descriptors for @_aeic properties 2025-05-16 19:02:25 -07:00
Karoy Lorentey
d98002318d [stdlib][runtime] Establish Swift Stdlib/runtime version 6.3 2025-05-16 19:01:32 -07:00
Ben Barham
381684a389 [SourceKit] Remove diagnostics path calculation
The diagnostic group documentation now point to the swift.org URL rather
than the toolchain path, so it no longer needs to be passed all the way
through sourcekitd.

Resolves rdar://151500502.
2025-05-16 17:58:16 -07:00
Hamish Knight
48f6f24f2b Merge pull request #81540 from hamishknight/last-straw
[Sema] Continue type-checking `for` body when preamble fails
2025-05-16 23:57:00 +01:00
Meghana Gupta
f7529eae86 Merge pull request #81520 from meg-gupta/disableverifysemantics
Add a new semantics attribute to disable SIL verification on a function
2025-05-16 15:38:32 -07:00
Mike Ash
0ed232aff0 Merge pull request #81457 from mikeash/swift-inspect-corpse-leak
[swift-inspect] Fix corpse leaks when target doesn't have libswiftCore loaded.
2025-05-16 18:29:12 -04:00
Hamish Knight
a41919c396 Merge pull request #81555 from hamishknight/no-response
[Driver] Avoid using response files for SourceKit
2025-05-16 23:18:25 +01:00
Saleem Abdulrasool
0b080ac5b8 Runtimes: adjust the synchronization module build
Disable CMP0157 with the old driver as this breaks on Windows. Adjust
the Windows platform ID spelling to repair the Windows build. Take the
opportunity to re-order some of the structure so that it is similar to
the other modules.
2025-05-16 14:43:21 -07:00
Slava Pestov
f17baefd7a IRGen: Fix miscompile when a generic parameter is fixed to a tuple containing a pack
If you had something like:

    struct G<T> {
      func f<each U>(_: repeat each U) where T == (repeat each U) {}
    }

We would fulfill 'each U' from the metadata for 'G<(repeat each U)>',
by taking apart the tuple metadata for `(repeat each U)` and forming
a pack.

However this code path was only intended to kick in for a tuple
conformance witness thunk. In the general case, this optimization
is not correct, because if 'each U' is substituted with a
one-element pack, the generic argument of `G<(repeat each U)>` is
just that one element's metadata, and not a tuple. In fact, we
cannot distinguish the one-element tuple case, because the wrapped
element may itself be a tuple.

The fix is to just split off FulfillmentMap::searchTupleTypeMetadata()
from searchTypeMetadata(), and only call the former when we're in
the specific situation that requires it.

- Fixes https://github.com/swiftlang/swift/issues/78191.
- Fixes rdar://problem/135325886.
2025-05-16 17:34:11 -04:00
Pavel Yaskevich
c3c1b4fca0 [stdlib] Adopt @_inheritActorContext(always) on Task.immediate
This change aligns implementation with the current SE-0472 proposal.
2025-05-16 14:27:46 -07:00
Saleem Abdulrasool
029c876f9f Merge pull request #81556 from compnerd/required-core
Runtimes: make `SwiftCore` search `REQUIRED`
2025-05-16 14:08:12 -07:00
Anthony Latsis
f4e49d5a0a Sema: Fix UB in NonisolatedNonsendingByDefault migration diagnosis
The diagnostic can outlive the locally constructed attribute, which was
passed by pointer, if there is an active `DiagnosticTransaction`.
2025-05-16 21:13:08 +01:00
Erik Eckstein
ddbc3a2fad SILGen: insert an end_lifetime in the throw-branch of a Builtin.emplace
When the called closure throws an error, it needs to clean up the buffer.
This means that the buffer is uninitialized at this point.

We need an `end_lifetime` so that the move-only checker doesn't insert a wrong `destroy_addr` because it thinks that the buffer is initialized.

Fixes a mis-compile.

rdar://151461109
2025-05-16 21:54:39 +02:00
Nate Chandler
9b3db3646a [MoveOnlyChecker] Don't complete phis.
Apply the MoveOnlyAddressChecker change from
https://github.com/swiftlang/swift/pull/73358 to the
MoveOnly[Value]Checker.

After 7713eef817, before running value
checking, all lifetimes in the function are completed.  That doesn't
quite work because lifetime completion expects not to encounter
reborrows or their adjacent phis.

rdar://151325025
2025-05-16 11:58:44 -07:00
Nate Chandler
d18a0178bb [Gardening] Whitespace cleanup. 2025-05-16 11:36:22 -07:00
Rintaro Ishizaki
f57e2d7676 Merge pull request #81547 from rintaro/macros-wait-1
[Macros] Revert the 'wait' timeout update back to 1 second
2025-05-16 11:21:01 -07:00
Mike Ash
aea9c0c65a [Runtime] Allow weak references to ErrorObjects.
When ObjC interop is not available, Error values are represented in ErrorObject boxes. These are full HeapObjects, but unowned refcounting ops asserted that the metadata was class metadata. This assert would be hit when destroying an ErrorObject that was weakly referenced. Expand the asserts to accept ErrorObject metadata as well.

rdar://150214921
2025-05-16 14:01:29 -04:00
David Smith
e795eb0d13 Cache the last ObjC bridging conformance we looked up (#81545)
Fixes rdar://151475392
2025-05-16 11:00:13 -07:00
Steven Wu
779c31aa46 Merge pull request #81536 from cachemeifyoucan/eng/PR-151395300
[Caching] Clear benign CodeGen options when building modules
2025-05-16 09:34:58 -07:00
Justice Adams
50e30709a5 [cmake] add Synchronization library to Supplemental build (#81310)
Addresses rdar://150300769

Add Synchronization library to new build system

Land https://github.com/swiftlang/swift/pull/81215 first
2025-05-16 11:20:42 -05:00
Saleem Abdulrasool
a81dbe84bd Runtimes: make SwiftCore search REQUIRED
Update the `find_package` to mark `SwiftCore` as `REQUIRED`. This also
re-orders some of the declarations to make the CMakeLists.txt layout
more uniform across the projects.
2025-05-16 08:45:42 -07:00
Hamish Knight
6eb76dfd15 [Driver] Avoid using response files for SourceKit
We only care about the frontend arguments here, creating a response
file is unnecessary.

rdar://98880399
2025-05-16 15:35:15 +01:00
nate-chandler
f4a2e46e39 Merge pull request #81541 from nate-chandler/rdar139666145
[MoveOnly] Fix consume of addr with mutated field.
2025-05-16 06:55:31 -07:00
eeckstein
8596b2210d Merge pull request #81539 from eeckstein/integer-type-apis
Swift AST/SIL: some additions and improvements of Integer type APIs
2025-05-16 12:00:38 +02:00
Anthony Latsis
4313f8f262 Merge pull request #81538 from AnthonyLatsis/pinus-sibirica
AST, Sema: Fix 2 `NonisolatedNonsendingByDefault` bugs
2025-05-16 09:42:52 +01:00
Pavel Yaskevich
515d203999 Merge pull request #81543 from xedin/inheritActorContextAlways+isolatedAny
[Concurrency] Fix `@_inheritActorContext(always)` to use `forActorIns…
2025-05-16 00:20:38 -07:00
Pavel Yaskevich
fd30319666 Merge pull request #81549 from xedin/rdar-151421590
[CSGen] Prevent `@concurrent` on closures from skipping `throws` infe…
2025-05-16 00:20:20 -07:00
Pavel Yaskevich
cda9866b26 [CSGen] Prevent @concurrent on closures from skipping throws inference
Introduction of `@concurrent` attribute caused an unintended
side-effect in `ClosureEffectsRequest` since the attribute
could only be used on `async` types setting `async` too early
prevented body analysis for `throws` from running.

Resolves: rdar://151421590
2025-05-15 17:17:02 -07:00
Rintaro Ishizaki
8474d27b2f Revert "[Macros] Mitigate plugin process 'wait' failure"
This reverts commit be25ea2584.
2025-05-15 16:15:25 -07:00
Dario Rexin
ee9c0cc14c Merge pull request #81530 from drexin/wip-151176697
[IRGen] Don't set HasLayoutString flag on non-copyable generic types
2025-05-15 15:27:26 -07:00
Nate Chandler
1765f0b1e0 [MoveOnly] Fix consume of addr with mutated field.
Don't fail out of use visitation when encountering an apply which uses a
field of the value as an inout parameter.

rdar://139666145
2025-05-15 15:19:26 -07:00
Nate Chandler
dcde328fe9 [Gardening] MoveOnly: Move and add comment. 2025-05-15 15:18:50 -07:00
Pavel Yaskevich
91047446ad [Concurrency] Fix @_inheritActorContext(always) to use forActorInstanceCapture for parameters
SILGen expects actor instance isolation to always come from captures,
we need to maintain that with implicit isolation capture performed by
`@_inheritActorContext(always)`.
2025-05-15 14:31:59 -07:00
Meghana Gupta
aa01b2ad06 Add a new semantics attribute to disable SIL verification on a function
This provides a way to disable verification per function instead of the entire module.
2025-05-15 14:30:28 -07:00
Michael Gottesman
ef23f97071 [silgen] Teach SILGen how to handle nonisolated(nonsending) thunking for vtables
This ensures that when we generate the vtable thunk for a
nonisolated(nonsending) override (or vis-a-versa), we get the ABI correct. I
also added tests for all of the relevant cases for vtables that we check for
protocols.

rdar://151394209
2025-05-15 14:11:55 -07:00
Michael Gottesman
39a013f807 [silgen] Place the correct isolation on protocol witness thunks.
We were using the isolation from the witness not from the requirement which we
are supposed to do. The witness thunk thunks the isolation from the requirement
to the witness so from an ABI perspective it should have the interface implied
by the requirement's isolation since that is what callers of the witness method
will expect.

rdar://151394209
2025-05-15 14:11:55 -07:00
Michael Gottesman
ff1cbea576 [silgen] Begin placing isolation on protocol witness thunks.
This will cause tests today to crash since even though we are placing the
isolation now, to make it easier to read, I left in the old isolation selecting
code. This code uses the witness's isolation instead of the requirement's
isolation which is incorrect since the protocol witness thunk needs to look the
requirement from an ABI perspective since the two must be substitutable. The
crash comes from the ABI verification I added in earlier commits.
2025-05-15 14:10:43 -07:00
Michael Gottesman
20d7a6c4c4 [sil] Update tests for witness table ABI verification. 2025-05-15 14:04:34 -07:00
Michael Gottesman
ed1654c3cf [sil] Verify that witness table witnesses are ABI compatible with their requirements. 2025-05-15 14:04:34 -07:00
Michael Gottesman
634435d8cf [gardening] Clean up SILWitnessTable::verify before I touch it.
I just renamed a few variables and eliminated a bunch of unnecessary
indentation.

Just to make it easier to review the actual functional change.
2025-05-15 14:04:34 -07:00
Michael Gottesman
e25c664c98 [sil] Change SILDefaultWitnessTable verification to use verificationEnabled instead of #ifndef NDEBUG to match the rest of the SILVerifier.
I think this was just an oversight. There is really no reason that this should
not match the rest of the SILVerifier w here we have moved from using #ifndef
NDEBUG to verificationEnabled checking.
2025-05-15 14:04:34 -07:00
Michael Gottesman
71adae4c0c [gardening] Cleanup SILDefaultWitnessTable before I change it.
Just to make review easier.
2025-05-15 14:04:34 -07:00
Slava Pestov
2eceb299c9 Merge pull request #81516 from slavapestov/fix-pack-task-dealloc
IRGen: Fix out-of-order task_dealloc with parameter pack metadata
2025-05-15 17:02:08 -04:00
Hamish Knight
abf0808173 [Sema] Continue type-checking for body when preamble fails
Skipping type-checking the body when the preamble fails to type-check
seems to be more of a historical artifact than intentional behavior.
Certain elements of the body may still get type-checked through
request evaluation, and as such may introduce autoclosures that won't
be properly contextualized. 

Make sure we continue type-checking the body even if the preamble
fails. We already invalidate any variables bound in the element
pattern, so downstream type-checking should be able to handle it
just fine. This ensures autoclosures get contextualized, and that
we're still able to provide semantic diagnostics for other issues in
the body.

rdar://136500008
2025-05-15 21:23:40 +01:00
Erik Eckstein
140b883b9a SIL: let TypeValueInst.value return an optional Int
and don't require the client to check if it's an integer type.
Also, implement `var value` natively and without bridging.
2025-05-15 21:29:02 +02:00
Erik Eckstein
dbd0af063c AST: add some BuiltinFixedArray and IntegerType APIs 2025-05-15 21:29:02 +02:00