mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 15:17:25 +00:00
IR: Split GenericMDNode into MDTuple and UniquableMDNode
Split `GenericMDNode` into two classes (with more descriptive names).
- `UniquableMDNode` will be a common subclass for `MDNode`s that are
sometimes uniqued like constants, and sometimes 'distinct'.
This class gets the (short-lived) RAUW support and related API.
- `MDTuple` is the basic tuple that has always been returned by
`MDNode::get()`. This is as opposed to more specific nodes to be
added soon, which have additional fields, custom assembly syntax,
and extra semantics.
This class gets the hash-related logic, since other sublcasses of
`UniquableMDNode` may need to hash based on other fields.
To keep this diff from getting too big, I've added casts to `MDTuple`
that won't really scale as new subclasses of `UniquableMDNode` are
added, but I'll clean those up incrementally.
(No functionality change intended.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225682 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -169,8 +169,8 @@ bool LLParser::ValidateEndOfModule() {
|
||||
|
||||
// Resolve metadata cycles.
|
||||
for (auto &N : NumberedMetadata)
|
||||
if (auto *G = cast_or_null<GenericMDNode>(N))
|
||||
G->resolveCycles();
|
||||
if (auto *U = cast_or_null<UniquableMDNode>(N))
|
||||
U->resolveCycles();
|
||||
|
||||
// Look for intrinsic functions and CallInst that need to be upgraded
|
||||
for (Module::iterator FI = M->begin(), FE = M->end(); FI != FE; )
|
||||
|
||||
Reference in New Issue
Block a user