|  | //===- 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 |