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
Erik Eckstein
b9169064c6
Swift SIL: add some APIs
...
* `Options.assertConfiguration`
* `Argument.isIndirectResult`
* in `Function`: `selfArgument`, `isTransparent`, `performanceConstraints` and `inlineStrategy`
* `BuiltinInst.substitutionMap`
* `SubstitutionMap.replacementTypes`
* `Type.canBeClass`
2023-05-11 08:11:44 +02:00
Erik Eckstein
72d3f8e3ff
Swift SIL: add SubstitutionMap.isEmpty
2023-01-16 19:00:09 +01:00
Egor Zhdan
710443ae6f
[cxx-interop][SwiftCompilerSources] Use swift::SubstitutionMap instead of BridgedSubstitutionMap
...
rdar://83361087
2022-09-15 14:18:31 +01:00
Erik Eckstein
b0003d51da
Swift SIL: add an initializer to create an empty SubstitutionMap
2022-05-12 21:48:37 +02:00
Josh Soref
d767912be2
Spelling sil ( #42471 )
...
* spelling: accessible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: accessories
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: allocated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: amortizes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: are
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: arguments
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: cacheable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: check
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clazz
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: compatible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: compilation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: completely
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: construct
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: conversion
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declarations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: derivation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: deserialization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: destroyed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: determined
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: different
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: doesn't
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: equality
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: equivalent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: formation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: forwards
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: global
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: guaranteed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: have
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: identify
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inaccessible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: indeterminate
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: indices
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inefficient
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inheritance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instantaneous
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instruction
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: intentionally
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interior
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: intrinsic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: introducing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: irrelevant
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: message
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: multi
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: necessarily
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: object
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: one
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: optimization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: otherwise
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: overridden
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: parameter
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: pattern
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: pipeline
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: possibility
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: postdominance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: providing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: reached
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: recognized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: refrigerator
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: remaining
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: resilient
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: retrieve
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scavenge
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scheduled
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: separately
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: serializable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: signature
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: simplicity
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specifically
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: substituted
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: substitution
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: subtypes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: supplement
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: syntax
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: there
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: these
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: this
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: though
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: through
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transitively
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transpose
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: trivial
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: value
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: verification
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: visibility
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: weird
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: whole
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com >
2022-04-22 15:11:09 -07:00
Max Desiatov
b964dba177
libswift: implement ReleaseDevirtualizer in Swift
2022-01-19 18:51:19 +00:00