GCC 插件、GCC Melt 或 gcc Python 插件来编写 gcc 扩展

GCC Plugins, GCC Melt or gcc Python plugins to write a gcc extension

我需要编写一个 GCC 扩展,我正在尝试使用 GCC 附带的 GCC 插件 API,但它的文档很少,而且很难使用,我找不到任何使用它的最新版本的例子......

我读到有许多其他方法可以创建 gcc 扩展,例如 GCC Melt, and GCC python plugins,谁能告诉我每个方法的 benefits/drawbacks,这 3 种方法之间有什么主要区别吗创建插件?

我已经使用 C++ API 和 Python 插件编写了插件。我没试过 MELT,所以我不能说。

我的首选方法是使用 Python。以这种方式安装和 运行 插件要简单得多——无需担心编译,API 有据可查且简单,最后,插件非常容易从头开始构建(仅 make)。

使用 Python 插件有两个主要缺点。

我最常遇到的缺点是它没有公开 GCC 的所有有用部分。不过,这并不是一个主要问题,过去我发现只需将所需的功能添加到 Python 插件即可。

另一个可能的缺点是 Python 插件可能比用 C++ 编写的插件慢。这对我来说从来都不是问题。

根据@Basile 的说法,使用 Melt 开发插件更容易。好处是:

1) 当 GCC 编译器处理您的文件时,它可用于探索 GCC 编译器的内部表示

2) 它使用现有的 GCC 插件挂钩来处理 GCC 内部中端表示

还有更多...