我正在写一个 LLVM Pass。我的通行证需要知道哪个块是合并块,即具有多个前辈的块。如何在我的代码中对此进行测试?
问问题
548 次
1 回答
4
您可以像这样遍历所有前辈:
#include "llvm/Support/CFG.h"
BasicBlock *BB = ...;
for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) {
BasicBlock *Pred = *PI;
// ...
}
您可以使用以下方法验证 BB 是否有多个前任:
BasicBlock *BB = ...;
if (BB->getSinglePredecessor() != null) /// one predecessor
{ ... }
else /// more than one predecessor
{ ... }
于 2012-04-12T00:17:53.117 回答