LLVM 20.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions
Debugify.h File Reference
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassInstrumentation.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Pass.h"

Go to the source code of this file.

Classes

struct  DebugInfoPerPass
 Used to track the Debug Info Metadata information. More...
 
class  NewPMDebugifyPass
 
struct  DebugifyStatistics
 Track how much debugify information (in the synthetic mode only) has been lost. More...
 
class  NewPMCheckDebugifyPass
 
class  llvm::DebugifyEachInstrumentation
 
class  llvm::DebugifyCustomPassManager
 DebugifyCustomPassManager wraps each pass with the debugify passes if needed. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Typedefs

using DebugFnMap = llvm::MapVector< const llvm::Function *, const llvm::DISubprogram * >
 
using DebugInstMap = llvm::MapVector< const llvm::Instruction *, bool >
 
using DebugVarMap = llvm::MapVector< const llvm::DILocalVariable *, unsigned >
 
using WeakInstValueMap = llvm::MapVector< const llvm::Instruction *, llvm::WeakVH >
 
using DebugifyStatsMap = llvm::MapVector< llvm::StringRef, DebugifyStatistics >
 Map pass names to a per-pass DebugifyStatistics instance.
 

Enumerations

enum class  DebugifyMode { NoDebugify , SyntheticDebugInfo , OriginalDebugInfo }
 Used to check whether we track synthetic or original debug info. More...
 

Functions

bool llvm::applyDebugifyMetadata (Module &M, iterator_range< Module::iterator > Functions, StringRef Banner, std::function< bool(DIBuilder &, Function &)> ApplyToMF)
 Add synthesized debug information to a module.
 
bool llvm::stripDebugifyMetadata (Module &M)
 Strip out all of the metadata and debug info inserted by debugify.
 
bool llvm::collectDebugInfoMetadata (Module &M, iterator_range< Module::iterator > Functions, DebugInfoPerPass &DebugInfoBeforePass, StringRef Banner, StringRef NameOfWrappedPass)
 Collect original debug information before a pass.
 
bool llvm::checkDebugInfoMetadata (Module &M, iterator_range< Module::iterator > Functions, DebugInfoPerPass &DebugInfoBeforePass, StringRef Banner, StringRef NameOfWrappedPass, StringRef OrigDIVerifyBugsReportFilePath)
 Check original debug information after a pass.
 
llvm::ModulePasscreateDebugifyModulePass (enum DebugifyMode Mode=DebugifyMode::SyntheticDebugInfo, llvm::StringRef NameOfWrappedPass="", DebugInfoPerPass *DebugInfoBeforePass=nullptr)
 
llvm::FunctionPasscreateDebugifyFunctionPass (enum DebugifyMode Mode=DebugifyMode::SyntheticDebugInfo, llvm::StringRef NameOfWrappedPass="", DebugInfoPerPass *DebugInfoBeforePass=nullptr)
 
llvm::ModulePasscreateCheckDebugifyModulePass (bool Strip=false, llvm::StringRef NameOfWrappedPass="", DebugifyStatsMap *StatsMap=nullptr, enum DebugifyMode Mode=DebugifyMode::SyntheticDebugInfo, DebugInfoPerPass *DebugInfoBeforePass=nullptr, llvm::StringRef OrigDIVerifyBugsReportFilePath="")
 
llvm::FunctionPasscreateCheckDebugifyFunctionPass (bool Strip=false, llvm::StringRef NameOfWrappedPass="", DebugifyStatsMap *StatsMap=nullptr, enum DebugifyMode Mode=DebugifyMode::SyntheticDebugInfo, DebugInfoPerPass *DebugInfoBeforePass=nullptr, llvm::StringRef OrigDIVerifyBugsReportFilePath="")
 
void llvm::exportDebugifyStats (StringRef Path, const DebugifyStatsMap &Map)
 

Typedef Documentation

◆ DebugFnMap

Definition at line 28 of file Debugify.h.

◆ DebugifyStatsMap

Map pass names to a per-pass DebugifyStatistics instance.

Definition at line 148 of file Debugify.h.

◆ DebugInstMap

Definition at line 30 of file Debugify.h.

◆ DebugVarMap

Definition at line 31 of file Debugify.h.

◆ WeakInstValueMap

Definition at line 32 of file Debugify.h.

Enumeration Type Documentation

◆ DebugifyMode

enum class DebugifyMode
strong

Used to check whether we track synthetic or original debug info.

Enumerator
NoDebugify 
SyntheticDebugInfo 
OriginalDebugInfo 

Definition at line 95 of file Debugify.h.

Function Documentation

◆ createCheckDebugifyFunctionPass()

llvm::FunctionPass * createCheckDebugifyFunctionPass ( bool  Strip = false,
llvm::StringRef  NameOfWrappedPass = "",
DebugifyStatsMap StatsMap = nullptr,
enum DebugifyMode  Mode = DebugifyMode::SyntheticDebugInfo,
DebugInfoPerPass DebugInfoBeforePass = nullptr,
llvm::StringRef  OrigDIVerifyBugsReportFilePath = "" 
)

Definition at line 1025 of file Debugify.cpp.

References assert(), OriginalDebugInfo, and SyntheticDebugInfo.

Referenced by llvm::DebugifyCustomPassManager::add().

◆ createCheckDebugifyModulePass()

llvm::ModulePass * createCheckDebugifyModulePass ( bool  Strip = false,
llvm::StringRef  NameOfWrappedPass = "",
DebugifyStatsMap StatsMap = nullptr,
enum DebugifyMode  Mode = DebugifyMode::SyntheticDebugInfo,
DebugInfoPerPass DebugInfoBeforePass = nullptr,
llvm::StringRef  OrigDIVerifyBugsReportFilePath = "" 
)

Definition at line 1013 of file Debugify.cpp.

References assert(), OriginalDebugInfo, and SyntheticDebugInfo.

Referenced by llvm::DebugifyCustomPassManager::add().

◆ createDebugifyFunctionPass()

llvm::FunctionPass * createDebugifyFunctionPass ( enum DebugifyMode  Mode = DebugifyMode::SyntheticDebugInfo,
llvm::StringRef  NameOfWrappedPass = "",
DebugInfoPerPass DebugInfoBeforePass = nullptr 
)

Definition at line 990 of file Debugify.cpp.

References assert(), OriginalDebugInfo, and SyntheticDebugInfo.

Referenced by llvm::DebugifyCustomPassManager::add().

◆ createDebugifyModulePass()

llvm::ModulePass * createDebugifyModulePass ( enum DebugifyMode  Mode = DebugifyMode::SyntheticDebugInfo,
llvm::StringRef  NameOfWrappedPass = "",
DebugInfoPerPass DebugInfoBeforePass = nullptr 
)

Definition at line 980 of file Debugify.cpp.

References assert(), OriginalDebugInfo, and SyntheticDebugInfo.

Referenced by llvm::DebugifyCustomPassManager::add().