On Sun, Sep 4, 2011 at 11:38 PM, Duncan Sands <baldrick at free.fr> wrote:> Hi Talin, > > > So, I just sync'd to LLVM tip and added the call to > DIBuilder::finalize(). But > > even with that change I am getting an error when I try to run llc: > > > > Assertion failed: (TheCU && "Unable to find compile unit!"), function > > endFunction, file > > /Users/talin/Projects/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp, line > 1306. > > > > And looking at the .bc dissassembly, I see there are indeed compile unit > > MDNodes, although at this level I can't tell if they are hooked up > correctly. > > you might want to take a look at this llvm-gcc commit: > > r137753 | dpatel | 2011-08-16 23:03:26 +0200 (Tue, 16 Aug 2011) | 3 lines > > DIBuilder is moving forward to reduce in memory use by MDNodes. However, > DIFactory does not emit debug info in updated form. > Use LLVMDebugVersion10 directly here so that debug info nodes produced by > DIFactory do not claim to adhere newer structure. > > I'm not sure I understand. I'm using DIBuilder, not DIFactory, since Ithought DIFactory was deprecated.> Ciao, Duncan. > > > > > On Wed, Aug 31, 2011 at 9:07 AM, Devang Patel <dpatel at apple.com > > <mailto:dpatel at apple.com>> wrote: > > > > > > On Aug 22, 2011, at 6:48 AM, Irina Lipov wrote: > > > >> Hi, > >> I saw your update regarding "/The |DIBuilder| interface used by > front ends > >> to encode debugging information in the LLVM IR now expects clients > to use > >> |DIBuilder::finalize()| at the end of translation unit to complete > >> debugging information encoding"/ > >> Does it mean that in the new version you defer emission of some > debug > >> info until the translation is finished and this is a reason to use > >> DIBuilder::finalize? > > > > Before this change, each type, subprogram and global variable > information > > used to refer compile unit directly. Now, the compile unit keeps > track of > > all these info directly. The compile unit MDNode is updated in the > > ::finalize() with list of types, subprograms etc.. > > - > > Devang > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> > http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > > > -- > > -- Talin > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- -- Talin -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110905/9c5a197d/attachment.html>
Hi Talin, I mentioned it because the error message you are getting is identical (IIRC) to the error message being produced by llvm-gcc before this patch went in. Ciao, Duncan. On 05/09/11 11:21, Talin wrote:> On Sun, Sep 4, 2011 at 11:38 PM, Duncan Sands <baldrick at free.fr > <mailto:baldrick at free.fr>> wrote: > > Hi Talin, > > > So, I just sync'd to LLVM tip and added the call to > DIBuilder::finalize(). But > > even with that change I am getting an error when I try to run llc: > > > > Assertion failed: (TheCU && "Unable to find compile unit!"), function > > endFunction, file > > /Users/talin/Projects/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp, line 1306. > > > > And looking at the .bc dissassembly, I see there are indeed compile unit > > MDNodes, although at this level I can't tell if they are hooked up correctly. > > you might want to take a look at this llvm-gcc commit: > > r137753 | dpatel | 2011-08-16 23:03:26 +0200 (Tue, 16 Aug 2011) | 3 lines > > DIBuilder is moving forward to reduce in memory use by MDNodes. However, > DIFactory does not emit debug info in updated form. > Use LLVMDebugVersion10 directly here so that debug info nodes produced by > DIFactory do not claim to adhere newer structure. > > I'm not sure I understand. I'm using DIBuilder, not DIFactory, since I thought > DIFactory was deprecated. > > Ciao, Duncan. > > > > > On Wed, Aug 31, 2011 at 9:07 AM, Devang Patel <dpatel at apple.com > <mailto:dpatel at apple.com> > > <mailto:dpatel at apple.com <mailto:dpatel at apple.com>>> wrote: > > > > > > On Aug 22, 2011, at 6:48 AM, Irina Lipov wrote: > > > >> Hi, > >> I saw your update regarding "/The |DIBuilder| interface used by > front ends > >> to encode debugging information in the LLVM IR now expects clients > to use > >> |DIBuilder::finalize()| at the end of translation unit to complete > >> debugging information encoding"/ > >> Does it mean that in the new version you defer emission of some debug > >> info until the translation is finished and this is a reason to use > >> DIBuilder::finalize? > > > > Before this change, each type, subprogram and global variable information > > used to refer compile unit directly. Now, the compile unit keeps track of > > all these info directly. The compile unit MDNode is updated in the > > ::finalize() with list of types, subprograms etc.. > > - > > Devang > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> > <mailto:LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>> > http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > > > -- > > -- Talin > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > > -- > -- Talin
Yup. Now, the debug info nodes do not refer to compile unit. - Devang On Sep 5, 2011, at 2:23 AM, Duncan Sands wrote:> Hi Talin, I mentioned it because the error message you are getting is > identical (IIRC) to the error message being produced by llvm-gcc before > this patch went in. > > Ciao, Duncan. > > On 05/09/11 11:21, Talin wrote: >> On Sun, Sep 4, 2011 at 11:38 PM, Duncan Sands <baldrick at free.fr >> <mailto:baldrick at free.fr>> wrote: >> >> Hi Talin, >> >>> So, I just sync'd to LLVM tip and added the call to >> DIBuilder::finalize(). But >>> even with that change I am getting an error when I try to run llc: >>> >>> Assertion failed: (TheCU && "Unable to find compile unit!"), function >>> endFunction, file >>> /Users/talin/Projects/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp, line 1306. >>> >>> And looking at the .bc dissassembly, I see there are indeed compile unit >>> MDNodes, although at this level I can't tell if they are hooked up correctly. >> >> you might want to take a look at this llvm-gcc commit: >> >> r137753 | dpatel | 2011-08-16 23:03:26 +0200 (Tue, 16 Aug 2011) | 3 lines >> >> DIBuilder is moving forward to reduce in memory use by MDNodes. However, >> DIFactory does not emit debug info in updated form. >> Use LLVMDebugVersion10 directly here so that debug info nodes produced by >> DIFactory do not claim to adhere newer structure. >> >> I'm not sure I understand. I'm using DIBuilder, not DIFactory, since I thought >> DIFactory was deprecated. >> >> Ciao, Duncan. >> >>> >>> On Wed, Aug 31, 2011 at 9:07 AM, Devang Patel <dpatel at apple.com >> <mailto:dpatel at apple.com> >>> <mailto:dpatel at apple.com <mailto:dpatel at apple.com>>> wrote: >>> >>> >>> On Aug 22, 2011, at 6:48 AM, Irina Lipov wrote: >>> >>>> Hi, >>>> I saw your update regarding "/The |DIBuilder| interface used by >> front ends >>>> to encode debugging information in the LLVM IR now expects clients >> to use >>>> |DIBuilder::finalize()| at the end of translation unit to complete >>>> debugging information encoding"/ >>>> Does it mean that in the new version you defer emission of some debug >>>> info until the translation is finished and this is a reason to use >>>> DIBuilder::finalize? >>> >>> Before this change, each type, subprogram and global variable information >>> used to refer compile unit directly. Now, the compile unit keeps track of >>> all these info directly. The compile unit MDNode is updated in the >>> ::finalize() with list of types, subprograms etc.. >>> - >>> Devang >>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> >> <mailto:LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>> >> http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> >>> -- >>> -- Talin >>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >> >> >> -- >> -- Talin > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev