mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-21 03:32:21 +00:00
The frame address on an x86-64 box needs to be offset by -8, not -4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53450 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d01bee7170
commit
71ca353ae6
@ -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,
|
||||
|
11
test/CodeGen/X86/x86-64-frameaddr.ll
Normal file
11
test/CodeGen/X86/x86-64-frameaddr.ll
Normal 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
|
Loading…
x
Reference in New Issue
Block a user