//===- CFGBuilder.h - CFG building and updating utility ----------*- C++ -*-==// // // 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 // //===----------------------------------------------------------------------===// /// \file /// CFGBuilders provides utilities fo building and updating CFG for testing /// purposes. /// //===----------------------------------------------------------------------===// #ifndef LLVM_UNITTESTS_CFG_BUILDER_H #define LLVM_UNITTESTS_CFG_BUILDER_H #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Debug.h" #include <memory> #include <optional> #include <set> #include <tuple> #include <vector> namespace llvm { class LLVMContext; class Module; class Function; class BasicBlock; class raw_ostream; struct CFGHolder { … }; /// \brief /// CFGBuilder builds IR with specific CFG, based on the supplied list of arcs. /// It's able to apply the provided updates and automatically modify the IR. /// /// Internally it makes every basic block end with either SwitchInst or with /// UnreachableInst. When all arc to a BB are deleted, the BB remains in the /// function and doesn't get deleted. /// class CFGBuilder { … }; } // namespace llvm #endif