Commit Graph

9293 Commits

Author SHA1 Message Date
Yuta Saito
03295453a5 Merge pull request #69113 from kateinoigakukun/yt/private-async-main
[Concurrency] Hide `async_Main` from other object files
2023-10-11 11:45:27 -07:00
swift-ci
2ff419323a Merge remote-tracking branch 'origin/main' into rebranch 2023-10-11 09:14:46 -07:00
Yuta Saito
0fd8f0b4bc [Concurrency] Hide async_Main from other object files 2023-10-11 04:00:18 +00:00
Yuta Saito
bd898b0e7e [wasm] add @_extern(wasm) attribute support
This attribute instructs the compiler that this function declaration
should be "import"ed from host environment. It's equivalent of Clang's
`__attribute__((import_module("module"), import_name("field")))`
2023-10-10 22:42:08 +00:00
Andrew Trick
727ff71476 Rename FunctionTest::getInvocation.
The test invocation is something completely different in this context.
2023-10-10 13:40:02 -07:00
swift-ci
56f70e947a Merge remote-tracking branch 'origin/main' into rebranch 2023-10-10 11:53:54 -07:00
Nate Chandler
9ca6b9ac1f [Test] Print to stdout.
In the C++ sources it is slightly more convenient to dump to stderr than
to print to stdout, but it is rather more unsightly to print to stderr
from the Swift sources.  Switch to stdout.  Also allows the dump
functions to be marked debug only.
2023-10-10 08:19:44 -07:00
Evan Wilde
24d0db249b Merge remote-tracking branch 'main' into 'rebranch'
Conflicts:
  CMakeLists.txt
    Take new BRIDGING_MODE

  SwiftCompilerSources/Sources/SIL/GlobalVariable.swift
    Take new
2023-10-09 17:21:23 -07:00
Augusto Noronha
efc86aafb5 Merge pull request #68843 from augusto2112/keep-funcs-for-deb-tests
Keep certain function that are potentially used in the debugger
2023-10-09 13:58:21 -07:00
Andrew Trick
e04abee2e9 Merge pull request #69049 from apple/fix-select-enum
Fix ownership of select_enum instruction
2023-10-09 10:02:34 -07:00
Erik Eckstein
2dbd6cc56b SwiftCompilerSources: rework bridging
Introduce two modes of bridging:
* inline mode: this is basically how it worked so far. Using full C++ interop which allows bridging functions to be inlined.
* pure mode: bridging functions are not inlined but compiled in a cpp file. This allows to reduce the C++ interop requirements to a minimum. No std/llvm/swift headers are imported.

This change requires a major refactoring of bridging sources. The implementation of bridging functions go to two separate files: SILBridgingImpl.h and OptimizerBridgingImpl.h.
Depending on the mode, those files are either included in the corresponding header files (inline mode), or included in the c++ file (pure mode).

