如何在LLVM中打印出指令?

时间:2017-01-31 14:04:40

标签: c++ llvm

for (BasicBlock::iterator i = bb->begin(), e = bb->end(); i != e; ++i) {
    i.print(errs()); ???

我正在编写 LLVM PASS ,我想获取基本块内的指令列表,但是如何在控制台上打印出来以便我可以看到它们?上面的代码显示了我试过的代码,它迭代了基本块中的每条指令,但是我得到了下面的错误,用于打印功能。

  

错误:'llvm :: BasicBlock :: iterator'没有名为'print'的成员       i.print(犯错());

是否有更好的方法来打印指令?

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试打印迭代器而不是指令。您可以尝试以下方法之一。您可以通过打印基本块或打印每条指令来打印基本块中的指令:

BasicBlock* bb = ...; // 
errs() << *bb;
for (BasicBlock::iterator i = bb->begin(), e = bb->end(); i != e; ++i) {
  Instruction* ii = &*i;
  errs() << *ii << "\n";

两个打印件都会输出相同的结果。