【发布时间】:2015-08-26 14:39:23
【问题描述】:
我正在尝试迭代一个基本块的前辈,我正在使用以下代码:
for (::llvm::PredIterator PI = pred_begin(post_block); PI != pred_end(post_block); PI++)
{
::llvm::BasicBlock *pred = *PI;
if (pred != exec_block)
{ ...
在 if 语句的行中,我收到以下错误:
In instantiation of ‘llvm::PredIterator<Ptr, USE_iterator>::reference llvm::PredIterator<Ptr, USE_iterator>::operator*() const [with Ptr = llvm::BasicBlock; USE_iterator = llvm::Value::use_iterator_impl<llvm::Use>; llvm::PredIterator<Ptr, USE_iterator>::reference = llvm::BasicBlock*]’:LLVMTC.cpp:1489:31:
required from here /usr/local/include/llvm/Support/CFG.h:56:5: error: ‘const class llvm::Value::use_iterator_impl<llvm::Use>’ has no member named ‘atEnd’
assert(!It.atEnd() && "pred_iterator out of range!");
有没有人知道是什么导致了这个问题?我的代码基于:http://llvm.org/docs/ProgrammersManual.html#iterating-over-predecessors-successors-of-blocks。
谢谢!
【问题讨论】:
标签: c++ compiler-construction llvm