llvm/llvm/test/DebugInfo/salvage-cast-debug-info.ll

; RUN: opt %s -passes=debugify,early-cse -earlycse-debug-hash -S | FileCheck %s
; RUN: opt --experimental-debuginfo-iterators=false %s -passes=debugify,early-cse -earlycse-debug-hash -S | FileCheck %s
define i32 @foo(i64 %nose, i32 %more) {
; CHECK-LABEL: @foo(
; CHECK: #dbg_value(i64 %nose, [[V1:![0-9]+]], !DIExpression(DW_OP_LLVM_convert, 64, DW_ATE_unsigned, DW_OP_LLVM_convert, 32, DW_ATE_unsigned
; CHECK: #dbg_value(i64 %nose.shift, [[V2:![0-9]+]]
; CHECK: #dbg_value(i64 %nose.shift, [[V3:![0-9]+]], !DIExpression(DW_OP_LLVM_convert, 64, DW_ATE_unsigned, DW_OP_LLVM_convert, 32, DW_ATE_unsigned

entry:
  %nose.trunc = trunc i64 %nose to i32
  %nose.shift = lshr i64 %nose, 32
  %nose.trunc.2 = trunc i64 %nose.shift to i32
  %add = add nsw i32 %more, 1
  ret i32 %add
}

!llvm.module.flags = !{!0, !1}
!llvm.ident = !{!2}

!0 = !{i32 1, !"wchar_size", i32 2}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{!"clang version 10.0.0 "}

; CHECK: [[V1]] = !DILocalVariable(
; CHECK: [[V2]] = !DILocalVariable(
; CHECK: [[V3]] = !DILocalVariable(