| # RUN: llvm-mc -triple=i686-windows-msvc %s -filetype=obj -o %t.obj |
| # RUN: llvm-readobj -codeview %t.obj | FileCheck %s |
| |
| # The .cv_string directive mainly exists as a convenience for manually writing |
| # FPO data in assembler. Test that we can write FPO data using this directive, |
| # and that the string comes out in the dumper. |
| |
| # void g(int); |
| # void f(int x) { |
| # g(x+1); |
| # } |
| |
| # CHECK: FrameFunc [ |
| # CHECK-NEXT: abc = |
| # CHECK-NEXT: def = |
| # CHECK-NEXT: ghi = |
| # CHECK-NEXT: ] |
| |
| .text |
| .def @feat.00; |
| .scl 3; |
| .type 0; |
| .endef |
| .globl @feat.00 |
| .set @feat.00, 1 |
| .def _f; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl _f # -- Begin function f |
| .p2align 4, 0x90 |
| _f: # @f |
| Lfunc_begin0: |
| # %bb.0: # %entry |
| pushl %ebp |
| movl %esp, %ebp |
| subl $8, %esp |
| movl 8(%ebp), %eax |
| movl 8(%ebp), %ecx |
| addl $1, %ecx |
| movl %ecx, (%esp) |
| movl %eax, -4(%ebp) # 4-byte Spill |
| calll _g |
| addl $8, %esp |
| popl %ebp |
| retl |
| Lfunc_end0: |
| # -- End function |
| .section .debug$S,"dr" |
| .p2align 2 |
| .long 4 # Debug section magic |
| |
| # Open coded frame data |
| .long 245 |
| .long Lfoo_fpo_end-Lfoo_fpo_begin # Subsection size |
| Lfoo_fpo_begin: |
| .long _f |
| .long 0 |
| .long Lfunc_end0-Lfunc_begin0 |
| .long 24 # LocalSize |
| .long 0 # ParamSize |
| .long 0 # MaxStackSize |
| .cv_string "abc = def = ghi = " |
| .short 0 # PrologSize |
| .short 0 # SavedRegSize |
| .long 0x4 # Flags |
| Lfoo_fpo_end: |
| .p2align 2 |
| .cv_stringtable # String table |