Commit Graph

5045 Commits

Author SHA1 Message Date
Allan Shortlidge
dbf6257247 NFC: Consolidate logic for serializing conformances.
This is motivated by needing to typecheck conformances before serializing them
when lazy typechecking is enabled. It will also provide a centralized funnel
point for filtering out conformances we don't want to serialize.
2023-08-29 16:42:56 -07:00
swift-ci
fca0dc0a16 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-29 07:34:13 -07:00
Allan Shortlidge
5186971a02 Frontend: Introduce -experimental-serialize-external-decls-only option.
This option is designed to be used in conjunction with
`-experimental-lazy-typecheck` and `-experimental-skip-all-function-bodies`
when emitting a resilient module. The emitted binary module should contain only
the decls needed by clients and should contain roughly the same contents as it
would if the corresponding swiftinterface were emitted instead and then built.

This functionality is a work in progress. Some parts of the AST may still get
typechecked unnecessarily. Additionally, serialization does not trigger the
appropriate typechecking requests for some ASTs and then fails due to missing
types.

Resolves rdar://114230586
2023-08-28 21:22:20 -07:00
swift-ci
a160a2d634 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-25 16:13:44 -07:00
Allan Shortlidge
8ce8c364d8 Serialization: Make options a member of Serializer class.
Instead of passing options piecemeal to each method on Serializer, store the
options on construction. NFC.
2023-08-25 11:42:17 -07:00
swift-ci
55c9624b36 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-23 04:54:21 -07:00
Luciano Almeida
499547a3b8 [Serialization] Remove serialization code for initializes() and accesses() attributes 2023-08-22 20:57:30 -03:00
swift-ci
9d38c6b53e Merge remote-tracking branch 'origin/main' into rebranch 2023-08-17 14:34:52 -07:00
Nate Chandler
7bddaf36a0 [SIL] Added tuple_pack_extract.
The new instruction is needed for opaque values mode to allow values to
be extracted from tuples containing packs which will appear for example
as function arguments.
2023-08-16 11:15:05 -07:00
swift-ci
7283643631 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-16 09:14:19 -07:00
Allan Shortlidge
83b1b47249 NFC: Fix warning in ModuleFileSharedCore.cpp. 2023-08-15 17:13:10 -07:00
swift-ci
0a607cead8 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-14 13:16:19 -07:00
Saleem Abdulrasool
73ab16886c Merge pull request #67833 from hjyamauchi/lldblog
[lldb] Capture error messages from parseASTSection to log from caller
2023-08-14 13:08:54 -07:00
swift-ci
9a2d05b6a0 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-11 06:54:01 -07:00
Slava Pestov
bc1761a5cb Merge pull request #67876 from slavapestov/tuple-conformance-fixes
Tuple conformance fixes
2023-08-11 09:39:28 -04:00
swift-ci
525350af1b Merge remote-tracking branch 'origin/main' into rebranch 2023-08-10 22:14:25 -07:00
Hiroshi Yamauchi
24dfc905f5 [lldb] Capture error messages from parseASTSection to log from the caller.
This helps fix a lldb console output mixup between the lldb logging
and the llvm::dbgs() messages from parseASTSection.
2023-08-10 17:08:25 -07:00
Evan Wilde
11fcbbeea2 Cleaning up more deprecation warnings
Pointer `llvm/Support/Host.h` at `llvm/TargetParser/Host.h`.
Replacing deprecated API `startswith_insensitive` with replacement
`starts_with_insensitive`.
2023-08-10 16:19:24 -07:00
Slava Pestov
e5c7d251a2 Serialization: Fix serializing normal conformance xrefs for tuple conformances
Fixes rdar://problem/113707902.
2023-08-10 16:15:45 -04:00
Artem Chikin
6ef79c4ba0 [Dependency Scanning] Specify Explicit Module output path to the scanner explicitly
Instead of the code querying the compiler's built-in Clang instance, refactor the
dependency scanner to explicitly keep track of module output path. It is still
set according to '-module-cache-path' as it has been prior to this change, but
now the scanner can use a different module cache for scanning PCMs, as specified
with '-clang-scanner-module-cache-path', without affecting module output path.

