mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-12 03:32:10 +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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100084 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
73180c5355
commit
175edf2c78
@ -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…
x
Reference in New Issue
Block a user