From c22c96db4959891c41a1ec2cbda1d6b21e99065c Mon Sep 17 00:00:00 2001 From: Anastasis Grammenos Date: Tue, 31 Jul 2018 14:54:52 +0000 Subject: [PATCH] [DebugInfo][LCSSA] Preserve debug location in lcssa phis Summary: When inserting lcssa Phi Nodes in the exit block mak sure to preserve the original instructions DL. Reviewers: vsk Subscribers: JDevlieghere, llvm-commits Differential Revision: https://reviews.llvm.org/D50009 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338391 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/LCSSA.cpp | 3 ++- test/Transforms/LCSSA/basictest.ll | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp index 31834afa2b3..a1f8e7484bc 100644 --- a/lib/Transforms/Utils/LCSSA.cpp +++ b/lib/Transforms/Utils/LCSSA.cpp @@ -144,7 +144,8 @@ bool llvm::formLCSSAForInstructions(SmallVectorImpl &Worklist, PHINode *PN = PHINode::Create(I->getType(), PredCache.size(ExitBB), I->getName() + ".lcssa", &ExitBB->front()); - + // Get the debug location from the original instruction. + PN->setDebugLoc(I->getDebugLoc()); // Add inputs from inside the loop for this PHI. for (BasicBlock *Pred : PredCache.get(ExitBB)) { PN->addIncoming(I, Pred); diff --git a/test/Transforms/LCSSA/basictest.ll b/test/Transforms/LCSSA/basictest.ll index 910e6f8f607..7ca552039b6 100644 --- a/test/Transforms/LCSSA/basictest.ll +++ b/test/Transforms/LCSSA/basictest.ll @@ -1,6 +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 +; RUN: opt < %s -debugify -lcssa -S | FileCheck -check-prefix=DEBUGIFY %s define void @lcssa(i1 %S2) { ; CHECK-LABEL: @lcssa @@ -19,9 +19,12 @@ post.if: ; preds = %if.false, %if.true 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 +; DEBUGIFY: %X3.lcssa = phi i32 {{.*}}, !dbg ![[DbgLoc:[0-9]+]] +; DEBUGIFY-NEXT: call void @llvm.dbg.value(metadata i32 %X3.lcssa ; CHECK: %X4 = add i32 3, %X3.lcssa %X4 = add i32 3, %X3 ; [#uses=0] ret void } +; Make sure the lcssa phi has %X3's debug location +; DEBUGIFY: ![[DbgLoc]] = !DILocation(line: 7 -- 2.50.1