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

Aditya Atluri via cfe-dev cfe-dev at lists.llvm.org
Sat Jan 12 07:57:56 PST 2019


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190112/eeed2636/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Main.cpp
Type: application/octet-stream
Size: 3667 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190112/eeed2636/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cpp
Type: application/octet-stream
Size: 198 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190112/eeed2636/attachment-0001.obj>


More information about the cfe-dev mailing list