# RUN: llc -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s

# Test the extension of debug ranges from predecessors.
# Generated from the source file LiveDebugValues.c:
# #include <stdio.h>
# int m;
# extern int inc(int n); 
# extern int change(int n); 
# extern int modify(int n); 
# int main(int argc, char **argv) {
#   int n;
#   if (argc != 2)
#     n = 2;
#   else
#     n = atoi(argv[1]);
#   n = change(n);
#   if (n > 10) {
#     m = modify(n);
#     m = m + n;  // var `m' doesn't has a dbg.value
#   }   
#   else
#     m = inc(n); // var `m' doesn't has a dbg.value
#   printf("m(main): %d\n", m); 
#   return 0;
# }
# with clang -g -O3 -c -emit-llvm LiveDebugValues.c -S -o live-debug-values.ll
# then llc -stop-after stackmap-liveness live-debug-values.ll -o /dev/null > live-debug-values.mir
# This case will also produce multiple locations but only the debug range
# extension is tested here. This test case is tested with DWARF information under
# llvm/test/DebugInfo/live-debug-values.ll and present here for testing under
# MIR->MIR serialization.

# DBG_VALUE for variable "n" is extended into %bb.5 from its predecessors %bb.3
# and %bb.4.
# CHECK: ![[N_VAR:[0-9]+]] = !DILocalVariable(name: "n",{{.*}})
#
# CHECK:      bb.5.if.end.7:
# CHECK:        DBG_VALUE debug-use $ebx, debug-use $noreg, ![[N_VAR]], !DIExpression(), debug-location !{{[0-9]+}}


