mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-10 06:54:54 +00:00
ca93138e11
Rework how the MCWin64EHUnwindInfo instances are stored. Fix issues with chained unwind areas exposed by the test that were related to this. The ChainedParent field had the wrong address, because when the chained unwind info was added, the addresses shifted around. Now we store the pointers to the structures, which are now allocated from the MC heap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132106 91177308-0d34-0410-b5e6-96231b3b80d8
46 lines
1010 B
ArmAsm
46 lines
1010 B
ArmAsm
# RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s
|
|
|
|
# CHECK: .seh_proc func
|
|
# CHECK: .seh_pushframe @code
|
|
# CHECK: .seh_stackalloc 24
|
|
# CHECK: .seh_savereg 6, 16
|
|
# CHECK: .seh_savexmm 8, 0
|
|
# CHECK: .seh_pushreg 3
|
|
# CHECK: .seh_setframe 3, 0
|
|
# CHECK: .seh_endprologue
|
|
# CHECK: .seh_handler __C_specific_handler, @except
|
|
# CHECK-NOT: .section{{.*}}.xdata
|
|
# CHECK: .seh_handlerdata
|
|
# CHECK: .text
|
|
# CHECK: .seh_endproc
|
|
|
|
.text
|
|
.globl func
|
|
.def func; .scl 2; .type 32; .endef
|
|
.seh_proc func
|
|
func:
|
|
.seh_pushframe @code
|
|
subq $24, %rsp
|
|
.seh_stackalloc 24
|
|
movq %rsi, 16(%rsp)
|
|
.seh_savereg %rsi, 16
|
|
movups %xmm8, (%rsp)
|
|
.seh_savexmm %xmm8, 0
|
|
pushq %rbx
|
|
.seh_pushreg 3
|
|
mov %rsp, %rbx
|
|
.seh_setframe 3, 0
|
|
.seh_endprologue
|
|
.seh_handler __C_specific_handler, @except
|
|
.seh_handlerdata
|
|
.long 0
|
|
.text
|
|
.seh_startchained
|
|
.seh_endprologue
|
|
.seh_endchained
|
|
lea (%rbx), %rsp
|
|
pop %rbx
|
|
addq $24, %rsp
|
|
ret
|
|
.seh_endproc
|