[cfe-dev] [RFC] Easier source-to-source transformations with clang tooling
Joel E. Denny via cfe-dev
cfe-dev at lists.llvm.org
Wed Jan 23 19:42:43 PST 2019
On Wed, Jan 23, 2019 at 10:24 PM Yitzhak Mandelbaum <yitzhakm at google.com>
> Hi Joel,
> Yes, both are correct. However, clang already has support for serializing
> the result as source (actually, it's more like applying your patch to the
> original source) so that's pretty easy. We're also planning to work on
> making that process of rerunning clang smoother and more efficient (e.g.
> some form of incremental recompilation to AST), but that's still off in the
Thanks for explaining. Can you say more about what you're thinking for
incremental recompilation and how far off that might be?
> On Wed, Jan 23, 2019 at 6:24 PM Joel E. Denny <jdenny.ornl at gmail.com>
>> Hi Yitzhak,
>> On Fri, Nov 16, 2018 at 10:22 AM Yitzhak Mandelbaum via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>> Hi all,
>>> I have a proposal for a framework that makes it easier to write source
>>> to source transformations with the clang::Tooling libraries, including
>>> clang-tidy checks.
>>> The full proposal is in this doc:
>> I just took a quick pass on this document, and it looks interesting.
>> However, I'm not very familiar with this area of clang, and I have a few
>> high-level questions to be sure I understand the objectives of your tool.
>> My understanding is that the input of a transformation using your tool is
>> a clang AST and the output is new source code. Is that correct?
>> If so, it seems your tool is optimized for (but not functionally limited
>> to) transformations involving a single pass where the ultimate product is
>> source code. That is, after running a transformation pass, if you want to
>> either run additional transformation passes or perform LLVM IR codegen, you
>> would need to serialize the output as source code and run clang again to
>> get the new AST. Is that correct?
>>> From the doc:
>>> Transformer is a framework that aims to simplify development of
>>> clang-based source-to-source transformations. It focuses on the particular
>>> class of transformations that act only locally — that is, use local
>>> information about the code and make local changes (like a syntax-aware
>>> “find-and-replace”); and at scale — that is, will be carried out on many
>>> source files. The target audience is users that are comfortable with, or
>>> willing to become comfortable with, the clang AST matchers library.
>>> I have a working prototype of this library which I've used on small
>>> examples inside Google. I plan to put together a patch for reference
>>> next week, although the doc should stand on its own.
>>> Yitzhak Mandelbaum
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-dev