mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
8ec0aee3b4
Remove `MDNodeFwdDecl` (as promised in r226481). Aside from API changes, there's no real functionality change here. `MDNode::getTemporary()` now forwards to `MDTuple::getTemporary()`, which returns a tuple with `isTemporary()` equal to true. The main point is that we can now add temporaries of other `MDNode` subclasses, needed for PR22235 (I introduced `MDNodeFwdDecl` in the first place because I didn't recognize this need, and thought they were only needed to handle forward references). A few things left out of (or highlighted by) this commit: - I've had to remove the (few) uses of `std::unique_ptr<>` to deal with temporaries, since the destructor is no longer public. `getTemporary()` should probably return the equivalent of `std::unique_ptr<T, MDNode::deleteTemporary>`. - `MDLocation::getTemporary()` doesn't exist yet (worse, it actually does exist, but does the wrong thing: `MDNode::getTemporary()` is inherited and returns an `MDTuple`). - `MDNode` now only has one subclass, `UniquableMDNode`, and the distinction between them is actually somewhat confusing. I'll fix those up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226501 91177308-0d34-0410-b5e6-96231b3b80d8
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
//===- llvm/Metadata.def - Metadata definitions -----------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Macros for running through all types of metadata.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if !(defined HANDLE_METADATA || defined HANDLE_METADATA_LEAF || \
|
|
defined HANDLE_METADATA_BRANCH || defined HANDLE_UNIQUABLE_LEAF || \
|
|
defined HANDLE_UNIQUABLE_BRANCH)
|
|
#error "Missing macro definition of HANDLE_METADATA*"
|
|
#endif
|
|
|
|
// Handler for all types of metadata.
|
|
#ifndef HANDLE_METADATA
|
|
#define HANDLE_METADATA(CLASS)
|
|
#endif
|
|
|
|
// Handler for leaf nodes in the class hierarchy.
|
|
#ifndef HANDLE_METADATA_LEAF
|
|
#define HANDLE_METADATA_LEAF(CLASS) HANDLE_METADATA(CLASS)
|
|
#endif
|
|
|
|
// Handler for non-leaf nodes in the class hierarchy.
|
|
#ifndef HANDLE_METADATA_BRANCH
|
|
#define HANDLE_METADATA_BRANCH(CLASS) HANDLE_METADATA(CLASS)
|
|
#endif
|
|
|
|
// Handler for leaf nodes under UniquableMDNode.
|
|
#ifndef HANDLE_UNIQUABLE_LEAF
|
|
#define HANDLE_UNIQUABLE_LEAF(CLASS) HANDLE_METADATA_LEAF(CLASS)
|
|
#endif
|
|
|
|
// Handler for non-leaf nodes under UniquableMDNode.
|
|
#ifndef HANDLE_UNIQUABLE_BRANCH
|
|
#define HANDLE_UNIQUABLE_BRANCH(CLASS) HANDLE_METADATA_BRANCH(CLASS)
|
|
#endif
|
|
|
|
HANDLE_METADATA_LEAF(MDString)
|
|
HANDLE_METADATA_BRANCH(ValueAsMetadata)
|
|
HANDLE_METADATA_LEAF(ConstantAsMetadata)
|
|
HANDLE_METADATA_LEAF(LocalAsMetadata)
|
|
HANDLE_METADATA_BRANCH(MDNode)
|
|
HANDLE_UNIQUABLE_BRANCH(UniquableMDNode)
|
|
HANDLE_UNIQUABLE_LEAF(MDTuple)
|
|
HANDLE_UNIQUABLE_LEAF(MDLocation)
|
|
|
|
#undef HANDLE_METADATA
|
|
#undef HANDLE_METADATA_LEAF
|
|
#undef HANDLE_METADATA_BRANCH
|
|
#undef HANDLE_UNIQUABLE_LEAF
|
|
#undef HANDLE_UNIQUABLE_BRANCH
|