5

我正在写一个 LLVM Pass。我的通行证需要知道哪个块是合并块,即具有多个前辈的块。如何在我的代码中对此进行测试?

4

1 回答 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 回答