mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 06:30:16 +00:00
Use unsigned comparison in segmented stack prologue.
This is a comparison of two addresses, and GCC does the comparison unsigned. Patch by Brian Anderson. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147954 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bcb55ce386
commit
313c703831
@ -1405,7 +1405,7 @@ X86FrameLowering::adjustForSegmentedStacks(MachineFunction &MF) const {
|
||||
|
||||
// This jump is taken if SP >= (Stacklet Limit + Stack Space required).
|
||||
// It jumps to normal execution of the function body.
|
||||
BuildMI(checkMBB, DL, TII.get(X86::JG_4)).addMBB(&prologueMBB);
|
||||
BuildMI(checkMBB, DL, TII.get(X86::JA_4)).addMBB(&prologueMBB);
|
||||
|
||||
// On 32 bit we first push the arguments size and then the frame size. On 64
|
||||
// bit, we pass the stack frame size in r10 and the argument size in r11.
|
||||
|
@ -25,6 +25,7 @@ false:
|
||||
; X32: test_basic:
|
||||
|
||||
; X32: cmpl %gs:48, %esp
|
||||
; X32-NEXT: ja .LBB0_2
|
||||
|
||||
; X32: pushl $4
|
||||
; X32-NEXT: pushl $12
|
||||
@ -45,6 +46,7 @@ false:
|
||||
; X64: test_basic:
|
||||
|
||||
; X64: cmpq %fs:112, %rsp
|
||||
; X64-NEXT: ja .LBB0_2
|
||||
|
||||
; X64: movabsq $24, %r10
|
||||
; X64-NEXT: movabsq $0, %r11
|
||||
@ -69,6 +71,7 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) {
|
||||
ret i32 %result
|
||||
|
||||
; X32: cmpl %gs:48, %esp
|
||||
; X32-NEXT: ja .LBB1_2
|
||||
|
||||
; X32: pushl $4
|
||||
; X32-NEXT: pushl $0
|
||||
@ -76,6 +79,7 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) {
|
||||
; X32-NEXT: ret
|
||||
|
||||
; X64: cmpq %fs:112, %rsp
|
||||
; X64-NEXT: ja .LBB1_2
|
||||
|
||||
; X64: movq %r10, %rax
|
||||
; X64-NEXT: movabsq $0, %r10
|
||||
@ -93,6 +97,7 @@ define void @test_large() {
|
||||
|
||||
; X32: leal -40012(%esp), %ecx
|
||||
; X32-NEXT: cmpl %gs:48, %ecx
|
||||
; X32-NEXT: ja .LBB2_2
|
||||
|
||||
; X32: pushl $0
|
||||
; X32-NEXT: pushl $40012
|
||||
@ -101,6 +106,7 @@ define void @test_large() {
|
||||
|
||||
; X64: leaq -40008(%rsp), %r11
|
||||
; X64-NEXT: cmpq %fs:112, %r11
|
||||
; X64-NEXT: ja .LBB2_2
|
||||
|
||||
; X64: movabsq $40008, %r10
|
||||
; X64-NEXT: movabsq $0, %r11
|
||||
|
Loading…
x
Reference in New Issue
Block a user