clang API Documentation

Classes | Public Member Functions | Friends
clang::CodeGen::CGDebugInfo Class Reference

#include <CGDebugInfo.h>

List of all members.

Classes

struct  ObjCInterfaceCacheEntry

Public Member Functions

 CGDebugInfo (CodeGenModule &CGM)
 ~CGDebugInfo ()
void finalize ()
void setLocation (SourceLocation Loc)
SourceLocation getLocation () const
 getLocation - Return the current source location.
void EmitLocation (CGBuilderTy &Builder, SourceLocation Loc, bool ForceColumnInfo=false)
void EmitFunctionStart (GlobalDecl GD, SourceLocation Loc, SourceLocation ScopeLoc, QualType FnType, llvm::Function *Fn, CGBuilderTy &Builder)
 EmitFunctionStart - Constructs the debug code for entering a function.
void EmitFunctionEnd (CGBuilderTy &Builder)
 EmitFunctionEnd - Constructs the debug code for exiting a function.
void EmitLexicalBlockStart (CGBuilderTy &Builder, SourceLocation Loc)
void EmitLexicalBlockEnd (CGBuilderTy &Builder, SourceLocation Loc)
void EmitDeclareOfAutoVariable (const VarDecl *Decl, llvm::Value *AI, CGBuilderTy &Builder)
void EmitDeclareOfBlockDeclRefVariable (const VarDecl *variable, llvm::Value *storage, CGBuilderTy &Builder, const CGBlockInfo &blockInfo)
void EmitDeclareOfArgVariable (const VarDecl *Decl, llvm::Value *AI, unsigned ArgNo, CGBuilderTy &Builder)
void EmitDeclareOfBlockLiteralArgVariable (const CGBlockInfo &block, llvm::Value *Arg, unsigned ArgNo, llvm::Value *LocalAddr, CGBuilderTy &Builder)
void EmitGlobalVariable (llvm::GlobalVariable *GV, const VarDecl *Decl)
 EmitGlobalVariable - Emit information about a global variable.
void EmitGlobalVariable (const ValueDecl *VD, llvm::Constant *Init)
 EmitGlobalVariable - Emit global variable's debug info.
void EmitUsingDirective (const UsingDirectiveDecl &UD)
 
  • Emit C++ using directive.

void EmitExplicitCastType (QualType Ty)
 EmitExplicitCastType - Emit the type explicitly casted to.
void EmitUsingDecl (const UsingDecl &UD)
 
  • Emit C++ using declaration.

llvm::DIImportedEntity EmitNamespaceAlias (const NamespaceAliasDecl &NA)
 
  • Emit C++ namespace alias.

llvm::DIType getOrCreateRecordType (QualType Ty, SourceLocation L)
 getOrCreateRecordType - Emit record type's standalone debug info.
llvm::DIType getOrCreateInterfaceType (QualType Ty, SourceLocation Loc)
void completeType (const EnumDecl *ED)
void completeType (const RecordDecl *RD)
void completeRequiredType (const RecordDecl *RD)
void completeClassData (const RecordDecl *RD)
void completeTemplateDefinition (const ClassTemplateSpecializationDecl &SD)

Friends

class ArtificialLocation
class SaveAndRestoreLocation

Detailed Description

CGDebugInfo - This class gathers all debug information during compilation and is responsible for emitting to llvm globals or pass directly to the backend.

Definition at line 49 of file CGDebugInfo.h.


Constructor & Destructor Documentation

Definition at line 44 of file CGDebugInfo.cpp.

Definition at line 50 of file CGDebugInfo.cpp.


Member Function Documentation

void CGDebugInfo::completeType ( const EnumDecl ED)
void CGDebugInfo::completeType ( const RecordDecl RD)
void CGDebugInfo::EmitDeclareOfArgVariable ( const VarDecl VD,
llvm::Value AI,
unsigned  ArgNo,
CGBuilderTy Builder 
)

