Commit Graph

6754 Commits

Author SHA1 Message Date
Anthony Latsis
f1207ff04f Merge pull request #59171 from AnthonyLatsis/init-delegation-optional
CSGen, SILGen: Fix delegations to `Optional` initializers
2022-07-02 02:28:18 +03:00
swift-ci
987a7807e4 Merge remote-tracking branch 'origin/main' into rebranch 2022-07-01 07:34:04 -07:00
Doug Gregor
0674058ba0 Introduce more AST function conversions for @preconcurrency-adjusted types.
When referring to a `@preconcurrency` function as a value, use the normal
type for the initial declaration reference and then introduce an
appropriate function conversion expression to the adjusted type.

Fixes more issues related to rdar://94597323.
2022-06-30 17:00:56 -07:00
swift-ci
31af44324e Merge remote-tracking branch 'origin/main' into rebranch 2022-06-30 00:14:54 -07:00
Konrad `ktoso` Malawski
ef525424f6 Merge pull request #59700 from xedin/distributed-computed-properties-via-accessor-thunk
[Distributed] Implement distributed computed properties via special accessor
2022-06-30 16:04:36 +09:00
Pavel Yaskevich
2480c99dee [Distributed] Generate thunk for accessor as a regular method
It used to be an accessor but that is not required because
SILDeclRef controls mangling which is the most imprortant
and could be used to emit the right reference.
2022-06-29 17:57:58 -07:00
Pavel Yaskevich
59ec5ab552 [Distributed] SILGen: Remove isDistributed flags from accessor code 2022-06-29 14:49:10 -07:00
Pavel Yaskevich
e8987b4c3e [Distributed] Add a new access strategy - DispatchToDistributedThunk
This strategy is used to dispatch accesses to 'distributed' computed
property to distributed thunk accessor instead of a regular getter
when access happen outside actor isolation context.
2022-06-29 14:49:10 -07:00
Pavel Yaskevich
d68961d407 [Distributed] Synthesize thunks for distributed computed properties 2022-06-29 14:49:10 -07:00
Pavel Yaskevich
5bdf94f346 [Distributed] Remove commented out code and print statements 2022-06-29 14:49:10 -07:00
Konrad `ktoso` Malawski
febfef97d4 [Distributed] Skeleton implementation of distributed computed properties 2022-06-29 14:49:04 -07:00
swift-ci
e7f293814c Merge remote-tracking branch 'origin/main' into rebranch 2022-06-28 13:53:46 -07:00
Michael Gottesman
6a24087f90 Merge pull request #59611 from gottesmm/moveonly-rebase
[no-implicit-copy] Update SILGen/move checker to work with new patterns from copyable_to_moveonly and friends.
2022-06-28 13:45:15 -07:00
swift-ci
4ebba16c36 Merge remote-tracking branch 'origin/main' into rebranch 2022-06-27 09:53:38 -07:00
Konrad `ktoso` Malawski
22b20afce6 [Distributed] make witness be the distributed thunk 2022-06-27 17:08:55 +09:00
Anthony Latsis
bd4c3c7a57 SILGen: Fix delegations to non-throwing Optional initializers
Relying on the optionality depth of the 'new self' value to flatten
an extra level of optionality or handle a failure is not sufficient,
because we may be delegating to an `Optional` initializer.
Instead, flattening should occur if the result type of the enclosing
initializer is less optional than 'new self', and failure handling —
if the enclosing initializer is failable and its result type is as
optional as the potentially flattened 'new self' value.
2022-06-25 19:17:35 +03:00
swift-ci
8bb8db7f79 Merge remote-tracking branch 'origin/main' into rebranch 2022-06-24 21:33:57 -07:00
Konrad `ktoso` Malawski
6a2778645f Revert "Merge pull request #59481 from xedin/distributed-computed-properties"
This reverts commit 8125a85a8f, reversing
changes made to 728971c5b7.
2022-06-25 08:49:00 +09:00
swift-ci
1ec185309f Merge remote-tracking branch 'origin/main' into rebranch 2022-06-24 00:14:42 -07:00
Erik Eckstein
ca291fb147 SIL: store IRGenOptions in SILModule
SIL optimization passes can use the IRGen options to do target specific optimizations.
2022-06-23 22:16:42 +02:00
swift-ci
c2162eda0e Merge remote-tracking branch 'origin/main' into rebranch 2022-06-23 11:34:52 -07:00
Adrian Prantl
7c1c7b6249 Emit debug locations for hop_to_executor instructions.
The function prologue of async funclets inherits its source location
from the hop_to_executor instruction. This makes it easier to produce
logical backtraces, since the PC in logical frames will always point
to the start if the function.

