在LLVM中,如何检查块是否为合并块

时间:2012-04-10 11:44:14

标签: c++ llvm clang

我正在写一个LLVM Pass。我的传递需要知道哪个块是合并块,即具有多于1个前驱的块。如何在我的代码中测试?

1 个答案:

答案 0 :(得分: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
{ ... }