mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-28 22:43:29 +00:00
fix a bug in DebugRecVH::deleted/allUsesReplacedWith. If an
entry in the Scope+InlinedAt drops to a non-canonical form, we need to reset the idx member of both VH's to 0. llvm-svn: 100084
This commit is contained in:
parent
7de674345c
commit
ff4e2688f5
@ -220,9 +220,10 @@ void DebugRecVH::deleted() {
|
||||
"Mapping out of date");
|
||||
Ctx->ScopeInlinedAtIdx.erase(std::make_pair(OldScope, OldInlinedAt));
|
||||
|
||||
// Reset this VH to null.
|
||||
// Reset this VH to null. Drop both 'Idx' values to null to indicate that
|
||||
// we're in non-canonical form now.
|
||||
setValPtr(0);
|
||||
Idx = 0;
|
||||
Entry.first.Idx = Entry.second.Idx = 0;
|
||||
}
|
||||
|
||||
void DebugRecVH::allUsesReplacedWith(Value *NewVa) {
|
||||
@ -280,6 +281,8 @@ void DebugRecVH::allUsesReplacedWith(Value *NewVa) {
|
||||
Entry.second.get(), Idx);
|
||||
// If NewVal already has an entry, this becomes a non-canonical reference,
|
||||
// just drop Idx to 0 to signify this.
|
||||
if (NewIdx != Idx)
|
||||
Idx = 0;
|
||||
if (NewIdx != Idx) {
|
||||
std::pair<DebugRecVH, DebugRecVH> &Entry=Ctx->ScopeInlinedAtRecords[-Idx-1];
|
||||
Entry.first.Idx = Entry.second.Idx = 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user