C++ 在LLVM中,如何检查块是否为合并块
我在写LLVM通行证。我的pass需要知道哪个块是合并块,也就是说,一个有多个前导的块。我如何在我的代码中测试这一点?您可以像这样迭代所有前辈:C++ 在LLVM中,如何检查块是否为合并块,c++,llvm,clang,C++,Llvm,Clang,我在写LLVM通行证。我的pass需要知道哪个块是合并块,也就是说,一个有多个前导的块。我如何在我的代码中测试这一点?您可以像这样迭代所有前辈: #include "llvm/Support/CFG.h" BasicBlock *BB = ...; for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) { BasicBlock *Pred = *PI; // ... } 您可以使用以下方法验证
#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
{ ... }