; RUN: llc -O0 < %s | FileCheck %s

source_filename = "t.c"
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
target triple = "i386-pc-windows-msvc19.0.24215"

@str_const = internal unnamed_addr constant [4 x i8] c"str\00", align 1

declare i32 @puts(i8*)
declare void @use_i32(i32*)
declare void @llvm.dbg.value(metadata, metadata, metadata) nounwind readnone

; We had a line info quality issue where the LEA for the string constant had no
; location info, so the .cv_loc directive appeared after it. Now we have logic
; that tries to emit the first valid location to the top of each MBB.

define void @lea_str_loc(i1 %cond) !dbg !8 {
entry:
  br i1 %cond, label %if.then, label %if.end, !dbg !17

if.then:                                          ; preds = %entry
  br label %return, !dbg !18

if.end:                                           ; preds = %entry
  %call = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_const, i32 0, i32 0)), !dbg !19
  br label %return, !dbg !20

return:                                           ; preds = %if.end, %if.then
  ret void, !dbg !20
}

; The t.c:5 line marker should appear immediately after the BB label.

; CHECK-LABEL: _lea_str_loc:
; CHECK:         .cv_loc {{.*}} # t.c:4:5
; CHECK:         jmp     LBB{{.*}}
; CHECK: LBB0_{{.*}}:                                 # %if.end
; CHECK-NEXT:    .cv_loc {{.*}} # t.c:5:3
; CHECK-NEXT:    leal    _str_const, %[[reg:[^ ]*]]
; CHECK-NEXT:    movl    %[[reg]], (%esp)
; CHECK-NEXT:    calll   _puts

define void @instr_no_loc(i1 %cond) !dbg !21 {
entry:
  br i1 %cond, label %if.then, label %if.end, !dbg !22

if.then:                                          ; preds = %entry
  br label %return, !dbg !23

if.end:                                           ; preds = %entry
  call void asm sideeffect "nop", ""()
  %call = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str_const, i32 0, i32 0)), !dbg !24
  br label %return, !dbg !25

return:                                           ; preds = %if.end, %if.then
  ret void, !dbg !25
}

; CHECK-LABEL: _instr_no_loc:
; CHECK:         .cv_loc {{.*}} # t.c:4:5
; CHECK:         jmp     LBB{{.*}}
; CHECK: LBB1_{{.*}}:                                 # %if.end
; CHECK-NEXT:    .cv_loc {{.*}} # t.c:5:3
; CHECK-NEXT:    #APP
; CHECK-NEXT:    nop
; CHECK-NEXT:    #NO_APP
; CHECK-NEXT:    leal    _str_const, %[[reg:[^ ]*]]
; CHECK-NEXT:    movl    %[[reg]], (%esp)
; CHECK-NEXT:    calll   _puts

define void @lea_dbg_value(i1 %cond) !dbg !30 {
entry:
  %value = alloca i32
  store i32 42, i32* %value
  br i1 %cond, label %if.then, label %if.end, !dbg !31

if.then:                                          ; preds = %entry
  br label %return, !dbg !32

if.end:                                           ; preds = %entry
  call void @llvm.dbg.value(metadata i32* %value, metadata !35, metadata !13), !dbg !34
  call void @use_i32(i32* %value), !dbg !33
  br label %return, !dbg !34

return:                                           ; preds = %if.end, %if.then
  ret void, !dbg !34
}

; CHECK-LABEL: _lea_dbg_value:
; CHECK:         .cv_loc {{.*}} # t.c:4:5
; CHECK:         jmp     LBB{{.*}}
; CHECK: LBB2_{{.*}}:                                 # %if.end
; CHECK-NEXT:    .cv_loc {{.*}} # t.c:5:3
; CHECK:         leal 4(%esp), %[[reg:[^ ]*]]
; CHECK:         #DEBUG_VALUE: lea_dbg_value:v <- [DW_OP_deref] $[[reg]]
; CHECK:         movl    %[[reg]], (%esp)
; CHECK:         calll   _use_i32

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5, !6}
!llvm.ident = !{!7}

!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 5.0.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "t.c", directory: "C:\5Csrc\5Cllvm-project\5Cbuild", checksumkind: CSK_MD5, checksum: "b32df088e991f1996b4e4deb3855c14b")
!2 = !{}
!3 = !{i32 1, !"NumRegisterParameters", i32 0}
!4 = !{i32 2, !"CodeView", i32 1}
!5 = !{i32 2, !"Debug Info Version", i32 3}
!6 = !{i32 1, !"wchar_size", i32 2}
!7 = !{!"clang version 5.0.0 "}
!8 = distinct !DISubprogram(name: "lea_str_loc", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
!9 = !DISubroutineType(types: !10)
!10 = !{null, !11}
!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!13 = !DIExpression(DW_OP_deref)
!14 = !DILocation(line: 2, column: 12, scope: !8)
!15 = !DILocation(line: 3, column: 7, scope: !16)
!16 = distinct !DILexicalBlock(scope: !8, file: !1, line: 3, column: 7)
!17 = !DILocation(line: 3, column: 7, scope: !8)
!18 = !DILocation(line: 4, column: 5, scope: !16)
!19 = !DILocation(line: 5, column: 3, scope: !8)
!20 = !DILocation(line: 6, column: 1, scope: !8)
!21 = distinct !DISubprogram(name: "instr_no_loc", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
!22 = !DILocation(line: 3, column: 7, scope: !21)
!23 = !DILocation(line: 4, column: 5, scope: !21)
!24 = !DILocation(line: 5, column: 3, scope: !21)
!25 = !DILocation(line: 6, column: 1, scope: !21)
!30 = distinct !DISubprogram(name: "lea_dbg_value", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
!31 = !DILocation(line: 3, column: 7, scope: !30)
!32 = !DILocation(line: 4, column: 5, scope: !30)
!33 = !DILocation(line: 5, column: 3, scope: !30)
!34 = !DILocation(line: 6, column: 1, scope: !30)
!35 = !DILocalVariable(name: "v", scope: !30, file: !1, line: 3, type: !11)
