1

SSA 形式では、phi から割り当てられた変数は、到達したパスに応じて適切な値になります。しかし、おそらく異常な経路を介して、ファイへの両方の入力が割り当てられている場合はどうなるでしょうか? 例えば

a = 1
...
b = 2
...
c = phi(a, b)

それが最後の割り当てだったので、 c が値 2 になるような共用体のように動作するように定義されていますか?

4

1 に答える 1

5

SSA (Single Static Assignment) の場合、ノードの 2 つのオペランドはphi、特定の変数の 2 つの定義である必要があります。

あなたの例では、それはb=2、 とa=1が 1 つの変数に対する 2 つの定義であることを意味します。そして、b=2常に の後に実行されるのでa=1。したがって、 The definitionは の定義b=2を殺しますa=1。だから、あなたphi(a,b)は実際には違法です。

phiのオペランドは通常、プログラムの 2 つの異なる実行パスからの定義です。

于 2015-05-21T13:31:41.160 に答える