Commit Graph

96069 Commits

Author SHA1 Message Date
Ben Langmuir
99daf886d5 Merge pull request #75594 from benlangmuir/script-load-foundation-early
[immediate] Load Foundation early enough for bridging
2024-08-02 00:36:14 -07:00
Ben Langmuir
8a824d70a0 [immediate] Load Foundation early enough for bridging
Foundation needs to be loaded early in the process for Swift's runtime
to properly initialize bridging support; otherwise it may cause issues
like unrecognized selectors. When scripting, load Foundation early in
performFrontend before any swift code runs.

rdar://129528115
2024-08-01 15:02:13 -07:00
eeckstein
926bd6cf80 Merge pull request #75615 from eeckstein/fix-atomic-effects
SIL: allow atomic operations in `@_noLocks` functions
2024-08-01 21:31:35 +02:00
Pavel Yaskevich
fd9a3c915b Merge pull request #75486 from xedin/fix-unsed-decl-in-generic-spec-diagnostic
[Diagnostics] Add a note to invalid generic function specialization d…
2024-08-01 10:08:43 -07:00
Saleem Abdulrasool
8d9c5e178c Merge pull request #75406 from z2oh/fix-sourcekitd-file-locks-windows
Fix sourcekitd persistent file-locks on Windows
2024-08-01 09:51:17 -07:00
Alex Hoppen
2a2dd735c1 Merge pull request #75582 from AppAppWorks/astgen-update-for-new-fixit-change-api
[ASTGen] Update for new FixIt.Change API in Swift-Syntax
2024-08-01 09:03:58 -07:00
Arnold Schwaighofer
2188ba04e0 Merge pull request #75595 from aschwaighofer/specialized_classes_ro_data_in_objc_clsrolist
IRGen: Also list specialized generic class' objective c ro data in the dedicated linker section
2024-08-01 08:59:46 -07:00
Erik Eckstein
50e22f986c SIL: allow atomic operations in @_noLocks functions
https://github.com/swiftlang/swift/issues/74407
2024-08-01 13:38:39 +02:00
Michael Gottesman
e945c55c97 Merge pull request #75605 from gottesmm/pr-d4066f062c015e630d51fe05140fe756391079a9
[region-isolation] Use a hard to use API correctly.
2024-07-31 20:03:01 -07:00
Hamish Knight
79be21f4ae Merge pull request #75528 from hamishknight/foldable-tangent
[Sema] Fold SequenceExpr in pre-checking pre-walk
2024-08-01 01:48:51 +01:00
Michael Gottesman
7255281c1d [region-isolation] Use a hard to use API correctly.
Specifically, this API has some hard edges where instead of just returning an
invalid value to signal that we do not have self, we assert or return something
bogus. This commit just fixes our usage of that API to be correct.

rdar://132545626
2024-07-31 16:51:15 -07:00
Steven Wu
541ee12137 Merge pull request #75598 from cachemeifyoucan/eng/PR-127205953
[DependencyScanner] Use mutex to protect all accesses to contextCacheMap
2024-07-31 16:36:29 -07:00
Pavel Yaskevich
ceeb6ec23f Merge pull request #75526 from gregomni/specialize
[Sema] Improve diagnoses of generic specializations
2024-07-31 16:27:11 -07:00
Steven Wu
9967e58624 [DependencyScanner] Use mutex to protect all accesses to contextCacheMap
Rather than only protecting the insertion and non-const access to
`ContextSpecificCacheMap` in ScanningService, extend the mutex
protection to all accesses. Even a 'const' lookup in the cache map is
not thread safe because the `StringMap` could be in the process of being
rehashed.

rdar://127205953
2024-07-31 13:17:04 -07:00
Arnold Schwaighofer
4b0328f24f IRGen: Also list specialized generic class' objective c ro data in the dedicated linker section
List the emitted ro_data of specialized generic classes in the
__objc_clsrolist section.

rdar://132354480
2024-07-31 12:52:50 -07:00
Michael Gottesman
af8b19dfbd Merge pull request #75590 from gottesmm/pr-66aa73e45aa508bc763af6ccc128f36e93a9e144
[region-isolation] Fix handling of coroutine apply results.
2024-07-31 12:44:56 -07:00
Holly Borla
6ef6b25a0b Merge pull request #75579 from hborla/delete-sema-sendable-checking
[Concurrency] Delete sendable checking subsumed by region isolation.
2024-07-31 10:20:16 -07:00
eeckstein
45ee3ee12a Merge pull request #75586 from eeckstein/use-assert-macro
SILBuilder: use the new ASSERT macro in the SILBuilder
2024-07-31 18:56:07 +02:00
Michael Gottesman
541863dbc6 [region-isolation] Fix handling of coroutine apply results.
In this part of the code, we are attempting to merge all of the operands into
the same region and then assigning all non-Sendable results of the function to
that same region. The problem that was occuring here was a thinko due to the
control flow of the code here not separating nicely the case of whether or not
we had operands or not. Previously this did not matter, since we just used the
first result in such a case... but since we changed to assign to the first
operand element in some cases, it matters now. To fix this, I split the confused
logic into two different easy to follow control paths... one if we have operands
and one where we do not have an operand. In the case where we have a first
operand, we merge our elements into its region. If we do not have any operands,
then we just perform one large region assign fresh.

