mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
915b66faf0
Fix a compact unwind encoding logic bug which would try to encode more callee saved registers than it should, leading to early bail out in the encoding logic and abusive use of DWARF frame mode unnecessarily. Also remove no-compact-unwind.ll which was testing the wrong thing based on this bug and move it to valid 'compact unwind' tests. Added other few more tests too. llvm-svn: 223676
73 lines
1.8 KiB
ArmAsm
73 lines
1.8 KiB
ArmAsm
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin10.0 %s | llvm-objdump -unwind-info - | FileCheck %s
|
|
|
|
.section __TEXT,__text,regular,pure_instructions
|
|
.macosx_version_min 10, 10
|
|
|
|
# Check that we emit compact-unwind info with UNWIND_X86_MODE_STACK_IND encoding
|
|
|
|
# CHECK: Contents of __compact_unwind section:
|
|
# CHECK-NEXT: Entry at offset 0x0:
|
|
# CHECK-NEXT: start: 0x0 _test0
|
|
# CHECK-NEXT: length: 0x15
|
|
# CHECK-NEXT: compact encoding: 0x03056804
|
|
.globl _test0
|
|
_test0: ## @test0
|
|
.cfi_startproc
|
|
## BB#0: ## %entry
|
|
pushq %rbp
|
|
Ltmp0:
|
|
.cfi_def_cfa_offset 16
|
|
pushq %rbx
|
|
Ltmp1:
|
|
.cfi_def_cfa_offset 24
|
|
subq $14408, %rsp ## imm = 0x3848
|
|
Ltmp2:
|
|
.cfi_def_cfa_offset 14432
|
|
Ltmp3:
|
|
.cfi_offset %rbx, -24
|
|
Ltmp4:
|
|
.cfi_offset %rbp, -16
|
|
xorl %eax, %eax
|
|
addq $14408, %rsp ## imm = 0x3848
|
|
popq %rbx
|
|
popq %rbp
|
|
retq
|
|
.cfi_endproc
|
|
|
|
# Check that we emit compact-unwind info with UNWIND_X86_MODE_STACK_IMMD encoding
|
|
|
|
# CHECK: Entry at offset 0x20:
|
|
# CHECK-NEXT: start: 0x15 _test1
|
|
# CHECK-NEXT: length: 0x15
|
|
# CHECK-NEXT: compact encoding: 0x02360804
|
|
.globl _test1
|
|
_test1: ## @test1
|
|
.cfi_startproc
|
|
## BB#0: ## %entry
|
|
pushq %rbp
|
|
Ltmp10:
|
|
.cfi_def_cfa_offset 16
|
|
pushq %rbx
|
|
Ltmp11:
|
|
.cfi_def_cfa_offset 24
|
|
subq $408, %rsp ## imm = 0x198
|
|
Ltmp12:
|
|
.cfi_def_cfa_offset 432
|
|
Ltmp13:
|
|
.cfi_offset %rbx, -24
|
|
Ltmp14:
|
|
.cfi_offset %rbp, -16
|
|
xorl %eax, %eax
|
|
addq $408, %rsp ## imm = 0x198
|
|
popq %rbx
|
|
popq %rbp
|
|
retq
|
|
.cfi_endproc
|
|
|
|
.section __TEXT,__cstring,cstring_literals
|
|
L_.str: ## @.str
|
|
.asciz "%d\n"
|
|
|
|
|
|
.subsections_via_symbols
|