--- |
  ; ModuleID = 'live-debug-values.ll'
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-unknown-linux-gnu"
  
  @m = common global i32 0, align 4, !dbg !16
  @.str = private unnamed_addr constant [13 x i8] c"m(main): %d\0A\00", align 1
  
  ; Function Attrs: nounwind uwtable
  define i32 @main(i32 %argc, i8** nocapture readonly %argv) #0 !dbg !4 {
  entry:
    tail call void @llvm.dbg.value(metadata i32 %argc, i64 0, metadata !12, metadata !20), !dbg !21
    tail call void @llvm.dbg.value(metadata i8** %argv, i64 0, metadata !13, metadata !20), !dbg !22
    %cmp = icmp eq i32 %argc, 2, !dbg !24
    br i1 %cmp, label %if.else, label %if.end, !dbg !26
  
  if.else:                                          ; preds = %entry
    %arrayidx = getelementptr inbounds i8*, i8** %argv, i64 1, !dbg !27
    %0 = load i8*, i8** %arrayidx, align 8, !dbg !27, !tbaa !28
    %call = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %0) #4, !dbg !32
    tail call void @llvm.dbg.value(metadata i32 %call, i64 0, metadata !14, metadata !20), !dbg !33
    br label %if.end
  
  if.end:                                           ; preds = %if.else, %entry
    %n.0 = phi i32 [ %call, %if.else ], [ 2, %entry ]
    %call1 = tail call i32 @change(i32 %n.0) #4, !dbg !34
    tail call void @llvm.dbg.value(metadata i32 %call1, i64 0, metadata !14, metadata !20), !dbg !33
    %cmp2 = icmp sgt i32 %call1, 10, !dbg !35
    br i1 %cmp2, label %if.then.3, label %if.else.5, !dbg !37
  
  if.then.3:                                        ; preds = %if.end
    %call4 = tail call i32 @modify(i32 %call1) #4, !dbg !38
    %add = add nsw i32 %call4, %call1, !dbg !40
    br label %if.end.7, !dbg !41
  
  if.else.5:                                        ; preds = %if.end
    %call6 = tail call i32 @inc(i32 %call1) #4, !dbg !42
    br label %if.end.7
  
  if.end.7:                                         ; preds = %if.else.5, %if.then.3
    %storemerge = phi i32 [ %call6, %if.else.5 ], [ %add, %if.then.3 ]
    store i32 %storemerge, i32* @m, align 4, !dbg !43, !tbaa !44
    %call8 = tail call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %storemerge) #4, !dbg !46
    ret i32 0, !dbg !47
  }
  
  declare i32 @atoi(...) #1
  
  declare i32 @change(i32) #1
  
  declare i32 @modify(i32) #1
  
  declare i32 @inc(i32) #1
  
  ; Function Attrs: nounwind
  declare i32 @printf(i8* nocapture readonly, ...) #2
  
  ; Function Attrs: nounwind readnone
  declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #3
  
  attributes #0 = { nounwind uwtable }
  attributes #1 = { nounwind }
  attributes #2 = { nounwind }
  attributes #3 = { nounwind readnone }
  attributes #4 = { nounwind }
  
  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!17, !18}
  !llvm.ident = !{!19}
  
  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 253049) ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !15)
  !1 = !DIFile(filename: "LiveDebugValues.c", directory: "/home/vt/julia/test/tvvikram")
  !2 = !{}
  !4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !11)
  !5 = !DISubroutineType(types: !6)
  !6 = !{!7, !7, !8}
  !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
  !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64, align: 64)
  !9 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64, align: 64)
  !10 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
  !11 = !{!12, !13, !14}
  !12 = !DILocalVariable(name: "argc", arg: 1, scope: !4, file: !1, line: 6, type: !7)
  !13 = !DILocalVariable(name: "argv", arg: 2, scope: !4, file: !1, line: 6, type: !8)
  !14 = !DILocalVariable(name: "n", scope: !4, file: !1, line: 7, type: !7)
  !15 = !{!16}
  !16 = !DIGlobalVariableExpression(var: !DIGlobalVariable(name: "m", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true), expr: !DIExpression())
  !17 = !{i32 2, !"Dwarf Version", i32 4}
  !18 = !{i32 2, !"Debug Info Version", i32 3}
  !19 = !{!"clang version 3.8.0 (trunk 253049)"}
  !20 = !DIExpression()
  !21 = !DILocation(line: 6, column: 14, scope: !4)
  !22 = !DILocation(line: 6, column: 27, scope: !23)
  !23 = !DILexicalBlockFile(scope: !4, file: !1, discriminator: 1)
  !24 = !DILocation(line: 8, column: 12, scope: !25)
  !25 = distinct !DILexicalBlock(scope: !4, file: !1, line: 8, column: 7)
  !26 = !DILocation(line: 8, column: 7, scope: !4)
  !27 = !DILocation(line: 11, column: 14, scope: !25)
  !28 = !{!29, !29, i64 0}
  !29 = !{!"any pointer", !30, i64 0}
  !30 = !{!"omnipotent char", !31, i64 0}
  !31 = !{!"Simple C/C++ TBAA"}
  !32 = !DILocation(line: 11, column: 9, scope: !25)
  !33 = !DILocation(line: 7, column: 7, scope: !23)
  !34 = !DILocation(line: 12, column: 7, scope: !4)
  !35 = !DILocation(line: 13, column: 9, scope: !36)
  !36 = distinct !DILexicalBlock(scope: !4, file: !1, line: 13, column: 7)
  !37 = !DILocation(line: 13, column: 7, scope: !4)
  !38 = !DILocation(line: 14, column: 9, scope: !39)
  !39 = distinct !DILexicalBlock(scope: !36, file: !1, line: 13, column: 15)
  !40 = !DILocation(line: 15, column: 11, scope: !39)
  !41 = !DILocation(line: 16, column: 3, scope: !39)
  !42 = !DILocation(line: 18, column: 9, scope: !36)
  !43 = !DILocation(line: 15, column: 7, scope: !39)
  !44 = !{!45, !45, i64 0}
  !45 = !{!"int", !30, i64 0}
  !46 = !DILocation(line: 19, column: 3, scope: !4)
  !47 = !DILocation(line: 20, column: 3, scope: !4)

...
---
name:            main
alignment:       4
exposesReturnsTwice: false
tracksRegLiveness: true
liveins:         
  - { reg: '$edi' }
  - { reg: '$rsi' }
calleeSavedRegisters: [ '$bh', '$bl', '$bp', '$bpl', '$bx', '$ebp', '$ebx', 
                        '$rbp', '$rbx', '$r12', '$r13', '$r14', '$r15', 
                        '$r12b', '$r13b', '$r14b', '$r15b', '$r12d', '$r13d', 
                        '$r14d', '$r15d', '$r12w', '$r13w', '$r14w', '$r15w' ]
