Commit Graph

9332 Commits

Author SHA1 Message Date
Yuta Saito
ac440c336a [wasm] Accept multiple @_expose on a single function decl
But multiple @_expose with the same exposure kind are still invalid.
2023-09-26 14:13:43 +00:00
Yuta Saito
6d378a3ec3 [wasm] add @_expose(wasm) attribute support
This attribute instructs the compiler that this function declaration
should be "export"ed from this .wasm module. It's equivalent of Clang's
`__attribute__((export_name("name")))`
2023-09-26 14:13:33 +00:00
Nate Chandler
7856842d07 [Test] Renamed with underscores.
Hyphens are not typically used in identifiers and make it a bit trickier
to search.
2023-09-25 18:49:29 -07:00
swift-ci
265a15fcd2 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-25 11:15:32 -07:00
Kuba (Brecka) Mracek
5d5944584a Merge pull request #68662 from kubamracek/embedded-globals-modules
[embedded] Deserialize and import global variables in embedded Swift mode
2023-09-25 11:08:33 -07:00
swift-ci
fe5bd75e75 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-25 07:54:10 -07:00
nate-chandler
9c53465948 Merge pull request #68714 from nate-chandler/sil/test/rename-specify_test-inst
[SIL] Renamed specify_test instruction.
2023-09-25 07:37:49 -07:00
Kuba Mracek
4709bdcca6 [embedded] Deserialize and import global variables in embedded Swift mode 2023-09-24 17:34:03 -07:00
swift-ci
fc3a226c60 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-24 16:13:49 -07:00
Kuba Mracek
8f335b1a28 [embedded] Allow serialized internal/private functions in embedded mode 2023-09-23 14:00:31 -07:00
Nate Chandler
28f742e248 [SIL] Renamed specify_test instruction.
Changed from test_specification which is too many characters and
insufficiently active.
2023-09-22 16:09:38 -07:00
swift-ci
e8ece386ee Merge remote-tracking branch 'origin/main' into rebranch 2023-09-22 14:00:04 -07:00
nate-chandler
ea0e5c3a3e Merge pull request #68702 from nate-chandler/sil/test/parse-value-literals
[SIL] Allow specify_test instructions to take value literals.
2023-09-22 13:42:35 -07:00
Nate Chandler
fe8cc46abf [SIL] Allow test_spec insts to take values.
Tests can now say %foo to refer to a value in addition to @instruction
or @argument or similar.
2023-09-22 09:10:39 -07:00
swift-ci
764fecbc01 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-21 20:34:25 -07:00
nate-chandler
397a25c377 Merge pull request #68608 from nate-chandler/rdar115468707
[CanonicalizeOSSALifetime] Extend lexical lifetimes to unreachables.
2023-09-21 20:25:46 -07:00
swift-ci
c55b21f2b5 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-21 16:10:25 -07:00
Kavon Farvardin
d0a9e78da0 [Mangling] Support function specializations that remove async 2023-09-21 12:20:24 -07:00
swift-ci
6637cc5a27 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-21 12:13:50 -07:00
Kavon Farvardin
a69bcf8a61 Merge pull request #67930 from kavon/copyable-requirement
Copyable as a Requirement Against the Machine
2023-09-21 11:49:23 -07:00
Evan Wilde
b6ce82ff79 Merge pull request #68656 from apple/revert-68558-keep-funcs-for-debugger
Revert "Keep certain function that are potentially used in the debugger"
2023-09-20 20:11:12 -07:00
swift-ci
ac12fa71dc Merge remote-tracking branch 'origin/main' into rebranch 2023-09-20 17:33:50 -07:00
swift-ci
71cb84b24a Merge pull request #68657 from nate-chandler/nfc/20230920/1/add-null-check
[SILVerifier] Add null check for dead end blocks.
2023-09-20 17:18:49 -07:00
Kavon Farvardin
f1142d5da4 [nfc] rename or eliminate isPureMoveOnly APIs
I think from SIL's perspective, it should only worry about whether the
type is move-only. That includes MoveOnlyWrapped SILTypes and regular
types that cannot be copied.

Most of the code querying `SILType::isPureMoveOnly` is in SILGen, where
it's very likely that the original AST type is sitting around already.
In such cases, I think it's fine to ask the AST type if it is
noncopyable. The clarity of only asking the ASTType if it's noncopyable
is beneficial, I think.
2023-09-20 15:23:17 -07:00
swift-ci
1b6470ca9c Merge remote-tracking branch 'origin/main' into rebranch 2023-09-20 15:07:15 -07:00
Nate Chandler
43d5743875 [OSSALifeComp] NFC: Extracted visit unreachable.
Extracted the new visitUnreachableLifetimeEnds static member of
OSSALifetimeCompletion from the preexisting
endLifetimeAtUnreachableBlocks which now calls through the former.
2023-09-20 13:40:08 -07:00
Nate Chandler
1e5a7aab9a [SILVerifier] Added null check.
The deadEndBlocks field isn't always present so first check that it's
defined.
2023-09-20 13:38:06 -07:00
Evan Wilde
ae6057984f Revert "Keep certain function that are potentially used in the debugger" 2023-09-20 13:06:12 -07:00
Yuta Saito
c5314bd3af Centralize KeyPath accessor calling convention logic to IRGen
KeyPath's getter/setter/hash/equals functions have their own calling
convention, which receives generic arguments and embedded indices from a
given KeyPath argument buffer.
The convention was previously implemented by:
1. Accepting an argument buffer as an UnsafeRawPointer and casting it to
   indices tuple pointer in SIL.
