//===- ProfileInfoLoader.h - Load & convert profile information -*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // The ProfileInfoLoader class is used to load and represent profiling // information read in from the dump file. If conversions between formats are // needed, it can also do this. // //===----------------------------------------------------------------------===// #ifndef LLVM_ANALYSIS_PROFILEINFOLOADER_H #define LLVM_ANALYSIS_PROFILEINFOLOADER_H #include <vector> #include <string> #include <utility> namespace llvm { class Module; class Function; class BasicBlock; class ProfileInfoLoader { const std::string &Filename; Module &M; std::vector<std::string> CommandLines; std::vector<unsigned> FunctionCounts; std::vector<unsigned> BlockCounts; std::vector<unsigned> EdgeCounts; std::vector<unsigned> OptimalEdgeCounts; std::vector<unsigned> BBTrace; bool Warned; public: // ProfileInfoLoader ctor - Read the specified profiling data file, exiting // the program if the file is invalid or broken. ProfileInfoLoader(const char *ToolName, const std::string &Filename, Module &M); static const unsigned Uncounted; unsigned getNumExecutions() const { return CommandLines.size(); } const std::string &getExecution(unsigned i) const { return CommandLines[i]; } const std::string &getFileName() const { return Filename; } // getRawFunctionCounts - This method is used by consumers of function // counting information. // const std::vector<unsigned> &getRawFunctionCounts() const { return FunctionCounts; } // getRawBlockCounts - This method is used by consumers of block counting // information. // const std::vector<unsigned> &getRawBlockCounts() const { return BlockCounts; } // getEdgeCounts - This method is used by consumers of edge counting // information. // const std::vector<unsigned> &getRawEdgeCounts() const { return EdgeCounts; } // getEdgeOptimalCounts - This method is used by consumers of optimal edge // counting information. // const std::vector<unsigned> &getRawOptimalEdgeCounts() const { return OptimalEdgeCounts; } }; } // End llvm namespace #endif