# RUN: llc -mtriple=x86_64-unknown-unknown -start-after=peephole-opt -stop-before=detect-dead-lanes -o - %s | FileCheck %s

# Test that the optimize LEA pass can remove a redundant LEA even when it is
# also used by a DBG_VALUE. Check that the uses of the replaced LEA are updated
# correctly.

--- |
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

  %struct.A = type { i32, i32, i32 }

  @c = common local_unnamed_addr global %struct.A* null, align 8
  @a = common local_unnamed_addr global i32 0, align 4
  @d = common local_unnamed_addr global i32 0, align 4
  @b = common local_unnamed_addr global i32 0, align 4

  define i32 @fn1() local_unnamed_addr !dbg !8 {
    %1 = load %struct.A*, %struct.A** @c, align 8, !dbg !13
    %2 = load i32, i32* @a, align 4, !dbg !13
    %3 = sext i32 %2 to i64, !dbg !13
    %4 = getelementptr inbounds %struct.A, %struct.A* %1, i64 %3, !dbg !13
    %5 = ptrtoint %struct.A* %4 to i64, !dbg !13
    %6 = trunc i64 %5 to i32, !dbg !13
    store i32 %6, i32* @d, align 4, !dbg !13
    %7 = getelementptr inbounds %struct.A, %struct.A* %1, i64 %3, i32 2, !dbg !14
    tail call void @llvm.dbg.value(metadata i32* %7, i64 0, metadata !11, metadata !DIExpression()), !dbg !15
    br label %8, !dbg !16

  ; <label>:8:                                      ; preds = %8, %0
    %9 = load i32, i32* %7, align 4, !dbg !17
    store i32 %9, i32* @d, align 4, !dbg !17
    br label %8, !dbg !18
  }

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

  attributes #0 = { nounwind readnone }

  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!5, !6, !7}

  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, globals: !2)
  !1 = !DIFile(filename: "test.c", directory: "")
  !2 = !{}
  !3 = !{!4}
  !4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
  !5 = !{i32 2, !"Dwarf Version", i32 4}
  !6 = !{i32 2, !"Debug Info Version", i32 3}
  !7 = !{i32 1, !"PIC Level", i32 2}
  !8 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 7, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, retainedNodes: !10)
  !9 = !DISubroutineType(types: !3)
  !10 = !{!11}
  !11 = !DILocalVariable(name: "e", scope: !8, file: !1, line: 8, type: !12)
  !12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64)
  !13 = !DILocation(line: 9, scope: !8)
  !14 = !DILocation(line: 10, scope: !8)
  !15 = !DILocation(line: 8, scope: !8)
  !16 = !DILocation(line: 11, scope: !8)
  !17 = !DILocation(line: 13, scope: !8)
  !18 = !DILocation(line: 14, scope: !8)

...
---
name:            fn1
alignment:       4
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: gr64 }
  - { id: 1, class: gr64 }
  - { id: 2, class: gr64_nosp }
  - { id: 3, class: gr64_nosp }
  - { id: 4, class: gr64 }
  - { id: 5, class: gr32 }
  - { id: 6, class: gr32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    successors: %bb.1(0x80000000)

    ; CHECK: %3:gr64_nosp = LEA64r %2, 2, %2, 0, $noreg, debug-location !13
    ; CHECK-NEXT: %4:gr64 = LEA64r %1, 4, %3, 0, $noreg, debug-location !13
    ; CHECK-NOT: %0:gr64 = LEA64r %1, 4, %3, 8, $noreg, debug-location !14
    ; CHECK: DBG_VALUE %4, $noreg, !11, !DIExpression(DW_OP_plus_uconst, 8, DW_OP_stack_value), debug-location !15

    %1 = MOV64rm $rip, 1, $noreg, @c, $noreg, debug-location !13 :: (dereferenceable load 8 from @c)
    %2 = MOVSX64rm32 $rip, 1, $noreg, @a, $noreg, debug-location !13 :: (dereferenceable load 4 from @a)
    %3 = LEA64r %2, 2, %2, 0, $noreg, debug-location !13
    %4 = LEA64r %1, 4, %3, 0, $noreg, debug-location !13
    %5 = COPY %4.sub_32bit, debug-location !13
    MOV32mr $rip, 1, $noreg, @d, $noreg, killed %5, debug-location !13 :: (store 4 into @d)
    %0 = LEA64r %1, 4, %3, 8, $noreg, debug-location !14
    DBG_VALUE %0, $noreg, !11, !DIExpression(), debug-location !15

    ; CHECK-LABEL: bb.1 (%ir-block.8):
    ; CHECK: %6:gr32 = MOV32rm %4, 1, $noreg, 8, $noreg, debug-location !17 :: (load 4 from %ir.7)

  bb.1 (%ir-block.8):
    successors: %bb.1(0x80000000)

    %6 = MOV32rm %0, 1, $noreg, 0, $noreg, debug-location !17 :: (load 4 from %ir.7)
    MOV32mr $rip, 1, $noreg, @d, $noreg, killed %6, debug-location !17 :: (store 4 into @d)
    JMP_1 %bb.1, debug-location !18

...
