2016-12-06 10 views
1

私は実験のためにLLVMを拡張しています。したがって、私はさまざまな使用法とその依存関係を追跡したいと思います。変数の使用法と依存関係をバックトラックするアルゴリズム

たとえば、2つのオペランドの比較によって引き起こされる条件分岐を見つけた後、その変数のすべての用途をバックトラックし、すべての依存関係(条件のオペランドを計算するために使用される変数)を決定します。私の場合、これは何らかの再帰的なバックトラック操作のようです。

この問題に特化した特別なアルゴリズムはありますか?

+0

どの州からですか?ソース? IR? AST?情報のデータ構造には、歩行前後のアルゴリズムなどがあります。 –

+0

中間表現。 –

+0

OK、私はC++ライブラリ、クラス、または関数に慣れていませんが、それがあなたの最善の希望かもしれません。私のフロントエンドコンパイラはLLVM-IRを出すので、意味分析中に変数の依存関係を実行しています(ポストウォークなど)。 –

答えて

0

「到達定義」と呼ばれるもの。これらは、関心のあるステートメントまたは式に値が "到達"する変数への代入(または副作用)です。

これらの計算方法(古典的なコンパイラの教科書)の詳細とアルゴリズムについては、https://en.wikipedia.org/wiki/Reaching_definitionを参照してください。

私はLLVMにこれを計算するのに役立つ組み込みの機械があると思うでしょう。私はLLVMの専門家ではないので、間違っている可能性があります。

関連する問題