Resolves rdar://113222853
2023-08-10 11:11:05 -07:00
swift-ci
b87613bace Merge remote-tracking branch 'origin/main' into rebranch 2023-08-10 04:34:00 -07:00
Slava Pestov
f219274e9b AST: Remove generic signature and conditional requirements from BuiltinProtocolConformance 2023-08-09 17:42:57 -04:00
Slava Pestov
7f9a71cd15 AST: Rename ASTContext::getConformance() to getNormalConformance() 2023-08-09 17:42:25 -04:00
swift-ci
a4bb99bd1b Merge remote-tracking branch 'origin/main' into rebranch 2023-08-09 07:15:49 -07:00
Nate Chandler
f938287710 [SIL] Added unowned_copy_value. 2023-08-08 15:49:17 -07:00
Nate Chandler
c007bae723 [SIL] Added weak_copy_value.
The new instruction wraps a value in a `@sil_weak` box and produces an
owned value. It is only legal in opaque values mode and is transformed
by `AddressLowering` to `store_weak`.
2023-08-08 15:47:13 -07:00
Nate Chandler
e135c5cac7 [SIL] Added strong_copy_weak_value.
The new instruction unwraps an `@sil_weak` box and produces an owned
value. It is only legal in opaque values mode and is transformed by
`AddressLowering` to `load_weak`.
2023-08-08 15:47:13 -07:00
swift-ci
1a9c1cf9f4 Merge remote-tracking branch 'origin/main' into rebranch 2023-07-31 08:53:31 -07:00
Joe Groff
16c59fa12c Merge pull request #67588 from jckarter/raw-layout-multi-file
Requestify raw layout "like" type resolution.
2023-07-31 08:38:49 -07:00
Joe Groff
56f2ae6b08 Requestify raw layout "like" type resolution.
This ensures it's resolved on demand even across files. rdar://112998213
2023-07-28 13:46:50 -07:00
swift-ci
1ead4ffed7 Merge remote-tracking branch 'origin/main' into rebranch 2023-07-28 10:57:58 -07:00
nate-chandler
5116600284 Merge pull request #67583 from nate-chandler/checked_cast_br/formal-source
[SIL] Add source formal type to checked_cast_br.
2023-07-28 10:54:06 -07:00
swift-ci
e1d21fe05c Merge remote-tracking branch 'origin/main' into rebranch 2023-07-27 16:56:57 -07:00
Nate Chandler
e5d87f75a8 [SIL] Add source formal type to checked_cast_br.
It is necessary for opaque values where for casts that will newly start
out as checked_cast_brs and be lowered to checked_cast_addr_brs, since
the latter has the source formal type, IRGen relies on being able to
access it, and there's no way in general to obtain the source formal
type from the source lowered type.
2023-07-27 15:04:15 -07:00
Allan Shortlidge
874b318e3f NFC: Suppress implicit conversion warning in Serialization.cpp. 2023-07-27 12:45:28 -07:00
swift-ci
1969199a8e Merge remote-tracking branch 'origin/main' into rebranch 2023-07-26 23:13:08 -07:00
Joe Groff
705e317c3f Merge pull request #67425 from jckarter/raw-storage
[WIP] Raw storage and locks/atomics prototype
2023-07-26 08:49:02 -07:00
Evan Wilde
9b61bb4b8d More llvm::Optional::transform -> swift::transform
Translating more llvm::Optional::transform calls to swift::transform.
`llvm::Optional` had a transform function that ran a lambda on the
element stored in the optional if it existed. After migrating to
std::optional under the hood, that function went away. Replacing it with
calls to swift::optional in STLExtras.h.
2023-07-25 12:28:27 -07:00
Evan Wilde
fd156f2717 More APInt API updates
Updating more APInt and bit-manipulation API changes.
2023-07-25 12:28:27 -07:00
Evan Wilde
309aed4925 Add SmallSetVector replacement
llvm::SmallSetVector changed semantics
(https://reviews.llvm.org/D152497) resulting in build failures in Swift.
The old semantics allowed usage of types that did not have an
`operator==` because `SmallDenseSet` uses `DenseSetInfo<T>::isEqual` to
determine equality. The new implementation switched to using
`std::find`, which internally uses `operator==`. This type is used
pretty frequently with `swift::Type`, which intentionally deletes
`operator==` as it is not the canonical type and therefore cannot be
compared in normal circumstances.

This patch adds a new type-alias to the Swift namespace that provides
the old semantic behavior for `SmallSetVector`. I've also gone through
and replaced usages of `llvm::SmallSetVector` with the
`Swift::SmallSetVector` in places where we're storing a type that
doesn't implement or explicitly deletes `operator==`. The changes to
`llvm::SmallSetVector` should improve compile-time performance, so I
left the `llvm::SmallSetVector` where possible.
2023-07-25 12:28:27 -07:00
Joe Groff
aee071bf4e Introduce an experimental @_rawLayout attribute.
This attribute can be attached to a noncopyable struct to specify that its
storage is raw, meaning the type definition is (with some limitations)
able to do as it pleases with the storage. This provides a basis for
implementing types for things like atomics, locks, and data structures
that use inline storage to store conditionally-initialized values.
The example in `test/Prototypes/UnfairLock.swift` demonstrates the use
of a raw layout type to wrap Darwin's `os_unfair_lock` APIs, allowing
a lock value to be stored inside of classes or other types without
needing a separate allocation, and using the borrow model to enforce
safe access to lock-guarded storage.
2023-07-24 14:28:19 -07:00
Saleem Abdulrasool
0d2a4a8e83 Serialization: ensure that we deserialise IsStaticLibrary correctly
We would previously fail to deserialise the IsStaticLibrary bit on
certain declarations when they were imported implicitly.  This would
result in incorrect IRGen on Windows when building against a static
swift module.
2023-07-19 10:04:43 -07:00
Saleem Abdulrasool
19f4b6f6e6 Merge pull request #67369 from compnerd/static-serialization
Serialization: allow `IS_STATIC_LIBRARY` to be deserialised properly
2023-07-19 07:14:48 -07:00
John McCall
a934f1f66c Merge pull request #67368 from rjmccall/unimplementable-variadic-reabstraction
Diagnose attempts to reabstract variadic functions in unimplementable ways
2023-07-18 21:28:59 -04:00
nate-chandler
8d971ed0e6 Merge pull request #67374 from nate-chandler/nfc/20230718/1/disable-resilience-checks-option
NFC: Add hidden option to bypass resilience checks.
2023-07-18 18:12:05 -07:00
Nate Chandler
8959d4ccb6 [Frontend] Added option to bypass resilience.
This functionality was added awhile back to support the debugger.
Provide a flag for use by other cliients.
2023-07-18 11:57:02 -07:00
Saleem Abdulrasool
8466ef6d80 Serialization: allow IS_STATIC_LIBRARY to be deserialised properly
Properly encode the field metadata to permit the deserialization by
`llvm-bcanalyzer` for aiding debugging.
2023-07-18 10:28:12 -07:00
John McCall
1a7d44a11d Diagnose attempts to reabstract variadic function types in unimplementable ways. 2023-07-18 13:22:35 -04:00
Pavel Yaskevich
8a666dea6f [Serialization] InitAccessors: Use correct code for @storageRestrictions serialization 2023-07-17 17:57:32 -07:00
Pavel Yaskevich
387bcf3187 [Serialization] InitAccessors: Serialization for @storageRestrictions attribute 2023-07-07 10:00:36 -07:00