[cfe-dev] Need help with source-to-source translation
Marcel Schaible via cfe-dev
cfe-dev at lists.llvm.org
Tue Aug 1 09:44:46 PDT 2017
Looks promising. Thanks Marcel
Am 01.08.2017 um 16:51 schrieb Firat Kasmis:
> If you need a starting template for AST matchers,
> https://github.com/firolino/clang-tool might be useful for you.
>
> 2017-08-01 15:44 GMT+02:00 Marcel Schaible via cfe-dev
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>>:
>
> At the moment I am using the ASTConsumer/ASTVisitor interface. But
> I am planing to switch to AST matchers asap.
> After scratching my head for a while I found the solution for my
> problem. It was just a misunderstanding of the inheritance tree.
>
> Thanks for your help
>
> Marcel
>
> Am 01.08.2017 um 13:48 schrieb Manuel Klimek:
>> On Tue, Aug 1, 2017 at 12:35 PM Marcel Schaible
>> <marcel at schaible-consulting.de
>> <mailto:marcel at schaible-consulting.de>> wrote:
>>
>> Manuel, thanks for your help. Of course I went already
>> through a bunch of documentation including libtooling.
>> My tool is performing now the basic setup and can transform
>> some simple cases.
>>
>> Do you know by chance how to retrieve the ASTContext from a
>> ReturnStmt and a FuncDecl?
>>
>>
>> Generally, if you use AST matchers you'll have the ASTContext in
>> the callback. What exactly is the problem you're running into?
>>
>>
>> BTW: Your presentation at the EURO LLVM was very helpful!
>>
>>
>> Thanks! :)
>>
>>
>> Greetings from Munich
>>
>>
>> Marcel
>>
>>
>>
>>
>> Am 01.08.2017 um 12:16 schrieb Manuel Klimek:
>>> You'll probably want to take a look at libtooling:
>>> https://clang.llvm.org/docs/LibTooling.html
>>> <https://clang.llvm.org/docs/LibTooling.html>
>>>
>>> On Fri, Jul 28, 2017 at 4:54 PM Marcel Schaible via cfe-dev
>>> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>>>
>>> Hi everyone,
>>>
>>> let's consider the example:
>>>
>>> int foo(int p) {
>>>
>>> if ( p)
>>>
>>> /* code path#1 */
>>>
>>> return 0;
>>>
>>> else {
>>>
>>> /* code path#2 */
>>>
>>> return 1;
>>>
>>> }
>>>
>>> }
>>>
>>> 1. What is the best solution to get the string
>>> representation of the expression of a return statement?
>>>
>>> 2. Because I want to perform some transformation with
>>> return statements I have to figure out if they are
>>> enclosed in a block?
>>>
>>> The example above should be transformed in something like
>>>
>>> int foo(int p) {
>>>
>>> if ( p) { /* <---- */
>>>
>>> /* do some processing ... */
>>>
>>> return 0;
>>>
>>> } /* <--- */
>>>
>>> else {
>>>
>>> /* do some processing ... */
>>>
>>> return 1;
>>>
>>> }
>>>
>>> }
>>>
>>> Any hints or pointers are welcome.
>>>
>>> Thanks
>>>
>>> Marcel
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
>>>
>>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170801/b2e5c7cf/attachment.html>
More information about the cfe-dev
mailing list