LLVM  9.0.0svn
Macros | Functions | Variables
DebugInfoMetadata.cpp File Reference
#include "llvm/IR/DebugInfoMetadata.h"
#include "LLVMContextImpl.h"
#include "MetadataImpl.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include <numeric>
#include "llvm/IR/DebugInfoFlags.def"
Include dependency graph for DebugInfoMetadata.cpp:

Go to the source code of this file.

Macros

#define HANDLE_DI_FLAG(ID, NAME)   .Case("DIFlag" #NAME, Flag##NAME)
 
#define HANDLE_DI_FLAG(ID, NAME)
 
#define HANDLE_DI_FLAG(ID, NAME)
 
#define UNWRAP_ARGS_IMPL(...)   __VA_ARGS__
 
#define UNWRAP_ARGS(ARGS)   UNWRAP_ARGS_IMPL ARGS
 
#define DEFINE_GETIMPL_LOOKUP(CLASS, ARGS)
 
#define DEFINE_GETIMPL_STORE(CLASS, ARGS, OPS)
 
#define DEFINE_GETIMPL_STORE_NO_OPS(CLASS, ARGS)
 
#define DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS(CLASS, OPS)
 
#define DEFINE_GETIMPL_STORE_N(CLASS, ARGS, OPS, NUM_OPS)
 
#define HANDLE_DISP_FLAG(ID, NAME)   .Case("DISPFlag" #NAME, SPFlag##NAME)
 
#define HANDLE_DISP_FLAG(ID, NAME)
 
#define HANDLE_DISP_FLAG(ID, NAME)
 

Functions

static void adjustColumn (unsigned &Column)
 
static bool isCanonical (const MDString *S)
 

Variables

static const charChecksumKindName [DIFile::CSK_Last]
 

Macro Definition Documentation

◆ DEFINE_GETIMPL_LOOKUP