This was not exposed by code that used non-coroutines since in SIL only
coroutines today have multiple results.

rdar://132767643
2024-07-31 09:37:42 -07:00
Artem Chikin
bd4827f7a3 Merge pull request #75556 from artemcm/DisableScannerValidationNonCachingBuild
[Dependency Scanning] Disable validation of Swift dependency modules' existing pre-built candidate binary module files in the scanner, on a non-caching build.
2024-07-31 08:55:51 -07:00
Erik Eckstein
bf3b69bba8 SILBuilder: use the new ASSERT macro in the SILBuilder
It's important to catch assert failures in the SILBuilder also in a release build of the compiler
2024-07-31 15:31:03 +02:00
eeckstein
d5f95c354e Merge pull request #75565 from eeckstein/fix-keypath-folding
Optimizer: fix a crash in keypath folding
2024-07-31 14:06:00 +02:00
Kai Lau
e561d3d446 [ASTGen] Update for new FixIt.Change API in Swift-Syntax
- covered the new case in exhaustive switch statements
2024-07-31 01:01:57 -07:00
Holly Borla
dfea802e51 [Concurrency] Delete sendable checking subsumed by region isolation.
Sema's sendable checking is subsumed by the region isolation SIL pass. Now
that region isolation is always enabled under complete concurrency checking,
the code can be deleted from the actor isolation checker. Note that this
removes these diagnostics from targeted concurrency checking. I think it's
better to remove these diagnostics from targeted checking because in many
cases, they're false positive data-race reports that the programmer ultimately
won't have to address. If we want these diagnostics in targeted checking, we
should do it via region isolation.
2024-07-30 22:11:49 -07:00
Andrew Trick
fe238cf2d1 Merge pull request #75162 from atrick/inout-dep
LifetimeDependenceDiagnostics support for inout reassignment.
2024-07-30 20:17:55 -07:00
Greg Titus
d87e049cde Improve diagnoses of generic specializations
Always add constraints, find fixes during simplify.
New separate fix for allow generic function specialization.
Improve parse heuristic for isGenericTypeDisambiguatingToken.
Degrade concrete type specialization fix to warning for macros.
2024-07-30 18:51:34 -07:00
Steven Wu
d736106baa Merge pull request #75555 from cachemeifyoucan/eng/PR-132758308
[Caching] Use `swift-frontend` as executable name in replays
2024-07-30 16:37:42 -07:00
Andrew Trick
50ee84a0b4 Infer LifetimeDependenceInfo on a mutating method
We need this at least until we have 'dependsOn(self)' syntax.

