OSDN Git Service

DebugInfoFinder: handle imported entities of a CU.
authorManman Ren <manman.ren@gmail.com>
Sat, 24 Aug 2013 00:32:12 +0000 (00:32 +0000)
committerManman Ren <manman.ren@gmail.com>
Sat, 24 Aug 2013 00:32:12 +0000 (00:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189158 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/DebugInfo.cpp

index de33601..fdd8d53 100644 (file)
@@ -923,6 +923,18 @@ void DebugInfoFinder::processModule(const Module &M) {
       DIArray RetainedTypes = CU.getRetainedTypes();
       for (unsigned i = 0, e = RetainedTypes.getNumElements(); i != e; ++i)
         processType(DIType(RetainedTypes.getElement(i)));
+      DIArray Imports = CU.getImportedEntities();
+      for (unsigned i = 0, e = Imports.getNumElements(); i != e; ++i) {
+        DIImportedEntity Import = DIImportedEntity(
+                                    Imports.getElement(i));
+        DIDescriptor Entity = Import.getEntity();
+        if (Entity.isType())
+          processType(DIType(Entity));
+        else if (Entity.isSubprogram())
+          processSubprogram(DISubprogram(Entity));
+        else if (Entity.isNameSpace())
+          processScope(DINameSpace(Entity).getContext());
+      }
       // FIXME: We really shouldn't be bailing out after visiting just one CU
       return;
     }