Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在LLVM中,如何检查块是否为合并块_C++_Llvm_Clang - Fatal编程技术网

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

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; // ... } 您可以使用以下方法验证

我在写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;
  // ...
}
您可以使用以下方法验证BB是否有多个前置机:

BasicBlock *BB = ...;

if (BB->getSinglePredecessor() != null) /// one predecessor
{ ... } 
else /// more than one predecessor
{ ... }