Lines Matching refs:Metadata

1 //===- Metadata.cpp - Implement Metadata classes --------------------------===//
10 // This file implements the Metadata classes.
14 #include "llvm/IR/Metadata.h"
32 MetadataAsValue::MetadataAsValue(Type *Ty, Metadata *MD)
53 static Metadata *canonicalizeMetadataForValue(LLVMContext &Context,
54 Metadata *MD) {
75 MetadataAsValue *MetadataAsValue::get(LLVMContext &Context, Metadata *MD) {
84 Metadata *MD) {
90 void MetadataAsValue::handleChangedMetadata(Metadata *MD) {
123 bool MetadataTracking::track(void *Ref, Metadata &MD, OwnerTy Owner) {
125 assert((Owner || *static_cast<Metadata **>(Ref) == &MD) &&
134 void MetadataTracking::untrack(void *Ref, Metadata &MD) {
140 bool MetadataTracking::retrack(void *Ref, Metadata &MD, void *New) {
151 bool MetadataTracking::isReplaceable(const Metadata &MD) {
152 return ReplaceableMetadataImpl::get(const_cast<Metadata &>(MD));
173 const Metadata &MD) {
184 assert((OwnerAndIndex.first || *static_cast<Metadata **>(Ref) == &MD) &&
186 assert((OwnerAndIndex.first || *static_cast<Metadata **>(New) == &MD) &&
190 void ReplaceableMetadataImpl::replaceAllUsesWith(Metadata *MD) {
194 "Attempted to replace Metadata marked for no replacement");
214 Metadata *&Ref = *static_cast<Metadata **>(Pair.first);
228 // There's a Metadata owner -- dispatch.
229 Metadata *OwnerMD = Owner.get<Metadata *>();
232 case Metadata::CLASS##Kind: \
235 #include "llvm/IR/Metadata.def"
267 auto *OwnerMD = dyn_cast<MDNode>(Owner.get<Metadata *>());
276 ReplaceableMetadataImpl *ReplaceableMetadataImpl::get(Metadata &MD) {
430 #include "llvm/IR/Metadata.def"
456 ArrayRef<Metadata *> Ops1, ArrayRef<Metadata *> Ops2)
457 : Metadata(ID, Storage), NumOperands(Ops1.size() + Ops2.size()),
460 for (Metadata *MD : Ops1)
462 for (Metadata *MD : Ops2)
484 #include "llvm/IR/Metadata.def"
488 static bool isOperandUnresolved(Metadata *Op) {
542 void MDNode::resolveAfterOperandChange(Metadata *Old, Metadata *New) {
583 for (Metadata *MD : N->operands())
598 #include "llvm/IR/Metadata.def"
640 void MDNode::handleChangedOperand(void *Ref, Metadata *New) {
653 Metadata *Old = getOperand(Op);
697 #include "llvm/IR/Metadata.def"
737 #include "llvm/IR/Metadata.def"
749 #include "llvm/IR/Metadata.def"
753 MDTuple *MDTuple::getImpl(LLVMContext &Context, ArrayRef<Metadata *> MDs,
791 #include "llvm/IR/Metadata.def"
797 void MDNode::replaceOperandWith(unsigned I, Metadata *New) {
809 void MDNode::setOperand(unsigned I, Metadata *New) {
821 ArrayRef<Metadata *> Ops) {
840 SmallVector<Metadata *, 4> MDs;
854 SmallVector<Metadata *, 4> MDs;
855 for (Metadata *MD : A->operands())
868 SmallVector<Metadata *, 4> MDs(B->op_begin(), B->op_end());
869 for (Metadata *MD : A->operands())
991 SmallVector<Metadata *, 4> MDs;
1056 // Instruction Metadata method implementations.