20 if (
auto *
N = dyn_cast<MDNode>(&MD))
21 return N->Context.getReplaceableUses();
26 assert(Ref &&
"Expected live reference");
27 assert((Owner || *static_cast<Metadata **>(Ref) == &MD) &&
28 "Reference without owner must be direct");
29 if (
auto *R = ReplaceableMetadataImpl::get(MD)) {
30 R->addRef(Ref, Owner);
37 assert(Ref &&
"Expected live reference");
38 if (
auto *R = ReplaceableMetadataImpl::get(MD))
43 assert(Ref &&
"Expected live reference");
44 assert(New &&
"Expected live reference");
45 assert(Ref != New &&
"Expected change");
46 if (
auto *R = ReplaceableMetadataImpl::get(MD)) {
47 R->moveRef(Ref, New, MD);
54 return ReplaceableMetadataImpl::get(const_cast<Metadata &>(MD));
LLVM_ATTRIBUTE_UNUSED_RESULT std::enable_if< !is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)