LLVM  12.0.0git
Functions | Variables
DIBuilder.cpp File Reference
#include "llvm/IR/DIBuilder.h"
#include "LLVMContextImpl.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
Include dependency graph for DIBuilder.cpp:

Go to the source code of this file.

Functions

static DIScopegetNonCompileUnitScope (DIScope *N)
 If N is compile unit return NULL otherwise return N. More...
 
static DIImportedEntitycreateImportedModule (LLVMContext &C, dwarf::Tag Tag, DIScope *Context, Metadata *NS, DIFile *File, unsigned Line, StringRef Name, SmallVectorImpl< TrackingMDNodeRef > &AllImportedModules)
 
static ConstantAsMetadatagetConstantOrNull (Constant *C)
 
static DITemplateValueParametercreateTemplateValueParameterHelper (LLVMContext &VMContext, unsigned Tag, DIScope *Context, StringRef Name, DIType *Ty, bool IsDefault, Metadata *MD)
 
static DITypecreateTypeWithFlags (const DIType *Ty, DINode::DIFlags FlagsToSet)
 
static void checkGlobalVariableScope (DIScope *Context)
 
static DILocalVariablecreateLocalVariable (LLVMContext &VMContext, DenseMap< MDNode *, SmallVector< TrackingMDNodeRef, 1 >> &PreservedVariables, DIScope *Scope, StringRef Name, unsigned ArgNo, DIFile *File, unsigned LineNo, DIType *Ty, bool AlwaysPreserve, DINode::DIFlags Flags, uint32_t AlignInBits)
 
template<class... Ts>
static DISubprogramgetSubprogram (bool IsDistinct, Ts &&... Args)
 
static void initIRBuilder (IRBuilder<> &Builder, const DILocation *DL, BasicBlock *InsertBB, Instruction *InsertBefore)
 Initialize IRBuilder for inserting dbg.declare and dbg.value intrinsics. More...
 
static ValuegetDbgIntrinsicValueImpl (LLVMContext &VMContext, Value *V)
 
static FunctiongetDeclareIntrin (Module &M)
 

Variables

static cl::opt< boolUseDbgAddr ("use-dbg-addr", llvm::cl::desc("Use llvm.dbg.addr for all local variables"), cl::init(false), cl::Hidden)
 

Function Documentation

◆ checkGlobalVariableScope()

static void checkGlobalVariableScope ( DIScope Context)
static

◆ createImportedModule()

static DIImportedEntity* createImportedModule ( LLVMContext C,
dwarf::Tag  Tag,
DIScope Context,
Metadata NS,
DIFile File,
unsigned  Line,
StringRef  Name,
SmallVectorImpl< TrackingMDNodeRef > &  AllImportedModules 
)
static

◆ createLocalVariable()

static DILocalVariable* createLocalVariable ( LLVMContext VMContext,
DenseMap< MDNode *, SmallVector< TrackingMDNodeRef, 1 >> &  PreservedVariables,
DIScope Scope,
StringRef  Name,
unsigned  ArgNo,
DIFile File,
unsigned  LineNo,
DIType Ty,
bool  AlwaysPreserve,
DINode::DIFlags  Flags,
uint32_t  AlignInBits 
)
static

◆ createTemplateValueParameterHelper()

static DITemplateValueParameter* createTemplateValueParameterHelper ( LLVMContext VMContext,
unsigned  Tag,
DIScope Context,
StringRef  Name,
DIType Ty,
bool  IsDefault,
Metadata MD 
)
static

◆ createTypeWithFlags()

static DIType* createTypeWithFlags ( const DIType Ty,
DINode::DIFlags  FlagsToSet 
)
static

◆ getConstantOrNull()

static ConstantAsMetadata* getConstantOrNull ( Constant C)
static

◆ getDbgIntrinsicValueImpl()

static Value* getDbgIntrinsicValueImpl ( LLVMContext VMContext,
Value V 
)
static

Definition at line 953 of file DIBuilder.cpp.

References assert(), llvm::MetadataAsValue::get(), and llvm::ValueAsMetadata::get().

Referenced by getDeclareIntrin().

◆ getDeclareIntrin()

static Function* getDeclareIntrin ( Module M)
static

◆ getNonCompileUnitScope()

static DIScope* getNonCompileUnitScope ( DIScope N)
static

◆ getSubprogram()

template<class... Ts>
static DISubprogram* getSubprogram ( bool  IsDistinct,
Ts &&...  Args 
)
static

◆ initIRBuilder()

static void initIRBuilder ( IRBuilder<> &  Builder,
const DILocation DL,
BasicBlock InsertBB,
Instruction InsertBefore 
)
static

Initialize IRBuilder for inserting dbg.declare and dbg.value intrinsics.

This abstracts over the various ways to specify an insert position.

Definition at line 944 of file DIBuilder.cpp.

References llvm::IRBuilderBase::SetCurrentDebugLocation(), and llvm::IRBuilderBase::SetInsertPoint().

Referenced by getDeclareIntrin().

Variable Documentation

◆ UseDbgAddr

cl::opt<bool> UseDbgAddr("use-dbg-addr", llvm::cl::desc("Use llvm.dbg.addr for all local variables"), cl::init(false), cl::Hidden)
static

Referenced by getDeclareIntrin().