Skip to content

[5.7] Pre-specialization fixes cherry-picks #58826

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

Conversation

aschwaighofer
Copy link
Contributor

This is a cherry-pick of

PR #58642
PR #58687
PR #58701
PR #58723
PR #58760

PR#58642 Eager specializer: Fix pre-specialization of imported code

We must no pre-specialize imported code (except if this was explicitly
called for by the importing module).

Therefore, don't pre-specialize shared definitions based on their
pre-specialization attributes.

Rather, only pre-specialize if the pre-specialization is called for
using a target: "theFunctionToSpecialize" parameter.

Run OnonePrespecializations before serialization so that module native functions
are not yet marked shared and can be identified as native.

rdar://92337361

PR#58687 CrossModuleOptimization: Don't serialize pre-specialized public entry points

We should continue to use the public pre-specialized entry point from another module. But not block other uses of generic specializations.

PR#58701 SILFunctionBuilder: Don't create [serialized] function post serialization

This might fix the randomly occuring errors of:

SIL verification failed: cannot have a serialized function after the module has been serialized: !F->isSerialized() || !mod.isSerialized() || mod.isParsedAsSerializedSIL()

PR#58723 GenericSpecialization: Move once initialization of pre-specializations earlier before the first query for pre-specialziations

PR#58760 swiftinterface: print _specialize functions with targetFunction parameter in .swiftinterface

If we have an internal function with a _specialize attribute that has
a targetFunction: parameter we want the function to appear in the
.swiftinterface file such that the exported specialization can be picked up by
the compiler.

This is a cherry-pick of

PR#58642
PR#58687
PR#58701
PR#58723
PR#58760

PR#58642 Eager specializer: Fix pre-specialization of imported code

We must no pre-specialize imported code (except if this was explicitly
called for by the importing module).

Therefore, don't pre-specialize `shared` definitions based on their
pre-specialization attributes.

Rather, only pre-specialize if the pre-specialization is called for
using a `target: "theFunctionToSpecialize"` parameter.

Run OnonePrespecializations before serialization so that module native functions
are not yet marked `shared` and can be identified as native.

rdar://92337361

PR#58687 CrossModuleOptimization: Don't serialize pre-specialized public entry points

We should continue to use the public pre-specialized entry point from another module. But not block other uses of generic specializations.

PR#58701 SILFunctionBuilder: Don't create [serialized] function post serialization

This might fix the randomly occuring errors of:

```
SIL verification failed: cannot have a serialized function after the module has been serialized: !F->isSerialized() || !mod.isSerialized() || mod.isParsedAsSerializedSIL()
```

PR#58723 GenericSpecialization: Move once initialization of pre-specializations earlier before the first query for pre-specialziations

PR#58760 swiftinterface: print _specialize functions with targetFunction parameter in .swiftinterface

If we have an internal function with a `_specialize` attribute that has
a `targetFunction:` parameter we want the function to appear in the
.swiftinterface file such that the exported specialization can be picked up by
the compiler.
@aschwaighofer aschwaighofer requested a review from a team as a code owner May 11, 2022 13:18
@aschwaighofer
Copy link
Contributor Author

@swift-ci test

1 similar comment
@aschwaighofer
Copy link
Contributor Author

@swift-ci test

@aschwaighofer aschwaighofer merged commit 94ee0ec into swiftlang:release/5.7 Jun 2, 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.

2 participants