如何迭代基本块?

mdr*_*lol 5 llvm

我想向我的每个基本块添加一条指令,一旦指定了块,我就可以使用 LLVMAppendBasicBlock 。但是如何迭代一个函数中的所有基本块呢?LLVM API 中是否有迭代器?

小智 8

您可以简单地在函数上使用迭代器,例如:

 for (Function::iterator b = func->begin(), be = func->end(); b != be; ++b) {
BasicBlock* BB = b;
....
}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这返回了一个错误,但编译了 `BasicBlock &BB = *b;`。 (2认同)
  • 这是错误。说“无法转换”。 (2认同)