对于类似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
}
}