rdar://89776340
2022-06-23 09:40:25 -07:00
Michael Gottesman
3088fe1a01 [move-only] Add support in SILGen for unwrapping moveonlywrapped values before materializing for a function argument.
I discovered this as I began to write some Interpreter tests for move only. This
was triggered by SILGen attempting to pass a non-trivial type to StringBuilder
which is generic, so we needed to materialize.

I also discovered a small bug where we were not properly ignoring class_method
in the move only type eliminator. I just folded the small fix + a test for that
into this commit.
2022-06-22 15:31:57 -07:00
swift-ci
52bea3e936 Merge remote-tracking branch 'origin/main' into rebranch 2022-06-22 00:54:14 -07:00
Michael Gottesman
0d11e8ef69 [no-implicit-copy] Update SILGen/move checker to work with new patterns from copyable_to_moveonly and friends.
This involved doing the following:

1. Update the move only checker to look for new patterns.

2. Teach emitSemanticStore to use a moveonlywrapper_to_copyable to store moveonly
   values into memory. The various checkers will validate that this code is
   correct.

3. When emitting an apply, always unwrap move only variables. In the
   future, I am going to avoid this if a parameter is explicitly marked as also
   being moveonly (e.x.: @moveOnly parameter or @noEscape argument).

4. Convert from moveOnly -> copyable on return inst automatically in SILGen.

5. Fix SILGenLValue emission so we emit an error diagnostic later rather than
   crash. This is needed to keep SILGen emitting move only addresses (that is no
   implicit copy address only lets) in a form that the move only checker then
   will error upon. Without this change, SILGen crashes instead of emitting an
   error diagnostic in the following test:
   .//test/SILOptimizer/move_only_checker_addressonly_fail.swift
