Commit Graph

45907 Commits

Author SHA1 Message Date
Erik Eckstein
0a011cddd8 Remove the old (and now obsolete) PredictableMemoryAccessOptimizations pass 2025-02-07 11:30:35 +01:00
Erik Eckstein
33761454b7 MandatoryPerformanceOptimizations: use eliminateRedundantLoads instead of optimizeMemoryAccesses to optimize redundant loads 2025-02-07 11:30:35 +01:00
Erik Eckstein
ce73deebc4 RedundantLoadElimination: add a "mandatory" redundant load elimination pass
And make `eliminateRedundantLoads` callable from other optimizations
2025-02-07 11:30:35 +01:00
Michael Gottesman
8c5b49e65a Merge pull request #79204 from gottesmm/undo-concurrent-for-now
[concurrency] For now undo ActorIsolation::Concurrent refactoring.
2025-02-06 23:06:15 -08:00
Allan Shortlidge
3ce2449b8d Merge pull request #79190 from tshortli/availability-context-unit-tests
AST: Introduce `AvailabilityContext::containsUnavailableDomain()`
2025-02-06 20:58:35 -08:00
Michael Gottesman
d33371a51a Merge pull request #79178 from xedin/execution-attr-in-type-context
[AST/Parse] Initial implementation of `@execution(concurrent | caller)` in type context
2025-02-06 18:44:00 -08:00
Nate Chandler
c6e0480e1c [NFC] OSSACanOwned: Simplify Def definition.
It's sufficient just to have a struct with a kind and a value.  There
aren't any cases where the payload's original type benefits from being
statically preserved--they're only ever obtained as `SILValue`s.  Keep
the type safety by way of constructors.
2025-02-06 17:58:20 -08:00
Ellie Shin
098f2a9145 Merge pull request #79157 from swiftlang/elsh/pcmo-bypass-res-check-mods
Package CMO: Skip deserialization error checks for same-module decls.
2025-02-06 15:38:44 -08:00
Michael Gottesman
7e350bb4ce Revert "[concurrency] Add Concurrent/ConcurrentUnsafe and use it instead of ActorIsolation::Nonisolated."
This reverts commit 0cb64638d0.
2025-02-06 14:05:06 -08:00
Michael Gottesman
f05f08c2c0 Revert "[concurrency] Make ActorIsolation::Nonisolated -> CallerIsolationInheriting and delete CallerIsolationInheriting."
This reverts commit 543b1e6ca3.
2025-02-06 14:04:30 -08:00
Michael Gottesman
649952e3d9 Revert "[concurrency] Convert ActorIsolation::isConcurrentUnsafe -> isUnsafe."
This reverts commit 95623c691f.
2025-02-06 14:04:29 -08:00
Saleem Abdulrasool
9c85fbc8da AST,DependencyScan,IRGen,Serialization,Tooling: track library style (#78777)
Track if the dependency is static or dynamic. This is in preparation for
helping rename the static library to differentiate it from import
libraries.
2025-02-06 13:22:56 -08:00
Nate Chandler
2a43494a01 [Gardening] OSSACanOwned: Removed dead friend.
There's no longer a DenseMap of Defs, so no corresponding DenseMapInfo.
2025-02-06 13:16:09 -08:00
Allan Shortlidge
ddb5f23306 AST: Add AvailabilityContext::containsUnavailableDomain().
Replaces AvailabilityContext::getUnavailableDomain().
2025-02-06 09:50:07 -08:00
Allan Shortlidge
889bc3138d unittests: Add tests for AvailabilityContext. 2025-02-06 09:50:07 -08:00
Andrew Trick
a54a23a1e6 Merge pull request #79177 from atrick/fix-markdep-ownership
Fix mark_dependence [nonescaping] ownership
2025-02-06 01:18:14 -08:00
Anton Korobeynikov
1e7a1d91fc Emit reabstraction thunks for implicit conversions between T.TangentType and Optional<T>.TangentType (#78076) 2025-02-05 20:57:52 -08:00
Rintaro Ishizaki
ac2603cad6 Merge pull request #79168 from rintaro/astgen-tweaks
[ASTGen] Small followup tweaks after AvailableAttr
2025-02-05 16:48:35 -08:00
Rintaro Ishizaki
ca2febe505 Merge pull request #79169 from rintaro/briding-const-wrapper
[Bridging] Add 'const' variations to BRIDGING_WRAPPER
2025-02-05 16:44:58 -08:00
Andrew Trick
e705a6d7c3 Temporarily introduce AnyInteriorPointer operand ownership.
This is necessary to fix a recent OSSA bug that breaks common occurrences on
mark_dependence [nonescaping]. Rather than reverting that change above, we make
forward progress toward implicit borrows scopes, as was the original intention.

In the near future, all InteriorPointer instructions will create an implicit
borrow scope. This means we have the option of not emitting extraneous
begin/end_borrow instructions around intructions like ref_element_addr,
open_existential, and project_box. After that, we can also migrate
GuaranteedForwarding instructions like tuple_extract and struct_extract.
2025-02-05 16:23:02 -08:00
elsh
ee751835fc Package CMO: Skip deserialization error checks for same-module decls.
IterableDeclContext::checkDeserializeMemberErrorInPackage recursively checks if
decls and their member decls are deserialized correctly into another module.
This PR adds a check to make sure the inspected decls are from another module,
and provides an opt-in flag to fail fast on deserialization failure if found.

rdar://143830240
2025-02-05 14:27:00 -08:00
Steven Wu
ca749de113 [Dependency Scanning] Support loading scanner cache state for caching
Teach scanner cache loader to validate the CAS contents when validating
dependency graph loaded.
2025-02-05 14:24:35 -08:00
Steven Wu
c1063d0992 Merge pull request #78623 from cachemeifyoucan/eng/bridging-header-auto-chaining
[BridgingHeader] Auto bridging header chaining
2025-02-05 14:23:26 -08:00
Rintaro Ishizaki
ebf7a421fd [Bridging] Add 'const' variations to BRIDGING_WRAPPER
Only for `AvailabilityMacroMap` for now.
2025-02-05 11:44:54 -08:00
Rintaro Ishizaki
00985697c6 [Parse] Return 'const' pointer from AvailabilityMacroArgumentsRequest
Because it shouldn't be modified.
2025-02-05 11:36:08 -08:00
Slava Pestov
4937d0a242 Merge pull request #79134 from slavapestov/smaller-potential-bindings
Sema: More accurate undo() of PotentialBindings::retract()
2025-02-05 14:05:05 -05:00
Rintaro Ishizaki
1559b37c03 [Basic] Remove unnecessary 'const' from several briding functions 2025-02-05 10:37:56 -08:00
Pavel Yaskevich
aad858d66c [Sema] Implement validation of @execution(...) in type context 2025-02-05 10:11:38 -08:00
Steven Wu
9d59044bb1 [BrdigingHeader] Auto bridging header chaining
Add ability to automatically chaining the bridging headers discovered from all
dependencies module when doing swift caching build. This will eliminate all
implicit bridging header imports from the build and make the bridging header
importing behavior much more reliable, while keep the compatibility at maximum.

For example, if the current module A depends on module B and C, and both B and
C are binary modules that uses bridging header, when building module A,
dependency scanner will construct a new header that chains three bridging
headers together with the option to build a PCH from it. This will make all
importing errors more obvious while improving the performance.
2025-02-05 09:41:04 -08:00
Rintaro Ishizaki
a619daf12b Merge pull request #79125 from rintaro/astgen-available-attr
[ASTGen] Generate AvailableAttr
2025-02-05 09:41:02 -08:00
Alastair Houghton
99b3e9f56f Merge pull request #79152 from al45tair/eng/PR-144220714
[Threading] Use `tss_dtor_t` and not just `void(*)(void *)`.
2025-02-05 16:46:02 +00:00
Joe Groff
2cd7a45fe5 Merge pull request #79149 from jckarter/borrow-to-destructure-interior-pointer-order-of-operations
BorrowToDestructureTransform: Fix order of operations when placing borrows around InteriorPointerOperands.
2025-02-05 07:40:30 -08:00
Alastair Houghton
c75781ae0e [Threading] Use tss_dtor_t and not just void(*)(void *).
Although the C11 spec says `tss_dtor_t` is `void(*)(void *)`, there
may be modifiers on the former typedef, so we should use it instead
of directly writing the type.

rdar://144220714
2025-02-05 10:12:58 +00:00
Doug Gregor
246e130584 Merge pull request #79144 from DougGregor/distributed-typed-throws
Ensure that distributed functions with typed throws can be called from outside the actor
2025-02-05 01:21:22 -08:00
Pavel Yaskevich
84fb4967cb [Parse] Add parsing for @execution(concurrent | caller) attribute in type context 2025-02-05 00:20:58 -08:00
Pavel Yaskevich
f206956a23 [AST] Add @execution(concurrent | caller) type attribute 2025-02-05 00:19:40 -08:00
Pavel Yaskevich
01e3bd0636 [AST] Disconnect @execution(...) attribute from the feature flag
The attribute has to be available without feature flag on so that
it could be adopted preemptively, before the behavior change.
2025-02-05 00:16:57 -08:00
Rintaro Ishizaki
df2ada37df [ASTGen] Generate AvailableAttr
* Move `AvailabilitySpec` handling logic to AST, so they can be shared
  between libParse and ASTGen
* Requestify '-define-availability' arguments parsing and parse them
  with 'SwiftParser' according to the 'ParserASTGen' feature flag
* Implement 'AvailableAttr' generation in ASTGen
2025-02-04 23:40:01 -08:00
Joe Groff
1e37b67a96 BorrowToDestructureTransform: Fix order of operations when placing borrows around InteriorPointerOperands.
The code here determined the borrow scope of an InteriorPointerOperand use of a borrow using
`visitBaseValueScopeEndingUses`, but it does so after rewriting the operand, so the base
value would sometimes be incorrect leading to missing `end_borrows` in the rewritten code.
Fixes rdar://133333278.
2025-02-04 18:43:40 -08:00
Joe Groff
a56ec3e339 Merge pull request #79127 from jckarter/treat-read-accesses-as-borrows
SILGen: Treat read-formal-accessed lvalues as borrows.
2025-02-04 18:32:38 -08:00
Slava Pestov
09f78bfd95 Sema: Remove now-unused ConstraintGraph::inferBindings() 2025-02-04 20:26:12 -05:00
Slava Pestov
cda3cda132 Sema: Rework change recording in PotentialBindings::retract()
Instead of making an undo() do an infer(), let's record fine-grained
changes about what was retracted, and directly re-insert the same
elements into the data structures.
2025-02-04 20:26:12 -05:00
Allan Shortlidge
8534f29ef5 Merge pull request #79122 from tshortli/loosen-more-available-than-enclosing-extension
Sema: Loosen more available than enclosing extension diagnostic
2025-02-04 16:31:20 -08:00
Doug Gregor
84ed66f3be Ensure that distributed functions with typed throws can be called from outside
When calling a distributed function for an actor that might not be local,
the call can throw due to the distributed actor system producing an
error. The function might, independently, also throw. When the
function uses typed throws, we incorrectly treated the call is if it
would always throw the error type specified by the function. This
leads to incorrectly accepting invalid code, and compiler crashes in
SILGen.

The change here is to always mark calls to distributed functions
outside the actor as "implicitly throwing", which makes sure that we
treat the call sites as throwing 'any Error'. The actual handling of
the typed throw (from the local function) and the untyped throw (from
the distributed actor system) occurs in thunk generation in SILGen,
and was already handled correctly.

Fixes rdar://144093249, and undoes the ban introduced by rdar://136467528
2025-02-04 16:06:51 -08:00
Slava Pestov
b09c6733d3 Sema: Change a few fields of PotentialBindings from SmallDenseSet to SmallVector
These are not going to have duplicates by construction.
2025-02-04 16:38:55 -05:00
Allan Shortlidge
4d94d55fc8 Merge pull request #79098 from tshortli/consolidate-unexpected-available-versions-diagnostic
Parse/Sema: Consolidate diagnostics for unexpected versions
2025-02-04 10:05:58 -08:00
Joe Groff
19329e3e03 SILGen: Treat read-formal-accessed lvalues as borrows.
A read access asserts that the memory location is immutable for the duration
of the access, so it can be treated as a borrow rather than a mutable lvalue.
Doing this allows the borrow formal access scope fixes from #79084 to apply
to situations where a loadable type undergoes an accessor-based access with
indirect arguments (such as for public accessors when library evolution is
enabled for the type). Fixes rdar://143334632.
2025-02-04 08:23:34 -08:00
Gábor Horváth
0e117ec28e Merge pull request #79045 from swiftlang/gaborh/nested-classes
[cxx-interop] Support nested classes in reverse interop
2025-02-04 12:27:18 +00:00
Tony Allevato
c5f0200680 Merge pull request #79059 from allevato/json-ast-followups
[ASTDumper] Some followups from the initial JSON PR and macro dumping improvements.
2025-02-04 01:13:46 -05:00
Rintaro Ishizaki
2f42aba3af Merge pull request #79120 from rintaro/parser-unit-ifconfig-allactive-rdar117387631
[Parser] Include all AST nodes from every #if region in ParserUnit
2025-02-03 20:26:29 -08:00