Jeremy Morse d2d9dc8eb4
[DebugInfo][RemoveDIs] Make debugify pass convert to/from RemoveDIs mode (#73251)
Debugify is extremely useful as a testing and debugging tool, and a good
number of LLVM-IR transform tests use it. We need it to support "new"
non-instruction debug-info to get test coverage, but it's not important
enough to completely convert right now (and it'd be a large
undertaking). Thus: convert to/from dbg.value/DPValue mode on entry and
exit of the pass, which gives us the functionality without any further
work. The cost is compile-time, but again this is only happening during
tests.

Tested by: the large set of debugify tests enabled here. Note the
InstCombine test (cast-mul-select.ll) that hasn't been fully enabled:
this is because there's a debug-info sinking piece of code there that
hasn't been instrumented.
2023-11-29 13:19:50 +00:00

43 lines
945 B
LLVM

; RUN: opt -S -passes=debugify,jump-threading < %s | FileCheck %s
; RUN: opt -S -passes=debugify,jump-threading < %s --try-experimental-debuginfo-iterators | FileCheck %s
; Tests Bug 37966
define void @test0(i32 %i) {
; CHECK-LABEL: @test0(
; CHECK: left:
; CHECK: br label %left, !dbg ![[DBG0:[0-9]+]]
entry:
%c0 = icmp ult i32 %i, 5
br i1 %c0, label %left, label %right
left:
br i1 %c0, label %left, label %right ; "line 3" to -debugify
right:
ret void
}
define void @test1(i32 %i, i32 %len) {
; CHECK-LABEL: @test1(
; CHECK: left:
; CHECK: br label %right, !dbg ![[DBG1:[0-9]+]]
entry:
%i.inc = add nuw i32 %i, 1
%c0 = icmp ult i32 %i.inc, %len
br i1 %c0, label %left, label %right
left:
%c1 = icmp ult i32 %i, %len
br i1 %c1, label %right, label %left0 ; "line 9" to -debugify
left0:
ret void
right:
ret void
}
; CHECK-DAG: ![[DBG0]] = !DILocation(line: 3,
; CHECK-DAG: ![[DBG1]] = !DILocation(line: 9,