@@ -210,7 +210,9 @@ struct SILDynamicCastInst {
210
210
SILBasicBlock *getSuccessBlock () {
211
211
switch (getKind ()) {
212
212
case SILDynamicCastKind::CheckedCastAddrBranchInst:
213
+ llvm_unreachable (" unsupported" );
213
214
case SILDynamicCastKind::CheckedCastBranchInst:
215
+ return cast<CheckedCastBranchInst>(inst)->getSuccessBB ();
214
216
case SILDynamicCastKind::CheckedCastValueBranchInst:
215
217
llvm_unreachable (" unsupported" );
216
218
case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
@@ -221,14 +223,32 @@ struct SILDynamicCastInst {
221
223
}
222
224
}
223
225
226
+ Optional<ProfileCounter> getSuccessBlockCount () {
227
+ switch (getKind ()) {
228
+ case SILDynamicCastKind::CheckedCastAddrBranchInst:
229
+ llvm_unreachable (" unsupported" );
230
+ case SILDynamicCastKind::CheckedCastBranchInst:
231
+ return cast<CheckedCastBranchInst>(inst)->getTrueBBCount ();
232
+ case SILDynamicCastKind::CheckedCastValueBranchInst:
233
+ llvm_unreachable (" unsupported" );
234
+ case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
235
+ case SILDynamicCastKind::UnconditionalCheckedCastInst:
236
+ return None;
237
+ case SILDynamicCastKind::UnconditionalCheckedCastValueInst:
238
+ llvm_unreachable (" unsupported" );
239
+ }
240
+ }
241
+
224
242
const SILBasicBlock *getSuccessBlock () const {
225
243
return const_cast <SILDynamicCastInst &>(*this ).getSuccessBlock ();
226
244
}
227
245
228
246
SILBasicBlock *getFailureBlock () {
229
247
switch (getKind ()) {
230
248
case SILDynamicCastKind::CheckedCastAddrBranchInst:
249
+ llvm_unreachable (" unsupported" );
231
250
case SILDynamicCastKind::CheckedCastBranchInst:
251
+ return cast<CheckedCastBranchInst>(inst)->getFailureBB ();
232
252
case SILDynamicCastKind::CheckedCastValueBranchInst:
233
253
llvm_unreachable (" unsupported" );
234
254
case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
@@ -239,14 +259,32 @@ struct SILDynamicCastInst {
239
259
}
240
260
}
241
261
262
+ Optional<ProfileCounter> getFailureBlockCount () {
263
+ switch (getKind ()) {
264
+ case SILDynamicCastKind::CheckedCastAddrBranchInst:
265
+ llvm_unreachable (" unsupported" );
266
+ case SILDynamicCastKind::CheckedCastBranchInst:
267
+ return cast<CheckedCastBranchInst>(inst)->getFalseBBCount ();
268
+ case SILDynamicCastKind::CheckedCastValueBranchInst:
269
+ llvm_unreachable (" unsupported" );
270
+ case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
271
+ case SILDynamicCastKind::UnconditionalCheckedCastInst:
272
+ return None;
273
+ case SILDynamicCastKind::UnconditionalCheckedCastValueInst:
274
+ llvm_unreachable (" unsupported" );
275
+ }
276
+ }
277
+
242
278
const SILBasicBlock *getFailureBlock () const {
243
279
return const_cast <SILDynamicCastInst &>(*this ).getFailureBlock ();
244
280
}
245
281
246
282
SILValue getSource () const {
247
283
switch (getKind ()) {
248
284
case SILDynamicCastKind::CheckedCastAddrBranchInst:
285
+ llvm_unreachable (" unsupported" );
249
286
case SILDynamicCastKind::CheckedCastBranchInst:
287
+ return cast<CheckedCastBranchInst>(inst)->getOperand ();
250
288
case SILDynamicCastKind::CheckedCastValueBranchInst:
251
289
llvm_unreachable (" unsupported" );
252
290
case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
@@ -327,7 +365,9 @@ struct SILDynamicCastInst {
327
365
SILType getLoweredTargetType () const {
328
366
switch (getKind ()) {
329
367
case SILDynamicCastKind::CheckedCastAddrBranchInst:
368
+ llvm_unreachable (" unsupported" );
330
369
case SILDynamicCastKind::CheckedCastBranchInst:
370
+ return cast<CheckedCastBranchInst>(inst)->getCastType ();
331
371
case SILDynamicCastKind::CheckedCastValueBranchInst:
332
372
llvm_unreachable (" unsupported" );
333
373
case SILDynamicCastKind::UnconditionalCheckedCastAddrInst: {
0 commit comments