llvm/clang/lib/Analysis/FlowSensitive/AdornedCFG.cpp

//===- AdornedCFG.cpp ---------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
//  This file defines an `AdornedCFG` class that is used by dataflow analyses
//  that run over Control-Flow Graphs (CFGs).
//
//===----------------------------------------------------------------------===//

#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 {

/// Returns a map from statements to basic blocks that contain them.
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)
    :{}

} // namespace internal

llvm::Expected<AdornedCFG> AdornedCFG::build(const FunctionDecl &Func) {}

llvm::Expected<AdornedCFG> AdornedCFG::build(const Decl &D, Stmt &S,
                                             ASTContext &C) {}

} // namespace dataflow
} // namespace clang