[TRE][DebugInfo] Preserve Debug Location in new branch instruction

There are two branch instructions created
so the new test covers them both.

Differential Revision: https://reviews.llvm.org/D50263

llvm-svn: 338917
This commit is contained in:
Anastasis Grammenos 2018-08-03 20:27:13 +00:00
parent bde9cf942b
commit 4dfe279e00
2 changed files with 18 additions and 1 deletions

View File

@ -566,7 +566,8 @@ static bool eliminateRecursiveTailCall(CallInst *CI, ReturnInst *Ret,
BasicBlock *NewEntry = BasicBlock::Create(F->getContext(), "", F, OldEntry);
NewEntry->takeName(OldEntry);
OldEntry->setName("tailrecurse");
BranchInst::Create(OldEntry, NewEntry);
BranchInst *BI = BranchInst::Create(OldEntry, NewEntry);
BI->setDebugLoc(CI->getDebugLoc());
// If this tail call is marked 'tail' and if there are any allocas in the
// entry block, move them up to the new entry block.

View File

@ -0,0 +1,16 @@
; RUN: opt < %s -debugify -tailcallelim -S | FileCheck %s
define void @foo() {
entry:
; CHECK-LABEL: entry:
; CHECK: br label %tailrecurse, !dbg ![[DbgLoc:[0-9]+]]
call void @foo() ;; line 1
ret void
; CHECK-LABEL: tailrecurse:
; CHECK: br label %tailrecurse, !dbg ![[DbgLoc]]
}
;; Make sure tailrecurse has the call instruction's DL
; CHECK: ![[DbgLoc]] = !DILocation(line: 1