When 'self' is nonescapable and the result is 'void', assume that 'self' depends
on a single nonescapable argument.
2024-07-30 15:57:57 -07:00
Andrew Trick
11640461ef Lifetime dependence: add inferrence for setters.
A nonescapable computed property should always depend on 'newValue'. We simply
infer that now. There's no way to explicitly spell the dependence.
2024-07-30 15:57:57 -07:00
Hamish Knight
9753d7c017 Merge pull request #75540 from hamishknight/skip-loc
[Parse] Avoid skipping bodies with `#sourceLocation`
2024-07-30 22:34:10 +01:00
Allan Shortlidge
5819c31a6c Merge pull request #75568 from tshortli/next-isolation-availability
NFC: Update stale references to `next(_:)`
2024-07-30 14:11:19 -07:00
Ben Barham
d59a5c1a3a Merge pull request #75554 from bnbarham/more-stringref-rename
[Cleanup] Remove more `StringRef::equals`
2024-07-30 13:41:10 -07:00
Joe Groff
d37ff048aa Merge pull request #75560 from jckarter/disable-consuming-self-in-deinit
Disallow consuming `self` in a noncopyable `deinit` again.
2024-07-30 10:59:35 -07:00
Dave Lee
b3c59aceda [Debug] Escape LLDB syntax in debugDescription (#75306)
When using `@DebugDescription`, only allow use of [LLDB Summary 
Strings](https://lldb.llvm.org/use/variable.html#summary-strings) syntax from 
`lldbDescription` properties. When `@DebugDescription` is applied to existing 
`debugDescription` properties, escape any `$`, as the output of `debugDescription` is 
never interpreted by LLDB.

Depends on #75305
2024-07-30 10:58:49 -07:00
Steven Wu
61e725f57e [Caching] Use swift-frontend as executable name in replays
Don't try to figure out the executable names during replay from
libSwiftScan.dylib. The actual executable path for the process actually
doesn't matter in this case to reconstruct the invocation and might
actually be misleading.

Just use `swift-frontend` as a placeheader executable name for
in-process cache replay.

rdar://132758308
2024-07-30 10:39:25 -07:00
Alexis Laferrière
b93d9b6836 Merge pull request #75547 from xymus/deser-recover
Serialization: Bubble up more errors from readParameterList
2024-07-30 10:20:57 -07:00
Allan Shortlidge
4224479a43 NFC: Update stale references to next(_:).
In the accepted proposal for SE-0421, `next(_:)` became `next(isolation:)`.
Some of the references to that method in the codebase need to be updated
accordingly.
2024-07-30 09:47:20 -07:00
Steven Wu
193b886951 Merge pull request #75443 from cachemeifyoucan/eng/PR-13225588
[Caching] Avoid using clang CAS options in the command-line
2024-07-30 09:33:01 -07:00
Andrew Trick
d065a3e576 Merge pull request #75562 from atrick/nfc-lifedep
[nfc] LifetimeDiagnostics cleanup
2024-07-30 09:03:24 -07:00
Hamish Knight
a657f97c9b [Parse] Avoid skipping bodies with #sourceLocation
`#sourceLocation` requires setting and restoring
state in the parser, so we cannot skip any bodies
containing `#sourceLocation` tokens. Member skipping
was already doing this, extend it to function
body skipping too.
2024-07-30 16:56:00 +01:00
Hamish Knight
1bd2a9b18b [Parse] Allow skipping member bodies following #sourceLocation
If the bodies themselves don't have a
`#sourceLocation` in them, there should be no
harm in skipping; the parsed virtual files get
recorded on the SourceManager, so will be
accessible when doing delayed parsing. The
`InPoundLineEnvironment` flag will be inaccurate,
but that's only needed for the parsing of
`#sourceLocation` itself.
2024-07-30 16:56:00 +01:00
Erik Eckstein
9d6643b07e Optimizer: fix a crash in keypath folding
The KeyPathProjector utility crashed for keypaths  to stored objectiveC properties.

rdar://132780588
2024-07-30 16:59:31 +02:00
eeckstein
8189840e95 Merge pull request #75505 from eeckstein/alias-analysis
AliasAnalysis: a complete overhaul of alias- and memory-behavior analysis
2024-07-30 07:32:22 +02:00
Andrew Trick
22f01a956a [SwiftCompilerSources] add BridgedOStream and debugLog().
So we can trace optimizer passes using the same output stream as the
C++ passes and don't get garbled output.
2024-07-29 21:25:43 -07:00
Joe Groff
de687db20f Disallow consuming self in a noncopyable deinit again.
The changes to allow for partial consumption unintentionally also allowed for
`self` to be consumed as a whole during `deinit`, which we don't yet want to
allow because it could lead to accidental "resurrection" and/or accidental
infinite recursion if the consuming method lets `deinit` be implicitly run
again. This makes it an error again. The experimental feature
`ConsumeSelfInDeinit` will allow it for test coverage or experimentation
purposes. rdar://132761460
2024-07-29 21:20:14 -07:00
Artem Chikin
a2dc674723 [Dependency Scanning] Disable validation of Swift dependency modules' existing pre-built candidate binary module files in the scanner, on a non-caching build.
As-is, this default interferes with the incremental build machinery which conservatively assumes that binary module dependencies must cause dependents to be re-built.
2024-07-29 17:16:54 -07:00
Ben Barham
e25609c01d [Cleanup] Remove more StringRef::equals
`StringRef::equals` has been removed upstream.
2024-07-29 16:00:26 -07:00
Alexis Laferrière
1311a8097d Serialization: Bubble up errors under readParameterList
rdar://131002388
2024-07-29 15:49:34 -07:00
Artem Chikin
80f1d19e40 Merge pull request #75548 from artemcm/RevertCommonDepScanFilesystem
Revert "[Dependency Scanning] Use a standalone `DependencyScanningFilesystem` on the scanner, sharing a common `status` cache from Clang's dependency service cache"
2024-07-29 15:03:12 -07:00
Michael Gottesman
72ad780578 Merge pull request #75541 from gottesmm/pr-7133549c90f98b7c9be71f80b74a97d088aa62f2
[region-isolation] Do not ignore non-trivial results that are Sendable to be more permissive in the face of lazy typechecker issues.
2024-07-29 13:00:24 -07:00