mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-24 04:45:00 +00:00
Recommit 116056, now with the missing file...
llvm-svn: 116083
This commit is contained in:
parent
8833658eb0
commit
664317d6cd
@ -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
|
||||
|
@ -121,7 +121,8 @@ X86TargetMachine::X86TargetMachine(const Target &T, const std::string &TT,
|
||||
Subtarget(TT, FS, is64Bit),
|
||||
FrameInfo(TargetFrameInfo::StackGrowsDown,
|
||||
Subtarget.getStackAlignment(),
|
||||
Subtarget.is64Bit() ? -8 : -4),
|
||||
(Subtarget.isTargetWin64() ? -40 :
|
||||
(Subtarget.is64Bit() ? -8 : -4))),
|
||||
ELFWriterInfo(is64Bit, true) {
|
||||
DefRelocModel = getRelocationModel();
|
||||
|
||||
|
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