[PATCH] D59206: [SimplifyCFG] Retain debug info when threading jumps with critical edges

Jeremy Morse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 11 09:25:59 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL355833: [SimplifyCFG] Retain debug info when threading jumps with critical edges (authored by jmorse, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D59206?vs=190064&id=190104#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D59206/new/

https://reviews.llvm.org/D59206

Files:
  llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
  llvm/trunk/test/Transforms/SimplifyCFG/debug-info-thread-phi.ll


Index: llvm/trunk/test/Transforms/SimplifyCFG/debug-info-thread-phi.ll
===================================================================
--- llvm/trunk/test/Transforms/SimplifyCFG/debug-info-thread-phi.ll
+++ llvm/trunk/test/Transforms/SimplifyCFG/debug-info-thread-phi.ll
@@ -0,0 +1,38 @@
+; RUN: opt %s -debugify -simplifycfg -S | FileCheck %s
+; Tests Bug 37966
+
+define void @bar(i32 %aa) {
+; CHECK-LABEL: @bar(
+; CHECK: if.end.1.critedge:
+; CHECK: br label %if.end.1, !dbg ![[DBG:[0-9]+]]
+entry:
+  %aa.addr = alloca i32, align 4
+  %bb = alloca i32, align 4
+  store i32 %aa, i32* %aa.addr, align 4
+  store i32 0, i32* %bb, align 4
+  %tobool = icmp ne i32 %aa, 0
+  br i1 %tobool, label %if.then, label %if.end
+
+if.then:                                          ; preds = %entry
+  call void @foo()
+  br label %if.end
+
+if.end:                                           ; preds = %if.then, %entry
+  store i32 1, i32* %bb, align 4
+  br i1 %tobool, label %if.then.1, label %if.end.1
+
+if.then.1:                                        ; preds = %if.end
+  call void @foo()
+  br label %if.end.1
+
+if.end.1:                                         ; preds = %if.then.1, %if.end
+  store i32 2, i32* %bb, align 4
+  br label %for.end
+
+for.end:                                          ; preds = %if.end.1
+  ret void
+}
+
+declare void @foo()
+
+; CHECK: ![[DBG]] = !DILocation(
Index: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -2209,7 +2209,8 @@
     BasicBlock *EdgeBB =
         BasicBlock::Create(BB->getContext(), RealDest->getName() + ".critedge",
                            RealDest->getParent(), RealDest);
-    BranchInst::Create(RealDest, EdgeBB);
+    BranchInst *CritEdgeBranch = BranchInst::Create(RealDest, EdgeBB);
+    CritEdgeBranch->setDebugLoc(BI->getDebugLoc());
 
     // Update PHI nodes.
     AddPredecessorToBlock(RealDest, EdgeBB, BB);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59206.190104.patch
Type: text/x-patch
Size: 2064 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190311/43e50d8e/attachment.bin>


More information about the llvm-commits mailing list