]> CyberLeo.Net >> Repos - FreeBSD/releng/9.0.git/blob - contrib/llvm/include/llvm/DebugInfoProbe.h
Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
[FreeBSD/releng/9.0.git] / contrib / llvm / include / llvm / DebugInfoProbe.h
1 //===-- DebugInfoProbe.h - DebugInfo Probe ----------------------*- C++ -*-===//
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 a probe, DebugInfoProbe, that can be used by pass
11 // manager to analyze how optimizer is treating debugging information.
12 // 
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_TRANSFORMS_UTILS_DEBUGINFOPROBE_H
16 #define LLVM_TRANSFORMS_UTILS_DEBUGINFOPROBE_H
17
18 #include "llvm/ADT/StringMap.h"
19
20 namespace llvm {
21   class Function;
22   class Pass;
23   class DebugInfoProbeImpl;
24
25   /// DebugInfoProbe - This class provides a interface to monitor
26   /// how an optimization pass is preserving debugging information.
27   class DebugInfoProbe {
28     public:
29     DebugInfoProbe();
30     ~DebugInfoProbe();
31
32     /// initialize - Collect information before running an optimization pass.
33     void initialize(StringRef PName, Function &F);
34
35     /// finalize - Collect information after running an optimization pass. This
36     /// must be used after initialization.
37     void finalize(Function &F);
38
39     /// report - Report findings. This should be invoked after finalize.
40     void report();
41
42     private:
43     DebugInfoProbeImpl *pImpl;
44   };
45
46   /// DebugInfoProbeInfo - This class provides an interface that a pass manager
47   /// can use to manage debug info probes.
48   class DebugInfoProbeInfo {
49     StringMap<DebugInfoProbe *> Probes;
50   public:
51     DebugInfoProbeInfo() {}
52
53     /// ~DebugInfoProbeInfo - Report data collected by all probes before deleting
54     /// them.
55     ~DebugInfoProbeInfo();
56
57     /// initialize - Collect information before running an optimization pass.
58     void initialize(Pass *P, Function &F);
59
60     /// finalize - Collect information after running an optimization pass. This
61     /// must be used after initialization.
62     void finalize(Pass *P, Function &F);
63   };
64
65 } // End llvm namespace
66
67 #endif