Hi Anton, Can you add an entry to README.txt about this? Please explain it a little bit because I have no idea what's going on here. :-)
Evan On Jul 24, 2007, at 2:07 PM, Anton Korobeynikov wrote: > Author: asl > Date: Tue Jul 24 16:07:39 2007 > New Revision: 40472 > > URL: http://llvm.org/viewvc/llvm-project?rev=40472&view=rev > Log: > Heal EH handling stuff by emitting correct offsets to callee-saved > registers. > > Pretty hackish, but code itself is dirty mess, so we won't make > anything worse. :) > > Modified: > llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp > > Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/ > X86RegisterInfo.cpp?rev=40472&r1=40471&r2=40472&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original) > +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Tue Jul 24 > 16:07:39 2007 > @@ -1297,9 +1297,21 @@ > > // Add callee saved registers to move list. > const std::vector<CalleeSavedInfo> &CSI = MFI- > >getCalleeSavedInfo(); > - for (unsigned I = 0, E = CSI.size(); I != E; ++I) { > + > + // FIXME: This is dirty hack. The code itself is pretty mess > right now. > + // It should be rewritten from scratch and generalized sometimes. > + > + // Determine maximum offset (minumum due to stack growth) > + int64_t MaxOffset = 0; > + for (unsigned I = 0, E = CSI.size(); I!=E; ++I) > + MaxOffset = std::min(MaxOffset, > + MFI->getObjectOffset(CSI[I].getFrameIdx > ())); > + > + // Calculate offsets > + for (unsigned I = 0, E = CSI.size(); I!=E; ++I) { > int64_t Offset = MFI->getObjectOffset(CSI[I].getFrameIdx()); > unsigned Reg = CSI[I].getReg(); > + Offset = (MaxOffset-Offset+3*stackGrowth); > MachineLocation CSDst(MachineLocation::VirtualFP, Offset); > MachineLocation CSSrc(Reg); > Moves.push_back(MachineMove(FrameLabelId, CSDst, CSSrc)); > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits