# 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 !9 {
    %1 = load %struct.A*, %struct.A** @c, align 8, !dbg !14
    %2 = load i32, i32* @a, align 4, !dbg !14
    %3 = sext i32 %2 to i64, !dbg !14
    %4 = getelementptr inbounds %struct.A, %struct.A* %1, i64 %3, !dbg !14
    %5 = ptrtoint %struct.A* %4 to i64, !dbg !14
    %6 = trunc i64 %5 to i32, !dbg !14
    store i32 %6, i32* @d, align 4, !dbg !14
    %7 = getelementptr inbounds %struct.A, %struct.A* %1, i64 %3, i32 2, !dbg !15
    tail call void @llvm.dbg.value(metadata i32* %7, i64 0, metadata !12, metadata !16), !dbg !17
    br label %8, !dbg !18

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

  ; 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}
  !misc = !{!8}

  !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 = !DIExpression(DW_OP_plus_uconst, 8, DW_OP_stack_value)
  !9 = distinct !DISubprogram(name: "fn1", scope: !1, file: !1, line: 7, type: !10, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: true, unit: !0, variables: !11)
  !10 = !DISubroutineType(types: !3)
  !11 = !{!12}
  !12 = !DILocalVariable(name: "e", scope: !9, file: !1, line: 8, type: !13)
  !13 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64)
  !14 = !DILocation(line: 9, scope: !9)
  !15 = !DILocation(line: 10, scope: !9)
  !16 = !DIExpression()
  !17 = !DILocation(line: 8, scope: !9)
  !18 = !DILocation(line: 11, scope: !9)
  !19 = !DILocation(line: 13, scope: !9)
  !20 = !DILocation(line: 14, scope: !9)

...
---
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 = LEA64r %2, 2, %2, 0, _, debug-location !14
    ; CHECK-NEXT: %4 = LEA64r %1, 4, %3, 0, _, debug-location !14
    ; CHECK-NOT: %0 = LEA64r %1, 4, %3, 8, _, debug-location !15
    ; CHECK: DBG_VALUE debug-use %4, debug-use _, !12, !8, debug-location !17

    %1 = MOV64rm %rip, 1, _, @c, _, debug-location !14 :: (dereferenceable load 8 from @c)
    %2 = MOVSX64rm32 %rip, 1, _, @a, _, debug-location !14 :: (dereferenceable load 4 from @a)
    %3 = LEA64r %2, 2, %2, 0, _, debug-location !14
    %4 = LEA64r %1, 4, %3, 0, _, debug-location !14
    %5 = COPY %4.sub_32bit, debug-location !14
    MOV32mr %rip, 1, _, @d, _, killed %5, debug-location !14 :: (store 4 into @d)
    %0 = LEA64r %1, 4, %3, 8, _, debug-location !15
    DBG_VALUE debug-use %0, debug-use _, !12, !16, debug-location !17

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

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

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

...
