如何获取phi变量包含在LLVM-IR中的程序变量

时间:2019-05-07 13:09:10

标签: llvm-ir ssa

对于类似IR的

%.0 = phi i32* [ @y, %bb2 ], [ @z, %bb3 ]
%.1 = phi i32* [ %.0, %bb4 ], [ %.x, %bb19 ]
store i32* %.1, i32** @x, align 8

因此,如果我在llvm-pass中进行迭代并在第三条指令中遇到0.1的使用。我将其存储在值类中(使用Instruction-> getOperand(0)),用名称v1说。现在我该如何遍历0.1可能包含的变量y,z和x。在v1上调用什么。

我已经尝试阅读llvm文档和以下链接,但是没有为llvm-passes提供语法

https://llvm.org/docs/MemorySSA.html 我正在尝试遵循代码

for (auto &I : BB) {//over basic blocks
    Instruction *Inst=&I;
    if(Inst->getOpcode()==31){
        Value *v=Inst->getOperand(0);
        //now use what to get x,y,z as through 0.1
    }
}

0 个答案:

没有答案