Commit Graph

5054 Commits

Author SHA1 Message Date
swift-ci
1e02c3ba40 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-20 10:55:02 -08:00
Artem Chikin
8e0e51a0fd Merge pull request #63697 from artemcm/SeparateExplicitModuleInputMaps
Separate parsing out Swift and Clang modules from the explicit modulemap
2023-02-20 10:46:17 -08:00
Nate Chandler
ec1a5e0911 Add attr to enable lexical lifetime per function.
Enables modules to migrate to the new lifetime rules incrementally.
2023-02-18 11:59:54 -08:00
swift-ci
1c15b96277 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-17 22:33:50 -08:00
eeckstein
b8a4b874c1 Merge pull request #63748 from eeckstein/fix-keypath-inst
SIL: add type-dependent operands to the `keypath` instruction
2023-02-18 07:20:04 +01:00
swift-ci
c81c374491 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-17 15:34:22 -08:00
Michael Gottesman
bfd140f988 Merge pull request #62937 from jckarter/nonescaping-closure-move-only
[WIP] Treat nonescaping closure types as owned types in SIL; use borrowing to model capture lifetimes
2023-02-17 15:30:31 -08:00
swift-ci
08bc6ec292 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-17 12:35:58 -08:00
Artem Chikin
a0b5dd4241 Separate parsing out Swift and Clang modules from the explicit module map
Since https://github.com/apple/swift/pull/63178 added support for Clang modules in the explicit module map, it is possible for there to be multiple modules with the same name: a Swift module and a Clang module. The current parsing logic just overwrites the corresponding entry module in a hashmap so we always only preserved the module that comes last, with the same name.

This change separates the parsing of the modulemap JSON file to produce a separate Swift module map and Clang module map. The Swift one is used by the 'ExplicitSwiftModuleLoader', as before, and the Clang one is only used to populate the ClangArgs with the requried -fmodule-... flags.
2023-02-17 09:03:53 -08:00
Erik Eckstein
2c1d48b69c SIL: add type-dependent operands to the keypath instruction
It's need to correctly maintain dependencies from an open-existential instruction to a `keypath` instruction which uses the opened type.
Fixes a SILVerifier crash.

rdar://105517521
2023-02-17 17:48:55 +01:00
L-j-h-c
913dcd62b8 [Gardening] fix typos across docs and codebase
fix typos across docs and codebase
2023-02-17 23:55:16 +09:00
Joe Groff
69e4b95fb8 SIL: Model noescape partial_applys with ownership in OSSA.
Although nonescaping closures are representationally trivial pointers to their
on-stack context, it is useful to model them as borrowing their captures, which
allows for checking correct use of move-only values across the closure, and
lets us model the lifetime dependence between a closure and its captures without
an ad-hoc web of `mark_dependence` instructions.

During ownership elimination, We eliminate copy/destroy_value instructions and
end the partial_apply's lifetime with an explicit dealloc_stack as before,
for compatibility with existing IRGen and non-OSSA aware passes.
2023-02-16 21:43:53 -08:00
swift-ci
3de5d956ff Merge remote-tracking branch 'origin/main' into rebranch 2023-02-16 08:14:17 -08:00
Holly Borla
85f2a1a234 [Macros] Factor calls to ResolveMacroRequest into Decl::getResolvedMacro.
This prevents call-sites from making the mistake of passing an incorrect
DeclContext to the request, which can cause re-typechecking issues.
2023-02-15 18:52:02 -08:00
swift-ci
b08054dcc3 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-14 09:38:50 -08:00
Alexis Laferrière
9a1a32cd9b Merge pull request #63639 from xymus/serial-precise-tag
[Serialization] Don't fail the precise tag check if only the last digit doesn't match
2023-02-14 09:31:31 -08:00
Alexis Laferrière
a5ccbf3264 [Serialization] Only remark if the last digit mismatches in precise tag check
Weaken the precise tag check at loading swiftmodule to accept binary
modules build by a compiler with a tag where only the last digit is
different. We assume that the other digit in the version should ensure
compiler and stdlib compatibility. If the last digit doesn't match,
still raise a remark.

rdar://105158258
2023-02-13 14:28:10 -08:00
Alexis Laferrière
e079db233f [Serialization] Update env var to disable precise tag check
Rename the env var to SWIFT_IGNORE_SWIFTMODULE_REVISION as it's
recommended for use outside of testing.
2023-02-13 13:51:30 -08:00
Alexis Laferrière
4579e37e61 [Serialization] Intro distinct compiler revision string for serialization 2023-02-13 13:51:30 -08:00
swift-ci
2b5b1424f4 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-11 23:54:59 -08:00
John McCall
10e487b4cf Merge pull request #63589 from rjmccall/pack_length
Add a pack_length SIL instruction for measuring the length of a pack
2023-02-12 02:40:23 -05:00
swift-ci
0f633ce557 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-11 22:54:15 -08:00
Ben Barham
e15ea7ae4d Merge pull request #63403 from bnbarham/so-much-re-index
[Index] Prevent re-indexing system modules repeatedly
2023-02-11 22:40:47 -08:00
swift-ci
96a47e7353 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-11 11:14:21 -08:00
John McCall
a38478724a Add a pack_length SIL instruction for measuring the length of a pack 2023-02-10 21:50:44 -05:00
Holly Borla
f04f512184 [Macros] Add a new macro role for attached peer macros. 2023-02-10 14:38:22 -08:00
Ben Barham
6269643b4d [Index] Prevent re-indexing system modules repeatedly
If a module was first read using the adjacent swiftmodule and then
reloaded using the swiftinterface, we would do an up to date check on
the adjacent module but write out the unit using the swiftinterface.
This would cause the same modules to be indexed repeatedly for the first
invocation using a new SDK. On the next run we would instead raad the
swiftmodule from the cache and thus the out of date check would match
up.