EmitDeclareOfArgVariable - Emit call to llvm.dbg.declare for an argument variable declaration.

Definition at line 3009 of file CGDebugInfo.cpp.

References clang::CodeGenOptions::LimitedDebugInfo.

void CGDebugInfo::EmitDeclareOfAutoVariable ( const VarDecl Decl,
llvm::Value AI,
CGBuilderTy Builder 
)

EmitDeclareOfAutoVariable - Emit call to llvm.dbg.declare for an automatic variable declaration.

Definition at line 2920 of file CGDebugInfo.cpp.

References clang::CodeGenOptions::LimitedDebugInfo.

void CGDebugInfo::EmitDeclareOfBlockDeclRefVariable ( const VarDecl variable,
llvm::Value storage,
CGBuilderTy Builder,
const CGBlockInfo blockInfo 
)
void CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable ( const CGBlockInfo block,
llvm::Value Arg,
unsigned  ArgNo,
llvm::Value LocalAddr,
CGBuilderTy Builder 
)

EmitDeclareOfBlockLiteralArgVariable - Emit call to llvm.dbg.declare for the block-literal argument to a block invocation function.

Definition at line 3026 of file CGDebugInfo.cpp.

References clang::TypeInfo::Align, clang::AS_public, clang::CodeGen::CGBlockInfo::BlockAlign, clang::CodeGen::CGBlockInfo::BlockSize, clang::BlockDecl::Capture::Capture(), clang::BlockDecl::captures(), clang::BlockDecl::capturesCXXThis(), clang::CodeGen::CGBlockInfo::CXXThisIndex, clang::CodeGen::CGBlockInfo::getBlockDecl(), clang::ASTContext::getBlockDescriptorExtendedType(), clang::ASTContext::getBlockDescriptorType(), clang::CodeGen::CGBlockInfo::getBlockExpr(), clang::CodeGen::CGBlockInfo::getCapture(), clang::BlockDecl::getCaretLocation(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getDataLayout(), clang::Decl::getDeclContext(), clang::BlockExpr::getFunctionType(), clang::CodeGen::CGBlockInfo::Capture::getIndex(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::NamedDecl::getName(), clang::Decl::getNonClosureContext(), clang::ASTContext::getPointerType(), clang::CXXMethodDecl::getThisType(), clang::ValueDecl::getType(), clang::ASTContext::getTypeInfo(), clang::CodeGen::CodeGenModule::getUniqueBlockCount(), clang::BlockDecl::Capture::getVariable(), clang::ASTContext::IntTy, clang::BlockDecl::Capture::isByRef(), clang::CodeGen::CGBlockInfo::Capture::isConstant(), clang::CodeGenOptions::LimitedDebugInfo, clang::CodeGen::CGBlockInfo::NeedsCopyDispose, clang::CodeGen::CodeGenTypeCache::PointerWidthInBits, clang::CodeGen::CGBlockInfo::StructureType, clang::ASTContext::toBits(), clang::ast_matchers::type, clang::ASTContext::VoidPtrTy, and clang::TypeInfo::Width.

EmitExplicitCastType - Emit the type explicitly casted to.

Definition at line 3414 of file CGDebugInfo.cpp.

References clang::CodeGen::CodeGenModule::getCodeGenOpts(), and clang::CodeGenOptions::LimitedDebugInfo.

EmitFunctionEnd - Constructs the debug code for exiting a function.

Definition at line 2716 of file CGDebugInfo.cpp.

References EmitLocation().

void CGDebugInfo::EmitFunctionStart ( GlobalDecl  GD,
SourceLocation  Loc,
SourceLocation  ScopeLoc,
QualType  FnType,
llvm::Function *  Fn,
CGBuilderTy Builder 
)

EmitFunctionStart - Constructs the debug code for entering a function.

EmitFunctionStart - Emit a call to llvm.dbg.function.start to indicate start of a new function.

Parameters:
LocThe location of the function header.
ScopeLocThe location of the function body.

Definition at line 2563 of file CGDebugInfo.cpp.

References clang::Decl::getCanonicalDecl(), clang::FunctionDecl::getCanonicalDecl(), clang::GlobalDecl::getDecl(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::Decl::isImplicit(), and clang::SourceLocation::isInvalid().

void CGDebugInfo::EmitGlobalVariable ( llvm::GlobalVariable *  GV,
const VarDecl Decl 
)
void CGDebugInfo::EmitGlobalVariable ( const ValueDecl VD,
llvm::Constant *  Init 
)

EmitLexicalBlockEnd - Emit metadata to indicate the end of a new lexical block and pop the current block.

EmitLexicalBlockEnd - Constructs the debug code for exiting a declarative region - end of a DW_TAG_lexical_block.

Definition at line 2702 of file CGDebugInfo.cpp.

References clang::CodeGenOptions::DebugLineTablesOnly, and EmitLocation().

Referenced by clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt(), clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt(), and clang::CodeGen::CodeGenFunction::EmitOMPSimdDirective().

EmitLexicalBlockStart - Emit metadata to indicate the beginning of a new lexical block and push the block onto the stack.

EmitLexicalBlockStart - Constructs the debug code for entering a declarative region - beginning of a DW_TAG_lexical_block.

Definition at line 2684 of file CGDebugInfo.cpp.

References clang::CodeGenOptions::DebugLineTablesOnly, and setLocation().

Referenced by clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt(), clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt(), and clang::CodeGen::CodeGenFunction::EmitOMPSimdDirective().

void CGDebugInfo::EmitLocation ( CGBuilderTy Builder,
SourceLocation  Loc,
bool  ForceColumnInfo = false 
)

EmitLocation - Emit metadata to indicate a change in line/column information in the source file.

Parameters:
ForceColumnInfoAssume DebugColumnInfo option is true.

EmitLocation - Emit metadata to indicate a change in line/column information in the source file. If the location is invalid, the previous location will be reused.

Definition at line 2645 of file CGDebugInfo.cpp.

References clang::CodeGen::CodeGenModule::getContext(), clang::SourceManager::getExpansionLoc(), clang::CodeGen::CodeGenModule::getLLVMContext(), clang::ASTContext::getSourceManager(), clang::SourceLocation::isInvalid(), clang::SourceLocation::isMacroID(), and setLocation().

Referenced by clang::CodeGen::ArtificialLocation::Emit(), clang::CodeGen::CodeGenFunction::EmitCallArgs(), EmitFunctionEnd(), EmitLexicalBlockEnd(), clang::CodeGen::CodeGenFunction::PopCleanupBlock(), and clang::CodeGen::SaveAndRestoreLocation::~SaveAndRestoreLocation().

llvm::DIImportedEntity CGDebugInfo::EmitNamespaceAlias ( const NamespaceAliasDecl NA)
void CGDebugInfo::EmitUsingDecl ( const UsingDecl UD)

getLocation - Return the current source location.

Definition at line 228 of file CGDebugInfo.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCallArgs(), and clang::CodeGen::SaveAndRestoreLocation::SaveAndRestoreLocation().

getOrCreateInterfaceType - Emit an objective c interface type standalone debug info.

Definition at line 1435 of file CGDebugInfo.cpp.

References clang::QualType::getAsOpaquePtr(), and clang::CodeGenOptions::LimitedDebugInfo.

getOrCreateRecordType - Emit record type's standalone debug info.

Definition at line 1426 of file CGDebugInfo.cpp.

References clang::CodeGenOptions::LimitedDebugInfo.


Friends And Related Function Documentation

friend class ArtificialLocation [friend]

Definition at line 50 of file CGDebugInfo.h.

friend class SaveAndRestoreLocation [friend]

Definition at line 51 of file CGDebugInfo.h.


The documentation for this class was generated from the following files: