[cfe-dev] Fwd: [LibTooling] Unable to parse cpp code when using libtooling feature

João Paulo Labegalini de Carvalho via cfe-dev cfe-dev at lists.llvm.org
Sat Jan 12 10:33:08 PST 2019


Aditya,

You are implementing VisitFunctionDecl, which visits only function
declarations, and not uses (e.g.: call expressions).

If you are interested in call expressions you can either implement
VisitCallExpr or use an AST Matcher (
https://clang.llvm.org/docs/LibASTMatchersTutorial.html).

On Sat, Jan 12, 2019 at 1:58 PM Aditya Atluri <adityaavinash1 at gmail.com>
wrote:

> Good eye! Fixed it. Thank you!
>
> Hi,
> When I run the program, I am seeing the Function add is being visited once
> (even though called twice). Attached test case and source code.
> Here is the output from the program:
>
> In HandleTopLevelDecl
>
> Visiting Function add it has: 2 arguments
>
> The argument types are:
>
> const T
>
> const T
>
> In HandleTopLevelDecl
>
> Visiting Function foo it has: 0 arguments
>
> The argument types are:
>
> In HandleTopLevelDecl
>
> Visiting Function main it has: 0 arguments
>
> The argument types are:
>
> In HandleTopLevelDecl
>
> Visiting Function add it has: 2 arguments
>
> The argument types are:
>
> const float
>
> const float
>
>
>
> On Fri, Jan 11, 2019 at 2:24 PM João Paulo Labegalini de Carvalho <
> jaopaulolc at gmail.com> wrote:
>
>> Aditya,
>>
>> In the call to setASTConsumer at line 99 should it not make an unique
>> pointer of MyASTConsumer instead of clang::ASTConsumer?
>>
>> ci.setASTConsumer(llvm::make_unique<*clang::ASTConsumer*>());
>>
>> On Fri, Jan 11, 2019 at 6:04 PM Aditya Atluri via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>
>>> Attached updated source code.
>>>
>>> On Fri, Jan 11, 2019 at 2:03 PM Aditya Atluri <adityaavinash1 at gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>> On a second note, the code builds fine; but when I run the program it
>>>> exits without any output. I added my own FunctionDecl visitor to
>>>> MyRecursiveASTVisitor. I am guessing the code I am missing can be something
>>>> to do with headers and methods which are tagged `XX` as prefix or suffix
>>>> like, DeclXX.h or StmtXX.h or so.
>>>>
>>>>
>>>>
>>>> On Fri, Jan 11, 2019 at 1:59 PM Aditya Atluri <adityaavinash1 at gmail.com>
>>>> wrote:
>>>>
>>>>> Great! The post helped me figure out the right sequence of syntax to
>>>>> use.
>>>>> Here is how I figured it out.
>>>>> greped for LangOptions on clang/FrontEnd headers, found that
>>>>> CompilerInvocation takes LangOptions as an argument in one of its methods;
>>>>> CompilerInstance has a method to get its own instance of CompilerInvocation.
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Jan 11, 2019 at 1:26 PM Keane, Erich via cfe-dev <
>>>>> cfe-dev at lists.llvm.org> wrote:
>>>>>
>>>>>>
>>>>>> https://stackoverflow.com/questions/38356485/how-do-i-put-clang-into-c-mode
>>>>>>
>>>>>>
>>>>>>
>>>>>> *From:* Aditya Atluri [mailto:adityaavinash1 at gmail.com]
>>>>>> *Sent:* Friday, January 11, 2019 11:09 AM
>>>>>> *To:* Keane, Erich <erich.keane at intel.com>
>>>>>> *Cc:* Clang Dev <cfe-dev at lists.llvm.org>
>>>>>> *Subject:* Re: [cfe-dev] Fwd: [LibTooling] Unable to parse cpp code
>>>>>> when using libtooling feature
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi Keane,
>>>>>>
>>>>>> Exactly my thoughts. But, how to do it?
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Jan 11, 2019 at 1:05 PM Keane, Erich via cfe-dev <
>>>>>> cfe-dev at lists.llvm.org> wrote:
>>>>>>
>>>>>> Those are typical of attempting to compile C++ code as C.  I’m not
>>>>>> sure what the right way to set the LangOpts on CompilerInstance in libclang
>>>>>> is, but you likely need to update those to set LangOpts correctly for the
>>>>>> version of C++ you intend to support..
>>>>>>
>>>>>>
>>>>>>
>>>>>> *From:* cfe-dev [mailto:cfe-dev-bounces at lists.llvm.org] *On Behalf
>>>>>> Of *Aditya Atluri via cfe-dev
>>>>>> *Sent:* Friday, January 11, 2019 11:02 AM
>>>>>> *To:* cfe-dev at lists.llvm.org
>>>>>> *Subject:* [cfe-dev] Fwd: [LibTooling] Unable to parse cpp code when
>>>>>> using libtooling feature
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am a novice developer hacking around ways to use clang for parsing
>>>>>> C/CPP code.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I am able to parse C code with clangs libtooling feature properly.
>>>>>> But, when I use the code to parse CPP test code, I am getting the following
>>>>>> error:
>>>>>>
>>>>>>
>>>>>>
>>>>>> $ ./Main
>>>>>>
>>>>>> test.cpp:1:1: error: unknown type name 'template'
>>>>>>
>>>>>> template<typename T>
>>>>>>
>>>>>> ^
>>>>>>
>>>>>> test.cpp:1:9: error: expected identifier or '('
>>>>>>
>>>>>> template<typename T>
>>>>>>
>>>>>>         ^
>>>>>>
>>>>>> test.cpp:6:19: error: expected expression
>>>>>>
>>>>>>     float c = add<float>(a, b);
>>>>>>
>>>>>>                   ^
>>>>>>
>>>>>> test.cpp:6:15: error: use of undeclared identifier 'add'
>>>>>>
>>>>>>     float c = add<float>(a, b);
>>>>>>
>>>>>>               ^
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Attached: Main.mk (to build test), Main.cpp (Clang 8.0 based
>>>>>> libtooling source), test.cpp (test case)
>>>>>>
>>>>>>
>>>>>>
>>>>>> Please let me know if I am doing anything bad or missing something.
>>>>>>
>>>>>> The Makefile assumes that clang is installed in ~/llvm80
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> cfe-dev mailing list
>>>>>> cfe-dev at lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> - Aditya Atluri
>>>>>> _______________________________________________
>>>>>> cfe-dev mailing list
>>>>>> cfe-dev at lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> - Aditya Atluri
>>>>>
>>>>
>>>>
>>>> --
>>>> - Aditya Atluri
>>>>
>>>
>>>
>>> --
>>> - Aditya Atluri
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>
>>
>> --
>> João Paulo L. de Carvalho
>> Computer Science |  IC-UNICAMP | Campinas , SP - Brazil
>> jaopaulolc at gmail.com
>> joao.carvalho at ic.unicamp.br
>> j160924 at dac.unicamp.br
>>
>
>
> --
> - Aditya Atluri
>


-- 
João Paulo L. de Carvalho
Computer Science |  IC-UNICAMP | Campinas , SP - Brazil
jaopaulolc at gmail.com
joao.carvalho at ic.unicamp.br
j160924 at dac.unicamp.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190112/551b05c9/attachment.html>


More information about the cfe-dev mailing list