[cfe-users] uniquely identifying names

David Blaikie via cfe-users cfe-users at lists.llvm.org
Tue Aug 30 08:40:34 PDT 2016


Do you want to identify the same entity across a valid program's various
source files? Across changes to that program? (what changes?)

If you want to do the former, then producing the mangled name of the entity
is probably what you want. (some part of the ABI code in Clang could give
you that, I would assume - but not sure exactly where)

On Tue, Aug 30, 2016 at 2:33 AM folkert <folkert at vanheusden.com> wrote:

> Maybe I could expand a name into its full name and use that.
> e.g.:
>
> namespace bla { class myclass { void mymethod() { } } }
>
> then the full name of mymethod would be bla::myclass::mymethod would be
> unique enough to me (including filename).
> Can I somehow get this out of it?
>
> On Fri, Aug 26, 2016 at 03:33:20PM +0000, David Blaikie wrote:
> > There's no structural identity of code in Clang that I know of - I know
> > someone's building a tool for doing structural similarity for things like
> > plagiarism detection (I think there are some patches on the clang mailing
> > list).
> >
> > But if you only need identity within a single process, the pointer value
> of
> > the pointer to any AST construct is a unique identity you can use.
> >
> > (line/file/column isn't sufficiently unique - you could have a file that
> is
> > included under different macro situations and each time it defines a
> > different function, but all those functions would appear to be defined on
> > the same line/file of that included file - or a macro that defines
> multiple
> > functions - both can be resolved by looking at the more complete location
> > information (including macro locations, etc))
> >
> > On Fri, Aug 26, 2016 at 5:11 AM folkert via cfe-users <
> > cfe-users at lists.llvm.org> wrote:
> >
> > > Hi,
> > >
> > > The Sun java compiler allows you to (from java) walk the AST and
> > > investigate it. Each token is stored in an object. Each object has a
> > > hash() method which uniquely identifies it.
> > >
> > > Now I was wondering: can I do so with the LLVM tooling as well? I could
> > > of course if I want to identify e.g. a function name just pick the
> line-
> > > and column number and maybe include the function name itself as well
> but
> > > that would constantly change when lines are added and/or removed.
> > >
> > > Any suggestions?
> > >
> > >
> > > regards,
> > >
> > > Folkert van Heusden
> > >
> > > --
> > > ---------------------------------------------------------------------
> > > Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
> > > _______________________________________________
> > > cfe-users mailing list
> > > cfe-users at lists.llvm.org
> > > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
> > >
>
>
> Folkert van Heusden
>
> --
> Always wondered what the latency of your webserver is? Or how much more
> latency you get when you go through a proxy server/tor? The numbers
> tell the tale and with HTTPing you know them!
>                                      http://www.vanheusden.com/httping/
> -----------------------------------------------------------------------
> Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20160830/1097701f/attachment.html>


More information about the cfe-users mailing list