1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

The frame address on an x86-64 box needs to be offset by -8, not -4.

llvm-svn: 53450
This commit is contained in:
Bill Wendling 2008-07-11 07:18:52 +00:00
parent 07bfade2d4
commit 9f17caa9a9
2 changed files with 12 additions and 1 deletions

View File

@ -5348,7 +5348,7 @@ SDOperand X86TargetLowering::LowerFRAMEADDR(SDOperand Op, SelectionDAG &DAG) {
SDOperand RetAddrFI = getReturnAddressFrameIndex(DAG);
return DAG.getNode(ISD::SUB, getPointerTy(), RetAddrFI,
DAG.getIntPtrConstant(4));
DAG.getIntPtrConstant(!Subtarget->is64Bit() ? 4 : 8));
}
SDOperand X86TargetLowering::LowerFRAME_TO_ARGS_OFFSET(SDOperand Op,

View File

@ -0,0 +1,11 @@
; RUN: llvm-as < %s | llc -march=x86-64 | grep {leaq -8(%rsp), %rax}
@llvm.noinline = appending global [1 x i8*] [ i8* bitcast (i64* ()* @stack_end_address to i8*) ], section "llvm.metadata"
define internal i64* @stack_end_address() nounwind {
entry:
tail call i8* @llvm.frameaddress( i32 0 )
bitcast i8* %0 to i64*
ret i64* %1
}
declare i8* @llvm.frameaddress(i32) nounwind readnone