From: Devang Patel Date: Thu, 30 Jul 2009 17:30:23 +0000 (+0000) Subject: walk DbgRegionStartInst and DbgRegionEndInst X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e802f1c4c3c4d1e27117c66d428715d01fda385d;p=oota-llvm.git walk DbgRegionStartInst and DbgRegionEndInst git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77604 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/DebugInfo.h b/include/llvm/Analysis/DebugInfo.h index 4e511ebf9b0..1049f6d37b3 100644 --- a/include/llvm/Analysis/DebugInfo.h +++ b/include/llvm/Analysis/DebugInfo.h @@ -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); diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index 433e7009727..248240efee8 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(BI)) enumerateFuncStart(FSI); + else if (DbgRegionStartInst *DRS = dyn_cast(BI)) + enumerateRegionStart(DRS); + else if (DbgRegionEndInst *DRE = dyn_cast(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(FSI->getSubprogram()); enumerateSubprogram(DISubprogram(SP)); } +/// enumerateRegionStart - Enumerate DbgRegionStart. +void DebugInfoEnumerator::enumerateRegionStart(DbgRegionStartInst *DRS) { + GlobalVariable *SP = dyn_cast(DRS->getContext()); + enumerateSubprogram(DISubprogram(SP)); +} + +/// enumerateRegionEnd - Enumerate DbgRegionEnd. +void DebugInfoEnumerator::enumerateRegionEnd(DbgRegionEndInst *DRE) { + GlobalVariable *SP = dyn_cast(DRE->getContext()); + enumerateSubprogram(DISubprogram(SP)); +} + /// addCompileUnit - Add compile unit into CUs. bool DebugInfoEnumerator::addCompileUnit(DICompileUnit CU) { if (CU.isNull())