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

Hui Zhang via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 4 09:21:32 PST 2015


On Wed, Nov 4, 2015 at 11:01 AM, Adrian Prantl <aprantl at apple.com> wrote:

>
> > 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.
>

​yea, but I don't find the description of DIScope and DILocation in
source-level-debugging  document, so I don't know the layout the these two
descriptors....is there another way to get that information ?​


>
> -- 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
>
>


-- 
Best regards


Hui Zhang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151104/ff8f8c7b/attachment.html>


More information about the llvm-dev mailing list