; The following two object files were generated using the following command:
;   $ cl /d2Zi+ /Zc:inline /O2 /Z7 /c t.cpp
; The contents of t.cpp follow:
;   static void bar() {
;     __asm nop
;   }
;   static void baz() {
;     __asm nop
;   }
;   static __forceinline void foo() {
;     __asm nop
;   #include "a.h"
;   #include "b.h"
;     __asm nop
;     goto forwards;
;
;   backwards:
;     __asm nop
;     return;
;
;   forwards:
;     __asm rep nop
;     goto backwards;
;   }
;   int main() {
;     bar();
;     baz();
;     foo();
;   }
;
; Both a.h and b.h contain "__asm nop".

RUN: llvm-readobj -S --codeview --section-symbols %p/Inputs/codeview-inlining.obj.coff | FileCheck %s

; FIXME: If we were more clever, we could turn FileIDs into paths.

; CHECK:       SubSectionType: InlineeLines (0xF6)
; CHECK-NEXT:  SubSectionSize: 0x3C
; CHECK-NEXT:  InlineeSourceLine {
; CHECK-NEXT:    Inlinee: bar (0x1002)
; CHECK-NEXT:    FileID: d:\src\llvm\build\t.cpp (0x30)
; CHECK-NEXT:    SourceLineNum: 2
; CHECK-NEXT:    ExtraFileCount: 0
; CHECK-NEXT:    ExtraFiles [
; CHECK-NEXT:    ]
; CHECK-NEXT:  }
; CHECK-NEXT:  InlineeSourceLine {
; CHECK-NEXT:    Inlinee: baz (0x1003)
; CHECK-NEXT:    FileID: d:\src\llvm\build\t.cpp (0x30)
; CHECK-NEXT:    SourceLineNum: 5
; CHECK-NEXT:    ExtraFileCount: 0
; CHECK-NEXT:    ExtraFiles [
; CHECK-NEXT:    ]
; CHECK-NEXT:  }
;   The 'foo' inline site has extra files due to includes.
; CHECK-NEXT:  InlineeSourceLine {
; CHECK-NEXT:    Inlinee: foo (0x1004)
; CHECK-NEXT:    FileID: d:\src\llvm\build\a.h (0x0)
; CHECK-NEXT:    SourceLineNum: 1
; CHECK-NEXT:    ExtraFileCount: 2
; CHECK-NEXT:    ExtraFiles [
; CHECK-NEXT:      FileID: d:\src\llvm\build\b.h (0x18)
; CHECK-NEXT:      FileID: d:\src\llvm\build\t.cpp (0x30)
; CHECK-NEXT:    ]
; CHECK-NEXT:  }
