mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-24 13:18:17 +00:00
MergeValueInto is too smart: it might choose to do the merge the opposite direction.
Live interval reconstruction needs to account for this, and scour its maps to prevent dangling references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63558 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -591,7 +591,7 @@ void LiveInterval::MergeInClobberRanges(const LiveInterval &Clobbers,
|
||||
/// are found to be equivalent. This eliminates V1, replacing all
|
||||
/// LiveRanges with the V1 value number with the V2 value number. This can
|
||||
/// cause merging of V1/V2 values numbers and compaction of the value space.
|
||||
void LiveInterval::MergeValueNumberInto(VNInfo *V1, VNInfo *V2) {
|
||||
VNInfo* LiveInterval::MergeValueNumberInto(VNInfo *V1, VNInfo *V2) {
|
||||
assert(V1 != V2 && "Identical value#'s are always equivalent!");
|
||||
|
||||
// This code actually merges the (numerically) larger value number into the
|
||||
@@ -652,6 +652,8 @@ void LiveInterval::MergeValueNumberInto(VNInfo *V1, VNInfo *V2) {
|
||||
} else {
|
||||
V1->def = ~1U;
|
||||
}
|
||||
|
||||
return V2;
|
||||
}
|
||||
|
||||
void LiveInterval::Copy(const LiveInterval &RHS,
|
||||
|
||||
Reference in New Issue
Block a user