mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
PR3934: Fix a bogus two-address pass assertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68979 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -628,10 +628,10 @@ void TwoAddressInstructionPass::ProcessCopy(MachineInstr *MI,
|
||||
if (IsDstPhys && !IsSrcPhys)
|
||||
DstRegMap.insert(std::make_pair(SrcReg, DstReg));
|
||||
else if (!IsDstPhys && IsSrcPhys) {
|
||||
bool isNew =
|
||||
SrcRegMap.insert(std::make_pair(DstReg, SrcReg)).second;
|
||||
isNew = isNew; // Silence compiler warning.
|
||||
assert(isNew && "Can't map to two src physical registers!");
|
||||
bool isNew = SrcRegMap.insert(std::make_pair(DstReg, SrcReg)).second;
|
||||
if (!isNew)
|
||||
assert(SrcRegMap[DstReg] == SrcReg &&
|
||||
"Can't map to two src physical registers!");
|
||||
|
||||
SmallVector<unsigned, 4> VirtRegPairs;
|
||||
bool isCopy = false;
|
||||
@ -653,8 +653,9 @@ void TwoAddressInstructionPass::ProcessCopy(MachineInstr *MI,
|
||||
break;
|
||||
}
|
||||
bool isNew = SrcRegMap.insert(std::make_pair(NewReg, DstReg)).second;
|
||||
isNew = isNew; // Silence compiler warning.
|
||||
assert(isNew && "Can't map to two src physical registers!");
|
||||
if (!isNew)
|
||||
assert(SrcRegMap[NewReg] == DstReg &&
|
||||
"Can't map to two src physical registers!");
|
||||
VirtRegPairs.push_back(NewReg);
|
||||
DstReg = NewReg;
|
||||
}
|
||||
@ -666,8 +667,9 @@ void TwoAddressInstructionPass::ProcessCopy(MachineInstr *MI,
|
||||
unsigned FromReg = VirtRegPairs.back();
|
||||
VirtRegPairs.pop_back();
|
||||
bool isNew = DstRegMap.insert(std::make_pair(FromReg, ToReg)).second;
|
||||
isNew = isNew; // Silence compiler warning.
|
||||
assert(isNew && "Can't map to two dst physical registers!");
|
||||
if (!isNew)
|
||||
assert(DstRegMap[FromReg] == ToReg &&
|
||||
"Can't map to two dst physical registers!");
|
||||
ToReg = FromReg;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user