0

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
4

1 に答える 1