[PATCH] D42551: [Debug] Add dbg.value intrinsics for PHIs created during LCSSA.

Phabricator via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 25 13:39:26 PST 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL323472: [Debug] Add dbg.value intrinsics for PHIs created during LCSSA. (authored by vedantk, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D42551?vs=131489&id=131505#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D42551

Files:
  llvm/trunk/lib/Transforms/Utils/LCSSA.cpp
  llvm/trunk/test/Transforms/LCSSA/basictest.ll


Index: llvm/trunk/lib/Transforms/Utils/LCSSA.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Utils/LCSSA.cpp
+++ llvm/trunk/lib/Transforms/Utils/LCSSA.cpp
@@ -43,6 +43,7 @@
 #include "llvm/IR/PredIteratorCache.h"
 #include "llvm/Pass.h"
 #include "llvm/Transforms/Scalar.h"
+#include "llvm/Transforms/Utils/Local.h"
 #include "llvm/Transforms/Utils/LoopUtils.h"
 #include "llvm/Transforms/Utils/SSAUpdater.h"
 using namespace llvm;
@@ -214,11 +215,15 @@
         Worklist.push_back(PostProcessPN);
 
     // Keep track of PHI nodes that we want to remove because they did not have
-    // any uses rewritten.
+    // any uses rewritten. If the new PHI is used, store it so that we can
+    // try to propagate dbg.value intrinsics to it.
+    SmallVector<PHINode *, 2> NeedDbgValues;
     for (PHINode *PN : AddedPHIs)
       if (PN->use_empty())
         PHIsToRemove.insert(PN);
-
+      else
+        NeedDbgValues.push_back(PN);
+    insertDebugValuesForPHIs(InstBB, NeedDbgValues);
     Changed = true;
   }
   // Remove PHI nodes that did not have any uses rewritten.
Index: llvm/trunk/test/Transforms/LCSSA/basictest.ll
===================================================================
--- llvm/trunk/test/Transforms/LCSSA/basictest.ll
+++ llvm/trunk/test/Transforms/LCSSA/basictest.ll
@@ -1,5 +1,6 @@
 ; RUN: opt < %s -lcssa -S | FileCheck %s
 ; RUN: opt < %s -passes=lcssa -S | FileCheck %s
+; RUN: opt < %s -debugify -lcssa -S | FileCheck -check-prefix=CHECK2 %s
 
 define void @lcssa(i1 %S2) {
 ; CHECK-LABEL: @lcssa
@@ -18,6 +19,7 @@
 	br i1 %S2, label %loop.exit, label %loop.interior
 loop.exit:		; preds = %post.if
 ; CHECK: %X3.lcssa = phi i32
+; CHECK2: call void @llvm.dbg.value(metadata i32 %X3.lcssa, metadata !11, metadata !DIExpression()), !dbg !19
 ; CHECK: %X4 = add i32 3, %X3.lcssa
 	%X4 = add i32 3, %X3		; <i32> [#uses=0]
 	ret void


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42551.131505.patch
Type: text/x-patch
Size: 1917 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180125/c2f39a63/attachment.bin>


More information about the llvm-commits mailing list