mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116056 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7d24705f65
commit
d7b8d91d4a
@ -1701,8 +1701,12 @@ X86TargetLowering::LowerFormalArguments(SDValue Chain,
|
||||
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
|
||||
|
11
test/CodeGen/X86/win64_params.ll
Normal file
11
test/CodeGen/X86/win64_params.ll
Normal file
@ -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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user