The mode can be selected with the BRIDGING_MODE cmake variable. By default it is set to the inline mode (= existing behavior). The pure mode is only selected in certain configurations to work around C++ interop issues:
* In debug builds, to workaround a problem with LLDB's `po` command (rdar://115770255).
* On windows to workaround a build problem.
2023-10-09 09:52:52 +02:00
Andrew Trick
69a884565a Fix ownership of select_enum instruction
This instruction was given forwarding ownership in the original OSSA
implementation. That will obviously lead to memory leaks. Remove
ownership from this instruction and verify that it is never used for
non-trivial types.
2023-10-08 01:34:48 -07:00
swift-ci
0ebccdfdd4 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-07 23:34:08 -07:00
swift-ci
f6afa76a3b Merge remote-tracking branch 'origin/main' into rebranch 2023-10-07 21:33:50 -07:00
Nate Chandler
ae1f950315 [SwiftCompilerSources] Moved Test into Optimizer.
And changed the type of the context argument to FunctionPassContext.
2023-10-07 21:23:13 -07:00
nate-chandler
18ce3ab465 Merge pull request #69007 from nate-chandler/swiftcompilersources/test-bridging-registration-cleanup
[SwiftCompilerSources] Simplified test registration.
2023-10-07 21:22:04 -07:00
swift-ci
5b72fbae64 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-06 17:15:26 -07:00
Kuba Mracek
c5dd11a358 [embedded] Don't deserialize alraedy existin superclass vtables in SILModule::lookUpVTable 2023-10-06 11:12:12 -07:00
Kuba Mracek
f144bf0bb4 [embedded] Avoid overwriting entries in the VTableMap (fix typo) 2023-10-06 10:25:22 -07:00
Kuba Mracek
7da86b1148 [embedded] Serialize+deserialize vtables, fix using non-generic classes from other modules in embedded Swift 2023-10-06 10:25:22 -07:00
Nate Chandler
ce4ba6ce2a [Test] Simplified registration.
At the cost of adding an unsafe bitcast implementation detail,
simplified the code involved to register a new FunctionTest when adding
one.

Also simplifies how Swift native `FunctionTest`s are registered with the
C++ registry.

Now, the to-be-executed thin closure for native Swift `FunctionTest`s is
stored under within the swift::test::FunctionTest instance corresponding
to it.  Because its type isn't representable in C++, `void *` is used
instead.  When the FunctionTest is invoked, a thunk is called which
takes the actual test function and bridged versions of the arguments.
That thunk unwraps the arguments, casts the stored function to the
appropriate type, and invokes it.

Thanks to Andrew Trick for the idea.
2023-10-05 18:02:35 -07:00
swift-ci
b684ade6c2 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-05 13:54:30 -07:00
nate-chandler
d1436b3fe3 Merge pull request #68975 from nate-chandler/rdar116255254
[OSSALifetimeCompletion] Handle unavailable blocks in dead-end regions.
2023-10-05 13:35:55 -07:00
swift-ci
1a6726b90e Merge remote-tracking branch 'origin/main' into rebranch 2023-10-05 11:13:06 -07:00
Allan Shortlidge
0b07c343b6 Merge pull request #68978 from tshortli/improve-api-extract-accuracy
TBDGen: Improve the accuracy of swift-api-extract output
2023-10-05 10:49:21 -07:00
swift-ci
928e1203ec Merge remote-tracking branch 'origin/main' into rebranch 2023-10-05 10:34:37 -07:00
Andrew Trick
eccf94d57b Merge pull request #68885 from atrick/bridge-forwarding
SwiftCompilerSources: added OwnershipUtils for ForwardingInstruction.
2023-10-05 10:22:30 -07:00
Nate Chandler
ad33b5de34 [OSSALifetimeCompletion] Handle available boundary
Not every block in a region which begins with the non-lifetime-ending
boundary of a value and ending with unreachable-terminated blocks has
the value available.  If the unreachable-terminated blocks in this
boundary are not available, it is incorrect to insert destroys of the
value in them: it is an overconsume on some paths.  Previously,
however, destroys were simply being inserted at the unreachable.

Here, this is fixed by finding the boundary of availability within that
region and inserting destroys before the terminators of the blocks on
that boundary.

