|  | //===-- DebugInfoProbe.h - DebugInfo Probe ----------------------*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This file defines a probe, DebugInfoProbe, that can be used by pass | 
|  | // manager to analyze how optimizer is treating debugging information. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_TRANSFORMS_UTILS_DEBUGINFOPROBE_H | 
|  | #define LLVM_TRANSFORMS_UTILS_DEBUGINFOPROBE_H | 
|  |  | 
|  | #include "llvm/ADT/StringMap.h" | 
|  |  | 
|  | namespace llvm { | 
|  | class Function; | 
|  | class Pass; | 
|  | class DebugInfoProbeImpl; | 
|  |  | 
|  | /// DebugInfoProbe - This class provides a interface to monitor | 
|  | /// how an optimization pass is preserving debugging information. | 
|  | class DebugInfoProbe { | 
|  | public: | 
|  | DebugInfoProbe(); | 
|  | ~DebugInfoProbe(); | 
|  |  | 
|  | /// initialize - Collect information before running an optimization pass. | 
|  | void initialize(StringRef PName, Function &F); | 
|  |  | 
|  | /// finalize - Collect information after running an optimization pass. This | 
|  | /// must be used after initialization. | 
|  | void finalize(Function &F); | 
|  |  | 
|  | /// report - Report findings. This should be invoked after finalize. | 
|  | void report(); | 
|  |  | 
|  | private: | 
|  | DebugInfoProbeImpl *pImpl; | 
|  | }; | 
|  |  | 
|  | /// DebugInfoProbeInfo - This class provides an interface that a pass manager | 
|  | /// can use to manage debug info probes. | 
|  | class DebugInfoProbeInfo { | 
|  | StringMap<DebugInfoProbe *> Probes; | 
|  | public: | 
|  | DebugInfoProbeInfo() {} | 
|  |  | 
|  | /// ~DebugInfoProbeInfo - Report data collected by all probes before deleting | 
|  | /// them. | 
|  | ~DebugInfoProbeInfo(); | 
|  |  | 
|  | /// initialize - Collect information before running an optimization pass. | 
|  | void initialize(Pass *P, Function &F); | 
|  |  | 
|  | /// finalize - Collect information after running an optimization pass. This | 
|  | /// must be used after initialization. | 
|  | void finalize(Pass *P, Function &F); | 
|  | }; | 
|  |  | 
|  | } // End llvm namespace | 
|  |  | 
|  | #endif |