2013-01-10 96 views
0

我想要一些有關LLVM通過的建議。我的具體問題是:LLVM ICmpInst指令鑄造

存在具有類型指令的數組元素*的方法

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類是在線路913從http://llvm.org/doxygen/Instructions_8h_source.html 的繼承圖是在http://llvm.org/doxygen/classllvm_1_1ICmpInst.html

我想使用ICmpInst方法式使用的對象中定義的。這些方法很難複製/複製。我最好用什麼解決方案來解決這個問題?我應該使用訪問者模式(我不太瞭解)?

謝謝你的任何建議!

回答

1

來執行轉換的正確方法是:

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

(溝額外的星號)