[PATCH] D54019: [DebugInfo][InstMerge] Fix -debugify for phi node created by -mldst-motion

Jordan Rupprecht via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 2 11:28:00 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL346027: [DebugInfo][InstMerge] Fix -debugify for phi node created by -mldst-motion (authored by rupprecht, committed by ).

Repository:
  rL LLVM

https://reviews.llvm.org/D54019

Files:
  llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
  llvm/trunk/test/Transforms/InstMerge/st_sink_check_debug.ll


Index: llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
+++ llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp
@@ -211,6 +211,7 @@
 
   auto *NewPN = PHINode::Create(Opd1->getType(), 2, Opd2->getName() + ".sink",
                                 &BB->front());
+  NewPN->applyMergedLocation(S0->getDebugLoc(), S1->getDebugLoc());
   NewPN->addIncoming(Opd1, S0->getParent());
   NewPN->addIncoming(Opd2, S1->getParent());
   return NewPN;
Index: llvm/trunk/test/Transforms/InstMerge/st_sink_check_debug.ll
===================================================================
--- llvm/trunk/test/Transforms/InstMerge/st_sink_check_debug.ll
+++ llvm/trunk/test/Transforms/InstMerge/st_sink_check_debug.ll
@@ -0,0 +1,32 @@
+; RUN: opt < %s -S -debugify -mldst-motion -o - | FileCheck %s
+
+%struct.S = type { i32 }
+
+define dso_local void @foo(%struct.S* %this, i32 %bar) {
+entry:
+  %this.addr = alloca %struct.S*, align 8
+  %bar.addr = alloca i32, align 4
+  store %struct.S* %this, %struct.S** %this.addr, align 8
+  store i32 %bar, i32* %bar.addr, align 4
+  %this1 = load %struct.S*, %struct.S** %this.addr, align 8
+  %0 = load i32, i32* %bar.addr, align 4
+  %tobool = icmp ne i32 %0, 0
+  br i1 %tobool, label %if.then, label %if.else
+
+if.then:                                          ; preds = %entry
+  %foo = getelementptr inbounds %struct.S, %struct.S* %this1, i32 0, i32 0
+  store i32 1, i32* %foo, align 4
+  br label %if.end
+
+if.else:                                          ; preds = %entry
+  %foo2 = getelementptr inbounds %struct.S, %struct.S* %this1, i32 0, i32 0
+  store i32 0, i32* %foo2, align 4
+  br label %if.end
+
+if.end:                                           ; preds = %if.else, %if.then
+  ret void
+}
+
+; CHECK:      @foo
+; CHECK:      if.end: ; preds = %if.else, %if.then
+; CHECK-NEXT:   %.sink = phi {{.*}} !dbg


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54019.172407.patch
Type: text/x-patch
Size: 2008 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181102/19851ac5/attachment.bin>


More information about the llvm-commits mailing list