Erik Eckstein
93f5d9f176
swift SIL: Type.getStructFields -> Type.getNominalFields
...
To be able to get class fields as well as struct fields
2022-01-25 11:29:25 +01:00
Max Desiatov
1f53563780
libswift: remove Instruction.mayReadRefCount
2022-01-19 18:51:19 +00:00
Max Desiatov
d7144c0046
libswift: implement isFieldOnlyNonTrivialField
2022-01-19 18:51:19 +00:00
Max Desiatov
848fa70529
libswift: reimplement Instruction helpers in Swift
2022-01-19 18:51:19 +00:00
Erik Eckstein
cec4b82b39
swift SIL: add some SIL type related bridging
...
* `Function.argumentTypes` and `Function.resultType`
* `Type.isNominal`, `Type.isClass`, `Type.isTuple`, `Type.isStruct` and `Type.isEnum`
* `Type.getFieldIndexOfNominal`
* `Type.getFieldTypeOfNominal`
* `Type.tupleElements`
* `Type.description` for better debugging
# Conflicts:
# SwiftCompilerSources/Sources/SIL/Type.swift
# SwiftCompilerSources/Sources/SIL/Utils.swift
# SwiftCompilerSources/Sources/SIL/Value.swift
# include/swift/SIL/SILBridging.h
# lib/SIL/Utils/SILBridging.cpp
2022-01-19 18:51:19 +00:00
Max Desiatov
b964dba177
libswift: implement ReleaseDevirtualizer in Swift
2022-01-19 18:51:19 +00:00
Max Desiatov
7d961001d3
libswift: bridge more functions from SILBuilder
2022-01-19 18:51:18 +00:00
Erik Eckstein
24b62d4d7c
Swift SIL: add a few utilities and instructions
...
* instructions: function_ref, mark_dependence
* add `BuiltinInst.id`
* add isObjC and canAllocOnStack for alloc_ref and alloc_ref_dynamic
* add `ApplySite::referencedFunction`
* add `Builder.createDeallocStackRef`
* add == and != operators for `Function`
* add `List.first` and `ReverseList.first`
2022-01-12 15:47:15 +01:00
Max Desiatov
42e6fac1ea
libswift: reimplement AssumeSingleThreaded pass
2022-01-10 08:47:43 +00:00
Erik Eckstein
3540c01125
rename initializeLibSwift -> InitializeSwiftModules
...
and some updates in comments.
2021-12-22 11:31:52 +01:00
Erik Eckstein
2900dec755
Revert [cxx-interop][libswift] Use std::string instead of BridgedStringRef
...
This causes problem with the Windows build and also causes a deserialization crash on Linux.
2021-12-17 13:45:46 +01:00
Erik Eckstein
27dc5afb10
libswift: add a few utilities
...
* add the IntegerLiteralInst + the Builder function to create it
* add Value.nonDebugUses
* add a general utility Sequence.isEmpty
* add PassContext.replaceAllUses
* add a function to erase all `debug_value` uses in PassContext.erase
2021-11-29 09:41:05 +01:00
Erik Eckstein
fc772fff50
libswift: add more instructions and other small utilities
...
* ApplySite.arguments
* BasicBlock != operator
* some Function argument related properties
* Operand.isTypeDependent
* Type.isTrivial
* bridging of raw_ostream::write
2021-09-24 11:36:41 +02:00
zoecarver
f063701f84
[cxx-interop][libswift] Use std::string instead of BridgedStringRef.
...
The first C-bridge to be removed! 🚀
2021-09-22 16:13:44 -07:00
Erik Eckstein
90c71ad002
libswift: improve and simplify pass invocation
...
* unify FunctionPassContext and InstructionPassContext
* add a modification API: PassContext.setOperand
* automatic invalidation notifications when the SIL is modified
2021-08-23 10:21:12 +02:00
Erik Eckstein
b175436d07
libswift: add instructions, support block predecessors/successors
...
Add many new instruction classes in libswift, including all terminator instructions.
This allows to support BasicBlock predecessors and successors.
2021-07-01 16:15:44 +02:00
Erik Eckstein
46c3a17e3d
libswift: add Type.isAddress and Type.isObject
2021-07-01 15:23:08 +02:00
Erik Eckstein
891f53d1e3
libswift: bridge the MemoryBehavior enum instead of all the mayRead/Write instruction functions
2021-07-01 15:17:51 +02:00
Erik Eckstein
d49108da07
libswift: add the SIL Builder
...
And two example instruction building functions.
2021-06-09 11:31:06 +02:00
Erik Eckstein
8080465e77
libswift: basic SIL and SIL bridging
...
This is the initial version of a buildable SIL definition in libswift.
It defines an initial set of SIL classes, like Function, BasicBlock, Instruction, Argument, and a few instruction classes.
The interface between C++ and SIL is a bridging layer, implemented in C.
It contains all the required bridging data structures used to access various SIL data structures.
2021-06-09 11:28:57 +02:00