[LLVMdev] DIBuilder - what's with the null compile units?

Talin viridia at gmail.com
Thu Oct 27 22:57:40 PDT 2011


On Thu, Oct 27, 2011 at 10:39 PM, Talin <viridia at gmail.com> wrote:

> On Mon, Oct 24, 2011 at 9:17 AM, Devang Patel <dpatel at apple.com> wrote:
>
>>
>> On Oct 23, 2011, at 12:03 AM, Talin wrote:
>>
>> Just a follow up on this - I am still having problems, I never did figure
>> out a solution. (I've been running with debug off for the last month so that
>> I could get work done.)
>>
>> Here's what I am seeing: I am definitely calling DIBuilder::finalize(). I
>> even put a debug print statement right after it, so that I could be sure
>> that the code was being executed. I also insured that it was getting called
>> before the module was written out, and that no additional debug information
>> gets added after it has been called.
>>
>> Yet despite this, the second-to-last parameter for DW_TAG_subprogram
>> metadata is in fact null in the module dissassembly.
>>
>> So essentially I am completely stumped.
>>
>>
>> If you're using DIBuilder to create your subprogram then you'll see that
>> it puts new node in AllSubprograms.
>>
>>   // Create a named metadata so that we do not lose this mdnode.
>>
>>
>>   AllSubprograms.push_back(Node);
>>
>> And follow AllSubprograms in DIBuilder::finalize()
>>
>> I traced through the code in DIBuilder::finalize():
>
>   *for* (*unsigned* i = 0, e = SPs.getNumElements(); i != e; ++i) {
>     DISubprogram SP(SPs.getElement(i));
>     *if* (NamedMDNode *NMD = getFnSpecificMDNode(M, SP)) {
>       SmallVector<Value *, 4> Variables;
>       *for* (*unsigned* ii = 0, ee = NMD->getNumOperands(); ii != ee; ++ii)
>
>
> It looks as if getFnSpecificMDNode() is always returning NULL in my case -
>  the body of the if statement never gets executed.
>
>>
> Tracing further, it appears that there are only 4 named MDNodes in the
module:

!llvm.dbg.cu = !{!0}
!tart.module_deps = !{!349}
!roots.TraceTest = !{!350, !351, !352}
!tart.xdef.TraceTest = !{!112, !353, !354, !373, !374, !375}

In other words, the MDNodes that it is looking for never got created.


> --
> -- Talin
>



-- 
-- Talin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111027/328df1b8/attachment.html>


More information about the llvm-dev mailing list