<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">[Forgot to cc list.]<br><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>From: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Devang Patel <<a href="mailto:dpatel@apple.com">dpatel@apple.com</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>Date: </b></span><span style="font-family:'Helvetica'; font-size:medium;">March 29, 2011 4:41:30 PM PDT<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Vedavyas Duggirala <<a href="mailto:vduggira@gmail.com">vduggira@gmail.com</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>Subject: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><b>Re: [LLVMdev] Accessing metadata & creating DIVariable</b><br></span></div><br><div><br>On Mar 29, 2011, at 4:29 PM, Vedavyas Duggirala wrote:<br><br><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">I get the filename and directory from  DISubprogram from reading<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">llvm.dbg.sp and use<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">that to DIBuiler::.createCompileUnit. This  leads to  "duplicate<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">symbol" error from llc.<br></blockquote></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">If the llvm::Module already has llvm.dbg.sp then you don't need to use DIBuilder::createCompileUnit(). The point, I am missing is how did you get llvm.dbg.sp in module ?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">It seems you already have generated debug info in llvm::Module using DIBuilder. If that is true then you don't need to use createCompileUnit() for the same translation unit.<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Yes, that was what I said in the first line of my original mail :)  I<br></blockquote><blockquote type="cite">am adding instrumentation code/variables to IR, and I want to add<br></blockquote><blockquote type="cite">debuginfo for the new variables and calls I introduced.<br></blockquote><br>Sorry, I missed that.<br><br>If you already have DISubprogram then you can use DISubprogram::getCompileUnit() to find the compile unit for the subprogram. DISubprogram is one the useful MDNode wrapper. See DebugInfo.h for more info. You also may find DebugInfoFinder from DebugInfo.h useful.<br><br>In your case, you'll have to construct MDNodes for variables and types by hand. It is simple, take a look at DIBuilder.cpp. <br><br>The documentation of the structure of these MDNodes is at <a href="http://llvm.org/docs/SourceLevelDebugging.html">http://llvm.org/docs/SourceLevelDebugging.html</a><br><br>-<br>Devang</div></blockquote></div><br></body></html>