@@ -27,11 +27,12 @@ typedef struct {
27
27
28
28
typedef struct {
29
29
const unsigned char * _Nonnull data ;
30
- size_t numOperands ;
31
- } BridgedOperandArray ;
30
+ size_t numElements ;
31
+ } BridgedArrayRef ;
32
32
33
33
enum {
34
- BridgedOperandSize = 4 * sizeof (uintptr_t )
34
+ BridgedOperandSize = 4 * sizeof (uintptr_t ),
35
+ BridgedSuccessorSize = 5 * sizeof (uintptr_t )
35
36
};
36
37
37
38
typedef struct {
@@ -75,6 +76,14 @@ typedef struct {
75
76
const void * _Nullable op ;
76
77
} OptionalBridgedOperand ;
77
78
79
+ typedef struct {
80
+ const void * _Nonnull succ ;
81
+ } BridgedSuccessor ;
82
+
83
+ typedef struct {
84
+ const void * _Nullable succ ;
85
+ } OptionalBridgedSuccessor ;
86
+
78
87
typedef struct {
79
88
SwiftObject obj ;
80
89
} BridgedFunction ;
@@ -119,6 +128,16 @@ typedef struct {
119
128
SwiftObject obj ;
120
129
} BridgedMultiValueResult ;
121
130
131
+ // Must be in sync with SILInstruction::MemoryBehavior
132
+ // TODO: do this less hacky.
133
+ typedef enum {
134
+ NoneBehavior ,
135
+ MayReadBehavior ,
136
+ MayWriteBehavior ,
137
+ MayReadWriteBehavior ,
138
+ MayHaveSideEffectsBehavior
139
+ } BridgedMemoryBehavior ;
140
+
122
141
typedef long SwiftInt ;
123
142
124
143
void registerBridgedClass (BridgedStringRef className , SwiftMetatype metatype );
@@ -145,11 +164,16 @@ BridgedStringRef SILGlobalVariable_debugDescription(BridgedGlobalVar global);
145
164
146
165
OptionalBridgedBasicBlock SILBasicBlock_next (BridgedBasicBlock block );
147
166
OptionalBridgedBasicBlock SILBasicBlock_previous (BridgedBasicBlock block );
167
+ BridgedFunction SILBasicBlock_getFunction (BridgedBasicBlock block );
148
168
BridgedStringRef SILBasicBlock_debugDescription (BridgedBasicBlock block );
149
169
OptionalBridgedInstruction SILBasicBlock_firstInst (BridgedBasicBlock block );
150
170
OptionalBridgedInstruction SILBasicBlock_lastInst (BridgedBasicBlock block );
151
171
SwiftInt SILBasicBlock_getNumArguments (BridgedBasicBlock block );
152
172
BridgedArgument SILBasicBlock_getArgument (BridgedBasicBlock block , SwiftInt index );
173
+ OptionalBridgedSuccessor SILBasicBlock_getFirstPred (BridgedBasicBlock block );
174
+ OptionalBridgedSuccessor SILSuccessor_getNext (BridgedSuccessor succ );
175
+ BridgedBasicBlock SILSuccessor_getTargetBlock (BridgedSuccessor succ );
176
+ BridgedInstruction SILSuccessor_getContainingInst (BridgedSuccessor succ );
153
177
154
178
BridgedValue Operand_getValue (BridgedOperand );
155
179
OptionalBridgedOperand Operand_nextUse (BridgedOperand );
@@ -159,25 +183,40 @@ BridgedStringRef SILNode_debugDescription(BridgedNode node);
159
183
OptionalBridgedOperand SILValue_firstUse (BridgedValue value );
160
184
BridgedType SILValue_getType (BridgedValue value );
161
185
186
+ SwiftInt SILType_isAddress (BridgedType );
187
+
162
188
BridgedBasicBlock SILArgument_getParent (BridgedArgument argument );
163
189
164
190
OptionalBridgedInstruction SILInstruction_next (BridgedInstruction inst );
165
191
OptionalBridgedInstruction SILInstruction_previous (BridgedInstruction inst );
166
192
BridgedBasicBlock SILInstruction_getParent (BridgedInstruction inst );
167
- BridgedOperandArray SILInstruction_getOperands (BridgedInstruction inst );
193
+ BridgedArrayRef SILInstruction_getOperands (BridgedInstruction inst );
168
194
BridgedLocation SILInstruction_getLocation (BridgedInstruction inst );
169
- int SILInstruction_mayHaveSideEffects (BridgedInstruction inst );
170
- int SILInstruction_mayReadFromMemory (BridgedInstruction inst );
171
- int SILInstruction_mayWriteToMemory (BridgedInstruction inst );
172
- int SILInstruction_mayReadOrWriteMemory (BridgedInstruction inst );
195
+ BridgedMemoryBehavior SILInstruction_getMemBehavior (BridgedInstruction inst );
173
196
174
197
BridgedInstruction MultiValueInstResult_getParent (BridgedMultiValueResult result );
175
198
SwiftInt MultipleValueInstruction_getNumResults (BridgedInstruction inst );
176
199
BridgedMultiValueResult
177
200
MultipleValueInstruction_getResult (BridgedInstruction inst , SwiftInt index );
178
201
202
+ BridgedArrayRef TermInst_getSuccessors (BridgedInstruction term );
203
+
179
204
BridgedStringRef CondFailInst_getMessage (BridgedInstruction cfi );
180
205
BridgedGlobalVar GlobalAccessInst_getGlobal (BridgedInstruction globalInst );
206
+ SwiftInt TupleExtractInst_fieldIndex (BridgedInstruction tei );
207
+ SwiftInt TupleElementAddrInst_fieldIndex (BridgedInstruction teai );
208
+ SwiftInt StructExtractInst_fieldIndex (BridgedInstruction sei );
209
+ SwiftInt StructElementAddrInst_fieldIndex (BridgedInstruction seai );
210
+ SwiftInt EnumInst_caseIndex (BridgedInstruction ei );
211
+ SwiftInt UncheckedEnumDataInst_caseIndex (BridgedInstruction uedi );
212
+ SwiftInt RefElementAddrInst_fieldIndex (BridgedInstruction reai );
213
+ SwiftInt PartialApplyInst_numArguments (BridgedInstruction ai );
214
+ SwiftInt ApplyInst_numArguments (BridgedInstruction ai );
215
+ SwiftInt BeginApplyInst_numArguments (BridgedInstruction ai );
216
+ SwiftInt TryApplyInst_numArguments (BridgedInstruction ai );
217
+ BridgedBasicBlock BranchInst_getTargetBlock (BridgedInstruction bi );
218
+ SwiftInt SwitchEnumInst_getNumCases (BridgedInstruction se );
219
+ SwiftInt SwitchEnumInst_getCaseIndex (BridgedInstruction se , SwiftInt idx );
181
220
182
221
BridgedInstruction SILBuilder_createBuiltinBinaryFunction (
183
222
BridgedInstruction insertionPoint ,
0 commit comments