#include "clang/Analysis/FlowSensitive/AdornedCFG.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/AST/Stmt.h"
#include "clang/Analysis/CFG.h"
#include "clang/Analysis/FlowSensitive/ASTOps.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/Support/Error.h"
#include <utility>
namespace clang {
namespace dataflow {
static llvm::DenseMap<const Stmt *, const CFGBlock *>
buildStmtToBasicBlockMap(const CFG &Cfg) { … }
static llvm::BitVector findReachableBlocks(const CFG &Cfg) { … }
static llvm::DenseSet<const CFGBlock *>
buildContainsExprConsumedInDifferentBlock(
const CFG &Cfg, const internal::StmtToBlockMap &StmtToBlock) { … }
namespace internal {
StmtToBlockMap::StmtToBlockMap(const CFG &Cfg)
: … { … }
}
llvm::Expected<AdornedCFG> AdornedCFG::build(const FunctionDecl &Func) { … }
llvm::Expected<AdornedCFG> AdornedCFG::build(const Decl &D, Stmt &S,
ASTContext &C) { … }
}
}