Skip to content
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

Support file compilation dir #41060

Closed
wants to merge 946 commits into from

Conversation

pofat
Copy link
Contributor

@pofat pofat commented Jan 28, 2022

Original PR is already merged to main. Would like to merge it to Swift 5.6 branch as well.

Resolves SR-5694

etcwilde and others added 30 commits December 22, 2021 08:16
…-thoughts

Fix miss-parse diagnostic to say "actor"
This normalizes the path so that we always have the mapping in normal
form.  This fixes a bug in the cross-module import tracing, allowing us
to finally enable the test on Windows.
Enable the Serialization/restrict-swiftmodule-to-revision on Windows.
This test was unnecessarily disabled on Windows due to the use of
environment variables which can be accommodated by using the `env`
command.
[SourceKit] Disable a failing test case for 'request.compile'
This reverts commit 1e5df70.

This does not actually impact the build, so revert it to reduce the
complexity in the build.
Pessimistic, non-iterative data flow for analyzing backward reachability
from a set of last uses to their dominating def or nearest barrier.

Meet: ReachableEnd(predecessor) = intersection(ReachableBegin, successors)

Intended for frequently called utilities where minimizing the cost of
data flow is more important than analyzing reachability across
loops. Expected to visit very few blocks because barriers often occur
close to a last use.

Note: this does not require initializing bitsets for all blocks in the
function for each SSA value being analyzed.
Extract and rewrite the destroy hoisting algorithm originally from
CopyForwarding (in 2014).

This is now a light-weight utility for hoisting destroy_addr
instructions. Shrinking an object's memory lifetime can allow removal
of copy_addr and other optimization.

This is extremely low-overhead and can run at any optimization level
without dependency on any analysis.

This algorithm is:
- Incremental
- SSA-based
- Canonical
- Free from alias analysis

See file-level comments.

The immediate purpose is to specify and test the constraints
introduced by adding lexical variable lifetimes to SIL semantics. It
can be used as a template for end_borrow hoisting.

Ultimately, this utility can be invoked within any pass that needs to
optimize a particular uniquely identified address. It will be used to
remove much of the complexity from CopyForwarding.
Fix the module hash stored in -gmodules skeleton units
Some globals, like static stored properties, are lazily initialized.
For situations where we do a direct access to that property,
we will first call a function that tries to initialize the var if needed,
before returning the address of the global to perform the direct access.
In this specific case, we were not on the right actor when invoking
that function.

fixes rdar://83411416
Revert "build: add a workaround for CMake[>=3.22] and SourceKit"
Serialization: normalize the path before use
tests: enable Serialization test on Windows
`getPointerToMethod()` should acoount for the fact that distributed
thunk is an async function, so direct pointer should be to "async
pointer" information instead of SIL function.
[Distributed] IRGen: A couple of fixes for accessor
…le#40640)

Focus on options that are not defined in `StandaloneOverlay.cmake` and
which defaults are not computed.

Addresses rdar://86723819
[android] Remove ICU build flags since that requirement was dropped in apple#40340
The API is not constrained to methods only, it should support
computed properties as well.
For a declaration that has a named opaque type, create a complete
generic signature describing the opaque type that includes the specified
generic parameters and any requirements within that generic parameter
list. This aligns the representation of named opaque types with
unnamed ('some P') opaque result types, so we get the same inference
behavior.

Introduce an egregious hack in type resolution to fake name lookup for
the generic parameters that are specified as part of a named opaque
type. This is to be replaced with the proper name lookup mechanism to
find those generic parameters, such that type resolution can turn them
into opaque type archetypes.

There are also a number of issues with structural opaque types
that are brought to the fore by named opaque types, especially the fact
that OpaqueTypeDecl does not retain the mapping from specific instances
of `some` to the corresponding (implicit) generic parameter, and
generally assumes that the underlying type of the OpaqueTypeDecl itself
is a generic type parameter. Addressing these shortcomings will benefit
both features.
Generalize the implementation of opaque type declarations to maintain
the "ordinal", which represents a particular "some" utterance in a
structural opaque type, throughout more of the compiler.

The ordinal value for a given "some" matches with the index of the
corresponding generic parameter in the opaque type declaration's
generic signature. To properly be able to determine the ordinal for a
given "some" type representation, retain all of the "some" type
representations in the `OpaqueTypeDecl` (using trailing storage), so
we can map them to the proper generic parameter and ordinal later on.
…ypes.

Serialize the ordinal value of OpaqueTypeArchetypeTypes and properly
set the interface type of OpaqueTypeDecl on deserialization.
Use the POSIX path separators for the test, a subsequent change will add
an explicit test for windows path separators when fixing the JSON
emission.
DougGregor and others added 28 commits January 11, 2022 14:56
…ormance

Tolerate missing Sendable conformances on superclasses.
This may be the cause of the instability we've been seeing on the bots
here. If a type variable is used as the pattern type across allocation
arenas, we may incorrectly reuse a cache entry and it could be
substituted a second time for a bogus type.

rdar://87413287
…serlib

[SwiftSyntax] Avoid linking clangAST in SwiftSyntaxParserLib build
…388c5c882d89cab7912

[move-function] Fix _move SILGen test to match current codegen.
… test.

Due to rdar://87429620, test/AutoDiff/SILOptimizer/differentiation_diagnostics.swift is still using `-requirement-machine=off`. This patch moves the reproducer to a standalone XFAIL test, and removes `-requirement-machine=off` from differentiation_diagnostics.swift.
This will replace the 'concrete type in domain' hack. Instead of
finding some other type parameter with the same concrete type and a
compatible starting symbol, this finds a prefix of the original
term. This allows the induced same-type requirement to be described
with a rewrite path.
…tion-escalation-race

Resolve race between task creation and concurrent escalation and cancellation.
Propagate Pattern Arena When Allocating PackExpansionTypes
…fer (apple#40814)

* [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.

* [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.

* [Distributed] NFC: Update _remoteCall test-case to check multiple different result types
This change adds support for WASI in stdlib tests. Some tests that expect a crash to happen had to be disabled, since there's currently no way to observe such crash from a WASI host.
test: add a local lit configuration for Interop
…ion-rewrite-path-fixes

RequirementMachine: Two more fixes for -requirement-machine-protocol-signatures=verify
2. Implement the logic: Configure DebugCompilationDir with the path specified by the flag, otherwise with current working directory.
3. Add test case
2. Use %target-swiftc_driver for test case instead
3. Add test case for absolute path
4. Code clean
2. Add a test case for path `.`
3. Use regular expression for file path separator
4. Remove std::string() constructor
5. Remove ArgumentIsPath flag
@pofat pofat requested a review from a team as a code owner January 28, 2022 16:17
@pofat pofat closed this Jan 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet