mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-24 08:18:33 +00:00
Fix a merge bug in preRAsched for handling physreg aliases.
I've been sitting on this long enough trying to find a test case. I think the fix should go in now, but I'll keep working on the test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132701 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1008,14 +1008,16 @@ static void CheckForLiveRegDef(SUnit *SU, unsigned Reg,
|
|||||||
for (const unsigned *AliasI = TRI->getOverlaps(Reg); *AliasI; ++AliasI) {
|
for (const unsigned *AliasI = TRI->getOverlaps(Reg); *AliasI; ++AliasI) {
|
||||||
|
|
||||||
// Check if Ref is live.
|
// Check if Ref is live.
|
||||||
if (!LiveRegDefs[Reg]) continue;
|
if (!LiveRegDefs[*AliasI]) continue;
|
||||||
|
|
||||||
// Allow multiple uses of the same def.
|
// Allow multiple uses of the same def.
|
||||||
if (LiveRegDefs[Reg] == SU) continue;
|
if (LiveRegDefs[*AliasI] == SU) continue;
|
||||||
|
|
||||||
// Add Reg to the set of interfering live regs.
|
// Add Reg to the set of interfering live regs.
|
||||||
if (RegAdded.insert(Reg))
|
if (RegAdded.insert(*AliasI)) {
|
||||||
LRegs.push_back(Reg);
|
assert(*AliasI == Reg && "alias clobber"); //!!!
|
||||||
|
LRegs.push_back(*AliasI);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user