Arnold Schwaighofer
8a38738abf
IRGen: Initial support for relative protocol witness table emission
2023-01-18 13:43:25 -08:00
Slava Pestov
6e31af6dda
IRGen: Simplify enumerateFulfillments()
2022-12-13 11:56:33 -05:00
Slava Pestov
c5ab1042fb
IRGen: Stub out more support for type parameter packs
2022-12-13 11:56:33 -05:00
Slava Pestov
e5e4e266c8
IRGen: Implement emitPackShapeExpression()
2022-12-13 11:56:33 -05:00
Slava Pestov
aae03550b4
IRGen: Basic support for computing function signatures with shape parameters
2022-12-13 11:56:33 -05:00
Slava Pestov
32d3905bf3
IRGen: Simplify PolymorphicConvention::enumerateUnfulfilledRequirements
2022-12-12 23:26:41 -05:00
nate-chandler
7768b005a7
Merge pull request #62501 from nate-chandler/remove-in-constant
...
[SIL] Removed Indirect_In_Constant convention.
2022-12-12 07:29:12 -08:00
Slava Pestov
0c3a9d8d55
IRGen: Replace FulfillmentKey with GenericRequirement
2022-12-11 22:14:37 -05:00
Slava Pestov
65d2d4d621
IRGen: Encapsulate fields of GenericRequirement better
2022-12-11 22:14:37 -05:00
Nate Chandler
8d8577e5b0
[SIL] Removed Indirect_In_Constant convention.
...
It is no different from @in.
Continue parse @in_constant in textual and serialized SIL, but just as
an alias for @in.
2022-12-09 21:54:00 -08:00
Slava Pestov
78bddc66ea
IRGen: Remove some dead code from NecessaryBindings.cpp
2022-12-06 14:15:17 -05:00
Arnold Schwaighofer
ae77e795c6
IRGen: Fix the computation of the number of type metadata pointers for distributed thunks under opaque pointer IR
...
When using opaque pointers we can no longer depend on the LLVM IR type
to perform the computation. Instead compute the number while we are
building a signature.
2022-10-24 09:04:30 -07:00
Holly Borla
38a2c8218b
[Requirement] Rename RequirementKind::SameCount to SameShape.
2022-10-06 20:48:40 -07:00
Arnold Schwaighofer
d810b0f7e4
IRGen: Pass the elementType of pointers through to operations
...
In preparation for moving to llvm's opaque pointer representation
replace getPointerElementType and CreateCall/CreateLoad/Store uses that
dependent on the address operand's pointer element type.
This means an `Address` carries the element type and we use
`FunctionPointer` in more places or read the function type off the
`llvm::Function`.
2022-10-03 15:27:12 -07:00
Alex Lorenz
a5043c354d
[interop][SwiftToCxx] add support for invoking methods in generic structs
2022-08-31 20:19:19 -07:00
Slava Pestov
046c2040ce
Merge pull request #60726 from slavapestov/variadic-generics-bits
...
AST: Plumbing for pack conformances and a few other variadic generics bits
2022-08-24 08:59:40 -04:00
Slava Pestov
5c32f2136e
AST: Introduce RequirementKind::SameCount
2022-08-23 11:12:00 -04:00
Alastair Houghton
62f54019af
[IRGen] Rearrange fix slightly and add a test case.
...
isDependentConformance() should always check for synthesized conformances,
so do that further up the function.
Also add a test.
rdar://97290618
2022-08-23 09:50:06 +01:00
Alastair Houghton
7e1050b98c
[IRGen] Fix witness table miscompilation.
...
If a foreign type conforms to a protocol, and that conformance is not
resilient, we were emitting an instantantiation function but it would
never be called because we weren't emitting the `GenericWitnessTable`
that would have contained a reference to it.
This was happening because of a missing `isSynthesizedNonUnique()` call
in `isDependentConformance()`.
rdar://97290618
2022-08-23 09:50:06 +01:00
swift-ci
71c6bd422e
Merge remote-tracking branch 'origin/main' into rebranch
2022-08-09 13:14:18 -07:00
Slava Pestov
9d96ed940f
AST: Rename 'canonical wrt. generic signature' to 'reduced'
...
We had two notions of canonical types, one is the structural property
where it doesn't contain sugared types, the other one where it does
not contain reducible type parameters with respect to a generic
signature.
Rename the second one to a 'reduced type'.
2022-08-09 12:46:31 -04:00
swift-ci
37dacefe15
Merge remote-tracking branch 'origin/main' into rebranch
2022-07-29 00:33:45 -07:00
Alex Lorenz
32723f7e67
[interop][SwiftToCxx] initial generic function support: pass generic parameters
...
Only primitive types are supported at the moment from C++ as the type traits aren't emitted for all types yet
2022-07-28 22:52:21 +01:00
swift-ci
88ac734e3e
Merge remote-tracking branch 'origin/main' into rebranch
2022-07-22 12:54:48 -07:00
Pavel Yaskevich
3aac72ef01
[IRGen] Determine whether protocol requirement is async using SILDeclRef
...
While building witness table record, let's use `hasAsync()` check on
`SILDeclRef` of the requirement instead of reaching for the underlying
declaration because the reference should be the source of truth about
`async` and other attributes.
In case of distributed thunk witness, which is always `async throws`,
the underlying declaration could be sync because it's the protocol
requirement declaration.
2022-07-21 14:33:00 -07:00
swift-ci
55000f53be
Merge remote-tracking branch 'origin/main' into rebranch
2022-06-17 10:15:14 -07:00
zoecarver
f972f664d3
[cxx-interop] Runtime support for foreign reference types.
2022-06-14 12:18:05 -07:00
swift_jenkins
31f3c479a3
Merge remote-tracking branch 'origin/main' into next
2022-04-21 14:33:57 -07:00
Josh Soref
9fa14ca215
Spelling irgen ( #42470 )
...
* spelling: abstractable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: across
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clazz
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: command
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: components
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: current
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declared
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: discrimination
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: entities
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: except
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: existential
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: generic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: initialization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: initialize
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inserted
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instantiate
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instantiation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interfere
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interferes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: intrinsic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: metadata
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: might
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: multiple
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: necessary
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: objective
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: occurrences
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: outlined
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: parameters
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: payload
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: rearchitecting
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: replaceable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: reverse
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: rewritable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: shareably
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specializations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: speedup
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: template
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: that
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transferred
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: uninitialized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: witness
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com >
2022-04-21 14:02:03 -07:00
swift_jenkins
53f277d3de
Merge remote-tracking branch 'origin/main' into next
2022-04-12 16:40:41 -07:00
John McCall
1f7c2fa52d
[NFC] Clean up IRGen generic-requirements collection APIs
2022-04-11 22:26:01 -04:00
swift_jenkins
79d03d3d46
Merge remote-tracking branch 'origin/main' into next
2022-03-31 08:01:10 -07:00
Yuta Saito
43a25e89b7
[Wasm][IRGen] Add initial support for absolute function pointer
...
On some Harvard architectures like WebAssembly that allow sliding code
and data address space offsets independently, it's impossible to make
direct relative reference to code from data because the relative offset
between them is not representable.
Use absolute function references instead of relative ones on such targets.
2022-03-30 08:12:23 +00:00
swift_jenkins
86096ad36b
Merge remote-tracking branch 'origin/main' into next
2022-03-08 10:20:51 -08:00
Robert Widmann
f694bf585b
Plumb GenericSignature of SIL Function Through IRGen
2022-03-08 03:09:19 -08:00
swift_jenkins
810042c69f
Merge remote-tracking branch 'origin/main' into next
2022-02-13 11:41:02 -08:00
Slava Pestov
a1c03db381
AST: Generalize ProtocolDecl::getRequirementSignature() to a new RequirementSignature type
...
The RequirementSignature generalizes the old ArrayRef<Requirement>
which stores the minimal requirements that a conforming type's
witnesses must satisfy, to also record the protocol typealiases
defined in the protocol.
2022-02-13 00:24:23 -05:00
swift_jenkins
885ce9d4d3
Merge remote-tracking branch 'origin/main' into next
2022-02-02 12:20:32 -08:00
Kuba (Brecka) Mracek
17c5d6f0de
Add a flag to disable compile-time preallocated instantiation caches (for type metadata and protocol conformances) ( #41148 )
2022-02-02 12:06:16 -08:00
swift_jenkins
84853af944
Merge remote-tracking branch 'origin/main' into next
2022-01-24 00:41:09 -08:00
Pavel Yaskevich
261a9df425
Merge pull request #40970 from xedin/add-padding-to-generic-env-desc
...
[IRGen] Pad generic environment descriptor before adding requirements
2022-01-24 00:27:55 -08:00
Pavel Yaskevich
cee7d1c112
[IRGen] Pad generic environment descriptor before adding requirements
...
Since `TargetGenericEnvironmentDescriptor` uses trailing objects to
store parameters, requirements and other information. IR Emission
should pad the structure to be 4 bytes aligned before adding generic
requirements, because that's the alignment expected by
`TargetGenericRequirementDescriptor`.
2022-01-22 00:53:26 -08:00
swift-ci
51d5b9ecb3
Merge remote-tracking branch 'origin/main' into rebranch
2022-01-06 18:12:04 -08:00
swift_jenkins
770e7f1c2b
Merge remote-tracking branch 'origin/main' into next
2022-01-06 18:02:41 -08:00
zoecarver
036361d1e4
[cxx-interop] Add SIL function representation cxx_method; Support extending C++ types.
...
There are three major changes here:
1. The addition of "SILFunctionTypeRepresentation::CXXMethod".
2. C++ methods are imported with their members *last*. Then the arguments are switched when emitting the IR for an application of the function.
3. Clang decls are now marked as foreign witnesses.
These are all steps towards being able to have C++ protocol conformance.
2022-01-06 14:26:47 -08:00
swift_jenkins
75fe1c949d
Merge remote-tracking branch 'origin/main' into next
2021-12-08 11:41:03 -08:00
swift-ci
103ce0b560
Merge remote-tracking branch 'origin/main' into rebranch
2021-12-08 11:38:04 -08:00
zoecarver
fc3b3a1d71
[cxx-interop] Implement foreign reference types.
...
This is an expiremental feature to allow an attribute, `import_as_ref`, to import a C++ record as a non-reference-counted reference type in Swift.
2021-12-08 15:35:18 +00:00
swift-ci
ee96d2798c
Merge remote-tracking branch 'origin/main' into rebranch
2021-11-30 08:33:02 -08:00
swift_jenkins
c0251d5f7c
Merge remote-tracking branch 'origin/main' into next
2021-11-30 08:20:36 -08:00