[llvm-dev] how to add the location debug info for each instruction

Adrian Prantl via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 4 08:01:42 PST 2015


> On Nov 3, 2015, at 5:00 PM, Hui Zhang <wayne.huizhang at gmail.com> wrote:
> 
> Hello, 
> 
> I found a weird thing in llvm 3.3:
> 
> For exactly the same MDNode  *space,  if I cast it to DILocation  loc(space) and call loc.getFileName(),   or I cast it to DIScope sco(space) and call sco.getFilename(),   the return value would be different ! Totally two different files
> 
> I don't know if it's a bug or why it is happening like this, and what's the conceptual difference between these two classes: DIScope and DILocation ?
> 

In the old llvm 3.3 representation, the DI* classes are just wrappers around generic MDNodes. You can look at the implementation of the various DI* classes (or even better at the source level debugging with LLVM document in the tree) to learn about their layout and how they relate to each other.

-- adrian

> Thanks ! 
> 
> On Tue, Nov 3, 2015 at 12:43 PM, Hui Zhang <wayne.huizhang at gmail.com> wrote:
> ​Thank you !
> 
> Yes, it's very nice ​
> 
> On Tue, Nov 3, 2015 at 12:21 PM, Adrian Prantl <aprantl at apple.com> wrote:
> 
>> On Nov 3, 2015, at 8:26 AM, Hui Zhang via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>> 
>> Hello,
>> 
>> For some reason,  I have to stick on llvm 3.3 for a language compiler, I find that the location debug info is attached to each instruction using !dbg, however, I found some of that information is mis-attched and need to be changed, so I want to know what functions(I checked all funcs in DIBuilder.h but didn't find a appropriate one) are used to attach those !dbg nodes to each instruction ? It would be even better if you can points to the places that clang uses to create those nodes.
>> 
> 
> Have a look at IRBuilder instead:
> 
> void 	SetCurrentDebugLocation (DebugLoc L)
>  	Set location information used by debugging information.  
> const DebugLoc & 	getCurrentDebugLocation () const
>  	Get location information used by debugging information. 
> 
> -- adrian
> 
> PS: Isn’t it nice how we consistently name accessor functions?
> 
> 
> 
> 
> -- 
> Best regards
> 
> 
> Hui Zhang
> 
> 
> 
> -- 
> Best regards
> 
> 
> Hui Zhang



More information about the llvm-dev mailing list