# RUN: llc -o - %s -mtriple=x86_64-- -run-pass=machine-cp | FileCheck %s

# When MachineCopyPropagation eliminates a dead 'copy', its associated debug
# information becomes invalid. as the recorded register has been removed.
# It causes the debugger to display wrong variable value.
#
# When in the debugger, on the line "return read1;", the value of "read1"
# is reported as '4', where it should be '1'.
#
# MIR generated with:
#   clang -S -g -O2 -emit-llvm pr38773.cpp -o pr38773.ll -mllvm
#   llc pr38773.ll -stop-after=tailduplication -simplify-mir 
#
# // pr38773.cpp
# int main() {
#   volatile int foo = 4;
#   int read1 = foo;
#   int read2 = foo;
#
#   switch ((read1 == 4) ? 3 : 1) {
#   case 1:
#     read1 *= read2;
#     break;
#   case 3:
#     read1 /= read2;
#     break;
#   }
#    
#   return read1;
# }
#
# Update the register for the '@llvm.dbg.value' associated with 'read1', when
# the 'copy' is removed, to be the 'source' register.

--- |
  ; ModuleID = 'pr38773.ll'
  source_filename = "pr38773.cpp"
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-pc-linux-gnu"
  
  define dso_local i32 @main() local_unnamed_addr !dbg !7 {
  entry:
    %foo = alloca i32, align 4
    store volatile i32 4, i32* %foo, align 4
    %foo.0.foo.0. = load volatile i32, i32* %foo, align 4
    %foo.0.foo.0.6 = load volatile i32, i32* %foo, align 4
    %cmp = icmp eq i32 %foo.0.foo.0., 4
    br i1 %cmp, label %sw.bb1, label %sw.bb
  
  sw.bb:                                            ; preds = %entry
    %mul = mul nsw i32 %foo.0.foo.0.6, %foo.0.foo.0.
    br label %sw.epilog
  
  sw.bb1:                                           ; preds = %entry
    %div = sdiv i32 4, %foo.0.foo.0.6
    call void @llvm.dbg.value(metadata i32 %div, metadata !12, metadata !DIExpression()), !dbg !13
    br label %sw.epilog
  
  sw.epilog:                                        ; preds = %sw.bb1, %sw.bb
    %read1.0 = phi i32 [ %div, %sw.bb1 ], [ %mul, %sw.bb ]
    call void @llvm.dbg.value(metadata i32 %read1.0, metadata !12, metadata !DIExpression()), !dbg !13
    ret i32 %read1.0
  }
  
  declare void @llvm.dbg.value(metadata, metadata, metadata) #0
  
  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!3, !4, !5}
  !llvm.ident = !{!6}
  
  !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 8.0.0 (trunk 343183)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
  !1 = !DIFile(filename: "pr38773.cpp", 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 = !{!"clang version 8.0.0 (trunk 343183)"}
  !7 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !11)
  !8 = !DISubroutineType(types: !9)
  !9 = !{!10}
  !10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
  !11 = !{!12}
  !12 = !DILocalVariable(name: "read1", scope: !7, file: !1, line: 3, type: !10)
  !13 = !DILocation(line: 3, column: 7, scope: !7)

...
---
name:            main

body:             |
  
  bb.2.sw.bb1:
    liveins: $ecx
  
    $eax = MOV32ri 4
    $edx = MOV32r0 implicit-def dead $eflags
    IDIV32r killed renamable $ecx, implicit-def $eax, implicit-def dead $edx, implicit-def dead $eflags, implicit $eax, implicit killed $edx
    renamable $ecx = COPY $eax
    ; CHECK:        IDIV32r killed renamable $ecx
    ; CHECK-NEXT:   DBG_VALUE $eax, $noreg, !12, !DIExpression(), debug-location !13
    DBG_VALUE $ecx, $noreg, !12, !DIExpression(), debug-location !13
    $eax = COPY killed renamable $ecx
    RET 0, $eax

...
