2013-05-03 58 views
0

我在cpp上添加了一些新功能,我想编写一个编译器pass以根据不同的选项修改一些cpp源代码(我使用了一些gcc功能(cilk),所以我认为它不能通过libclang来完成,clang不能识别cilk)。 gcc中有没有api可以做这样的事情?如何在编写gcc插件时捕获命令行选项

回答

1

当前的GCC插件API不允许您扩展预处理器。但是,您可以添加内建函数,编译指示以及函数或变量属性。

您可以使用save_decoded_optionssave_decoded_options_counttoplev.h获取编译器程序参数。但插件期待-fplugin-foo-arg-程序参数(对于插件foo ...)

为什么你需要这些?

您是否考虑过使用MELT(扩展GCC的域特定语言)来扩展GCC?

+0

谢谢。因为我不能修改cpp源代码,所以修改AST可能是一个好主意。我想添加一些函数,并替换一些函数调用。顺便提一提 – WhatisThat 2013-05-03 07:27:00

+0

,你知道如何将gcc AST树节点转换成源代码吗?谢谢。 – WhatisThat 2013-05-03 15:24:43

+1

您应该定义“将GCC AST转换为”源代码“的含义。 (这不太可能,因为Gimple不仅仅是普通的C语言,例如因为它处理异常和OpenMP)。 – 2013-05-03 16:35:30