blob: 78d00dfeeddf25ff7c7827fe5c9366d67bbc8beb [file] [log] [blame]
//===-- 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