180 lines · plain
1# RUN: llvm-mc -filetype=asm < %s -triple i686-windows-msvc | FileCheck %s --check-prefix=ASM2# RUN: llvm-mc -filetype=obj < %s -triple i686-windows-msvc | llvm-readobj --codeview - | FileCheck %s --check-prefix=OBJ3 4.globl _foo5_foo:6 .cv_fpo_proc _foo 47 pushl %ebp8 .cv_fpo_pushreg ebp # Test without %9 pushl %ebx10 .cv_fpo_pushreg %ebx11 pushl %edi12 .cv_fpo_pushreg %edi13 pushl %esi14 .cv_fpo_pushreg esi15 subl $20, %esp16 .cv_fpo_stackalloc 2017 .cv_fpo_endprologue18 19 # ASM: .cv_fpo_proc _foo 420 # ASM: pushl %ebp21 # ASM: .cv_fpo_pushreg %ebp22 # ASM: pushl %ebx23 # ASM: .cv_fpo_pushreg %ebx24 # ASM: pushl %edi25 # ASM: .cv_fpo_pushreg %edi26 # ASM: pushl %esi27 # ASM: .cv_fpo_pushreg %esi28 # ASM: subl $20, %esp29 # ASM: .cv_fpo_stackalloc 2030 # ASM: .cv_fpo_endprologue31 32 # Clobbers33 xorl %ebp, %ebp34 xorl %ebx, %ebx35 xorl %edi, %edi36 xorl %esi, %esi37 # Use that stack memory38 leal 4(%esp), %eax39 movl %eax, (%esp)40 calll _bar41 42 # ASM: calll _bar43 44 # Epilogue45 # FIXME: Get FPO data for this once we get it for DWARF.46 addl $20, %esp47 popl %esi48 popl %edi49 popl %ebx50 popl %ebp51 retl52 .cv_fpo_endproc53 54 # ASM: .cv_fpo_endproc55 56 .section .debug$S,"dr"57 .p2align 258 .long 4 # Debug section magic59 .cv_fpo_data _foo60 .cv_stringtable61 62 # ASM: .cv_fpo_data63 64# OBJ: Subsection [65# OBJ-NEXT: SubSectionType: FrameData (0xF5)66# OBJ-NEXT: SubSectionSize: 0xC467# OBJ-NEXT: LinkageName: _foo68# OBJ-NEXT: FrameData {69# OBJ-NEXT: RvaStart: 0x070# OBJ-NEXT: CodeSize: 0x2371# OBJ-NEXT: LocalSize: 0x072# OBJ-NEXT: ParamsSize: 0x473# OBJ-NEXT: MaxStackSize: 0x074# OBJ-NEXT: PrologSize: 0x775# OBJ-NEXT: SavedRegsSize: 0x076# OBJ-NEXT: Flags [ (0x4)77# OBJ-NEXT: IsFunctionStart (0x4)78# OBJ-NEXT: ]79# OBJ-NEXT: FrameFunc [80# OBJ-NEXT: $T0 .raSearch =81# OBJ-NEXT: $eip $T0 ^ =82# OBJ-NEXT: $esp $T0 4 + =83# OBJ-NEXT: ]84# OBJ-NEXT: }85# OBJ-NEXT: FrameData {86# OBJ-NEXT: RvaStart: 0x187# OBJ-NEXT: CodeSize: 0x2288# OBJ-NEXT: LocalSize: 0x089# OBJ-NEXT: ParamsSize: 0x490# OBJ-NEXT: MaxStackSize: 0x091# OBJ-NEXT: PrologSize: 0x692# OBJ-NEXT: SavedRegsSize: 0x493# OBJ-NEXT: Flags [ (0x0)94# OBJ-NEXT: ]95# OBJ-NEXT: FrameFunc [96# OBJ-NEXT: $T0 .raSearch =97# OBJ-NEXT: $eip $T0 ^ =98# OBJ-NEXT: $esp $T0 4 + =99# OBJ-NEXT: $ebp $T0 4 - ^ =100# OBJ-NEXT: ]101# OBJ-NEXT: }102# OBJ-NEXT: FrameData {103# OBJ-NEXT: RvaStart: 0x2104# OBJ-NEXT: CodeSize: 0x21105# OBJ-NEXT: LocalSize: 0x0106# OBJ-NEXT: ParamsSize: 0x4107# OBJ-NEXT: MaxStackSize: 0x0108# OBJ-NEXT: PrologSize: 0x5109# OBJ-NEXT: SavedRegsSize: 0x8110# OBJ-NEXT: Flags [ (0x0)111# OBJ-NEXT: ]112# OBJ-NEXT: FrameFunc [113# OBJ-NEXT: $T0 .raSearch =114# OBJ-NEXT: $eip $T0 ^ =115# OBJ-NEXT: $esp $T0 4 + =116# OBJ-NEXT: $ebp $T0 4 - ^ =117# OBJ-NEXT: $ebx $T0 8 - ^ =118# OBJ-NEXT: ]119# OBJ-NEXT: }120# OBJ-NEXT: FrameData {121# OBJ-NEXT: RvaStart: 0x3122# OBJ-NEXT: CodeSize: 0x20123# OBJ-NEXT: LocalSize: 0x0124# OBJ-NEXT: ParamsSize: 0x4125# OBJ-NEXT: MaxStackSize: 0x0126# OBJ-NEXT: PrologSize: 0x4127# OBJ-NEXT: SavedRegsSize: 0xC128# OBJ-NEXT: Flags [ (0x0)129# OBJ-NEXT: ]130# OBJ-NEXT: FrameFunc [131# OBJ-NEXT: $T0 .raSearch =132# OBJ-NEXT: $eip $T0 ^ =133# OBJ-NEXT: $esp $T0 4 + =134# OBJ-NEXT: $ebp $T0 4 - ^ =135# OBJ-NEXT: $ebx $T0 8 - ^ =136# OBJ-NEXT: $edi $T0 12 - ^ =137# OBJ-NEXT: ]138# OBJ-NEXT: }139# OBJ-NEXT: FrameData {140# OBJ-NEXT: RvaStart: 0x4141# OBJ-NEXT: CodeSize: 0x1F142# OBJ-NEXT: LocalSize: 0x0143# OBJ-NEXT: ParamsSize: 0x4144# OBJ-NEXT: MaxStackSize: 0x0145# OBJ-NEXT: PrologSize: 0x3146# OBJ-NEXT: SavedRegsSize: 0x10147# OBJ-NEXT: Flags [ (0x0)148# OBJ-NEXT: ]149# OBJ-NEXT: FrameFunc [150# OBJ-NEXT: $T0 .raSearch =151# OBJ-NEXT: $eip $T0 ^ =152# OBJ-NEXT: $esp $T0 4 + =153# OBJ-NEXT: $ebp $T0 4 - ^ =154# OBJ-NEXT: $ebx $T0 8 - ^ =155# OBJ-NEXT: $edi $T0 12 - ^ =156# OBJ-NEXT: $esi $T0 16 - ^ =157# OBJ-NEXT: ]158# OBJ-NEXT: }159# OBJ-NEXT: FrameData {160# OBJ-NEXT: RvaStart: 0x7161# OBJ-NEXT: CodeSize: 0x1C162# OBJ-NEXT: LocalSize: 0x14163# OBJ-NEXT: ParamsSize: 0x4164# OBJ-NEXT: MaxStackSize: 0x0165# OBJ-NEXT: PrologSize: 0x0166# OBJ-NEXT: SavedRegsSize: 0x10167# OBJ-NEXT: Flags [ (0x0)168# OBJ-NEXT: ]169# OBJ-NEXT: FrameFunc [170# OBJ-NEXT: $T0 .raSearch =171# OBJ-NEXT: $eip $T0 ^ =172# OBJ-NEXT: $esp $T0 4 + =173# OBJ-NEXT: $ebp $T0 4 - ^ =174# OBJ-NEXT: $ebx $T0 8 - ^ =175# OBJ-NEXT: $edi $T0 12 - ^ =176# OBJ-NEXT: $esi $T0 16 - ^ =177# OBJ-NEXT: ]178# OBJ-NEXT: }179# OBJ-NOT: FrameData180