llvm/llvm/test/MC/COFF/cv-string.s

# 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