65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| # 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: not ld.lld %t1.o %t2.o -o /dev/null --defsym __morestack=0x10010000 2>&1 | \
 | |
| # RUN: FileCheck -check-prefix=OVERFLOW %s
 | |
| # RUN: not ld.lld %t1.o %t2.o -o /dev/null --defsym __morestack=0x10010000 \
 | |
| # RUN: -split-stack-adjust-size 4097 2>&1 | FileCheck -check-prefix=OVERFLOW %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
 | |
| 
 | |
| # 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: not ld.lld %t1.o %t2.o -o /dev/null --defsym __morestack=0x10010000 2>&1 | \
 | |
| # RUN: FileCheck -check-prefix=OVERFLOW %s
 | |
| # RUN: not ld.lld %t1.o %t2.o -o /dev/null --defsym __morestack=0x10010000 \
 | |
| # RUN: -split-stack-adjust-size 4097 2>&1 | FileCheck -check-prefix=OVERFLOW %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
 | |
| 
 | |
| # OVERFLOW: error: {{.*}}.o:(function caller: .text+0x8): split-stack prologue adjustment overflows
 | |
| 
 | |
|         .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)
 | |
|     addis 12, 1, -32768
 | |
|     addi  12, 12, 4096
 | |
|     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, -32768
 | |
| # CHECK-NEXT: nop
 | |
| # CHECK-NEXT: cmpld 7, 12, 0
 | |
| # CHECK-NEXT: bt- 28, 0x10010204
 | |
| 
 | |
| .section        .note.GNU-split-stack,"",@progbits
 |