ProfileInfo.h revision 54a6662da36d2c45d33c2a20883d197720e28a8d
1//===- llvm/Analysis/ProfileInfo.h - Profile Info Interface -----*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file was developed by the LLVM research group and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines the generic ProfileInfo interface, which is used as the
11// common interface used by all clients of profiling information, and
12// implemented either by making static guestimations, or by actually reading in
13// profiling information gathered by running the program.
14//
15// Note that to be useful, all profile-based optimizations should preserve
16// ProfileInfo, which requires that they notify it when changes to the CFG are
17// made.
18//
19//===----------------------------------------------------------------------===//
20
21#ifndef LLVM_ANALYSIS_PROFILEINFO_H
22#define LLVM_ANALYSIS_PROFILEINFO_H
23
24#include <string>
25
26namespace llvm {
27  class BasicBlock;
28  class Pass;
29
30  /// createProfileLoaderPass - This function returns a Pass that loads the
31  /// profiling information for the module from the specified filename, making
32  /// it available to the optimizers.
33  Pass *createProfileLoaderPass(const std::string &Filename);
34
35  struct ProfileInfo {
36    virtual ~ProfileInfo();  // We want to be subclassed
37
38    //===------------------------------------------------------------------===//
39    /// Profile Information Queries
40    ///
41    virtual unsigned getExecutionCount(BasicBlock *BB) = 0;
42
43    //===------------------------------------------------------------------===//
44    /// Analysis Update Methods
45    ///
46
47  };
48
49} // End llvm namespace
50
51#endif
52