Revert r109652, and remove the offending assert in loadRegFromStackSlot instead.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 29 Jul 2010 17:42:27 +0000 (17:42 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 29 Jul 2010 17:42:27 +0000 (17:42 +0000)
We do sometimes load from a too small stack slot when dealing with x86 arguments
(varargs and smaller-than-32-bit args). It looks like we know what we are doing
in those cases, so I am going to remove the assert instead of artifically
enlarging stack slot sizes.

The assert in storeRegToStackSlot stays in. We don't want to write beyond the
bounds of a stack slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109764 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrInfo.cpp

index 81e9750a408b1e25caa98e3a80e956e5398607b8..c0f5a403b9f7281cdd9f6cacfbc311f1ca8c871a 100644 (file)
@@ -1701,10 +1701,7 @@ X86TargetLowering::LowerFormalArguments(SDValue Chain,
   if (isVarArg) {
     if (Is64Bit || (CallConv != CallingConv::X86_FastCall &&
                     CallConv != CallingConv::X86_ThisCall)) {
-      // The fixed varargs object is created large enough that we can load and
-      // store any register in it.
-      FuncInfo->setVarArgsFrameIndex(MFI->CreateFixedObject(32, StackSize,
-                                                            true));
+      FuncInfo->setVarArgsFrameIndex(MFI->CreateFixedObject(1, StackSize,true));
     }
     if (Is64Bit) {
       unsigned TotalNumIntRegs = 0, TotalNumXMMRegs = 0;
index c4613a28ef4f69b356c56e5138197422a8302064..98323fa7b07f11514aadaa1e13df6d536055d8a0 100644 (file)
@@ -2033,8 +2033,6 @@ void X86InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
                                         const TargetRegisterClass *RC,
                                         const TargetRegisterInfo *TRI) const {
   const MachineFunction &MF = *MBB.getParent();
-  assert(MF.getFrameInfo()->getObjectSize(FrameIdx) >= RC->getSize() &&
-         "Stack slot too small for load");
   bool isAligned = (RI.getStackAlignment() >= 16) || RI.canRealignStack(MF);
   unsigned Opc = getLoadRegOpcode(DestReg, RC, isAligned, TM);
   DebugLoc DL = MBB.findDebugLoc(MI);