Commit 113a06f7 authored by Chris Jackson's avatar Chris Jackson
Browse files

{DebugInfo][LSR] Don't cache dbg.value that are already undef

The SCEV-based salvaging method caches dbg.value information pre-LSR so
that salvaging may be attempted post-LSR. If the dbg.value are already
undef pre-LSR then a salvage attempt would be fruitless, so avoid
caching them.

Reviewed By: StephenTozer

Differential Revision: https://reviews.llvm.org/D107448
parent ec513702
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -6222,6 +6222,9 @@ DbgGatherSalvagableDVI(Loop *L, ScalarEvolution &SE,
      if (!DVI)
        continue;

      if (DVI->isUndef())
        continue;

      if (DVI->hasArgList())
        continue;

+5 −1
Original line number Diff line number Diff line
@@ -2,7 +2,10 @@
;
; Test that LSR SCEV-based salvaging does not crash when translating SCEVs
; that contain integers with binary representations greater than 64-bits. 
; Also show that no salvaging attempt is made for dbg.value that are undef
; pre-LSR.
;
; CHECK: call void @llvm.dbg.value(metadata i64 undef, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_plus_uconst, 228, DW_OP_stack_value))
; CHECK: call void @llvm.dbg.value(metadata i64 %var2, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_plus_uconst, 228, DW_OP_stack_value))


@@ -23,6 +26,7 @@ init:

Label_d0:                                         ; preds = %Label_d0, %init
  %var3 = phi i64 [ %var2, %init ], [ %var4, %Label_d0 ]
  call void @llvm.dbg.value(metadata i64 undef, metadata !11, metadata !DIExpression(DW_OP_plus_uconst, 228, DW_OP_stack_value)), !dbg !12
  call void @llvm.dbg.value(metadata i64 %var2, metadata !11, metadata !DIExpression(DW_OP_plus_uconst, 228, DW_OP_stack_value)), !dbg !12
  %var4 = add i64 %var3, -1
  %var5 = icmp eq i64 %var4, 0