mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-27 04:18:42 +00:00
IR: Use remove_if for Instruction::dropUnknownMetadata()
Technically the operations are different -- the old logic moved items from the back into the opened-up slots, instead of the usual `remove_if()` logic of a slow and a fast iterator -- but unless a profile tells us otherwise I prefer the simpler logic here. Regardless, there shouldn't be an observable function change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235767 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
1 parent
d8c574a5a4
commit
9cd7a4b72d
1 file changed
+7
-15
+7
-15
@@ -1007,22 +1007,14 @@ void Instruction::dropUnknownMetadata(ArrayRef<unsigned> KnownIDs) {
|
||||
}
|
||||
|
||||
auto &Info = InstructionMetadata[this];
|
||||
unsigned I;
|
||||
unsigned E;
|
||||
// Walk the array and drop any metadata we don't know.
|
||||
for (I = 0, E = Info.size(); I != E;) {
|
||||
if (KnownSet.count(Info[I].first)) {
|
||||
++I;
|
||||
continue;
|
||||
}
|
||||
Info.erase(std::remove_if(
|
||||
Info.begin(), Info.end(),
|
||||
[&KnownSet](const std::pair<unsigned, TrackingMDNodeRef> &I) {
|
||||
return !KnownSet.count(I.first);
|
||||
}),
|
||||
Info.end());
|
||||
|
||||
Info[I] = std::move(Info.back());
|
||||
Info.pop_back();
|
||||
--E;
|
||||
}
|
||||
assert(E == Info.size());
|
||||
|
||||
if (E == 0) {
|
||||
if (Info.empty()) {
|
||||
// Drop our entry at the store.
|
||||
InstructionMetadata.erase(this);
|
||||
setHasMetadataHashEntry(false);
|
||||
|
||||
Reference in new issue
Block a user