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 %ebp9 movl %ebp, %esp10 .cv_fpo_setframe %ebp11 pushl %ebx12 .cv_fpo_pushreg %ebx13 pushl %edi14 .cv_fpo_pushreg %edi15 pushl %esi16 .cv_fpo_pushreg esi17 subl $20, %esp18 .cv_fpo_stackalloc 2019 .cv_fpo_endprologue20 21 # ASM: .cv_fpo_proc _foo 422 # ASM: pushl %ebp23 # ASM: .cv_fpo_pushreg %ebp24 # ASM: movl %ebp, %esp25 # ASM: .cv_fpo_setframe %ebp26 # ASM: pushl %ebx27 # ASM: .cv_fpo_pushreg %ebx28 # ASM: pushl %edi29 # ASM: .cv_fpo_pushreg %edi30 # ASM: pushl %esi31 # ASM: .cv_fpo_pushreg %esi32 # ASM: subl $20, %esp33 # ASM: .cv_fpo_stackalloc 2034 # ASM: .cv_fpo_endprologue35 36 # Clobbers37 xorl %ebx, %ebx38 xorl %edi, %edi39 xorl %esi, %esi40 # Use that stack memory41 leal 4(%esp), %eax42 movl %eax, (%esp)43 calll _bar44 45 # ASM: calll _bar46 47 # Epilogue48 # FIXME: Get FPO data for this once we get it for DWARF.49 addl $20, %esp50 popl %esi51 popl %edi52 popl %ebx53 popl %ebp54 retl55 .cv_fpo_endproc56 57 # ASM: .cv_fpo_endproc58 59 .section .debug$S,"dr"60 .p2align 261 .long 4 # Debug section magic62 .cv_fpo_data _foo63 .cv_stringtable64 65 # ASM: .cv_fpo_data66 67# OBJ: Subsection [68# OBJ-NEXT: SubSectionType: FrameData (0xF5)69# OBJ-NEXT: SubSectionSize:70# OBJ-NEXT: LinkageName: _foo71# OBJ-NEXT: FrameData {72# OBJ-NEXT: RvaStart: 0x073# OBJ-NEXT: CodeSize: 0x2374# OBJ-NEXT: LocalSize: 0x075# OBJ-NEXT: ParamsSize: 0x476# OBJ-NEXT: MaxStackSize: 0x077# OBJ-NEXT: PrologSize: 0x978# OBJ-NEXT: SavedRegsSize: 0x079# OBJ-NEXT: Flags [ (0x4)80# OBJ-NEXT: IsFunctionStart (0x4)81# OBJ-NEXT: ]82# OBJ-NEXT: FrameFunc [83# OBJ-NEXT: $T0 .raSearch =84# OBJ-NEXT: $eip $T0 ^ =85# OBJ-NEXT: $esp $T0 4 + =86# OBJ-NEXT: ]87# OBJ-NEXT: }88# OBJ-NEXT: FrameData {89# OBJ-NEXT: RvaStart: 0x190# OBJ-NEXT: CodeSize: 0x2291# OBJ-NEXT: LocalSize: 0x092# OBJ-NEXT: ParamsSize: 0x493# OBJ-NEXT: MaxStackSize: 0x094# OBJ-NEXT: PrologSize: 0x895# OBJ-NEXT: SavedRegsSize: 0x496# OBJ-NEXT: Flags [ (0x0)97# OBJ-NEXT: ]98# OBJ-NEXT: FrameFunc [99# OBJ-NEXT: $T0 .raSearch =100# OBJ-NEXT: $eip $T0 ^ =101# OBJ-NEXT: $esp $T0 4 + =102# OBJ-NEXT: $ebp $T0 4 - ^ =103# OBJ-NEXT: ]104# OBJ-NEXT: }105# OBJ-NEXT: FrameData {106# OBJ-NEXT: RvaStart: 0x3107# OBJ-NEXT: CodeSize: 0x20108# OBJ-NEXT: LocalSize: 0x0109# OBJ-NEXT: ParamsSize: 0x4110# OBJ-NEXT: MaxStackSize: 0x0111# OBJ-NEXT: PrologSize: 0x6112# OBJ-NEXT: SavedRegsSize: 0x4113# OBJ-NEXT: Flags [ (0x0)114# OBJ-NEXT: ]115# OBJ-NEXT: FrameFunc [116# OBJ-NEXT: $T0 $ebp 4 + =117# OBJ-NEXT: $eip $T0 ^ =118# OBJ-NEXT: $esp $T0 4 + =119# OBJ-NEXT: $ebp $T0 4 - ^ =120# OBJ-NEXT: ]121# OBJ-NEXT: }122# OBJ-NEXT: FrameData {123# OBJ-NEXT: RvaStart: 0x4124# OBJ-NEXT: CodeSize: 0x1F125# OBJ-NEXT: LocalSize: 0x0126# OBJ-NEXT: ParamsSize: 0x4127# OBJ-NEXT: MaxStackSize: 0x0128# OBJ-NEXT: PrologSize: 0x5129# OBJ-NEXT: SavedRegsSize: 0x8130# OBJ-NEXT: Flags [ (0x0)131# OBJ-NEXT: ]132# OBJ-NEXT: FrameFunc [133# OBJ-NEXT: $T0 $ebp 4 + =134# OBJ-NEXT: $eip $T0 ^ =135# OBJ-NEXT: $esp $T0 4 + =136# OBJ-NEXT: $ebp $T0 4 - ^ =137# OBJ-NEXT: $ebx $T0 8 - ^ =138# OBJ-NEXT: ]139# OBJ-NEXT: }140# OBJ-NEXT: FrameData {141# OBJ-NEXT: RvaStart: 0x5142# OBJ-NEXT: CodeSize: 0x1E143# OBJ-NEXT: LocalSize: 0x0144# OBJ-NEXT: ParamsSize: 0x4145# OBJ-NEXT: MaxStackSize: 0x0146# OBJ-NEXT: PrologSize: 0x4147# OBJ-NEXT: SavedRegsSize: 0xC148# OBJ-NEXT: Flags [ (0x0)149# OBJ-NEXT: ]150# OBJ-NEXT: FrameFunc [151# OBJ-NEXT: $T0 $ebp 4 + =152# OBJ-NEXT: $eip $T0 ^ =153# OBJ-NEXT: $esp $T0 4 + =154# OBJ-NEXT: $ebp $T0 4 - ^ =155# OBJ-NEXT: $ebx $T0 8 - ^ =156# OBJ-NEXT: $edi $T0 12 - ^ =157# OBJ-NEXT: ]158# OBJ-NEXT: }159# OBJ-NEXT: FrameData {160# OBJ-NEXT: RvaStart: 0x6161# OBJ-NEXT: CodeSize: 0x1D162# OBJ-NEXT: LocalSize: 0x0163# OBJ-NEXT: ParamsSize: 0x4164# OBJ-NEXT: MaxStackSize: 0x0165# OBJ-NEXT: PrologSize: 0x3166# OBJ-NEXT: SavedRegsSize: 0x10167# OBJ-NEXT: Flags [ (0x0)168# OBJ-NEXT: ]169# OBJ-NEXT: FrameFunc [170# OBJ-NEXT: $T0 $ebp 4 + =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