Commit Graph

13074 Commits

Author SHA1 Message Date
Ben Barham
160ac826a2 Remove extraneous dump
Presumably these were originally used for debug purposes.

Resolves rdar://147660535.
2025-03-22 15:27:28 -07:00
Dario Rexin
06f6358067 Merge pull request #80224 from glessard/revert-79789-custom-executors
Revert "[Concurrency] Provide a Swift interface for custom main and global executors."
2025-03-22 13:49:13 -07:00
Arnold Schwaighofer
05084acb4e Merge pull request #79199 from aschwaighofer/cond_fail_remarks
IRGen: Annotate LLVM IR of condfail with the condfail's message
2025-03-22 03:49:50 -07:00
Alastair Houghton
8b15b05c63 Revert "[Concurrency] Provide a Swift interface for custom main and global executors." 2025-03-22 02:38:11 -07:00
Adrian Prantl
35c8ba878a Merge pull request #80179 from adrian-prantl/146327709
[Debug Info] Add missing caching for types with no type sugar
2025-03-21 15:24:36 -07:00
Adrian Prantl
679063832c Merge pull request #80170 from adrian-prantl/replace-temp
[Debug Info] Fix LLVM API misuse
2025-03-21 15:18:47 -07:00
Alastair Houghton
8443b5f76c Merge pull request #79789 from al45tair/custom-executors
[Concurrency] Provide a Swift interface for custom main and global executors.
2025-03-21 09:05:03 +00:00
Saleem Abdulrasool
c433242092 Merge pull request #80178 from jeffdav/fix-noasserts-build
Fix non-asserting build.
2025-03-20 18:47:36 -07:00
Adrian Prantl
0db8d14204 [Debug Info] Add missing caching for types with no type sugar
This avoids redundant creation and uniquing of types in the case where
we only have a canonical name. Since the uniquing changes the type
graph this introduced the possibility for use-after-free if
IRGenDebugInfoImpl held on to a direct (non-tracking) DIType *.

rdar://146327709
2025-03-20 14:24:12 -07:00
Adrian Prantl
8e3d88f5d8 [Debug Info] Create all member types up front
when creating the members of a struct, to avoid problems when the type
graph changes due to type nodes being uniqued. It's not clear this can
actually happen, but it helps ruling this out as a failure cause.
2025-03-20 14:13:00 -07:00
Jeff
0b28116264 Fix non-asserting build. 2025-03-20 14:00:24 -07:00
Steven Wu
279787e6a9 [IRGen] Remove a static variable that caches pointer value
Remove a static variable that caches pointer value from ASTContext that
will become invalid if the same process is re-used for compilation using
a second ASTContext. This configuration is used under
`-enable-deterministic-check` option for output detertiminism checking.

rdar://147438789
2025-03-20 11:31:59 -07:00
Adrian Prantl
371e812e61 [Debug Info] Fix LLVM API misuse
DBuilder::replaceTemporary() can return a different pointer. In
practice this only happens when temporary and replacement are uniqued,
so that's probably how we got away with this in the past.
2025-03-20 11:18:37 -07:00
Kuba (Brecka) Mracek
605f1c94cf Merge pull request #79892 from kubamracek/embedded/mergeable-weakodr
[embedded] Emit weak_odr instead of linkonce_odr symbols under -Xfrontend -mergeable-symbols
2025-03-20 10:27:13 -07:00
Arnold Schwaighofer
767c96f1fa Add setupLLVMOptimizationRemarks 2025-03-20 08:34:46 -07:00
Arnold Schwaighofer
ee57eed78d IRGen: Annotate LLVM IR of condfail with the condfail's message
`-Xfrontend -enable-cond-fail-message-annotation`
LLVM IR produced by the Swift compiler will add the `annotation`
metadata attribute to the branch instruction generated for cond_fail
builtins.
2025-03-20 08:17:18 -07:00
Arnold Schwaighofer
4688929c98 Merge pull request #80124 from aschwaighofer/loadable_by_address_branch_inst
LoadableByAddress: Add missing BranchInst in a switch
2025-03-20 07:14:59 -07:00
Amritpan Kaur
3c30d68d2e Merge pull request #78823 from amritpan/method-keypaths
[Sema/SILGen/IRGen] Implement method & initializer keypaths.
2025-03-19 18:59:17 -07:00
Amritpan Kaur
834bd0e069 [IRGen] Prevent descriptor emission. 2025-03-19 10:54:09 -07:00
Amritpan Kaur
39b48bb218 [SIL] Handle KeyPathComponentKind::Method in helpers. 2025-03-19 10:54:09 -07:00
Amritpan Kaur
e7e354d989 [NFC] Generalize subscript code for methods. 2025-03-19 10:54:09 -07:00
Arnold Schwaighofer
5feb287d19 LoadableByAddress: Add missing BranchInst in a switch
rdar://146980802
2025-03-19 09:50:02 -07:00
Adrian Prantl
2b70a7c73d Merge pull request #80078 from adrian-prantl/146326633
[Debug Info] Do not emit children of bound generic types
2025-03-19 07:22:13 -07:00
Adrian Prantl
851470f476 [Debug Info] Do not emit children of bound generic types
This reverts the problematic parts of
fcbebc51c7 which had caused a lot of
unintended fallout, while preserving the actual feature supported by
the patch.

