LLVM ICmpInst 到指令转换
Posted
技术标签:
【中文标题】LLVM ICmpInst 到指令转换【英文标题】:LLVM ICmpInst to Instruction casting 【发布时间】:2013-01-10 13:33:10 【问题描述】:我想要一些关于 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 方法。这些方法很难复制/复制。我最好使用什么解决方案来解决这个问题?我应该使用访问者模式(我不太了解)吗?
感谢您的任何建议!
【问题讨论】:
【参考方案1】:执行强制转换的正确方法是:
ICmpInst* II1 = dyn_cast<ICmpInst>(I1);
(去掉多余的星号)
【讨论】:
以上是关于LLVM ICmpInst 到指令转换的主要内容,如果未能解决你的问题,请参考以下文章
LLVM IR:具有可变 BasicBlock 目标的分支指令?
如何在 LLVM 中提取 Icmp inst 或 binaryOperator Inst 的目标位置?