2. Bind generic arguments info from the given argument buffer while emitting
   prologue in IRGen by creating a new forwarding thunk.

This 2-phase lowering approach was not ideal, as it blocked KeyPath
projection optimization [^1], and also required having a target arch
specific signature lowering logic in SIL-level [^2].

This patch centralizes the KeyPath accessor calling convention logic to
IRGen, by introducing `@convention(keypath_accessor_XXX)` convention in
SIL and lowering it in IRGen. This change unblocks the KeyPath projection
optimization while capturing subscript indices, and also makes it easier
to support WebAssembly target.

[^1]: https://github.com/apple/swift/pull/28799
[^2]: https://forums.swift.org/t/wasm-support/16087/21
2023-09-20 11:25:39 -07:00
Augusto Noronha
3bc42c865e Merge pull request #68558 from augusto2112/keep-funcs-for-debugger
Keep certain function that are potentially used in the debugger
2023-09-20 08:23:46 -07:00
swift-ci
c2d0ed607a Merge remote-tracking branch 'origin/main' into rebranch 2023-09-19 11:33:34 -07:00
Erik Eckstein
480d3f490e SIL Optimizer: handle begin_dealloc_ref and end_init_let_ref in various optimizations 2023-09-19 15:10:30 +02:00
Erik Eckstein
f0b811c45f SIL: add the end_init_let_ref instruction
This instructions marks the point where all let-fields of a class are initialized.
This is important to ensure the correctness of ``ref_element_addr [immutable]`` for let-fields,
because in the initializer of a class, its let-fields are not immutable, yet.
2023-09-19 15:10:30 +02:00
Erik Eckstein
e5eb15dcbe Swift SIL: replace the set_deallocating instruction with begin_dealloc_ref
Codegen is the same, but `begin_dealloc_ref` consumes the operand and produces a new SSA value.
This cleanly splits the liferange to the region before and within the destructor of a class.
2023-09-19 15:10:30 +02:00
swift-ci
89b27b5068 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-18 14:53:34 -07:00
Allan Shortlidge
fa3ba92780 Merge pull request #68555 from tshortli/requestify-specialize-attr-generic-signature-request
AST: Requestify generic signature building for @_specialized attributes
2023-09-18 14:40:02 -07:00
Augusto Noronha
e06ba23c75 Keep certain function that are potentially used in the debugger
Currently, when compiling with no optimizations on, we still delete
functions that are sometimes used in the debugger. For example, users
might want to call functions which are unused, or compiler generated
setters/getters.

rdar://101046198
2023-09-18 13:51:56 -07:00
swift-ci
800adb3c79 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-16 08:33:54 -07:00
Allan Shortlidge
497034ef64 AST: Requestify generic signature building for @_specialized attributes.
In order to support lazy typechecking during module emission for modules
containing specialized functions, the computation of generic signatures for
`@_specialized` attributes must be requestified.

Resolves rdar://115569606
2023-09-16 00:02:33 -07:00
Kuba Mracek
50f6430a27 [embedded] Convert thick->thin metatypes on array builtins (copy, take, assign) in mandatory optimizations 2023-09-14 18:09:08 -07:00
swift-ci
123f8ee8bf Merge remote-tracking branch 'origin/main' into rebranch 2023-09-14 10:58:18 -07:00
Kuba Mracek
ae0ec1ca5e [embedded] Fix compiler crash in getRuntimeEffect when processing ExistentialMetatypeInst 2023-09-13 15:06:17 -07:00
swift-ci
ae30cba296 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-13 10:20:48 -07:00
Kuba (Brecka) Mracek
b503f2831b Merge pull request #68461 from kubamracek/embedded-classes-generic
[embedded] Initial support for generic classes in embedded Swift
2023-09-13 10:01:50 -07:00
Kuba Mracek
e2de477609 [embedded] avoid metadata accessors, fix vtable map, add a diagnostic on non-final generic functions 2023-09-12 16:57:09 -07:00
Kuba Mracek
d2bb064548 [embedded] Don't SILVerify VTable ABIs in embedded mode, as the specialized vtables have intentionally different ABIs from the non-generic one 2023-09-12 13:58:11 -07:00
Kuba Mracek
d0c2a4ccf8 [embedded] Initial support for generic classes in embedded Swift
- VTableSpecializer, a new pass that synthesizes a new vtable per each observed concrete type used
- Don't use full type metadata refs in embedded Swift
- Lazily emit specialized class metadata (LazySpecializedClassMetadata) in IRGen
- Don't emit regular class metadata for a class decl if it's generic (only emit the specialized metadata)
2023-09-12 09:44:54 -07:00
swift-ci
c9610f5776 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-11 22:53:47 -07:00
Allan Shortlidge
67a24ccca5 TBDGen: Don't skip extensions on clang types.
Fixes a regression introduced with https://github.com/apple/swift/pull/68216.
Some nominal types belonging to clang modules don't have a clang node in the
AST, so make sure we match the logic used when computing IR linkage to
determine whether a nominal type is a clang type.

Resolves rdar://115308770
2023-09-11 16:13:03 -07:00
swift-ci
734d18ac13 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-08 07:14:28 -07:00