[llvm-commits] [llvm] r75581 - /llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

Evan Cheng evan.cheng at apple.com
Mon Jul 13 21:55:40 PDT 2009


Hrm. I didn't notice this before. Did it even work? What about the  
corresponding restore?

Evan

On Jul 13, 2009, at 6:16 PM, Bill Wendling wrote:

> Author: void
> Date: Mon Jul 13 20:16:18 2009
> New Revision: 75581
>
> URL: http://llvm.org/viewvc/llvm-project?rev=75581&view=rev
> Log:
> Remove hack now that Evan fixed it so that the frame pointer isn't  
> saved twice.
>
> 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=75581&r1=75580&r2=75581&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Mon Jul 13  
> 20:16:18 2009
> @@ -691,29 +691,6 @@
>     unsigned Reg = I->getReg();
>     Offset = MaxOffset - Offset + saveAreaOffset;
>
> -    // Don't output a new machine move if we're re-saving the frame
> -    // pointer. This happens when the PrologEpilogInserter has  
> inserted an extra
> -    // "PUSH" of the frame pointer -- the "emitPrologue" method  
> automatically
> -    // generates one when frame pointers are used. If we generate a  
> "machine
> -    // move" for this extra "PUSH", the linker will lose track of  
> the fact that
> -    // the frame pointer should have the value of the first "PUSH"  
> when it's
> -    // trying to unwind.
> -    //
> -    // FIXME: This looks inelegant. It's possibly correct, but it's  
> covering up
> -    //        another bug. I.e., one where we generate a prolog  
> like this:
> -    //
> -    //          pushl  %ebp
> -    //          movl   %esp, %ebp
> -    //          pushl  %ebp
> -    //          pushl  %esi
> -    //           ...
> -    //
> -    //        The immediate re-push of EBP is unnecessary. At the  
> least, it's an
> -    //        optimization bug. EBP can be used as a scratch  
> register in certain
> -    //        cases, but probably not when we have a frame pointer.
> -    if (HasFP && FramePtr == Reg)
> -      continue;
> -
>     MachineLocation CSDst(MachineLocation::VirtualFP, Offset);
>     MachineLocation CSSrc(Reg);
>     Moves.push_back(MachineMove(LabelId, CSDst, CSSrc));
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list