diff options
author | Devang Patel <dpatel@apple.com> | 2009-07-30 17:30:23 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-07-30 17:30:23 +0000 |
commit | e802f1c4c3c4d1e27117c66d428715d01fda385d (patch) | |
tree | 11b7d2731caccf5be61b8753d667d60f3d75a889 /lib/Analysis/DebugInfo.cpp | |
parent | e8b3e02dce297304389ef7dffae818943d07d640 (diff) |
walk DbgRegionStartInst and DbgRegionEndInst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77604 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/DebugInfo.cpp')
-rw-r--r-- | lib/Analysis/DebugInfo.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index 433e700972..248240efee 100644 --- a/lib/Analysis/DebugInfo.cpp +++ b/lib/Analysis/DebugInfo.cpp @@ -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()) |