rdar://116255254
2023-10-05 09:15:58 -07:00
Allan Shortlidge
80b1f4c1c2 TBDGen: Improve correctness of API symbol visibility and availability.
By plumbing the currently visited Decl through to APIRecorder we can improve
the correctness of API symbol visibility and availability in swift-api-extract
output.
2023-10-04 22:06:34 -07:00
swift-ci
042e9df19d Merge remote-tracking branch 'origin/main' into rebranch 2023-10-04 18:22:41 -07:00
swift-ci
e42bb73a2f Merge pull request #68968 from apple/revert-68285-effects-diagnostic
Revert "[Diagnostics] Require explicit releasenone."
2023-10-04 18:05:07 -07:00
swift-ci
a48b6d0f90 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-04 18:04:12 -07:00
Nate Chandler
d8312122eb [SIL] NFC: Improved block id printing. 2023-10-04 16:48:06 -07:00
Anton Korobeynikov
4d391f0f8e Add Differentiable requirements to pattern substitutions / pattern generic signature (#68777)
Add `Differentiable` requirements to pattern substitutions / pattern generic signature when calculating constrained function type. Also, add requirements for differentiable results as well.

Fixes #65487
2023-10-04 14:48:03 -07:00
nate-chandler
a9e03df58c Revert "[Diagnostics] Require explicit releasenone." 2023-10-04 14:19:15 -07:00
Augusto Noronha
ef45991a2a 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-10-04 10:16:31 -07:00
swift-ci
6cf1f90e79 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-04 04:35:13 -07:00
Andrew Trick
bce9817162 SwiftCompilerSources: add ForwardingInstruction 2023-10-03 23:54:57 -07:00
Tony Allevato
5f5b24f96e [C++20] Make operator{==,!=}s const.
In C++20, the compiler will synthesize a version of the operator
with its arguments reversed to ease commutativity. This reversed
version is ambiguous with the hand-written operator when the
argument is const but `this` isn't.
2023-10-03 17:10:57 -04:00
swift-ci
77756cd369 Merge remote-tracking branch 'origin/main' into rebranch 2023-10-03 12:39:45 -07:00
Erik Eckstein
51158b2bcf SIL: need to handle explicit_copy_addr in SILInstruction::mayRelease
This fixes a compiler crash when using the `copy` operator.

rdar://116102136
2023-10-03 08:35:03 +02:00
swift-ci
06f9a8a703 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-30 11:33:40 -07:00
Doug Gregor
581b9d8a95 Merge pull request #68629 from DougGregor/typed-throws
Typed throws
2023-09-30 11:18:41 -07:00
swift-ci
e88cda751e Merge remote-tracking branch 'origin/main' into rebranch 2023-09-29 16:17:35 -07:00
Kuba (Brecka) Mracek
9253273635 Merge pull request #68862 from kubamracek/embedded-shared-linkage
[embedded] Allow serialization of SILLinkage::shared functions without promoting them to public
2023-09-29 16:01:07 -07:00
swift-ci
5a4469ce9b Merge remote-tracking branch 'origin/main' into rebranch 2023-09-29 15:53:42 -07:00
Andrew Trick
2a604e2ab0 Merge pull request #68814 from atrick/blockarg
SwiftCompilerSources: Replace BlockArgument with Phi and TermResult.
2023-09-29 15:51:00 -07:00
swift-ci
8cf5e2bf4d Merge remote-tracking branch 'origin/main' into rebranch 2023-09-29 12:36:08 -07:00
nate-chandler
954c0f5f3f Merge pull request #68813 from nate-chandler/swiftcompilersources/test-bridging
[SwiftCompilerSources] Bridged in-IR testing.
2023-09-29 12:28:07 -07:00
Doug Gregor
b6b999abd4 [Typed throws] Basic SIL lowering and SIL generation for typed throws
Lower the thrown error type into the SIL function type. This requires
very little code because the thrown error type was already modeled as
a SILResultInfo, which carries type information. Note that this
lowering does not yet account for error types that need to passed
indirectly, but we will need to do so for (e.g.) using resilient error
types.

Teach a few places in SIL generation not to assume that thrown types
are always the existential error type, which primarily comes down to
ensuring that rethrow epilogues have the thrown type of the
corresponding function or closure.

Teach throw emission to implicitly box concrete thrown errors in the
error existential when needed to satisfy the throw destination. This
is a temporary solution that helps translate typed throws into untyped
throws, but it should be replaced by a better modeling within the AST
of the points at which thrown errors are converted.
2023-09-29 10:51:55 -07:00