[llvm-commits] [llvm] r107027 - in /llvm/trunk: lib/CodeGen/AsmPrinter/DwarfDebug.cpp lib/CodeGen/AsmPrinter/DwarfDebug.h test/FrontendC/2010-06-28-DbgLocalVar.c
Devang Patel
dpatel at apple.com
Mon Aug 2 10:32:23 PDT 2010
On Jul 29, 2010, at 9:51 AM, Benjamin Kramer wrote:
>
> On 28.06.2010, at 20:25, Devang Patel wrote:
>
>> Author: dpatel
>> Date: Mon Jun 28 13:25:03 2010
>> New Revision: 107027
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=107027&view=rev
>> Log:
>> Preserve deleted function's local variables' debug info.
>> Radar 8122864.
>>
>> Added:
>> llvm/trunk/test/FrontendC/2010-06-28-DbgLocalVar.c
>> Modified:
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=107027&r1=107026&r2=107027&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Mon Jun 28 13:25:03 2010
>> @@ -1386,6 +1386,7 @@
>> /// If there are global variables in this scope then create and insert
>> /// DIEs for these variables.
>> DIE *DwarfDebug::updateSubprogramScopeDIE(const MDNode *SPNode) {
>> + ProcessedSPNodes.insert(SPNode);
>> CompileUnit *SPCU = getCompileUnit(SPNode);
>> DIE *SPDie = SPCU->getDIE(SPNode);
>> assert(SPDie && "Unable to find subprogram DIE!");
>> @@ -2005,6 +2006,40 @@
>> ///
>> void DwarfDebug::endModule() {
>> if (!FirstCU) return;
>> + const Module *M = MMI->getModule();
>> + if (NamedMDNode *AllSPs = M->getNamedMetadata("llvm.dbg.sp")) {
>> + for (unsigned SI = 0, SE = AllSPs->getNumOperands(); SI != SE; ++SI) {
>> + if (ProcessedSPNodes.count(AllSPs->getOperand(SI)) != 0) continue;
>> + DISubprogram SP(AllSPs->getOperand(SI));
>> + if (!SP.Verify()) continue;
>> +
>> + // Collect info for variables that were optimized out.
>> + StringRef FName = SP.getLinkageName();
>> + if (FName.empty())
>> + FName = SP.getName();
>> + NamedMDNode *NMD =
>> + M->getNamedMetadata(Twine("llvm.dbg.lv.", getRealLinkageName(FName)));
>> + if (!NMD) continue;
>> + unsigned E = NMD->getNumOperands();
>> + if (!E) continue;
>> + DbgScope *Scope = new DbgScope(NULL, DIDescriptor(SP), NULL);
>
> Hi Devang,
>
> valgrind says those DbgScopes are leaked:
Indeed. Fixed.
-
Devang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20100802/10cd8e50/attachment.html>
More information about the llvm-commits
mailing list