[llvm-commits] [patch] Remove the TargetRegisterClass from CalleeSavedInfo

Jakob Stoklund Olesen stoklund at 2pi.dk
Wed Jun 2 10:22:18 PDT 2010


On Jun 2, 2010, at 9:33 AM, Rafael Espindola wrote:

> One more cleanup. If a register is callee saved, it always saves the
> full register, so we don't need the class to be present in
> CalleeSavedInfo.


@@ -251,7 +251,9 @@ void MipsRegisterInfo::adjustMipsStackFrame(MachineFunction &MF) const
   StackOffset = ((StackOffset+StackAlign-1)/StackAlign*StackAlign);
 
   for (unsigned i = 0, e = CSI.size(); i != e ; ++i) {
-    if (CSI[i].getRegClass() != Mips::CPURegsRegisterClass)
+    unsigned Reg = CSI[i].getReg();
+    const TargetRegisterClass *RC = getMinimalPhysRegClass(Reg);
+    if (RC != Mips::CPURegsRegisterClass)
       break;
     MFI->setObjectOffset(CSI[i].getFrameIdx(), StackOffset);
     TopCPUSavedRegOff = StackOffset;

This kind of thing is usually not what you want. Please do as you did for ARM: Mips::CPURegsRegisterClass->contains(Reg)

Same issue with the PPC and SystemZ changes. As a general rule it is a mistake to test register class identity. You almost always want "is register in", or "is a subclass of" comparisons.

/jakob





More information about the llvm-commits mailing list