# REQUIRES: ppc # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o # RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 32768 # RUN: llvm-objdump -d %t | FileCheck %s # RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 4096 # RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=SMALL # RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 0 # RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=ZERO # RUN: not ld.lld %t1.o %t2.o -o /dev/null -split-stack-adjust-size -1 2>&1 | FileCheck %s -check-prefix=ERR # ERR: error: --split-stack-adjust-size: size must be >= 0 # RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t1.o # RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o # RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 32768 # RUN: llvm-objdump -d %t | FileCheck %s # RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 4096 # RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=SMALL # RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 0 # RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=ZERO .p2align 2 .global caller .type caller, @function caller: .Lcaller_gep: addis 2, 12, .TOC.-.Lcaller_gep@ha addi 2, 2, .TOC.-.Lcaller_gep@l .localentry caller, .-caller ld 0, -0x7040(13) addi 12, 1, -32 nop cmpld 7, 12, 0 blt- 7, .Lcaller_alloc_more .Lcaller_body: mflr 0 std 0, 16(1) stdu 1, -32(1) bl nss_callee addi 1, 1, 32 ld 0, 16(1) mtlr 0 blr .Lcaller_alloc_more: mflr 0 std 0, 16(1) bl __morestack ld 0, 16(1) mtlr 0 blr b .Lcaller_body .size caller, .-caller # CHECK-LABEL: caller # CHECK: ld 0, -28736(13) # CHECK-NEXT: addis 12, 1, -1 # CHECK-NEXT: addi 12, 12, 32736 # CHECK-NEXT: cmpld 7, 12, 0 # CHECK-NEXT: bt- 28, 0x10010204 # SMALL-LABEL: caller # SMALL: ld 0, -28736(13) # SMALL-NEXT: addi 12, 1, -4128 # SMALL-NEXT: nop # SMALL-NEXT: cmpld 7, 12, 0 # SMALL-NEXT: bt- 28, 0x10010204 # ZERO-LABEL: caller # ZERO: ld 0, -28736(13) # ZERO-NEXT: addi 12, 1, -32 # ZERO-NEXT: nop # ZERO-NEXT: cmpld 7, 12, 0 # ZERO-NEXT: bt- 28, 0x10010204 .p2align 2 .global main .type main, @function main: .Lmain_gep: addis 2,12,.TOC.-.Lmain_gep@ha addi 2,2,.TOC.-.Lmain_gep@l .localentry main,.-main ld 0,-0x7040(13) addi 12,1,-32 nop cmpld 7,12,0 blt- 7, .Lmain_morestack .Lmain_body: mflr 0 std 0, 16(1) stdu 1, -32(1) bl caller addi 1, 1, 32 ld 0, 16(1) mtlr 0 blr .Lmain_morestack: mflr 0 std 0, 16(1) bl __morestack ld 0, 16(1) mtlr 0 blr b .Lmain_body .size main,.-main .section .note.GNU-split-stack,"",@progbits