簡體   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