walk DbgRegionStartInst and DbgRegionEndInst
authorDevang Patel <dpatel@apple.com>
Thu, 30 Jul 2009 17:30:23 +0000 (17:30 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 30 Jul 2009 17:30:23 +0000 (17:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77604 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/DebugInfo.h
lib/Analysis/DebugInfo.cpp

index 4e511ebf9b081d5d175c30a707e7ea355ac9da44..1049f6d37b34efa9eb000f0b575decdd9070d8a2 100644 (file)
@@ -633,6 +633,12 @@ namespace llvm {
     /// enumerateFuncStart - Enumberate DbgFuncStartInst.
     void enumerateFuncStart(DbgFuncStartInst *FSI);
 
+    /// enumerateRegionStart - Enumerate DbgRegionStart.
+    void enumerateRegionStart(DbgRegionStartInst *DRS);
+
+    /// enumerateRegionEnd - Enumerate DbgRegionEnd.
+    void enumerateRegionEnd(DbgRegionEndInst *DRE);
+
     /// addCompileUnit - Add compile unit into CUs.
     bool addCompileUnit(DICompileUnit CU);
     
index 433e700972750faeb8d29626831918ed66f7da11..248240efee8490ceba5a7cd40ece8ca8ab51ca92 100644 (file)
@@ -920,6 +920,10 @@ void DebugInfoEnumerator::enumerateModule(Module &M) {
           enumerateStopPoint(SPI);
         else if (DbgFuncStartInst *FSI = dyn_cast<DbgFuncStartInst>(BI))
           enumerateFuncStart(FSI);
+        else if (DbgRegionStartInst *DRS = dyn_cast<DbgRegionStartInst>(BI))
+          enumerateRegionStart(DRS);
+        else if (DbgRegionEndInst *DRE = dyn_cast<DbgRegionEndInst>(BI))
+          enumerateRegionEnd(DRE);
       }
   
   for (Module::global_iterator GVI = M.global_begin(), GVE = M.global_end();
@@ -965,8 +969,10 @@ void DebugInfoEnumerator::enumerateType(DIType DT) {
   }
 }
 
-/// enumerateSubprogram - Enumberate DISubprogram.
+/// enumerateSubprogram - Enumerate DISubprogram.
 void DebugInfoEnumerator::enumerateSubprogram(DISubprogram SP) {
+  if (SP.isNull())
+    return;
   if (!addSubprogram(SP))
     return;
   addCompileUnit(SP.getCompileUnit());
@@ -979,12 +985,24 @@ void DebugInfoEnumerator::enumerateStopPoint(DbgStopPointInst *SPI) {
   addCompileUnit(DICompileUnit(Context));
 }
 
-/// enumerateFuncStart - Enumberate DbgFuncStartInst.
+/// enumerateFuncStart - Enumerate DbgFuncStartInst.
 void DebugInfoEnumerator::enumerateFuncStart(DbgFuncStartInst *FSI) {
   GlobalVariable *SP = dyn_cast<GlobalVariable>(FSI->getSubprogram());
   enumerateSubprogram(DISubprogram(SP));
 }
 
+/// enumerateRegionStart - Enumerate DbgRegionStart.
+void DebugInfoEnumerator::enumerateRegionStart(DbgRegionStartInst *DRS) {
+  GlobalVariable *SP = dyn_cast<GlobalVariable>(DRS->getContext());
+  enumerateSubprogram(DISubprogram(SP));
+}
+
+/// enumerateRegionEnd - Enumerate DbgRegionEnd.
+void DebugInfoEnumerator::enumerateRegionEnd(DbgRegionEndInst *DRE) {
+  GlobalVariable *SP = dyn_cast<GlobalVariable>(DRE->getContext());
+  enumerateSubprogram(DISubprogram(SP));
+}
+
 /// addCompileUnit - Add compile unit into CUs.
 bool DebugInfoEnumerator::addCompileUnit(DICompileUnit CU) {
   if (CU.isNull())