2

プラグインを gcc4.8.3 から GCC の 4.9.1 バージョンに更新しようとしていますが、インターフェースが少し変更されたようで、基本的なことがいくつかわかりません。新しいインターフェイスでパスを登録する方法について、プラグインまたはインターネットに関する GCC ドキュメントの例は見つかりませんでした。プラグインに新しいパスをインストールしたいだけなので、構造体 register_pass_info に入力し、次の方法で register_callback に渡します。

        register_callback("my_plugin_
name", PLUGIN_PASS_MANAGER_SETUP, NULL, &pass_info);

構造体 register_pass_info のフィールド「pass」に入力する方法がわかりません。現在、このフィールドは opt_pass クラスであり、単純な構造ではなく、GCC の内部パスと同じクラスのようです。だから私は当然、新しいパスを作成するために内部パスが行っていることをコピーしようとしました。私は自分のパスのためにこれをしました:

class pass_greg : public gimple_opt_pass
{
public:
  pass_greg (gcc::context ctxt)
    : gimple_opt_pass (pass_data_greg, gcc::context ctxt)
  {}

  bool gate () { return greg_gate(); }
  unsigned int execute () { return greg_pass (); }

};

しかし、パスをインスタンス化するために必要なこのパラメーター gcc::context が何であるかがわかりません。さらに、opt_pass シンボルは、プラグイン API にない「pass-instances.def」を含む pass_manager で定義されています。

たぶん、あなたの何人かは、私を軌道に乗せるための小さな例を持っているか、私が見逃したいくつかのドキュメントを教えてくれます.

4

1 に答える 1