DebugInfoFinder: handle template params of a DISubprogram.
authorManman Ren <manman.ren@gmail.com>
Fri, 23 Aug 2013 18:36:18 +0000 (18:36 +0000)
committerManman Ren <manman.ren@gmail.com>
Fri, 23 Aug 2013 18:36:18 +0000 (18:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189131 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/DebugInfo.cpp

index cffc2ac1f221722cd2e0cf7c7cccfa520ce45569..de3360129a50265bbc1e28600f91228da47e82a3 100644 (file)
@@ -1005,6 +1005,19 @@ void DebugInfoFinder::processSubprogram(DISubprogram SP) {
     return;
   processScope(SP.getContext());
   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);
+      processScope(TType.getContext());
+      processType(TType.getType());
+    } else if (Element.isTemplateValueParameter()) {
+      DITemplateValueParameter TVal(Element);
+      processScope(TVal.getContext());
+      processType(TVal.getType());
+    }
+  }
 }
 
 /// processDeclare - Process DbgDeclareInst.