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

# 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]]] [%RSP+0]
# 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]]] [%RSP+0]
# 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()), !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()), !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, variables: !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:       4
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: 0, callee-saved-register: '', di-variable: '', di-expression: '', 
      di-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, 0, !13, !DIExpression(), debug-location !14
    ADJCALLSTACKDOWN64 32, 0, 0, implicit-def dead %rsp, implicit-def dead %eflags, implicit %rsp, debug-location !15
    %1 = LEA64r %stack.0.x.addr, 1, _, 0, _
    %rcx = COPY %1, debug-location !15
    CALL64pcrel32 @escape, csr_win64, implicit %rsp, implicit %rcx, implicit-def %rsp, debug-location !15
    ADJCALLSTACKUP64 32, 0, implicit-def dead %rsp, implicit-def dead %eflags, implicit %rsp, debug-location !15
    DBG_VALUE 1, debug-use _, !13, !DIExpression(), debug-location !16
    MOV32mi %rip, 1, _, @global, _, 1, debug-location !17 :: (store 4 into @global)
    DBG_VALUE %stack.0.x.addr, 0, !13, !DIExpression(), 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 %rsp, debug-location !19
    %rcx = COPY %1, debug-location !19
    CALL64pcrel32 @escape, csr_win64, implicit %rsp, implicit %rcx, implicit-def %rsp, debug-location !19
    ADJCALLSTACKUP64 32, 0, implicit-def dead %rsp, implicit-def dead %eflags, implicit %rsp, debug-location !19
    RET 0, debug-location !20

...