Before that patch (fcbeb), and after this one, we don't emit members
of specialized bound generic types, because these can be reconstructed
by substituting the "template parameters" in the unspecialized
type. This patch carves out an exception for inline arrays, because
DWARF has special support for arrays, which allows debuggers to reason
about them without needing special support.

rdar://146326633
2025-03-18 17:07:08 -07:00
Slava Pestov
8bcd09aaa4 SIL: Preliminary refactoring of SILWitnessTable::AssociatedConformanceWitness
The Protocol field isn't really necessary, because the conformance
stores the protocol. But we do need the substituted subject type
of the requirement, just temporarily, until an abstract conformance
stores its own subject type too.
2025-03-18 19:38:42 -04:00
Slava Pestov
a00157ec43 IRGen: Refactor LocalTypeData a bit
The "abstract conformance is just a ProtocolDecl" assumption is pretty
fundamental here, so we have to fudge a bit at the API boundary for now.

Eventually, LocalTypeDataKind should just contain a ProtocolConformanceRef
instead of duplicating the representation, however this would require
fixing various calls to LocalTypeDataKind::forAbstractProtocolWitnessTable()
which pass in a ProtocolDecl to pass in a ProtocolConformanceRef instead.
2025-03-18 19:38:37 -04:00
Slava Pestov
3617a2934c Merge pull request #80061 from slavapestov/fix-rdar146123129
IRGen: Fix crash when normal conformance fixes generic parameter to concrete type
2025-03-17 21:27:04 -04:00
Konrad `ktoso` Malawski
85fcd69833 [Concurrency] Implement detecting isIsolatingCurrentContext user impls (#79946)
* [Concurrency] Detect non-default impls of isIsolatingCurrentContext

* [Concurrency] No need for trailing info about isIsolating... in conformance

* Apply changes from review
2025-03-18 09:39:11 +09:00
Slava Pestov
eb3f3a19ce IRGen: Fix crash when normal conformance fixes generic parameter to concrete type
This can probably be handled better elsewhere, but this is
reasonable enough for now.

Fixes rdar://146123129.
2025-03-17 15:16:43 -04:00
nate-chandler
39f58de32e Merge pull request #80033 from nate-chandler/verify-each-flag
[IRGen] Add flags to control LLVM verify-each.
2025-03-17 07:35:17 -07:00
Nate Chandler
dd8c715aa6 [IRGen] Add flags to control LLVM verify-each.
Analogous to -sil-verify-all, the new flags cause LLVM verification to
be run after each LLVM optimization pass.
2025-03-14 17:51:43 -07:00
Michael Chiu
7f0f2ac4dd Merge swiftlang#38335 2025-03-14 02:15:15 -04:00
Doug Gregor
4cc6411d05 Merge pull request #79983 from DougGregor/isolated-conformances-alignment
Align isolated conformances with the current proposal
2025-03-13 22:40:36 -07:00
Adrian Prantl
6e9faa1303 Merge pull request #79929 from adrian-prantl/146688269
[Debug Info] Prevent infinite recursion when emitting debug info
2025-03-13 08:47:00 -07:00
Alastair Houghton
55afa47bea [Concurrency] More work on the custom executor implementation.
Added an `-executor-factory` argument to the compiler to let you safely
specify the executors you wish to use (by naming a type that returns
them).

Also added some tests of the new functionality.

rdar://141348916
2025-03-13 13:34:41 +00:00
Doug Gregor
c58e22fccc Simplify APIs for accessing conformance isolation
The NormalProtocolConformance APIs for checking for an explicitly-written
isolation on a conformance were easy to get to, and the real semantic
API was buried in the type checker, leading to some unprincipled
checking. Instead, create a central ProtocolConformance::getIsolation()
to get the (semantic) actor isolation, and let that be the only place
that will access the explicitly-written global actor isolation for a
conformance. Update all call sites appropriately.
2025-03-12 23:18:32 -07:00
Doug Gregor
0e873e723c [Isolated conformances] Change syntax to @<global actor type> P
Instead of using the `isolated P` syntax, switch to specifying the
global actor type directly, e.g.,

   class MyClass: @MainActor MyProto { ... }

No functionality change at this point
2025-03-12 23:18:10 -07:00
kperryua
9b876fd779 Merge pull request #79957 from eeckstein/revert-assert
Revert "IRGen: convert two `assert`s to `ASSERT` to check the conditions also in a release-built compiler"
2025-03-12 11:56:45 -07:00
Tony Allevato
68876a6d4a Merge pull request #76636 from allevato/rich-identifiers
Support raw identifiers (backtick-delimited identifiers containing non-identifier characters).
2025-03-12 14:56:14 -04:00
Erik Eckstein
5fbaf0fad3 Revert "IRGen: convert two asserts to ASSERT to check the conditions also in a release-built compiler"
This fails in TBD generation in embedded swift.
A temporary workaround until we disable TBD generation in embedded swift.
rdar://146864959
2025-03-12 19:53:22 +01:00
Adrian Prantl
34cda58239 [Debug Info] Prevent infinite recursion when emitting debug info
for recursive classes. This is achieved by treating types created with
DebugTypeInfo::createFrowardDecl() as unconditional forward
declarations when emitting debug info instead of applying a heuristic
to determine this.

rdar://146688269
2025-03-12 11:07:26 -07:00
eeckstein
47b449372e Merge pull request #79917 from eeckstein/rename-opened-archetype-type
AST: rename OpenArchetypeType -> ExistentialArchetypeType
2025-03-12 06:01:10 +01:00
Tony Allevato
97d9ca1a20 Preserve existing printing/mangling behavior for C++ specializations.
Imported C++ template specializations receive identifiers that contain
their type signature; e.g., `X<Y, Z>`. Since this means the identifier
contains non-identifier characters, the new behavior was trying to
escape them with backticks in ASTPrinter, ASTMangler, and the runtime
metadata. This pulls that back to preserve the current behavior for
specifically those types.
2025-03-11 17:26:26 -04:00
Tony Allevato
d94bd80c62 Add support for raw identifiers.
Raw identifiers are backtick-delimited identifiers that can contain any
non-identifier character other than the backtick itself, CR, LF, or other
non-printable ASCII code units, and which are also not composed entirely
of operator characters.
2025-03-11 17:18:43 -04:00
Adrian Prantl
f5760ec3da Remove debugging code 2025-03-11 14:04:13 -07:00
Susana Monteiro
7f1792a12f Merge pull request #79791 from swiftlang/susmonteiro/enums-same-gen-name
[cxx-interop] Use qualified name in import info of clang declarations
2025-03-11 20:34:45 +00:00
Erik Eckstein
d225c47d25 AST: rename OpenArchetypeType -> ExistentialArchetypeType
NFC
2025-03-11 20:21:46 +01:00
Erik Eckstein
23b4c6fc34 embedded: fix specialization of associated conformance entries in witness tables
When creating a specialized witness table, we need to get the right specialized conformance.
In IRGen don't emit associated conformance witness table entries if the protocol is not a class protocol.
In this case the associated type can never be used to create an existential. Therefore such a witness table entry is never used at runtime in embedded swift.

Fixes a compiler crash

rdar://146448091
2025-03-11 11:33:10 +01:00
Erik Eckstein
ecfa808425 IRGen: convert two asserts to ASSERT to check the conditions also in a release-built compiler 2025-03-11 11:20:16 +01:00
Kuba Mracek
d25f1fa86f [embedded] Emit weak_odr instead of linkonce_odr symbols under -Xfrontend -mergeable-symbols 2025-03-10 15:01:23 -07:00