我想要一些关于 LLVM 通行证的建议。我的特殊问题是:
有一种方法
bool patternDC::runOnFunction(Function &F) {
...
if ( CC->operEquiv(icmpInstrArray[i], icmpInstrArray[j]) ) {...}
...
}
具有指令*类型的数组元素。
调用的方法是
bool ifChecker::operEquiv(Instruction *I1, Instruction *I2)
{
...
}
但我想使用 operEquiv 中的 ICmpInst 类中的方法。我不能做类似的事情
ICmpInst** II1 = dyn_cast<ICmpInst*>(I1);
(一种来自 Java 的 instanceOf()),存在转换编译问题。
ICmpInst 类在http://llvm.org/doxygen/Instructions_8h_source.html 的第 913 行定义继承图在http://llvm.org/doxygen/classllvm_1_1ICmpInst.html
我想对指令类型的对象使用 ICmpInst 方法。这些方法很难复制/复制。我最好使用什么解决方案来解决这个问题?我应该使用访客模式(我不太了解)吗?
感谢您的任何建议!