The impact of this varies depending on the size of the module graph in
the initial compilation and the number of jobs started at the same time.
Each SDK dependency is re-indexed *and* reloaded, which is a drain on
both CPU and memory. Thus, if many jobs are initially started and
they're all going down this path, it can cause the system to run out of
memory very quickly.

Resolves rdar://103119964.
2023-02-09 11:49:13 -08:00
swift-ci
962e99f385 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-09 01:13:59 -08:00
Erik Eckstein
cef6ef9a84 SIL: add a debug_step instruction
This instruction can be inserted by Onone optimizations as a replacement for deleted instructions to
ensure that it's possible to single step on its location.
2023-02-09 06:50:05 +01:00
swift-ci
e36e8b8b4f Merge remote-tracking branch 'origin/main' into rebranch 2023-02-08 08:55:09 -08:00
John McCall
dcf90ba3f3 Merge pull request #63512 from rjmccall/tuple_pack_element_addr
Add the tuple_pack_element_addr SIL instruction
2023-02-08 11:48:23 -05:00
swift-ci
8e7eae199e Merge remote-tracking branch 'origin/main' into rebranch 2023-02-08 07:33:02 -08:00
Artem Chikin
acd72ef17d Merge pull request #63460 from artemcm/ExplicitDependenciesOnCommandLine
[Dependency Scanner] Produce complete compile commands for building explicit Swift interface dependencies
2023-02-08 08:25:04 -07:00
John McCall
159c653780 Add the tuple_pack_element_addr SIL instruction.
This allows dynamically indexing into tuples.  IRGen not yet
implemented.

I think I'm going to need a type_refine_addr instruction in
order to handle substitutions into the operand type that
eliminate the outer layer of tuple-ness.  Gonna handle that
in a follow-up commit.
2023-02-07 23:22:35 -05:00
swift-ci
dffb721903 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-07 13:33:42 -08:00
Alexis Laferrière
5786221be3 Merge pull request #63479 from xymus/opaque-safety
[Serialization] Evaluate the safety of opaque types
2023-02-07 13:28:44 -08:00
Artem Chikin
be3812d686 [Dependency Scanning] Add swift dependency compile arguments required for self-contained commands
- '-o <output_path>'
- '-disable-implicit-swift-modules'
- '-Xcc -fno-implicit-modules' and '-Xcc -fno-implicit-module-maps'
- '-candidate-module-file'

These were previously supplied by the driver. Instead, they will now be ready to be run directly from the dependency scanner's output.
2023-02-07 11:35:11 -07:00
Alexis Laferrière
4c51052a80 [Serialization] Evaluate the safety of opaque types
Some compilation paths access the opaque return type type by itself
without going through its function. So access to the type must be
protected, otherwise deserialization fails at getting the naming decl
when it's unsafe.

rdar://105085860
2023-02-07 09:36:18 -08:00
swift-ci
078a588ac0 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-07 08:52:59 -08:00
John McCall
27142e42f6 Add SIL instructions to get and set pack elements 2023-02-07 01:10:15 -05:00
swift-ci
0077f91d24 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-06 19:33:44 -08:00
Richard Wei
01e4c8df26 [Macros] Use name lookup for lazy declaration macro expansion (#63411)
- Use the name lookup table instead of adding members from a macro expansion to the parent decl context.
- Require declaration macros to specify introduced names and used the declared names to guide macro expansions lazily.
2023-02-07 11:24:42 +08:00
swift-ci
dadd967dff Merge remote-tracking branch 'origin/main' into rebranch 2023-02-02 14:14:30 -08:00
Alexis Laferrière
d2f5449251 Merge pull request #63365 from xymus/testable-safety
[Serialization] Disable deserialization safety when testing is enabled
2023-02-02 14:01:32 -08:00
swift-ci
148d3ac8bf Merge remote-tracking branch 'origin/main' into rebranch 2023-02-02 12:54:50 -08:00
Allan Shortlidge
8fde58f6ca Merge pull request #63357 from tshortli/se0376-rename-backdeploy
[SE-0376] Rename `@_backDeploy(before:)` to `@backDeployed(before:)`
2023-02-02 12:36:53 -08:00
swift-ci
1d356801a7 Merge remote-tracking branch 'origin/main' into rebranch 2023-02-02 00:54:28 -08:00
Doug Gregor
d06e84d253 [Serialization] Make sure we serialize ALL macro roles 2023-02-01 22:34:32 -08:00
Allan Shortlidge
d2524a6de8 AST: Implement parsing support for the accepted spelling of @backDeployed for SE-0376.
For source compatibility `@_backDeploy` continues to be accepted as a spelling.

rdar://102792909
2023-02-01 22:04:33 -08:00
Alexis Laferrière
99747693a5 [Serialization] Disable deserialization safety when testing is enabled
Resilient modules with testing enabled expose internal non-resilient
internal types. These types cannot be reliably used by testable clients
if they don't have all of their members known. For this reason, this
disabled deserialization safety in modules when testing is enabled.

rdar://104923020
2023-02-01 19:37:25 -08:00