[cfe-dev] AST Matchers tutorial

Sam Panzer panzer at google.com
Wed Aug 1 11:07:35 PDT 2012


I've enabled comments on the Google Doc to help avoid polluting the mailing
list too much :)

On Tue, Jul 31, 2012 at 8:09 PM, Sean Silva <silvas at purdue.edu> wrote:

>
> Thank you for writing this up! :-)
>
> A couple things:
>
> Since you're assuming zero Clang experience, I think you can leave out
> the git-svn stuff (since AFAIK that is only relevant for people with
> commit access). A simpler way to just checkout LLVM/Clang is
>
> $ git clone http://llvm.org/git/llvm.git
> $ cd source/tools
> $ git clone http://llvm.org/git/clang.git
>
> The git-svn checkout stuff that you are doing looks kind of fearsome.
> It's easier for a newcomer to just use a pure git workflow.
>

Good point! I meant to ask about that.


>
> Also, you may want to touch on the scenario that a person already has
> CMake installed. E.g., that it should be a certain version, needs to
> be compiled with certain flags, etc.
>

On another discussion thread you mentioned that CMake needed to be compiled
with an extra flag. I don't happen to know the details beyond what is
written, since I set up my environment once, two months ago :)
Would someone be able to list what's necessary and when?


>
> > Ninja dependency resolver.
>
> I would call this "Ninja build tool".
>

Done.


> You should probably link to the LLVM commandline library docs
> <http://llvm.org/docs/CommandLine.html> in the relevant part of the
> document.
>
>
Link added.


> > the loop’s index variable is compared against N - 1
>
> generally aren't half-open loops comparing against N, and not N-1? e.g.
> for (int I = 0, N = 10; I != N; ++I)
>
>
Yes, that's correct and actually what the code implements.


>
> I think that just a little bit more explanation about the use of
> FoldingSetNodeID in areSameExpr() would be good. (just explain roughly
> what it does, links to docs, etc)
>

I added a few links, along with what I understood from the FoldingSetNodeID
and Stmt::Profile() documentation.


>
> As far as your patch. My gut seems inclined to have this inside the
> examples/ subdirectory, since the code is really just example code to
> accompany the tutorial.
>

Actually, this really is intended as the start of the loop migration tool
I've been working on. I didn't just want to dump 3000 lines of code and
tests in one patch, though this set is far more fine-grained than I would
use for future patches. That aside, it would make sense for the tutorial to
live in examples/.


>
> That's all for now. Thank you so much for the extensive docs!
>
> --Sean.
>
> On Tue, Jul 31, 2012 at 6:34 PM, Sam Panzer <panzer at google.com> wrote:
> > Hello, again!
> >
> > As suggested by a few people, I have been writing up my experiences
> starting
> > development on Clang, and specifically working with Clang-based
> refactoring
> > tools. The repository where my loop converter will live doesn't exist
> yet,
> > so I will use the tutorial as a chance to start offering patches for
> review
> > (they can be rebased to other locations later).
> >
> > My intention was to begin assuming zero Clang experience and work towards
> > building a slightly simplified version of the loop converter through a
> > series of fully-explained patches to Clang to a unit-tested functional
> tool.
> > Because the Getting Started page is aimed at people who want to use Clang
> > rather than develop for it, I began with cloning clang+llvm from the git
> > mirrors and preparing a cmake+ninja build.
> >
> > What I have so far is currently available as a Google Doc here:
> >
> https://docs.google.com/document/d/1oTkVLhCdRJUEH1_LDaQdXqe8-aOqT5GLDL9e4MhoFF8/edit
> > If enough people think that the tutorial is useful, I can eventually
> convert
> > it to a nicer format (i.e. HTML with prettier code formatting). I expect
> to
> > have made mistakes, especially in the section about obtaining and
> building
> > Clang :)
> >
> > Thoughts?
> > -Sam
> >
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120801/1fefa850/attachment.html>


More information about the cfe-dev mailing list