mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-17 18:24:34 +00:00
Another extract_subreg coalescing bug.
e.g. vr1024<2> extract_subreg vr1025, 2 If vr1024 do not have the same register class as vr1025, it's not safe to coalesce this away. For example, vr1024 might be a GPR32 while vr1025 might be a GPR64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50385 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -942,9 +942,11 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {
|
||||
unsigned OldSubIdx = isExtSubReg ? CopyMI->getOperand(0).getSubReg()
|
||||
: CopyMI->getOperand(2).getSubReg();
|
||||
if (OldSubIdx) {
|
||||
if (OldSubIdx == SubIdx)
|
||||
if (OldSubIdx == SubIdx && !differingRegisterClasses(SrcReg, DstReg))
|
||||
// r1024<2> = EXTRACT_SUBREG r1025, 2. Then r1024 has already been
|
||||
// coalesced to a larger register so the subreg indices cancel out.
|
||||
// Also check if the other larger register is of the same register
|
||||
// class as the would be resulting register.
|
||||
SubIdx = 0;
|
||||
else {
|
||||
DOUT << "\t Sub-register indices mismatch.\n";
|
||||
|
Reference in New Issue
Block a user