compact-unwind.s 2.25 KB
# 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

# Check that a adjustment through a push %rax is the same as a sub.

# CHECK:   Entry at offset 0x40:
# CHECK-NEXT:     start:                0x2a _testrax
# CHECK-NEXT:     length:               0x5
# CHECK-NEXT:     compact encoding:     0x02020000
	.globl	_testrax
_testrax:                               ## @testrax
	.cfi_startproc
## %bb.0:                               ## %entry
	pushq	%rax
Ltmp15:
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rax
	retq
	.cfi_endproc

	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"%d\n"


.subsections_via_symbols