forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 30
Resolve conflicts with upstream main
#4187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Introduce the `@preconcurrency` attribute name for `@_predatesConcurrency`, which has been the favored name in the pitch thread so far. Retain the old name for now to help smooth migration.
Implement function parameters of the form `some P` be synthesizing an implicit generic parameter whose requirements come from the opaque type. We then map the opaque type back to the generic parameter, and print as the opaque type. This allows us to write functions with implicit generic parameters: ```swift func f(_: some Collection) { } ``` which is equivalent to: ```swift func f<T: Collection>(_: some T) { } ``` where `T` is an otherwise-unused generic parameter name. All of this is behind the experimental frontend flag `-enable-experimental-opaque-parameters`.
When printing the generic parameters and requirements clauses of declarations that involve opaque parameters, suppress the implicit generic parameters created by the opaque parameters as well as the generic requirements that involve said parameters.
That way, they can be used with Swift interfaces.
Swift string literals are only permitted to contain well-formed UTF-8, but C does not share this restriction, and ClangImporter wasn't checking for that before it created `StringLiteralExpr`s for imported macros; this could cause crashes when importing a header. This commit makes us drop these macros instead. Although invalid UTF-8 always *did* cause a segfault in my testing, I'm not convinced that there isn't a way to cause a miscompile with a bug like this. If we somehow did generate code that fed ill-formed UTF-8 to the builtin literal init for Swift.String, the resulting string could cause undefined behavior at runtime. So I have additionally added a defensive assertion to StringLiteralInst that any UTF-8 string represented in SIL is well-formed. Hopefully that will catch any non-crashing compiler bugs like this one. Fixes rdar://67840900.
Async functions are now expected to set ExpectedExecutor in their prologue (and, generally, immediately hop to it). I updated the prologue code for a bunch of function emission, most of which was uninteresting. Top-level code was not returning to the main executor, which is now fixed; fortunately, we weren't assuming that we were on the main executor yet. We had some code that only kicked in when an ExpectedExecutor wasn't set which made us capture the current executor before a hop and then return to it later. This code has been removed; there's no situation in which save-and-return is the semantically correct thing to do given the possibility of hop optimization. I suspect it could also have led to crashes if the current executor is being kept alive only because it's currently running code. If we ever add async functions that are supposed to inherit their caller's executor, we should have the caller pass the right executor down to it. This is the first half of SE-0338; the second, sendability enforcement, is much more complicated, and Doug has volunteered to do it. Fixes rdar://79284465, as well as some tests that were XFAILed on Windows.
…-lib` Since the clang 1400 rebranch, we cannot include in `LLVM_ENABLE_PROJECTS` and more and need to explicitly specify source directory.
Squashed commit of the following: commit e5a05ff Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 27 17:45:31 2022 +0900 cleanup commit 1f751ce Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 27 14:50:33 2022 +0900 cleanups commit c632f32 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 27 14:01:09 2022 +0900 add test for generic from actor decl commit 09b8bd5 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 27 14:00:58 2022 +0900 cleanups commit 31f4d0c Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 27 11:40:51 2022 +0900 fix test commit ad4db2f Merge: 97227ed 07e2dfd Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 26 23:31:41 2022 +0900 Merge branch 'main' into wip-zzz commit 97227ed Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 26 21:01:25 2022 +0900 remove @_dynamic methods! fix tests commit 1c79344 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 19 12:51:09 2022 +0900 cleanup wip stuck fixed the stack cleanups cleanups pretty good now weird load rki works remove hack add take + throw + return fix test more tests fixed more tests fixed more tests fixed commit 3ed494c Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Tue Jan 18 21:09:28 2022 +0900 stack issues in SIL verification commit 5cf43a7 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Tue Jan 18 09:19:51 2022 +0900 about to call the remoteCall goot to return, but missing subs commit df8e471 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 13 14:09:49 2022 +0900 [Distributed] Refactor Invocation to Decoder/Encoder getting there done-recording working on the string init stuck trying to get String initializer SILFunction created the remote call target commit fc7bd62 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 23:01:14 2022 +0900 [Distributed] Pass arguments from Invocation to HBuffer commit cafc2cc Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 22:08:47 2022 +0900 works commit a7d0183 Author: Pavel Yaskevich <pyaskevich@apple.com> Date: Tue Jan 11 15:48:58 2022 -0800 [Distributed] Adjust interface of `swift_distributed_execute_target` Since this is a special function, `calleeContext` doesn't point to a direct parent but instead both parent context (uninitialized) and resume function are passed as last arguments which means that `callContext` has to act as an intermediate context in call to accessor. commit c1f830b Author: Pavel Yaskevich <pyaskevich@apple.com> Date: Tue Jan 11 17:00:08 2022 -0800 [Distributed] Drop optionality from result buffer in `_executeDistributedTarget` `RawPointer?` is lowered into a two arguments since it's a struct, to make it easy let's just allocate an empty pointer for `Void` result. commit c83c2c3 Author: Pavel Yaskevich <pyaskevich@apple.com> Date: Tue Jan 11 17:02:45 2022 -0800 [Distributed] NFC: Update _remoteCall test-case to check multiple different result types commit 29e7cf5 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 21:32:37 2022 +0900 wip commit 9128ecc Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 20:46:20 2022 +0900 wip commit a6b2a62 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 20:38:22 2022 +0900 wip commit 8b188f0 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 16:55:10 2022 +0900 wip commit 3796bec Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Jan 12 16:55:02 2022 +0900 wip commit 0ffc68b Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Tue Jan 11 21:44:58 2022 +0900 [Distributed] Implementing ad-hoc protocol requirements commit 7886257 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 6 18:03:54 2022 +0900 cleanup commit 5f4ab89 Merge: 24a628e fdda6f2 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 6 15:51:39 2022 +0900 Merge branch 'main' into wip-impl-execute-swift commit 24a628e Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Thu Jan 6 15:33:21 2022 +0900 wip commit 69e7fed Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Dec 22 06:36:45 2021 +0900 [Distributed] comment out distributed_actor_remoteCall for now commit 376733a Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Tue Dec 21 16:00:06 2021 +0900 reimplement distributed get type info impls commit 74ab478 Author: Konrad `ktoso` Malawski <konrad_malawski@apple.com> Date: Wed Dec 15 21:37:08 2021 +0900 [Distributed] Implement func metadata and executeDistributedTarget dont expose new entrypoints able to get all the way to calling _execute
…resilience domain of the function.
because they need a minimum deployment target, which might not be available in client modules, which de-serialize such functions.
…t-name Specify the segment name that contains the reflection sections.
seperate -> separate
…ecks Disable deployment target specific optimizations for inlinable functions
Opaque parameters
Swiftmodule loading was previously restricted by compiler tag only for resilient modules. This left room for resilient modules with a corrupted control block to pass as non-resilient modules. Apply the same check for non-resilient modules (so all modules) when read from a tagged compiler. rdar://88081456
…tion (swiftlang#41030) Add `where Element: Differentiable` to `Array.DifferentiableView` declaration.
Addresses rdar://88092462
…ormance-minimization-fixes RequirementMachine: Fix some bugs with concrete conformance minimization
…050684 [CodeCompletion] Let FindLocalVal walk into ExprPattern
Adding this relatively recent talk to `ExternalResources.md`.
…around AutoDiff: Explicitly filter out invalid requirements
Changelog updates
[ChangeLog] Add an entry for SE-0335.
Fixes rdar://88200899
…lue lifetime checking before diagnostic constant prop. This is part of a larger piece of work that is going to introduce the ability in SIL for us to wrap trivial values in a move only type wrapper and thus perform ownership based diagnostics upon those trivial values. This is being done now so that we can perform SSA based ownership diagnostics on trivial types. This will allow us to eventually be able to do things like no escape analysis on UnsafePointer. That all sounds great, but also we must consider how this effects the rest of the optimizer. For instance, what if we want to have a no escape integer and have overflow checks used upon it! To ensure that we can do this, the authors realized that we did not need to persist the ownership information so late in that part of the pipeline and we can just do the ownership checking earlier than constant propagation and then lower. This is safe to do since the rest of the optimizer will not introduce escapes of a pointer or extra copies unlike if the underlying non move only type variant was also non-trivial. With that in hand, this PR moves these two move only passes earlier than constant propagation for this purpose. The reason they were put in the current position vs earlier is that I wanted them to run after predictable dead allocation elimination since it cleaned up the SIL I was reading as I designed it. There isn't any reason that they can't run earlier. Once I bring in the new SIL move only type wrapper, after these run, the trivial type lowering will then run.
When determining whether to warn, error, or be silent about concurrency-related issues detected between a protocol requirement and its witness, decide based on the context of the conformance rather than based on the context of the witness. Fixes rdar://88205585.
…emotecall [Distributed] Issues on 32bit, disable for now
…f099d4e76915e1ceb6eff0c [move-only] Move move function kills values checking and move only value lifetime checking before diagnostic constant prop.
…onformance-context
Look through defer bodies in actor isolation checking
# Conflicts: # lib/Driver/WebAssemblyToolChains.cpp
yonihemi
approved these changes
Jan 29, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.