【问题标题】:GCC plugins API : Gimple passGCC 插件 API : Gimple pass
【发布时间】:2018-12-23 00:46:03
【问题描述】:

我一直在寻找有关编写 GCC 插件的在线资源。我目前正在使用 GCC 版本 7.3.0。我尝试编写一个简单的插件,其中包含一个将在PLUGIN_FINISH_TYPE 上调用的回调。效果很好。

接下来,我正在尝试编写一个使用“gimple pass”的插件,类似于here 列出的示例。但是,struct gimple_opt_pass 似乎并不存在。

我尝试查找声明此结构的头文件。我发现 tree-pass.h 有以下代码块:-

/* Description of GIMPLE pass.  */
class gimple_opt_pass : public opt_pass
{
protected:
  gimple_opt_pass (const pass_data& data, gcc::context *ctxt)
    : opt_pass (data, ctxt)
  {
  }
};
  1. 如何从我的插件中看到这个?我似乎无法按照上面链接中描述的方式使用它。
  2. 使用当前的 GCC 插件 API,是否可以编写纯 C 插件(而不是必须使用 C++)。

【问题讨论】:

    标签: gcc gimple gcc-plugins


    【解决方案1】:

    我找到了答案。 GCC 插件的 API 从 4.8 到 4.9 发生了巨大变化。在 4.8 之前,gimple_opt_class 是一个结构,您可以创建一个实例并与 register_pass_info 一起使用。从 4.9 开始,它是一个您需要继承、创建实例并与 register_pass_info 一起使用的类。

    为了能够在 GCC 中使用纯 C 插件,似乎使用低于 4.8 版本的 API 将是解决方案。 4.6 对我来说似乎工作正常,但似乎有调试/转储功能。

    【讨论】:

    • 有现代 GCC 插件的例子吗?
    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2014-03-06
    • 2012-02-24
    • 2019-11-27
    • 2015-10-18
    • 2014-11-04
    • 2012-02-24
    • 2015-05-30
    相关资源
    最近更新 更多