@@ -1064,9 +1064,8 @@ static unsigned tuple_getEnumTagSinglePayload(const OpaqueValue *enumAddr,
1064
1064
auto *witnesses = self->getValueWitnesses ();
1065
1065
auto size = witnesses->getSize ();
1066
1066
auto numExtraInhabitants = witnesses->getNumExtraInhabitants ();
1067
- auto getExtraInhabitantIndex =
1068
- (static_cast <const ExtraInhabitantsValueWitnessTable *>(witnesses)
1069
- ->getExtraInhabitantIndex );
1067
+ auto EIVWT = dyn_cast<ExtraInhabitantsValueWitnessTable>(witnesses);
1068
+ auto getExtraInhabitantIndex = EIVWT ? EIVWT->getExtraInhabitantIndex : nullptr ;
1070
1069
1071
1070
return getEnumTagSinglePayloadImpl (enumAddr, numEmptyCases, self, size,
1072
1071
numExtraInhabitants,
@@ -1080,9 +1079,8 @@ tuple_storeEnumTagSinglePayload(OpaqueValue *enumAddr, unsigned whichCase,
1080
1079
auto *witnesses = self->getValueWitnesses ();
1081
1080
auto size = witnesses->getSize ();
1082
1081
auto numExtraInhabitants = witnesses->getNumExtraInhabitants ();
1083
- auto storeExtraInhabitant =
1084
- (static_cast <const ExtraInhabitantsValueWitnessTable *>(witnesses)
1085
- ->storeExtraInhabitant );
1082
+ auto EIVWT = dyn_cast<ExtraInhabitantsValueWitnessTable>(witnesses);
1083
+ auto storeExtraInhabitant = EIVWT ? EIVWT->storeExtraInhabitant : nullptr ;
1086
1084
1087
1085
storeEnumTagSinglePayloadImpl (enumAddr, whichCase, numEmptyCases, self, size,
1088
1086
numExtraInhabitants, storeExtraInhabitant);
@@ -1585,9 +1583,8 @@ static unsigned pod_direct_getEnumTagSinglePayload(const OpaqueValue *enumAddr,
1585
1583
auto *witnesses = self->getValueWitnesses ();
1586
1584
auto size = witnesses->getSize ();
1587
1585
auto numExtraInhabitants = witnesses->getNumExtraInhabitants ();
1588
- auto getExtraInhabitantIndex =
1589
- (static_cast <const ExtraInhabitantsValueWitnessTable *>(witnesses)
1590
- ->getExtraInhabitantIndex );
1586
+ auto EIVWT = dyn_cast<ExtraInhabitantsValueWitnessTable>(witnesses);
1587
+ auto getExtraInhabitantIndex = EIVWT ? EIVWT->getExtraInhabitantIndex : nullptr ;
1591
1588
1592
1589
return getEnumTagSinglePayloadImpl (enumAddr, numEmptyCases, self, size,
1593
1590
numExtraInhabitants,
@@ -1601,9 +1598,8 @@ static void pod_direct_storeEnumTagSinglePayload(OpaqueValue *enumAddr,
1601
1598
auto *witnesses = self->getValueWitnesses ();
1602
1599
auto size = witnesses->getSize ();
1603
1600
auto numExtraInhabitants = witnesses->getNumExtraInhabitants ();
1604
- auto storeExtraInhabitant =
1605
- (static_cast <const ExtraInhabitantsValueWitnessTable *>(witnesses)
1606
- ->storeExtraInhabitant );
1601
+ auto EIVWT = dyn_cast<ExtraInhabitantsValueWitnessTable>(witnesses);
1602
+ auto storeExtraInhabitant = EIVWT ? EIVWT->storeExtraInhabitant : nullptr ;
1607
1603
1608
1604
storeEnumTagSinglePayloadImpl (enumAddr, whichCase, numEmptyCases, self, size,
1609
1605
numExtraInhabitants, storeExtraInhabitant);
0 commit comments