IR: Add specialized debug info metadata nodes

Add specialized debug info metadata nodes that match the `DIDescriptor`
wrappers (used by `DIBuilder`) closely.  Assembly and bitcode support to
follow soon (it'll mostly just be obvious), but this sketches in today's
schema.  This is the first big commit (well, the only *big* one aside
from the testcase changes that'll come when I move this into place) for
PR22464.

I've marked a bunch of obvious changes as `TODO`s in the source; I plan
to make those changes promptly after this hierarchy is moved underneath
`DIDescriptor`, but for now I'm aiming mostly to match the status quo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228640 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith
2015-02-10 00:52:32 +00:00
parent cd641756c3
commit 14fcfef23b
8 changed files with 3261 additions and 4 deletions

View File

@ -809,6 +809,106 @@ static void WriteGenericDebugNode(const GenericDebugNode *N,
Record.clear();
}
static void WriteMDSubrange(const MDSubrange *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDEnumerator(const MDEnumerator *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDBasicType(const MDBasicType *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDDerivedType(const MDDerivedType *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDCompositeType(const MDCompositeType *,
const ValueEnumerator &, BitstreamWriter &,
SmallVectorImpl<uint64_t> &, unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDSubroutineType(const MDSubroutineType *,
const ValueEnumerator &, BitstreamWriter &,
SmallVectorImpl<uint64_t> &, unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDFile(const MDFile *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDCompileUnit(const MDCompileUnit *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDSubprogram(const MDSubprogram *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDLexicalBlock(const MDLexicalBlock *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDLexicalBlockFile(const MDLexicalBlockFile *,
const ValueEnumerator &, BitstreamWriter &,
SmallVectorImpl<uint64_t> &, unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDNamespace(const MDNamespace *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDTemplateTypeParameter(const MDTemplateTypeParameter *,
const ValueEnumerator &,
BitstreamWriter &,
SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDTemplateValueParameter(const MDTemplateValueParameter *,
const ValueEnumerator &,
BitstreamWriter &,
SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDGlobalVariable(const MDGlobalVariable *,
const ValueEnumerator &, BitstreamWriter &,
SmallVectorImpl<uint64_t> &, unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDLocalVariable(const MDLocalVariable *,
const ValueEnumerator &, BitstreamWriter &,
SmallVectorImpl<uint64_t> &, unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDExpression(const MDExpression *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDObjCProperty(const MDObjCProperty *, const ValueEnumerator &,
BitstreamWriter &, SmallVectorImpl<uint64_t> &,
unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteMDImportedEntity(const MDImportedEntity *,
const ValueEnumerator &, BitstreamWriter &,
SmallVectorImpl<uint64_t> &, unsigned) {
llvm_unreachable("write not implemented");
}
static void WriteModuleMetadata(const Module *M,
const ValueEnumerator &VE,
BitstreamWriter &Stream) {