| //===-- 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 |