@@ -210,7 +210,9 @@ struct SILDynamicCastInst {
210210 SILBasicBlock *getSuccessBlock () {
211211 switch (getKind ()) {
212212 case SILDynamicCastKind::CheckedCastAddrBranchInst:
213+ llvm_unreachable (" unsupported" );
213214 case SILDynamicCastKind::CheckedCastBranchInst:
215+ return cast<CheckedCastBranchInst>(inst)->getSuccessBB ();
214216 case SILDynamicCastKind::CheckedCastValueBranchInst:
215217 llvm_unreachable (" unsupported" );
216218 case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
@@ -221,14 +223,32 @@ struct SILDynamicCastInst {
221223 }
222224 }
223225
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+
224242 const SILBasicBlock *getSuccessBlock () const {
225243 return const_cast <SILDynamicCastInst &>(*this ).getSuccessBlock ();
226244 }
227245
228246 SILBasicBlock *getFailureBlock () {
229247 switch (getKind ()) {
230248 case SILDynamicCastKind::CheckedCastAddrBranchInst:
249+ llvm_unreachable (" unsupported" );
231250 case SILDynamicCastKind::CheckedCastBranchInst:
251+ return cast<CheckedCastBranchInst>(inst)->getFailureBB ();
232252 case SILDynamicCastKind::CheckedCastValueBranchInst:
233253 llvm_unreachable (" unsupported" );
234254 case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
@@ -239,14 +259,32 @@ struct SILDynamicCastInst {
239259 }
240260 }
241261
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+
242278 const SILBasicBlock *getFailureBlock () const {
243279 return const_cast <SILDynamicCastInst &>(*this ).getFailureBlock ();
244280 }
245281
246282 SILValue getSource () const {
247283 switch (getKind ()) {
248284 case SILDynamicCastKind::CheckedCastAddrBranchInst:
285+ llvm_unreachable (" unsupported" );
249286 case SILDynamicCastKind::CheckedCastBranchInst:
287+ return cast<CheckedCastBranchInst>(inst)->getOperand ();
250288 case SILDynamicCastKind::CheckedCastValueBranchInst:
251289 llvm_unreachable (" unsupported" );
252290 case SILDynamicCastKind::UnconditionalCheckedCastAddrInst:
@@ -327,7 +365,9 @@ struct SILDynamicCastInst {
327365 SILType getLoweredTargetType () const {
328366 switch (getKind ()) {
329367 case SILDynamicCastKind::CheckedCastAddrBranchInst:
368+ llvm_unreachable (" unsupported" );
330369 case SILDynamicCastKind::CheckedCastBranchInst:
370+ return cast<CheckedCastBranchInst>(inst)->getCastType ();
331371 case SILDynamicCastKind::CheckedCastValueBranchInst:
332372 llvm_unreachable (" unsupported" );
333373 case SILDynamicCastKind::UnconditionalCheckedCastAddrInst: {
0 commit comments