2022-06-21 16:47:58 -07:00
Pavel Yaskevich
6e1a44dfdc [SILGen] NFC: Remove an unused var left by distributed actor changes 2022-06-21 10:34:59 -07:00
swift-ci
224bed3a6e Merge remote-tracking branch 'origin/main' into rebranch 2022-06-18 00:13:52 -07:00
Pavel Yaskevich
4fa74c238f [AST] ApplyExpr: Rename shouldApplyDistributedThunk to usesDistributedThunk
Since the thunk is applied to expression during solution application,
the use of this flag has shifted towards stating the fact.
2022-06-17 12:35:54 -07:00
Pavel Yaskevich
cae01486c6 [CSApply] Distributed: Inject distributed thunk when necessary
Replace distributed member references with distributed thunks
when access happens outside of distributed actor context. This
significantly simplifies distributed compute properties implementation.
2022-06-17 12:35:48 -07:00
Pavel Yaskevich
567924f7f6 [Distributed] SILGen: Remove isDistributed flags from accessor code 2022-06-17 12:12:16 -07:00
Pavel Yaskevich
b963c6d20f [Distributed] Remove commented out code and print statements 2022-06-17 12:12:16 -07:00
Konrad `ktoso` Malawski
5a5b7c007c towards distributed getters 2022-06-17 12:12:16 -07:00
Konrad `ktoso` Malawski
079bbcf517 wip 2022-06-17 12:12:16 -07:00
swift-ci
a7303e2ada Merge remote-tracking branch 'origin/main' into rebranch 2022-06-16 19:14:08 -07:00
Doug Gregor
74503f00ff Use the distributed thunk for non-distributed protocol requirements (#59513)
When a distributed-actor-isolated witness is provided for a
non-distributed-actor-isolated requirement, always hop to the
distributed thunk.

While here, mark distributed thunks as being `final`, to ensure that
we always statically call them vs. trying to retrieve them from the
vtable (since they aren't in the vtable).
2022-06-17 11:13:59 +09:00
swift-ci
11797556b7 Merge remote-tracking branch 'origin/main' into rebranch 2022-06-14 21:34:11 -07:00
Doug Gregor
840b7ea1ed Enter actor isolation for a distributed witness via the distributed thunk
We cannot hop to a distributed actor directly, so call through the
distributed thunk instead.
2022-06-14 17:00:26 -07:00
Doug Gregor
25a7988982 Teach witness thunks to hop to the actor when needed.
When a synchronous, actor-isolated declaration witnesses an
asynchronous, not-similarly-isolated requirement, emit an actor hop
within the witness thunk to ensure that we properly enter the context
of the actor.

Fixes #58517 / rdar://92881539.
2022-06-14 16:45:28 -07:00
swift-ci
88bacdc9a1 Merge remote-tracking branch 'origin/main' into rebranch 2022-06-09 16:12:54 -07:00
Michael Gottesman
3f9ac2fbe1 [silgen] Add support for correctly calling imported throwing methods on imported objc classes that are imported with a non-null NSError.
This for some time has been crashing in IRGen in non-asserts builds and hitting
assertions in asserts builds. I think we were missing test coverage here and
that is why this basic-ish thing has been broken.

Basically at a high level, the actual expected ABI here is that the NSError is
marked non-nullable which is different from the expected ABI.

rdar://92755102
2022-06-08 16:28:14 -07:00
swift-ci
3219c2ea33 Merge remote-tracking branch 'origin/main' into rebranch 2022-06-08 08:33:06 -07:00
Joe Groff
fd2a8e7745 Merge pull request #59290 from jckarter/type-expansion-wmo-private-type
SILGen: Carry WMO of type lowering context to closure captures.
2022-06-08 08:21:06 -07:00
Joe Groff
6b6a557611 SILGen: Carry WMO of type lowering context to closure captures.
TypeConverter doesn't know by itself what SILModule it's currently lowering on
behalf of, so the existing code forming the TypeExpansionContext for opaque types
incorrectly set the isWholeModule flag to always false. This created a miscompile
when a public API contained a closure that captured a value involving private types
from another file in the same module because of mismatched type expansion contexts
inside and outside the closure. Fixes rdar://93821679
2022-06-06 19:51:40 -07:00
swift-ci
b749026c5b Merge remote-tracking branch 'origin/main' into rebranch 2022-06-02 15:16:08 -07:00
Pavel Yaskevich
644a720ce6 Merge pull request #59003 from xedin/rdar-92177656
[TypeChecker] Rework type-checking of `for-in` statements
2022-06-02 14:58:56 -07:00
Ben Barham
65ed78d3e7 Merge branch 'main' into manually-merge-main 2022-06-02 10:14:57 -07:00
Slava Pestov
6a4069089a Merge pull request #59218 from slavapestov/fix-concrete-default-argument-abstraction-level
SILGen: Emit calls to default argument generators at the right abstraction level
2022-06-02 12:32:29 -04:00
Joe Groff
b7fd963b79 Merge pull request #59213 from jckarter/keypath-aeic
SILGen: Don't reference external property descriptors for @_alwaysEmitIntoClient properties.
2022-06-02 08:45:10 -07:00
Slava Pestov
27fd1bdc55 SILGen: Emit calls to default argument generators at the right abstraction level
Fixes rdar://problem/90717725 / https://bugs.swift.org/browse/SR-16051.
2022-06-02 00:41:32 -04:00
Zoe Carver
4967cd58a1 Merge pull request #58910 from Huddie/update-cxx-operator-impl 2022-06-01 20:31:18 -07:00