[cfe-dev] RE : AST Transformation
Nico Weber
thakis at chromium.org
Thu Mar 31 08:35:10 PDT 2011
On Thu, Mar 31, 2011 at 8:10 AM, Konstantin Tokarev <annulen at yandex.ru> wrote:
>
>
> 31.03.2011, 18:59, "Nico Weber" <thakis at chromium.org>:
>> On Thu, Mar 31, 2011 at 1:51 AM, Konstantin Tokarev <annulen at yandex.ru>; wrote:
>>
>>> 31.03.2011, 11:24, "Ruch Grégory" <gregory.ruch at heig-vd.ch>;:
>>>> But the question is more technical about Clang. Can we just implement AST transformation plugin and let the normal execution of Clang to build the executable ? I've read that pretty-print do not garantee to get reparsable code, therefore I throught that it will be better to build directly the executable.
>>> I'd like to join this part of question (but not in obfuscation aspect).
>>>
>>> AFAIU, plugins like PrintFunctionNames can only replace Clang AST
>>> transformation, but not add one to compilation process.
>>
>> You can use -add-plugin to run plugins in addition to codegen, but the
>> plugins will run _after_ codegen, because the AST is currently
>> designed to be immutable.
>>
>>> More specifically, I'm trying to create C++ frontend explicitly supporting
>>> features of Qt Framework. Goal is to provide additional compile-time
>>> diagnostics and optimizations. To achieve it, I'd like to interact with AST
>>> when it is constructed (via custom ASTConsumer or maybe PPCallbacks,
>>> or both), then perform some transformations of this AST, and return it back
>>> into compilation process.
>>
>> That's currently not possible.
>
> Did you mean "it's impossible to transform AST" or just "it's impossible to hook in
> before CodeGen"?
The AST is designed to be immutable after construction, so "it's
impossible to transform AST".
>
> --
> Regards,
> Konstantin
>
More information about the cfe-dev
mailing list