[llvm-commits] [llvm] r116056 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/win64_params.ll

Andy Trick atrick at apple.com
Fri Oct 8 10:25:26 PDT 2010


I had to revert this as part of my build czar duties. I'm guessing you just need to generalize your test or make it conditional.

-Andy

On Oct 8, 2010, at 3:31 AM, Cameron Esfahani wrote:

> Author: dirty
> Date: Fri Oct  8 05:31:30 2010
> New Revision: 116056
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=116056&view=rev
> Log:
> Small patch to restore home register stack space allocation for the Win64 case.  Add test case.  This code eventually needs to be tighter, since it's always allocating it, even in leaf routines.
> 
> Added:
>    llvm/trunk/test/CodeGen/X86/win64_params.ll
> Modified:
>    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> 
> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=116056&r1=116055&r2=116056&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Oct  8 05:31:30 2010
> @@ -1701,8 +1701,12 @@
>         TotalNumXMMRegs = 0;
> 
>       if (IsWin64) {
> +        const TargetFrameInfo &TFI = *getTargetMachine().getFrameInfo();
> +        // Get to the caller-allocated home save location.  Add 8 to account
> +        // for the return address.
> +        int HomeOffset = TFI.getOffsetOfLocalArea() + 8;
>         FuncInfo->setRegSaveFrameIndex(
> -          MFI->CreateFixedObject(1, NumIntRegs * 8, false));
> +          MFI->CreateFixedObject(1, NumIntRegs * 8 + HomeOffset, false));
>         FuncInfo->setVarArgsFrameIndex(FuncInfo->getRegSaveFrameIndex());
>       } else {
>         // For X86-64, if there are vararg parameters that are passed via
> 
> Added: llvm/trunk/test/CodeGen/X86/win64_params.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/win64_params.ll?rev=116056&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/win64_params.ll (added)
> +++ llvm/trunk/test/CodeGen/X86/win64_params.ll Fri Oct  8 05:31:30 2010
> @@ -0,0 +1,11 @@
> +; RUN: llc < %s -mtriple=x86_64-pc-win32 | FileCheck %s
> +
> +; Verify that the 5th and 6th parameters are coming from the correct location
> +; on the stack.
> +define i32 @f6(i32 %p1, i32 %p2, i32 %p3, i32 %p4, i32 %p5, i32 %p6) nounwind readnone optsize {
> +entry:
> +; CHECK: movl    80(%rsp), %eax
> +; CHECK: addl    72(%rsp), %eax
> +  %add = add nsw i32 %p6, %p5
> +  ret i32 %add
> +}
> 
> 
> _______________________________________________
> 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