# RUN: llvm-mc -triple=i686-pc-win32 -filetype=obj < %s | llvm-readobj --codeview --codeview-subsection-bytes | FileCheck %s
	.text
	.def	 @feat.00;
	.scl	3;
	.type	0;
	.endef
	.globl	@feat.00
@feat.00 = 1
	.def	 _g;
	.scl	2;
	.type	32;
	.endef
	.globl	_g
	.p2align	4, 0x90
_g:                                     # @g
Lfunc_begin0:
	.cv_file	1 "\\usr\\local\\google\\home\\majnemer\\llvm\\src\\<stdin>"
	.cv_func_id 0
	.cv_loc	0 1 3 0 is_stmt 0       # <stdin>:3:0
# %bb.0:                                # %entry
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	leal	-4(%ebp), %eax
Lvar_begin0:
	#DEBUG_VALUE: g:x <- %eax
	.cv_loc	0 1 4 7                 # <stdin>:4:7
	movl	$0, -4(%ebp)
	.cv_loc	0 1 5 3                 # <stdin>:5:3
	movl	%eax, (%esp)
	calll	_f
	.cv_loc	0 1 6 1                 # <stdin>:6:1
Lvar_end0:
	addl	$8, %esp
	popl	%ebp
	retl
Lfunc_end0:

	.section	.debug$T,"dr"
	.long	4                       # Debug section magic
	.short	6                       # Type record length
	.short	4609                    # Leaf type: LF_ARGLIST
	.long	0                       # Number of arguments
	.short	14                      # Type record length
	.short	4104                    # Leaf type: LF_PROCEDURE
	.long	3                       # Return type index
	.byte	0                       # Calling convention
	.byte	0                       # Function options
	.short	0                       # # of parameters
	.long	4096                    # Argument list type index
	.short	12                      # Type record length
	.short	5633                    # Leaf type: LF_FUNC_ID
	.long	0                       # Scope type index
	.long	4097                    # Function type
	.asciz	"g"                     # Function name
	.section	.debug$S,"dr"
	.long	4                       # Debug section magic
	.long	241                     # Symbol subsection for g
	.long	Ltmp1-Ltmp0             # Subsection size
Ltmp0:
	.short	Ltmp3-Ltmp2             # Record length
Ltmp2:
	.short	4423                    # Record kind: S_GPROC32_ID
	.long	0                       # PtrParent
	.long	0                       # PtrEnd
	.long	0                       # PtrNext
	.long	Lfunc_end0-_g           # Code size
	.long	0                       # Offset after prologue
	.long	0                       # Offset before epilogue
	.long	0                       # Function type index
	.secrel32	_g              # Function section relative address
	.secidx	_g                      # Function section index
	.byte	0                       # Flags
	.asciz	"g"                     # Function name
Ltmp3:
	.short	2                       # Record length
	.short	4431                    # Record kind: S_PROC_ID_END
	.cv_def_range	Lvar_begin0 Lvar_end0, frame_ptr_rel, -4

# CHECK:    DefRangeFramePointerRelSym {
# CHECK:      Offset: -4
# CHECK:      LocalVariableAddrRange {
# CHECK:        OffsetStart: .text+0x9
# CHECK:        ISectStart: 0x0
# CHECK:        Range: 0xF
# CHECK:      }
# CHECK:      BlockRelocations [
# CHECK:        0x4 IMAGE_REL_I386_SECREL .text
# CHECK:        0x8 IMAGE_REL_I386_SECTION .text
# CHECK:      ]
# CHECK:    }

Ltmp1:
	.p2align	2
	.cv_linetable	0, _g, Lfunc_end0
	.cv_filechecksums               # File index to string table offset subsection
	.cv_stringtable                 # String table

