File tree Expand file tree Collapse file tree 2 files changed +374
-17
lines changed Expand file tree Collapse file tree 2 files changed +374
-17
lines changed Original file line number Diff line number Diff line change @@ -2546,15 +2546,18 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
2546
2546
SILValue casevalue;
2547
2547
SILValue result;
2548
2548
std::tie (casevalue, result) = I->getCase (i);
2549
- auto *il = dyn_cast<IntegerLiteralInst>(casevalue);
2550
- require (il,
2551
- " select_value case operands should refer to integer literals" );
2552
- APInt elt = il->getValue ();
2549
+
2550
+ if (!isa<SILUndef>(casevalue)) {
2551
+ auto *il = dyn_cast<IntegerLiteralInst>(casevalue);
2552
+ require (il,
2553
+ " select_value case operands should refer to integer literals" );
2554
+ APInt elt = il->getValue ();
2553
2555
2554
- require (!seenCaseValues.count (elt),
2555
- " select_value dispatches on same case value more than once" );
2556
+ require (!seenCaseValues.count (elt),
2557
+ " select_value dispatches on same case value more than once" );
2556
2558
2557
- seenCaseValues.insert (elt);
2559
+ seenCaseValues.insert (elt);
2560
+ }
2558
2561
2559
2562
requireSameType (I->getOperand ()->getType (), casevalue->getType (),
2560
2563
" select_value case value must match type of operand" );
You can’t perform that action at this time.
0 commit comments