2013-05-11 69 views
1

我想对我的代码进行转换,它简化了二元运算符,例如“1 + a + 2”为“a + 3”,那么libclang中有没有api可以做这样的事情?是否有libclang中的任何api来简化BinaryOperator

+0

我期望Clang将其作为其代码生成过程的一部分来完成,那么通过这样做你会得到什么? – 2013-05-11 13:57:50

回答

2

不是。

如果您将Clang称为LLVM的C/C++/ObjC前端,那么我就不会知道这样的API - 这不是前端设计的那种类型。

LLVM核心(它是Clang的一部分,如果你把它称为一个完整的编译器)可以做这些事情,但是没有API将它翻译回源语言。

我认为最好的办法就是编写一个基于Clang的工具来修改源代码(例如参见LibFormat)。但是,我建议重新考虑为什么你首先需要这一点 - 因为在编译过程中会发生这种情况。你不会获得任何性能,并且你可能会使代码不易读。

而且一般情况下,如果您想为性能原因添加某种转换,并且目前在编译过程中不会发生这种情况,则正确的方法不是修改源程序,而是修改write an LLVM pass,这将在编译并执行修复。铿锵不参与。

相关问题