C++ 如何检查迭代器的相等性?
在我的C++ 如何检查迭代器的相等性?,c++,llvm,intermediate-code,C++,Llvm,Intermediate Code,在我的llvm代码中,我尝试用以下代码检查迭代器InsertPos是否指向基本块的最后一条指令 BasicBlock::iterator InsertPos = BB->begin(); LLVMContext &Context = BB->getContext(); while ( !( isa<CallInst>(InsertPos) || ( InsertPos == BB->getTerminator() ) ) ) //
llvm
代码中,我尝试用以下代码检查迭代器InsertPos是否指向基本块的最后一条指令
BasicBlock::iterator InsertPos = BB->begin();
LLVMContext &Context = BB->getContext();
while ( !( isa<CallInst>(InsertPos) ||
( InsertPos == BB->getTerminator() ) ) ) // <-- Error here
++InsertPos;
正确的方法是什么?BB->getTerminator()
返回指针(TerminatorInst*
),而InsertPos
是迭代器(BasicBlock::iterator
)。类型不匹配
也许你可以试试
&*InsertPos == BB->getTerminator()
您还可以检查一条指令是否是带的终止符
BB->getTerminator()
返回指针(TerminatorInst*
),而InsertPos
是迭代器(BasicBlock::iterator
)。类型不匹配
也许你可以试试
&*InsertPos == BB->getTerminator()
您还可以检查一条指令是否是带的终止符 我是这样解决的
BasicBlock::iterator InsertPos = BB->begin();
BasicBlock::iterator TermPos = BB->getTerminator(); // <-- Added this variable
while ( !( isa<CallInst>(InsertPos) || ( InsertPos == TermPos ) ) )
++InsertPos;
BasicBlock::迭代器InsertPos=BB->begin();
基本块::迭代器TermPos=BB->getTerminator();// 我是这样解决的
BasicBlock::iterator InsertPos = BB->begin();
BasicBlock::iterator TermPos = BB->getTerminator(); // <-- Added this variable
while ( !( isa<CallInst>(InsertPos) || ( InsertPos == TermPos ) ) )
++InsertPos;
BasicBlock::迭代器InsertPos=BB->begin();
基本块::迭代器TermPos=BB->getTerminator()//