LLVM 19.0.0git
Namespaces | Macros | Functions | Variables
DebugInfoMetadata.cpp File Reference
#include "llvm/IR/DebugInfoMetadata.h"
#include "LLVMContextImpl.h"
#include "MetadataImpl.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/IR/DebugProgramInstruction.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include <numeric>
#include <optional>
#include "llvm/IR/DebugInfoFlags.def"

Go to the source code of this file.

Namespaces

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

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

cl::opt< boolllvm::EnableFSDiscriminator ("enable-fs-discriminator", cl::Hidden, cl::desc("Enable adding flow sensitive discriminators"))
 
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)
#define UNWRAP_ARGS(ARGS)
LLVMContext & Context
LLVMContextImpl *const pImpl
Definition: LLVMContext.h:69
static T * getUniqued(DenseSet< T *, InfoT > &Store, const typename InfoT::KeyTy &Key)
Definition: MetadataImpl.h:22
#define N

Definition at line 422 of file DebugInfoMetadata.cpp.

◆ DEFINE_GETIMPL_STORE

#define DEFINE_GETIMPL_STORE (   CLASS,
  ARGS,
  OPS 
)
Value:
return storeImpl(new (std::size(OPS), Storage) \
CLASS(Context, Storage, UNWRAP_ARGS(ARGS), OPS), \
Storage, Context.pImpl->CLASS##s)

Definition at line 435 of file DebugInfoMetadata.cpp.

◆ DEFINE_GETIMPL_STORE_N

#define DEFINE_GETIMPL_STORE_N (   CLASS,
  ARGS,
  OPS,
  NUM_OPS 
)
Value:
return storeImpl(new (NUM_OPS, Storage) \
CLASS(Context, Storage, UNWRAP_ARGS(ARGS), OPS), \
Storage, Context.pImpl->CLASS##s)

Definition at line 446 of file DebugInfoMetadata.cpp.

◆ DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS

#define DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS (   CLASS,
  OPS 
)
Value:
return storeImpl(new (std::size(OPS), Storage) CLASS(Context, Storage, OPS), \
Storage, Context.pImpl->CLASS##s)

Definition at line 443 of file DebugInfoMetadata.cpp.

◆ DEFINE_GETIMPL_STORE_NO_OPS

#define DEFINE_GETIMPL_STORE_NO_OPS (   CLASS,
  ARGS 
)
Value:
return storeImpl(new (0u, Storage) \
CLASS(Context, Storage, UNWRAP_ARGS(ARGS)), \
Storage, Context.pImpl->CLASS##s)

Definition at line 439 of file DebugInfoMetadata.cpp.

◆ HANDLE_DI_FLAG [1/3]

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

◆ HANDLE_DI_FLAG [2/3]

#define HANDLE_DI_FLAG (   ID,
  NAME 
)
Value:
case Flag##NAME: \
return "DIFlag" #NAME;

◆ HANDLE_DI_FLAG [3/3]

#define HANDLE_DI_FLAG (   ID,
  NAME 
)
Value:
if (DIFlags Bit = Flags & Flag##NAME) { \
SplitFlags.push_back(Bit); \
Flags &= ~Bit; \
}

◆ 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 421 of file DebugInfoMetadata.cpp.

◆ UNWRAP_ARGS_IMPL

#define UNWRAP_ARGS_IMPL (   ...)    __VA_ARGS__

Definition at line 420 of file DebugInfoMetadata.cpp.

Function Documentation

◆ adjustColumn()

static void adjustColumn ( unsigned Column)
static

Definition at line 74 of file DebugInfoMetadata.cpp.

◆ isCanonical()

static bool isCanonical ( const MDString S)
static

Definition at line 386 of file DebugInfoMetadata.cpp.

References llvm::StringRef::empty(), and llvm::MDString::getString().

Variable Documentation

◆ ChecksumKindName

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

Definition at line 890 of file DebugInfoMetadata.cpp.