File tree Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -1320,6 +1320,23 @@ void Verifier::visitDIDerivedType(const DIDerivedType &N) {
13201320 if (N.getTag () == dwarf::DW_TAG_ptr_to_member_type) {
13211321 CheckDI (isType (N.getRawExtraData ()), " invalid pointer to member type" , &N,
13221322 N.getRawExtraData ());
1323+ } else if (N.getTag () == dwarf::DW_TAG_template_alias) {
1324+ CheckDI (isa<MDTuple>(N.getRawExtraData ()), " invalid template parameters" ,
1325+ &N, N.getRawExtraData ());
1326+ } else if (auto *ExtraData = N.getRawExtraData ()) {
1327+ auto IsValidExtraData = [&]() {
1328+ if (isa<ConstantAsMetadata>(ExtraData) || isa<MDString>(ExtraData) ||
1329+ isa<DIObjCProperty>(ExtraData))
1330+ return true ;
1331+ if (auto *Tuple = dyn_cast<MDTuple>(ExtraData))
1332+ return Tuple->getNumOperands () == 1 &&
1333+ isa<ConstantAsMetadata>(Tuple->getOperand (0 ));
1334+ return false ;
1335+ };
1336+ CheckDI (IsValidExtraData (),
1337+ " extraData must be ConstantAsMetadata, MDString, DIObjCProperty, "
1338+ " or MDTuple with single ConstantAsMetadata operand" ,
1339+ &N, ExtraData);
13231340 }
13241341
13251342 if (N.getTag () == dwarf::DW_TAG_set_type) {
You can’t perform that action at this time.
0 commit comments