[llvm-commits] CVS: llvm/include/llvm/Analysis/ProfileInfoLoader.h
Chris Lattner
lattner at cs.uiuc.edu
Tue Feb 10 23:55:02 PST 2004
Changes in directory llvm/include/llvm/Analysis:
ProfileInfoLoader.h added (r1.1)
---
Log message:
Factor this code out of llvm-prof
---
Diffs of the changes: (+65 -0)
Index: llvm/include/llvm/Analysis/ProfileInfoLoader.h
diff -c /dev/null llvm/include/llvm/Analysis/ProfileInfoLoader.h:1.1
*** /dev/null Tue Feb 10 23:54:19 2004
--- llvm/include/llvm/Analysis/ProfileInfoLoader.h Tue Feb 10 23:54:08 2004
***************
*** 0 ****
--- 1,65 ----
+ //===- ProfileInfoLoader.h - Load & convert profile information -*- C++ -*-===//
+ //
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by the LLVM research group and 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 {
+ Module &M;
+ std::vector<std::string> CommandLines;
+ std::vector<unsigned> FunctionCounts;
+ std::vector<unsigned> BlockCounts;
+ 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);
+
+ unsigned getNumExecutions() const { return CommandLines.size(); }
+ const std::string &getExecution(unsigned i) const { return CommandLines[i]; }
+
+ // getFunctionCounts - This method is used by consumers of function counting
+ // information. If we do not directly have function count information, we
+ // compute it from other, more refined, types of profile information.
+ //
+ void getFunctionCounts(std::vector<std::pair<Function*, unsigned> > &Counts);
+
+ // hasAccurateBlockCounts - Return true if we can synthesize accurate block
+ // frequency information from whatever we have.
+ //
+ bool hasAccurateBlockCounts() const {
+ return !BlockCounts.empty();
+ }
+
+ // getBlockCounts - This method is used by consumers of block counting
+ // information. If we do not directly have block count information, we
+ // compute it from other, more refined, types of profile information.
+ //
+ void getBlockCounts(std::vector<std::pair<BasicBlock*, unsigned> > &Counts);
+ };
+
+ } // End llvm namespace
+
+ #endif
More information about the llvm-commits
mailing list