analysis)は、プログラム内の様々な位置で、取りうる値の集合に関する情報を収集する技法である。使って変数の値が伝播するかどうかなどの情報を集め、利用する。このようにして集められた情報はコンパイラが最適化に利用する。あるプログラムのデータフロー解析を行う単純な方法は、制御フローグラフの各ノードについてデータフロー方程式を設定し、全体として安定した状態、すなわち不動点に到達するまで、それらの式を繰り返し計算していく。完了することを保証するためには、不動点データフロー解析に基づくデータフロー方程式が必要である。各式のローカルな更新は単調である。この技法の基本はゲイリー・キルドールが海軍大学院大学で教えていたころに開発したものである[1]。繰り返しアルゴリズム[編集]データフロー方程式の不動点は「ラウンドロビン繰り返しアルゴリズム」を使って計算できる。順序問題[編集]データフロー方程式の繰り返し計算の効率は、ノード群を訪れる順序に影響される。上記のラウンドロビン繰り返しアルゴリズムでは、ノードの計算順序である番号の付与がどうなるかが影響する。制御フローグラフに対してデータフロー方程式が前方解析されるのか後方解析されるのかも影響する。以下では、データフロー方程式を解く繰り返し順序について若干解説している。制御フローグラフの繰り返し順序と似た概念として、木構造の走査がある。order)順序を気にせずにデータフロー方程式を解いていく。性能は他に比較すると低い。(postorder)後方データフロー問題で一般的な繰り返し順序。木構造で言えば、子ノードを全て訪れてから親ノードを訪れる順序に相当する。一般に深さ優先戦略の一部として実装される。postorder)前方データフロー問題で一般的な繰り返し順序。例[編集]以下に、データフロー解析でコンピュータプログラムの特性を計算する例を示す。データフロー解析で計算された特性は、実際の特性の単なる近似である点に注意されたい。構造をなぞっているだけだからである。近似であっても最適化という観点では有効である。プログラムの各点について、そこに到達する可能性のある定義の集合を計算する。variables)生存変数解析では、プログラムの各点で変数が次に更新される前に読み取られる可能性があるかどうかを計算する。更新されるからである。経路解析に使えるようなデータフロー方程式を定義することも可能である。以下の用語はデータフロー解析特有のものではない。flow-sensitiveプログラムの文の順序を考慮する。同じ位置を参照するかもしれない」と判断する。path-sensitive条件分岐命令における条件判断に関わる情報を解析する。なっていると判断できる。context-sensitiveプロシージャ間解析の一部であり、関数コールの解析にあたってそれを呼び出した側のコンテキストを考慮する。ない場合は関数を呼び出している箇所全てに解析情報が伝播することになって、精度が失われる。2006年11月20日閲覧。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。