LLVM  17.0.0git
Classes | Namespaces | Typedefs | Functions
DebugInfo.h File Reference
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/TinyPtrVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/PassManager.h"
#include <optional>
Include dependency graph for DebugInfo.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::DebugInfoFinder
 Utility to find all debug info in a module. More...
 
class  llvm::at::DbgAssignIt
 High level: this is an iterator for llvm.dbg.assign intrinsics. More...
 
struct  llvm::at::VarRecord
 Helper struct for trackAssignments, below. More...
 
struct  llvm::at::AssignmentInfo
 Describes properties of a store that has a static size and offset into a some base storage. More...
 
class  llvm::AssignmentTrackingPass
 Convert @llvm.dbg.declare intrinsics into sets of @llvm.dbg.assign intrinsics by treating stores to the dbg.declare'd address as assignments to the variable. More...
 

Namespaces

 llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
 llvm::at
 Assignment Tracking (at).
 

Typedefs

using llvm::at::AssignmentInstRange = iterator_range< SmallVectorImpl< Instruction * >::iterator >
 A range of instructions. More...
 
using llvm::at::AssignmentMarkerRange = iterator_range< DbgAssignIt >
 A range of llvm.dbg.assign intrinsics. More...
 
using llvm::at::StorageToVarsMap = DenseMap< const AllocaInst *, SmallSet< VarRecord, 2 > >
 Map of backing storage to a set of variables that are stored to it. More...
 

Functions

TinyPtrVector< DbgVariableIntrinsic * > llvm::FindDbgAddrUses (Value *V)
 Finds all intrinsics declaring local variables as living in the memory that 'V' points to. More...
 
TinyPtrVector< DbgDeclareInst * > llvm::FindDbgDeclareUses (Value *V)
 Like FindDbgAddrUses, but only returns dbg.declare intrinsics, not dbg.addr. More...
 
void llvm::findDbgValues (SmallVectorImpl< DbgValueInst * > &DbgValues, Value *V)
 Finds the llvm.dbg.value intrinsics describing a value. More...
 
void llvm::findDbgUsers (SmallVectorImpl< DbgVariableIntrinsic * > &DbgInsts, Value *V)
 Finds the debug info intrinsics describing a value. More...
 
DISubprogramllvm::getDISubprogram (const MDNode *Scope)
 Find subprogram that is enclosing this scope. More...
 
DebugLoc llvm::getDebugValueLoc (DbgVariableIntrinsic *DII)
 Produce a DebugLoc to use for each dbg.declare that is promoted to a dbg.value. More...
 
bool llvm::StripDebugInfo (Module &M)
 Strip debug info in the module if it exists. More...
 
bool llvm::stripDebugInfo (Function &F)
 
bool llvm::stripNonLineTableDebugInfo (Module &M)
 Downgrade the debug info in a module to contain only line table information. More...
 
void llvm::updateLoopMetadataDebugLocations (Instruction &I, function_ref< Metadata *(Metadata *)> Updater)
 Update the debug locations contained within the MD_loop metadata attached to the instruction I, if one exists. More...
 
unsigned llvm::getDebugMetadataVersionFromModule (const Module &M)
 Return Debug Info Metadata Version by checking module flags. More...
 
AssignmentInstRange llvm::at::getAssignmentInsts (DIAssignID *ID)
 Return a range of instructions (typically just one) that have ID as an attachment. More...
 
AssignmentInstRange llvm::at::getAssignmentInsts (const DbgAssignIntrinsic *DAI)
 Return a range of instructions (typically just one) that perform the assignment that DAI encodes. More...
 
AssignmentMarkerRange llvm::at::getAssignmentMarkers (DIAssignID *ID)
 Return a range of dbg.assign intrinsics which use \ID as an operand. More...
 
AssignmentMarkerRange llvm::at::getAssignmentMarkers (const Instruction *Inst)
 Return a range of dbg.assign intrinsics for which Inst performs the assignment they encode. More...
 
void llvm::at::deleteAssignmentMarkers (const Instruction *Inst)
 Delete the llvm.dbg.assign intrinsics linked to Inst. More...
 
void llvm::at::RAUW (DIAssignID *Old, DIAssignID *New)
 Replace all uses (and attachments) of Old with New. More...
 
void llvm::at::deleteAll (Function *F)
 Remove all Assignment Tracking related intrinsics and metadata from F. More...
 
void llvm::at::trackAssignments (Function::iterator Start, Function::iterator End, const StorageToVarsMap &Vars, const DataLayout &DL, bool DebugPrints=false)
 Track assignments to Vars between Start and End. More...
 
std::optional< AssignmentInfollvm::at::getAssignmentInfo (const DataLayout &DL, const MemIntrinsic *I)
 
std::optional< AssignmentInfollvm::at::getAssignmentInfo (const DataLayout &DL, const StoreInst *SI)
 
std::optional< AssignmentInfollvm::at::getAssignmentInfo (const DataLayout &DL, const AllocaInst *AI)
 
bool llvm::isAssignmentTrackingEnabled (const Module &M)
 Return true if assignment tracking is enabled for module M. More...