mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
Reapply "[DebugInfo] Prevent non-determinism when updating DIArgList users of a value"
Reapply the commit which previously caused build failures due to the mismatched template arguments between the return type and the returned SmallVector. This reverts commit e8991caea8690ec2d17b0b7e1c29bf0da6609076.
This commit is contained in:
parent
abe1b0a2fe
commit
84970078e4
@ -304,7 +304,7 @@ public:
|
|||||||
void replaceAllUsesWith(Metadata *MD);
|
void replaceAllUsesWith(Metadata *MD);
|
||||||
|
|
||||||
/// Returns the list of all DIArgList users of this.
|
/// Returns the list of all DIArgList users of this.
|
||||||
SmallVector<Metadata *, 4> getAllArgListUsers();
|
SmallVector<Metadata *> getAllArgListUsers();
|
||||||
|
|
||||||
/// Resolve all uses of this.
|
/// Resolve all uses of this.
|
||||||
///
|
///
|
||||||
@ -385,7 +385,7 @@ public:
|
|||||||
Type *getType() const { return V->getType(); }
|
Type *getType() const { return V->getType(); }
|
||||||
LLVMContext &getContext() const { return V->getContext(); }
|
LLVMContext &getContext() const { return V->getContext(); }
|
||||||
|
|
||||||
SmallVector<Metadata *, 4> getAllArgListUsers() {
|
SmallVector<Metadata *> getAllArgListUsers() {
|
||||||
return ReplaceableMetadataImpl::getAllArgListUsers();
|
return ReplaceableMetadataImpl::getAllArgListUsers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,16 +195,22 @@ bool MetadataTracking::isReplaceable(const Metadata &MD) {
|
|||||||
return ReplaceableMetadataImpl::isReplaceable(MD);
|
return ReplaceableMetadataImpl::isReplaceable(MD);
|
||||||
}
|
}
|
||||||
|
|
||||||
SmallVector<Metadata *, 4> ReplaceableMetadataImpl::getAllArgListUsers() {
|
SmallVector<Metadata *> ReplaceableMetadataImpl::getAllArgListUsers() {
|
||||||
SmallVector<Metadata *, 4> MDUsers;
|
SmallVector<std::pair<OwnerTy, uint64_t> *> MDUsersWithID;
|
||||||
for (auto Pair : UseMap) {
|
for (auto Pair : UseMap) {
|
||||||
OwnerTy Owner = Pair.second.first;
|
OwnerTy Owner = Pair.second.first;
|
||||||
if (!Owner.is<Metadata *>())
|
if (!Owner.is<Metadata *>())
|
||||||
continue;
|
continue;
|
||||||
Metadata *OwnerMD = Owner.get<Metadata *>();
|
Metadata *OwnerMD = Owner.get<Metadata *>();
|
||||||
if (OwnerMD->getMetadataID() == Metadata::DIArgListKind)
|
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<Metadata *> MDUsers;
|
||||||
|
for (auto UserWithID : MDUsersWithID)
|
||||||
|
MDUsers.push_back(UserWithID->first.get<Metadata *>());
|
||||||
return MDUsers;
|
return MDUsers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user