Be more consistent in using ValueToValueMapTy.
[oota-llvm.git] / include / llvm / Transforms / RSProfiling.h
1 //===- RSProfiling.cpp - Various profiling using random sampling ----------===//
2 //
3 //                      The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines the abstract interface that a profiler must implement to
11 // support the random profiling transform.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_TRANSFORMS_RSPROFILING_H
16 #define LLVM_TRANSFORMS_RSPROFILING_H
17
18 #include "llvm/Pass.h"
19
20 namespace llvm {
21   class Value;
22   
23   //===--------------------------------------------------------------------===//
24   /// RSProfilers - The basic Random Sampling Profiler Interface  Any profiler 
25   /// that implements this interface can be transformed by the random sampling
26   /// pass to be sample based rather than always on.
27   ///
28   /// The only exposed function can be queried to find out if an instruction
29   /// was original or if it was inserted by the profiler.  Implementations of
30   /// this interface are expected to chain to other implementations, such that
31   /// multiple profilers can be support simultaniously.
32   struct RSProfilers : public ModulePass {
33     static char ID; // Pass identification, replacement for typeinfo
34     RSProfilers() : ModulePass(&ID) {}
35
36     /// isProfiling - This method returns true if the value passed it was 
37     /// inserted by the profiler.
38     virtual bool isProfiling(Value* v) = 0;
39   };
40 }
41
42 #endif