IR: Move MDNode operands from the back to the front
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 18 Nov 2014 01:56:14 +0000 (01:56 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 18 Nov 2014 01:56:14 +0000 (01:56 +0000)
commit023c72e64a15600a74ebe440e0c3a939204ae437
tree4fe082712106eeb62c6b32e893f0d42d3c9f1061
parent8c4418a15e6bd1bc9b0f84623c2d779bff6e0a65
IR: Move MDNode operands from the back to the front

Having the operands at the back prevents subclasses from safely adding
fields.  Move them to the front.

Instead of replicating the custom `malloc()`, `free()` and `DestroyFlag`
logic that was there before, overload `new` and `delete`.

I added calls to a new `GenericMDNode::dropAllReferences()` in
`LLVMContextImpl::~LLVMContextImpl()`.  There's a maze of callbacks
happening during teardown, and this resolves them before we enter
the destructors.

Part of PR21532.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222211 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/Metadata.h
lib/IR/LLVMContextImpl.cpp
lib/IR/Metadata.cpp