#define DEFINE_GETIMPL_LOOKUP (   CLASS,
  ARGS 
)
Value:
do { \
if (Storage == Uniqued) { \
if (auto *N = getUniqued(Context.pImpl->CLASS##s, \
CLASS##Info::KeyTy(UNWRAP_ARGS(ARGS)))) \
return N; \
if (!ShouldCreate) \
return nullptr; \
} else { \
assert(ShouldCreate && \
"Expected non-uniqued nodes to always be created"); \
} \
} while (false)
LLVMContext & Context
static T * getUniqued(DenseSet< T *, InfoT > &Store, const typename InfoT::KeyTy &Key)
Definition: MetadataImpl.h:22
LLVMContextImpl *const pImpl
Definition: LLVMContext.h:66
#define UNWRAP_ARGS(ARGS)
#define N

Definition at line 284 of file DebugInfoMetadata.cpp.

Referenced by llvm::DIFile::getChecksumKind(), llvm::DICompositeType::getODRTypeIfExists(), llvm::DIBasicType::getSignedness(), llvm::DIVariable::getSizeInBits(), llvm::DIExpression::isConstant(), and llvm::DISubprogram::splitFlags().

◆ DEFINE_GETIMPL_STORE

#define DEFINE_GETIMPL_STORE (   CLASS,
  ARGS,
  OPS 
)
Value:
return storeImpl(new (array_lengthof(OPS)) \
CLASS(Context, Storage, UNWRAP_ARGS(ARGS), OPS), \
Storage, Context.pImpl->CLASS##s)
LLVMContext & Context
LLVMContextImpl *const pImpl
Definition: LLVMContext.h:66
constexpr size_t array_lengthof(T(&)[N])
Find the length of an array.
Definition: STLExtras.h:1043
#define UNWRAP_ARGS(ARGS)

Definition at line 297 of file DebugInfoMetadata.cpp.

Referenced by llvm::DIFile::getChecksumKind(), llvm::DICompositeType::getODRTypeIfExists(), llvm::DIBasicType::getSignedness(), llvm::DIVariable::getSizeInBits(), llvm::DIExpression::isConstant(), and llvm::DISubprogram::splitFlags().

◆ DEFINE_GETIMPL_STORE_N

#define DEFINE_GETIMPL_STORE_N (   CLASS,
  ARGS,
  OPS,
  NUM_OPS 
)
Value:
return storeImpl(new (NUM_OPS) \
CLASS(Context, Storage, UNWRAP_ARGS(ARGS), OPS), \
Storage, Context.pImpl->CLASS##s)
LLVMContext & Context
LLVMContextImpl *const pImpl
Definition: LLVMContext.h:66
#define UNWRAP_ARGS(ARGS)

Definition at line 307 of file DebugInfoMetadata.cpp.

Referenced by llvm::DISubprogram::splitFlags().

◆ DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS

#define DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS (   CLASS,
  OPS 
)
Value:
return storeImpl(new (array_lengthof(OPS)) CLASS(Context, Storage, OPS), \
Storage, Context.pImpl->CLASS##s)
LLVMContext & Context
LLVMContextImpl *const pImpl
Definition: LLVMContext.h:66
constexpr size_t array_lengthof(T(&)[N])
Find the length of an array.
Definition: STLExtras.h:1043

Definition at line 304 of file DebugInfoMetadata.cpp.

Referenced by llvm::DIExpression::isConstant(), and llvm::DISubprogram::splitFlags().

◆ DEFINE_GETIMPL_STORE_NO_OPS

#define DEFINE_GETIMPL_STORE_NO_OPS (   CLASS,
  ARGS 
)
Value:
return storeImpl(new (0u) CLASS(Context, Storage, UNWRAP_ARGS(ARGS)), \
Storage, Context.pImpl->CLASS##s)
LLVMContext & Context
LLVMContextImpl *const pImpl
Definition: LLVMContext.h:66
#define UNWRAP_ARGS(ARGS)

Definition at line 301 of file DebugInfoMetadata.cpp.

Referenced by llvm::DIVariable::getSizeInBits().

◆ HANDLE_DI_FLAG [1/3]

#define HANDLE_DI_FLAG (   ID,
  NAME 
)    .Case("DIFlag" #NAME, Flag##NAME)

Referenced by llvm::DINode::getFlag().

◆ HANDLE_DI_FLAG [2/3]

#define HANDLE_DI_FLAG (   ID,
  NAME 
)
Value:
case Flag##NAME: \
return "DIFlag" #NAME;
Flag
These should be considered private to the implementation of the MCInstrDesc class.
Definition: MCInstrDesc.h:117

◆ HANDLE_DI_FLAG [3/3]

#define HANDLE_DI_FLAG (   ID,
  NAME 
)
Value:
if (DIFlags Bit = Flags & Flag##NAME) { \
SplitFlags.push_back(Bit); \
Flags &= ~Bit; \
}
Flag
These should be considered private to the implementation of the MCInstrDesc class.
Definition: MCInstrDesc.h:117

◆ HANDLE_DISP_FLAG [1/3]

#define HANDLE_DISP_FLAG (   ID,
  NAME 
)    .Case("DISPFlag" #NAME, SPFlag##NAME)

◆ HANDLE_DISP_FLAG [2/3]

#define HANDLE_DISP_FLAG (   ID,
  NAME 
)
Value:
case SPFlag##NAME: \
return "DISPFlag" #NAME;

◆ HANDLE_DISP_FLAG [3/3]

#define HANDLE_DISP_FLAG (   ID,
  NAME 
)
Value:
if (DISPFlags Bit = Flags & SPFlag##NAME) { \
SplitFlags.push_back(Bit); \
Flags &= ~Bit; \
}

◆ UNWRAP_ARGS

#define UNWRAP_ARGS (   ARGS)    UNWRAP_ARGS_IMPL ARGS

Definition at line 283 of file DebugInfoMetadata.cpp.

◆ UNWRAP_ARGS_IMPL

#define UNWRAP_ARGS_IMPL (   ...)    __VA_ARGS__

Definition at line 282 of file DebugInfoMetadata.cpp.

Function Documentation

◆ adjustColumn()

static void adjustColumn ( unsigned Column)
static

◆ isCanonical()

static bool isCanonical ( const MDString S)
static

Variable Documentation

◆ ChecksumKindName

const char* ChecksumKindName[DIFile::CSK_Last]
static
Initial value:
= {
"CSK_MD5",
"CSK_SHA1"
}

Definition at line 473 of file DebugInfoMetadata.cpp.