mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
IR: Move MDNode clone() methods from ValueMapper to MDNode, NFC
Now that the clone methods used by `MapMetadata()` don't do any remapping (and return a temporary), they make more sense as member functions on `MDNode` (and subclasses). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226541 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -722,6 +722,9 @@ public:
|
||||
static inline TempMDTuple getTemporary(LLVMContext &Context,
|
||||
ArrayRef<Metadata *> MDs);
|
||||
|
||||
/// \brief Create a (temporary) clone of this.
|
||||
TempMDNode clone() const;
|
||||
|
||||
/// \brief Deallocate a node created by getTemporary.
|
||||
///
|
||||
/// The node must not have any users.
|
||||
@@ -898,6 +901,11 @@ class MDTuple : public MDNode {
|
||||
static MDTuple *getImpl(LLVMContext &Context, ArrayRef<Metadata *> MDs,
|
||||
StorageType Storage, bool ShouldCreate = true);
|
||||
|
||||
TempMDTuple cloneImpl() const {
|
||||
return getTemporary(getContext(),
|
||||
SmallVector<Metadata *, 4>(op_begin(), op_end()));
|
||||
}
|
||||
|
||||
public:
|
||||
/// \brief Get the hash, if any.
|
||||
unsigned getHash() const { return SubclassData32; }
|
||||
@@ -926,6 +934,9 @@ public:
|
||||
return TempMDTuple(getImpl(Context, MDs, Temporary));
|
||||
}
|
||||
|
||||
/// \brief Return a (temporary) clone of this.
|
||||
TempMDTuple clone() const { return cloneImpl(); }
|
||||
|
||||
static bool classof(const Metadata *MD) {
|
||||
return MD->getMetadataID() == MDTupleKind;
|
||||
}
|
||||
@@ -965,6 +976,11 @@ class MDLocation : public MDNode {
|
||||
Metadata *InlinedAt, StorageType Storage,
|
||||
bool ShouldCreate = true);
|
||||
|
||||
TempMDLocation cloneImpl() const {
|
||||
return getTemporary(getContext(), getLine(), getColumn(), getScope(),
|
||||
getInlinedAt());
|
||||
}
|
||||
|
||||
// Disallow replacing operands.
|
||||
void replaceOperandWith(unsigned I, Metadata *New) LLVM_DELETED_FUNCTION;
|
||||
|
||||
@@ -991,6 +1007,9 @@ public:
|
||||
getImpl(Context, Line, Column, Scope, InlinedAt, Temporary));
|
||||
}
|
||||
|
||||
/// \brief Return a (temporary) clone of this.
|
||||
TempMDLocation clone() const { return cloneImpl(); }
|
||||
|
||||
unsigned getLine() const { return SubclassData32; }
|
||||
unsigned getColumn() const { return SubclassData16; }
|
||||
Metadata *getScope() const { return getOperand(0); }
|
||||
@@ -1054,6 +1073,12 @@ class GenericDwarfNode : public DwarfNode {
|
||||
StorageType Storage,
|
||||
bool ShouldCreate = true);
|
||||
|
||||
TempGenericDwarfNode cloneImpl() const {
|
||||
return getTemporary(
|
||||
getContext(), getTag(), getHeader(),
|
||||
SmallVector<Metadata *, 4>(dwarf_op_begin(), dwarf_op_end()));
|
||||
}
|
||||
|
||||
public:
|
||||
unsigned getHash() const { return SubclassData32; }
|
||||
|
||||
@@ -1081,6 +1106,9 @@ public:
|
||||
getImpl(Context, Tag, Header, DwarfOps, Temporary));
|
||||
}
|
||||
|
||||
/// \brief Return a (temporary) clone of this.
|
||||
TempGenericDwarfNode clone() const { return cloneImpl(); }
|
||||
|
||||
unsigned getTag() const { return SubclassData16; }
|
||||
MDString *getHeader() const { return cast_or_null<MDString>(getOperand(0)); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user