From: Eric Christopher Date: Fri, 9 Sep 2011 21:53:04 +0000 (+0000) Subject: Carry the debug information from single exit unified return block X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=acae01124151392a842bd6c37bd01b1ad56d6b4d;p=clang Carry the debug information from single exit unified return block along with the new insert point. Fixes PR10829 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139416 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CodeGenFunction.cpp b/lib/CodeGen/CodeGenFunction.cpp index 7e8415bb26..a16f10e654 100644 --- a/lib/CodeGen/CodeGenFunction.cpp +++ b/lib/CodeGen/CodeGenFunction.cpp @@ -116,7 +116,8 @@ void CodeGenFunction::EmitReturnBlock() { dyn_cast(*ReturnBlock.getBlock()->use_begin()); if (BI && BI->isUnconditional() && BI->getSuccessor(0) == ReturnBlock.getBlock()) { - // Reset insertion point and delete the branch. + // Reset insertion point, including debug location, and delete the branch. + Builder.SetCurrentDebugLocation(BI->getDebugLoc()); Builder.SetInsertPoint(BI->getParent()); BI->eraseFromParent(); delete ReturnBlock.getBlock(); diff --git a/test/CodeGen/debug-info-line3.c b/test/CodeGen/debug-info-line3.c new file mode 100644 index 0000000000..645ffb9e74 --- /dev/null +++ b/test/CodeGen/debug-info-line3.c @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -g -S -emit-llvm %s -o - | FileCheck %s + +void func(char c, char* d) +{ + *d = c + 1; + return; + + + + + + +} + +// CHECK: ret void, !dbg !19 +// CHECK: !19 = metadata !{i32 6,