[cfe-dev] Finding all instances of calls to a specific function using ASTMatcher

Nikola Smiljanic popizdeh at gmail.com
Mon May 11 18:44:55 PDT 2015


The only thing I can suggest is to use clang-query and start from the most
basic matcher, say functionDecl, then gradually constrain it using hasName,
etc. See at what point you get the crash. Reducing your input source might
also help, if this is a Clang bug you'll have a minimal repro case. I've
only tried my query on a super simple file.

On Tue, May 12, 2015 at 11:36 AM, Riyad Parvez <riyad.parvez at gmail.com>
wrote:

>  Hi,
>
> On 04/18/2015 01:19 AM, Nikola Smiljanic wrote:
>
> Use clang-query to try things out, you'll need to generate compilation
> database to use it but that shouldn't be too hard. It sure beats having to
> recompile your code to test it.
>
>   The matcher you're after is probably
> callExpr(callee(functionDecl(hasName("malloc"))))
>
>
> I've tried your query and getting segmentation fault. I've tried to get
> backtrace from gdb, but for some reason gdb is printing garbage.
>
> Thanks
> Riyad
>
> On Tue, Apr 7, 2015 at 10:49 AM, Riyad Parvez <riyad.parvez at gmail.com>
> wrote:
> >
> > Hi All,
> >
> > I want to find all the instances of calls to a specific function. Right
> now, I can find all the function calls using ASTMatcher using following
> code:
> >
> > Finder.addMatcher(
> >
> callExpr(hasParent(binaryOperator(hasOperatorName("=")).bind("assignment"))).bind("functionCall"),
> >       &HandlerForFunctionCall);
> >
> > But I want to find all the function calls whose name is say "malloc". I
> know how do that using classic "RecursiveASTVisitor" class, but how can I
> do this using ASTMatcher?
> >
> > Thanks
> > Riyad
> > _______________________________________________
> > 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/20150512/5f919657/attachment.html>


More information about the cfe-dev mailing list