frameInfo:       
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       8
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    true
  hasCalls:        true
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
fixedStack:      
  - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, callee-saved-register: '$rbx' }
body:             |
  bb.0.entry:
    successors: %bb.1.if.else(16), %bb.2.if.end(16)
    liveins: $edi, $rsi, $rbx
  
    frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp
    CFI_INSTRUCTION def_cfa_offset 16
    CFI_INSTRUCTION offset $rbx, -16
    DBG_VALUE debug-use $edi, debug-use _, !12, !20, debug-location !21
    DBG_VALUE debug-use $rsi, debug-use _, !13, !20, debug-location !22
    $eax = MOV32rr $edi
    DBG_VALUE debug-use $eax, debug-use _, !12, !20, debug-location !21
    $edi = MOV32ri 2
    CMP32ri8 killed $eax, 2, implicit-def $eflags, debug-location !26
    JNE_1 %bb.2.if.end, implicit $eflags
  
  bb.1.if.else:
    successors: %bb.2.if.end(0)
    liveins: $rsi
  
    DBG_VALUE debug-use $rsi, debug-use _, !13, !20, debug-location !22
    $rdi = MOV64rm killed $rsi, 1, _, 8, _, debug-location !27 :: (load 8 from %ir.arrayidx, !tbaa !28)
    dead $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, implicit-def $al, debug-location !32
    CALL64pcrel32 @atoi, csr_64, implicit $rsp, implicit $rdi, implicit $al, implicit-def $rsp, implicit-def $eax, debug-location !32
    $edi = MOV32rr $eax, debug-location !32
    DBG_VALUE debug-use $edi, debug-use _, !14, !20, debug-location !33
  
  bb.2.if.end:
    successors: %bb.3.if.then.3(16), %bb.4.if.else.5(16)
    liveins: $edi
  
    CALL64pcrel32 @change, csr_64, implicit $rsp, implicit $edi, implicit-def $rsp, implicit-def $eax, debug-location !34
    $ebx = MOV32rr $eax, debug-location !34
    DBG_VALUE debug-use $ebx, debug-use _, !14, !20, debug-location !33
    CMP32ri8 $ebx, 11, implicit-def $eflags, debug-location !37
    JL_1 %bb.4.if.else.5, implicit killed $eflags, debug-location !37
  
  bb.3.if.then.3:
    successors: %bb.5.if.end.7(0)
    liveins: $ebx
  
    DBG_VALUE debug-use $ebx, debug-use _, !14, !20, debug-location !33
    $edi = MOV32rr $ebx, debug-location !38
    CALL64pcrel32 @modify, csr_64, implicit $rsp, implicit $edi, implicit-def $rsp, implicit-def $eax, debug-location !38
    $ecx = MOV32rr $eax, debug-location !38
    $ecx = ADD32rr killed $ecx, killed $ebx, implicit-def dead $eflags, debug-location !40
    JMP_1 %bb.5.if.end.7
  
  bb.4.if.else.5:
    successors: %bb.5.if.end.7(0)
    liveins: $ebx
  
    DBG_VALUE debug-use $ebx, debug-use _, !14, !20, debug-location !33
    $edi = MOV32rr killed $ebx, debug-location !42
    CALL64pcrel32 @inc, csr_64, implicit $rsp, implicit $edi, implicit-def $rsp, implicit-def $eax, debug-location !42
    $ecx = MOV32rr $eax, debug-location !42
  
  bb.5.if.end.7:
    liveins: $ecx
  
    MOV32mr $rip, 1, _, @m, _, $ecx, debug-location !43 :: (store 4 into @m, !tbaa !44)
    dead undef $edi = MOV32ri64 @.str, implicit-def $rdi, debug-location !46
    dead $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, implicit-def $al, debug-location !47
    $esi = MOV32rr killed $ecx, debug-location !46
    CALL64pcrel32 @printf, csr_64, implicit $rsp, implicit $rdi, implicit $esi, implicit $al, implicit-def $rsp, implicit-def dead $eax, debug-location !46
    $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, debug-location !47
    $rbx = POP64r implicit-def $rsp, implicit $rsp, debug-location !47
    RETQ $eax, debug-location !47

...
