# Test what happens when the first type record (0x1000) is a LF_FIELDLIST
# record.

# Steps to regenerate input:
# $ cat t.c
# struct { int x; } o;
# $ cl -Z7 t.c

RUN: llvm-readobj --codeview %S/Inputs/codeview-merging-anon.obj | FileCheck %s
RUN: llvm-readobj --codeview-merged-types %S/Inputs/codeview-merging-anon.obj | FileCheck %s

CHECK-LABEL:  FieldList (0x1000) {
CHECK-NEXT:     TypeLeafKind: LF_FIELDLIST (0x1203)
CHECK-NEXT:     DataMember {
CHECK-NEXT:       TypeLeafKind: LF_MEMBER (0x150D)
CHECK-NEXT:       AccessSpecifier: Public (0x3)
CHECK-NEXT:       Type: int (0x74)
CHECK-NEXT:       FieldOffset: 0x0
CHECK-NEXT:       Name: x
CHECK-NEXT:     }
CHECK-NEXT:   }
CHECK-LABEL:  Struct (0x1001) {
CHECK:          TypeLeafKind: LF_STRUCTURE (0x1505)
CHECK:          MemberCount: 1
CHECK:          FieldList: <field list> (0x1000)
CHECK:          Name: <unnamed-tag>
CHECK:          LinkageName: .?AU<unnamed-tag>@@
CHECK:        }
CHECK-LABEL:  StringId
