# RUN: llc -start-after=machine-scheduler %s -o - | FileCheck %s

# XFAIL: *
# See PR41992, the third and final dbg.value disappears after
# LiveDebugVariables.

# C source:
# void escape(int *);
# extern int global;
# void f(int x) {
#   escape(&x);
#   x = 1;
#   global = x;
#   x = 2;
#   escape(&x);
# }

# CHECK-LABEL: f: # @f
# CHECK: movl    %ecx, [[OFF_X:[0-9]+]](%rsp)
# CHECK: #DEBUG_VALUE: f:x <- [DW_OP_plus_uconst [[OFF_X]], DW_OP_deref] $rsp
# CHECK: leaq [[OFF_X]](%rsp), %rsi
# CHECK: callq   escape
# CHECK: #DEBUG_VALUE: f:x <- 1
# CHECK: movl    $1, global(%rip)
# CHECK: #DEBUG_VALUE: f:x <- [DW_OP_plus_uconst [[OFF_X]], DW_OP_deref] $rsp
# CHECK: movl    $2, [[OFF_X]](%rsp)
# CHECK: callq   escape
# CHECK: retq


--- |
  ; ModuleID = '<stdin>'
  source_filename = "dse.c"
  target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-pc-windows-msvc19.0.24215"
  
  @global = external global i32, align 4
  
  ; Function Attrs: nounwind readnone speculatable
  declare void @llvm.dbg.value(metadata, metadata, metadata) #0
  
  declare void @escape(i32*)
  
  ; Function Attrs: nounwind uwtable
  define void @f(i32 %x) #1 !dbg !8 {
  entry:
    %x.addr = alloca i32, align 4
    store i32 %x, i32* %x.addr, align 4
    call void @llvm.dbg.value(metadata i32* %x.addr, metadata !13, metadata !DIExpression(DW_OP_deref)), !dbg !14
    call void @escape(i32* %x.addr), !dbg !15
    call void @llvm.dbg.value(metadata i32 1, metadata !13, metadata !DIExpression()), !dbg !16
    store i32 1, i32* @global, align 4, !dbg !17
    call void @llvm.dbg.value(metadata i32* %x.addr, metadata !13, metadata !DIExpression(DW_OP_deref)), !dbg !18
    store i32 2, i32* %x.addr, align 4, !dbg !18
    call void @escape(i32* %x.addr), !dbg !19
    ret void, !dbg !20
  }
  
  ; Function Attrs: nounwind
  declare void @llvm.stackprotector(i8*, i8**) #2
  
  attributes #0 = { nounwind readnone speculatable }
  attributes #1 = { nounwind uwtable }
  attributes #2 = { nounwind }
  
  !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 6.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
  !1 = !DIFile(filename: "dse.c", directory: "C:\5Csrc\5Cllvm-project\5Cbuild")
  !2 = !{}
  !3 = !{i32 2, !"Dwarf Version", i32 4}
  !4 = !{i32 2, !"Debug Info Version", i32 3}
  !5 = !{i32 1, !"wchar_size", i32 2}
  !6 = !{i32 7, !"PIC Level", i32 2}
  !7 = !{!"clang version 6.0.0 "}
  !8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 3, type: !9, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
  !9 = !DISubroutineType(types: !10)
  !10 = !{null, !11}
  !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
  !12 = !{!13}
  !13 = !DILocalVariable(name: "x", arg: 1, scope: !8, file: !1, line: 3, type: !11)
  !14 = !DILocation(line: 3, column: 12, scope: !8)
  !15 = !DILocation(line: 4, column: 3, scope: !8)
  !16 = !DILocation(line: 5, column: 5, scope: !8)
  !17 = !DILocation(line: 6, column: 10, scope: !8)
  !18 = !DILocation(line: 7, column: 5, scope: !8)
  !19 = !DILocation(line: 8, column: 3, scope: !8)
  !20 = !DILocation(line: 9, column: 1, scope: !8)

...
---
name:            f
alignment:       16
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:       
  - { id: 0, class: gr32, preferred-register: '' }
  - { id: 1, class: gr64, preferred-register: '' }
liveins:         
  - { reg: '$ecx', virtual-reg: '%0' }
frameInfo:       
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    8
  adjustsStack:    false
  hasCalls:        true
  stackProtector:  ''
  maxCallFrameSize: 4294967295
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
  savePoint:       ''
  restorePoint:    ''
fixedStack:      
stack:           
  - { id: 0, name: x.addr, type: default, offset: 0, size: 4, alignment: 4, 
      stack-id: default, callee-saved-register: '', debug-info-variable: '',
      debug-info-expression: '', debug-info-location: '' }
constants:       
body:             |
  bb.0.entry:
    liveins: $ecx
  
    %0 = COPY $ecx
    MOV32mr %stack.0.x.addr, 1, _, 0, _, %0 :: (store 4 into %ir.x.addr)
    DBG_VALUE %stack.0.x.addr, $noreg, !13, !DIExpression(DW_OP_deref), debug-location !14
    ADJCALLSTACKDOWN64 32, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !15
    %1 = LEA64r %stack.0.x.addr, 1, _, 0, _
    $rcx = COPY %1, debug-location !15
    CALL64pcrel32 @escape, csr_win64, implicit $rsp, implicit $ssp, implicit $rcx, implicit-def $rsp, implicit-def $ssp, debug-location !15
    ADJCALLSTACKUP64 32, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !15
    DBG_VALUE 1, _, !13, !DIExpression(), debug-location !16
    MOV32mi $rip, 1, _, @global, _, 1, debug-location !17 :: (store 4 into @global)
    DBG_VALUE %stack.0.x.addr, $noreg, !13, !DIExpression(DW_OP_deref), debug-location !18
    MOV32mi %stack.0.x.addr, 1, _, 0, _, 2, debug-location !18 :: (store 4 into %ir.x.addr)
    ADJCALLSTACKDOWN64 32, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !19
    $rcx = COPY %1, debug-location !19
    CALL64pcrel32 @escape, csr_win64, implicit $rsp, implicit $ssp, implicit $rcx, implicit-def $rsp, implicit-def $ssp, debug-location !19
    ADJCALLSTACKUP64 32, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !19
    RET 0, debug-location !20

...
