#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include "revng/EarlyFunctionAnalysis/CFGAnalyzer.h" #include "revng/EarlyFunctionAnalysis/ControlFlowGraph.h" #include "revng/Pipebox/TupleTreeContainer.h" #include "revng/PipeboxCommon/Common.h" #include "revng/PipeboxCommon/LLVMContainer.h" namespace revng::pypeline { using CFGMap = TupleTreeContainer; namespace piperuns { class CollectCFG { private: const class Model &Model; CFGMap &Output; GeneratedCodeBasicInfo GCBI; efa::FunctionSummaryOracle Oracle; efa::CFGAnalyzer Analyzer; public: static constexpr llvm::StringRef Name = "collect-cfg"; using Arguments = TypeList, PipeRunArgument>; CollectCFG(const class Model &Model, llvm::StringRef Config, llvm::StringRef DynamicConfig, LLVMRootContainer &Input, CFGMap &Output); void runOnFunction(const model::Function &TheFunction); }; } // namespace piperuns } // namespace revng::pypeline