; Test DBG_LABEL MachineInstr under optimization.
; The test case is generated by clang with -O2 is on.
; REQUIRES: asserts
; RUN: llc -debug-only=isel %s -o /dev/null 2> %t.debug
; RUN: cat %t.debug | FileCheck %s --check-prefix=CHECKMI
;
; CHECKMI: DBG_LABEL "end_sum", debug-location !17
; CHECKMI: DBG_LABEL "end", debug-location !19
source_filename = "debug-label-opt.c"

define i32 @foo(i32* nocapture readonly %a, i32 %n) local_unnamed_addr !dbg !7 {
entry:
  call void @llvm.dbg.value(metadata i32* %a, metadata !13, metadata !DIExpression()), !dbg !6
  call void @llvm.dbg.value(metadata i32 %n, metadata !14, metadata !DIExpression()), !dbg !6
  switch i32 %n, label %end_sum [
    i32 2, label %end_sum.sink.split
    i32 3, label %if.then3
  ], !dbg !6

if.then3:                                         ; preds = %entry
  %arrayidx4 = getelementptr inbounds i32, i32* %a, i64 1, !dbg !6
  br label %end_sum.sink.split, !dbg !6

end_sum.sink.split:                               ; preds = %entry, %if.then3
  %a.sink = phi i32* [ %arrayidx4, %if.then3 ], [ %a, %entry ]
  %.sink = phi i64 [ 2, %if.then3 ], [ 1, %entry ]
  %0 = load i32, i32* %a.sink, align 4
  %arrayidx1 = getelementptr inbounds i32, i32* %a, i64 %.sink
  %1 = load i32, i32* %arrayidx1, align 4
  %add = add nsw i32 %1, %0
  br label %end_sum, !dbg !6

end_sum:                                          ; preds = %end_sum.sink.split, %entry
  %sum.0 = phi i32 [ 0, %entry ], [ %add, %end_sum.sink.split ]
  call void @llvm.dbg.label(metadata !15), !dbg !17
  %2 = load i32, i32* %a, align 4, !dbg !6
  %mul = mul nsw i32 %2, %sum.0, !dbg !18
  call void @llvm.dbg.label(metadata !16), !dbg !19
  ret i32 %mul, !dbg !6
}

; Function Attrs: nounwind readnone speculatable
declare void @llvm.dbg.label(metadata)

; Function Attrs: nounwind readnone speculatable
declare void @llvm.dbg.value(metadata, metadata, metadata)

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

!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "debug-label-opt.c", directory: "./")
!2 = !{}
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 2, !"Debug Info Version", i32 3}
!5 = !{i32 1, !"wchar_size", i32 4}
!6 = !DILocation(line: 1, column: 14, scope: !7)
!7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
!8 = !DISubroutineType(types: !9)
!9 = !{!10, !11, !10}
!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64)
!12 = !{!13, !14, !15, !16}
!13 = !DILocalVariable(name: "a", arg: 1, scope: !7, file: !1, line: 1, type: !11)
!14 = !DILocalVariable(name: "n", arg: 2, scope: !7, file: !1, line: 1, type: !10)
!15 = !DILabel(scope: !7, name: "end_sum", file: !1, line: 10)
!16 = !DILabel(scope: !7, name: "end", file: !1, line: 13)
!17 = !DILocation(line: 10, column: 1, scope: !7)
!18 = !DILocation(line: 11, column: 7, scope: !7)
!19 = !DILocation(line: 13, column: 1, scope: !7)
