| 132 | } |
| 133 | |
| 134 | void PrintUsers(llvm::MDNode* md) |
| 135 | { |
| 136 | /*Beefy::debug_ostream os; |
| 137 | |
| 138 | //auto val = llvm::ReplaceableMetadataImpl::get(*md); |
| 139 | |
| 140 | auto val = md->Context.getReplaceableUses(); |
| 141 | |
| 142 | if (val == NULL) |
| 143 | { |
| 144 | os << "Not replaceable\n"; |
| 145 | } |
| 146 | else |
| 147 | { |
| 148 | //md->print(os); |
| 149 | |
| 150 | typedef std::pair<void *, std::pair<llvm::MetadataTracking::OwnerTy, uint64_t>> UseTy; |
| 151 | llvm::SmallVector<UseTy, 8> Uses(val->UseMap.begin(), val->UseMap.end()); |
| 152 | std::sort(Uses.begin(), Uses.end(), [](const UseTy &L, const UseTy &R) { |
| 153 | return L.second.second < R.second.second; |
| 154 | }); |
| 155 | for (const auto &Pair : Uses) |
| 156 | { |
| 157 | auto Owner = Pair.second.first; |
| 158 | os << Beefy::StrFormat(" %d %p %d\n", Pair.second.first.isNull(), Pair.first, Pair.second.second, Pair).c_str(); |
| 159 | } |
| 160 | |
| 161 | os << "\n"; |
| 162 | } |
| 163 | os.flush();*/ |
| 164 | } |
| 165 | |
| 166 | void ptbf(Beefy::BfType* bfType) |
| 167 | { |