forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 30
[pull] swiftwasm from main #2891
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
…calizationProducer
CFRunLoopRun returns once it finishes, though the kernel may clean us up before we get there. We effectively have a race condition between the kernel cleaning us up and returning from a never returning function. Small programs likely get cleaned up before reaching the ud2 instruction emitted after the never returning function in swift, so they don't notice, but programs of a sufficient size do. At that size, the program will crash after what the programmer expects to be the end of their program.
When requestifying the synthesis of the main function for the type annotated @main via SynthesizeMainFunctionRequest, what were previously were bailouts from AttributeChecker::visitMainTypeAttr had to become returns of nullptr from SynthesizeMainFunctionRequest::evaluate. Consequently, AttributeChecker::visitMainTypeAttr must check whether synthesis actually succeeded before proceeding to to register the main decl for a file. In simple cases, this happened to work because SourceFile::registerMainDecl would return early if the decl being registered was the same as the already registered main decl and in particular if the decl being registered was nullptr and the previously registered one was nullptr as well. When, however, there are multiple types annotated @main, if a function is successfully synthesized for one type but synthesis fails for the second, an attempt will be made to register nullptr as the main decl and will move past the check at the beginning of SourceFile::registerMainDecl, resulting in a crash. Here, we bail from AttributeChecker::visitMainTypeAttr if function synthesis fails and add an assert to SourceFile::registerMainDecl that the provided decl is non-null. rdar://75547146
The cursor info request also needs to output whether a call is "dynamic" or not, move the functions related to this out of Index.cpp and into IDE/Utils.cpp. Also cleanup the `TrailingExpr` handling in `CursorInfoResolver` - it only needs the first expression.
Adds two new fields to the cursor info response: 1. is_dynamic: whether a call is dynamic 2. receivers: receivers of the call (USRs) Users of the CursorInfo request can use "is_dynamic" to decide whether to lookup overrides or not, and then the "receivers" as the starting point of the lookup. Resolves rdar://75385900
…r is also present
rdar://64265821 [SR-12985] appears to have been fixed already. Let’s add a test case for it.
Take the existing CompatibilityOverride mechanism and generalize it so it can be used in both the runtime and Concurrency libraries. The mechanism is preprocessor-heavy, so this requires some tricks. Use the SWIFT_TARGET_LIBRARY_NAME define to distinguish the libraries, and use a different .def file and mach-o section name accordingly. We want the global/main executor functions to be a little more flexible. Instead of using the override mechanism, we expose function pointers that can be set by the compatibility library, or by any other code that wants to use a custom implementation. rdar://73726764
Try to move an end_access down to extend the access scope over all uses of the temporary. For example: %a = begin_access %src copy_addr %a to [initialization] %temp : $*T end_access %a use %temp We must not replace %temp with %a after the end_access. Instead we try to move the end_access after "use %temp". This fixes generation of invalid SIL and/or the invalid removal of access checks.
Previously we diagnosed here if a thrown error was unhandled, but we also have to set the flag, otherwise we produce a warning saying that a 'do/catch' has no throwing operations in its body. Fixes rdar://problem/75274975.
The TSAN release edge should appear before the actual cmpxchg-release.
…r75274975 Sema: Fix effect checking bug with 'for try await'
[SourceKit/CursorInfo] Mark dynamic calls
…dges Concurrency runtime: Fix location of tsan_release edges for actors.
…n-crash [Concurrency] Make asyncMainDrainQueue noreturn
Propagate "unsafe" global actors in the same manner as "safe" global actors. This propagates global actors much further (especially from classes and protocols), allowing more code to implicitly be known to be running on the given global actor. Fixes rdar://75548170.
Add test case for rdar://64265821
…alization producer
TempRValueOpt: extend access scopes
Remove the "initialization loop" for LastSeenScope in verifyDebugScopeHoles. It's not required because LastSeenScope is initialized the same way in the main loop. And most importantly: this loop was missing the check for cleanup locations. rdar://75374671
Sema: Stop checking @main if no decl synthesized.
If we try to instantiate the static data members of an empty class template specialization we'll crash because there is no template param pattern.
Add more relevant instructions to dump in MemBehaviorDumper. Therefore the -enable-mem-behavior-dump-all option can be removed. Also mem-behavior-all.sil into mem-behavior.sil, because the sil-opt command lines don't differ anymore.
* ``begin_access [modify]`` returned MayWrite, but "modify" means, it can be a read as well. Instead, return MayReadWrite. Only for ``begin_access [init]`` return MayWrite. This is more or less cosmetic - probably this bug had no real impact on any optimization. * ``begin_access [deinit]`` needs to return MayReadWrite for the same reason ``destroy_addr`` returns MayReadWrite (see SILInstruction::MemoryBehavior).
Don't move an end_access over a (non-aliasing) end_access. This would destroy the proper nesting of accesses. Also, add some comments, asserts and tests.
…s sometimes. rdar://75783864
…-class-diagnostics [concurrency] Expunge 'actor class' from diagnostics
…er-global-actor [Actor isolation] Initializers don't infer global actor isolation.
arm64e rdar://72047158
…lity-overrides [Concurrency] Add compatibility overrides to Concurrency library.
…eholders This prevents solver from deducing correct solutions.
if an inferred wrapper type is a property wrapper until that type is resolved.
type as a property wrapper.
TempRValueOpt: small fixes/improvements for extending access scopes
…pped value type until the PropertyWrapper constraint has been solved.
Fixes rdar://75783864.
…s-for-placeholders [CSGen] Stop unsound recycling of type variables used for editor plac…
While cloning arguments for existential specializer, do not create copy for object types. Currently, for guaranteed parameter types it unnecessarily creates a copy and cleans it up with a destroy. The discrepency is seen when cloning an instruction like open_existential_ref which was previously using guaranteed operand and had guaranteed forwarding ownership, is now replaced to have the owned copy as its operand during cloning.
…raint [ConstraintSystem] Add a property-wrapper constraint to allow for inference of implicit property wrappers
…che-warm [build-script] Ensure the sccache server is started before building
* Replace lhs/rhs with a/b for clarity of documentation and to match concrete ops. * Concretize additional SIMDMask operations: .&=, .|=, .^=, .==, .!= Also reflect documentation changes back to generic implementations.
It saved some boilerplate, but if it doesn't get inline (as in debug builds), Swift doesn't know how to legalize the type at the call boundary, and we crash.
…on-executor IRGen: Initialize the executor field in continuation contexts again.
Mark async partial_apply's return as musttail.
MaxDesiatov
approved these changes
Mar 25, 2021
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.
See Commits and Changes for more details.
Created by
pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )