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