diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp --- a/llvm/lib/IR/Metadata.cpp +++ b/llvm/lib/IR/Metadata.cpp @@ -196,15 +196,21 @@ } SmallVector ReplaceableMetadataImpl::getAllArgListUsers() { - SmallVector MDUsers; + SmallVector *> MDUsersWithID; for (auto Pair : UseMap) { OwnerTy Owner = Pair.second.first; if (!Owner.is()) continue; Metadata *OwnerMD = Owner.get(); if (OwnerMD->getMetadataID() == Metadata::DIArgListKind) - MDUsers.push_back(OwnerMD); + MDUsersWithID.push_back(&UseMap[Pair.first]); } + llvm::sort(MDUsersWithID, [](auto UserA, auto UserB) { + return UserA->second < UserB->second; + }); + SmallVector MDUsers; + for (auto UserWithID : MDUsersWithID) + MDUsers.push_back(UserWithID->first.get()); return MDUsers; }