次のコードがあるとします。
int x = 100;
int* p = &x;
*p = 20;
print(x); //<= reaching defitition of x?
実行すると20が出力されます。問題は、最初の割り当てまたはポインター割り当ての
どのステートメントが到達定義であるかです。print(x)
また、次のコードで:
void sub(int* p)
{
*p = 20;
}
int x = 100;
sub(&x);
print(x); //<= reaching defitition of x?
同じ問題が存在します。定義分析に到達する特殊なケースですか、それともそれを処理するために特別なアルゴリズムが必要ですか?