diff --git a/llvm/lib/CodeGen/RegisterCoalescer.cpp b/llvm/lib/CodeGen/RegisterCoalescer.cpp index f0b597e21f6fd..45d149a38cf0e 100644 --- a/llvm/lib/CodeGen/RegisterCoalescer.cpp +++ b/llvm/lib/CodeGen/RegisterCoalescer.cpp @@ -478,6 +478,7 @@ bool CoalescerPair::setRegisters(const MachineInstr *MI) { } const MachineRegisterInfo &MRI = MI->getMF()->getRegInfo(); + const TargetRegisterClass *SrcRC = MRI.getRegClass(Src); if (Dst.isPhysical()) { // Eliminate DstSub on a physreg. @@ -490,15 +491,14 @@ bool CoalescerPair::setRegisters(const MachineInstr *MI) { // Eliminate SrcSub by picking a corresponding Dst superregister. if (SrcSub) { - Dst = TRI.getMatchingSuperReg(Dst, SrcSub, MRI.getRegClass(Src)); + Dst = TRI.getMatchingSuperReg(Dst, SrcSub, SrcRC); if (!Dst) return false; - } else if (!MRI.getRegClass(Src)->contains(Dst)) { + } else if (!SrcRC->contains(Dst)) { return false; } } else { // Both registers are virtual. - const TargetRegisterClass *SrcRC = MRI.getRegClass(Src); const TargetRegisterClass *DstRC = MRI.getRegClass(Dst); // Both registers have subreg indices.