繁体   English   中英

如何在 LLVM 中打印出指令?

[英]How do I print out an Instruction in LLVM?

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

我正在编写一个LLVM PASS并且我想获取基本块中的指令列表,但是如何在控制台上将它们打印出来以便我可以看到它们? 上面的代码显示了我尝试过的代码,它遍历基本块中的每条指令,但我收到以下打印函数的错误。

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

有没有更好的方法来打印说明?

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

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

两次打印都将输出相同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM