void DebugInfoFinder::processSubprogram(DISubprogram SP) { if (!addSubprogram(SP)) return; processScope(SP.getContext().resolve(TypeIdentifierMap)); processType(SP.getType()); for (auto *Element : SP.getTemplateParams()) { if (DITemplateTypeParameter TType = dyn_cast<MDTemplateTypeParameter>(Element)) { processType(TType.getType().resolve(TypeIdentifierMap)); } else if (DITemplateValueParameter TVal = dyn_cast<MDTemplateValueParameter>(Element)) { processType(TVal.getType().resolve(TypeIdentifierMap)); } } }
void DebugInfoFinder::processSubprogram(DISubprogram SP) { if (!addSubprogram(SP)) return; processScope(SP.getContext().resolve(TypeIdentifierMap)); processType(SP.getType()); DIArray TParams = SP.getTemplateParams(); for (unsigned I = 0, E = TParams.getNumElements(); I != E; ++I) { DIDescriptor Element = TParams.getElement(I); if (Element.isTemplateTypeParameter()) { DITemplateTypeParameter TType(Element); processType(TType.getType().resolve(TypeIdentifierMap)); } else if (Element.isTemplateValueParameter()) { DITemplateValueParameter TVal(Element); processType(TVal.getType().resolve(TypeIdentifierMap)); } } }