[llvm] r185781 - Revert "Reuse %rax after calling __chkstk on win64"

Michael Gottesman mgottesman at apple.com
Mon Jul 8 11:34:22 PDT 2013


Checkout utils/git-svn/git-svnrevert. It will create the same sort of message, but will look up the svn commit revision and place it in instead of the git hash.

Michael

On Jul 8, 2013, at 11:29 AM, Eric Christopher <echristo at gmail.com> wrote:

> On Sun, Jul 7, 2013 at 6:30 PM, Nico Rieck <nico.rieck at gmail.com> wrote:
>> Author: nrieck
>> Date: Sun Jul  7 20:30:57 2013
>> New Revision: 185781
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=185781&view=rev
>> Log:
>> Revert "Reuse %rax after calling __chkstk on win64"
>> 
>> This reverts commit 01f8d579f7672872324208ac5bc4ac311e81b22e.
>> 
> 
> Try to use svn revision numbers when you revert to keep the history clear.
> 
> Thanks!
> 
> -eric
> 
>> Modified:
>>    llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
>>    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>>    llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll
>> 
>> Modified: llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FrameLowering.cpp?rev=185781&r1=185780&r2=185781&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86FrameLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86FrameLowering.cpp Sun Jul  7 20:30:57 2013
>> @@ -914,14 +914,11 @@ void X86FrameLowering::emitPrologue(Mach
>>       .addReg(X86::EFLAGS, RegState::Define | RegState::Implicit)
>>       .setMIFlag(MachineInstr::FrameSetup);
>> 
>> -    // MSVC x64's __chkstk does not adjust %rsp itself.
>> -    // It also does not clobber %rax so we can reuse it when adjusting %rsp.
>> -    if (isSPUpdateNeeded) {
>> -      BuildMI(MBB, MBBI, DL, TII.get(X86::SUB64rr), StackPtr)
>> -        .addReg(StackPtr)
>> -        .addReg(X86::RAX)
>> -        .setMIFlag(MachineInstr::FrameSetup);
>> -    }
>> +    // MSVC x64's __chkstk needs to adjust %rsp.
>> +    // FIXME: %rax preserves the offset and should be available.
>> +    if (isSPUpdateNeeded)
>> +      emitSPUpdate(MBB, MBBI, StackPtr, -(int64_t)NumBytes, Is64Bit, IsLP64,
>> +                   UseLEA, TII, *RegInfo);
>> 
>>     if (isEAXAlive) {
>>         // Restore EAX
>> 
>> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=185781&r1=185780&r2=185781&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sun Jul  7 20:30:57 2013
>> @@ -14434,11 +14434,12 @@ X86TargetLowering::EmitLoweredWinAlloca(
>>     } else {
>>       // __chkstk(MSVCRT): does not update stack pointer.
>>       // Clobbers R10, R11 and EFLAGS.
>> +      // FIXME: RAX(allocated size) might be reused and not killed.
>>       BuildMI(*BB, MI, DL, TII->get(X86::W64ALLOCA))
>>         .addExternalSymbol("__chkstk")
>>         .addReg(X86::RAX, RegState::Implicit)
>>         .addReg(X86::EFLAGS, RegState::Define | RegState::Implicit);
>> -      // RAX has the offset to be subtracted from RSP.
>> +      // RAX has the offset to subtracted from RSP.
>>       BuildMI(*BB, MI, DL, TII->get(X86::SUB64rr), X86::RSP)
>>         .addReg(X86::RSP)
>>         .addReg(X86::RAX);
>> 
>> Modified: llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll?rev=185781&r1=185780&r2=185781&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll Sun Jul  7 20:30:57 2013
>> @@ -19,7 +19,7 @@ entry:
>> ; W64: movq  %rsp, %rbp
>> ; W64:       $4096, %rax
>> ; W64: callq __chkstk
>> -; W64: subq  %rax, %rsp
>> +; W64: subq  $4096, %rsp
>> 
>> ; Freestanding
>> ; EFI: movq  %rsp, %rbp
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130708/9f0c3238/attachment.html>


More information about the llvm-commits mailing list