LLVM ICmpInst到指令转换

时间:2013-01-10 13:33:10

标签: llvm

我想要一些关于LLVM传递的建议。我的特殊问题是:

有一种方法

bool patternDC::runOnFunction(Function &F) {
...
    if ( CC->operEquiv(icmpInstrArray[i], icmpInstrArray[j]) ) {...}
...
}

具有Instruction *。

类型的数组元素

被调用的方法是

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

我想对类型为Instruction的对象使用ICmpInst方法。这些方法难以复制/复制。我最好用什么解决方案来解决这个问题?我应该使用访客模式(我不太了解)吗?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

执行演员表的正确方法是:

ICmpInst* II1 = dyn_cast<ICmpInst>(I1);

(抛弃额外的星号)