llvm はどのようにそのテンポラリーのライブ範囲 (間隔) を計算しますか? C ファイルの例を次に示します。
$ cat main.c
int main()
{
int i = 200;
int j = 300;
while (j)
{
i=i+1;
j=j-1;
}
return 0;
}
次のコマンドを実行し、 と の両方main.llを調べますmain.mem2reg.ll。私はおそらく間違っていますが、ライブ範囲の計算ははるかに簡単なようmain.llです (?) はmem2reg、ライブ範囲を計算するときに不可欠なパスですか? それとも、特定の最適化のために持っていると便利ですか?
$ clang -c -emit-llvm -O0 main.c -o main.bc
$ opt -instnamer main.bc -o main.bc
$ opt -mem2reg main.bc -o main.mem2reg.bc
$ llvm-dis main.bc
$ llvm-dis main.mem2reg.bc