From: Devang Patel Date: Wed, 15 Sep 2010 20:50:40 +0000 (+0000) Subject: While handling change of file, check if _current_ file is already seen or not. If... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=424a5c63bb337926f3a1bfa20cc9f7c944aacbb0;p=clang While handling change of file, check if _current_ file is already seen or not. If current file is seen then it indicates that end of previous file's lexical scope. This fixes radar 8396182. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114018 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 406db886ee..24542fd5b8 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -1570,9 +1570,10 @@ void CGDebugInfo::UpdateLineDirectiveRegion(CGBuilderTy &Builder) { && "error handling #line regions!"); bool SeenThisFile = false; + // Chek if current file is already seen earlier. for(std::vector::iterator I = LineDirectiveFiles.begin(), E = LineDirectiveFiles.end(); I != E; ++I) - if (!strcmp(PPLoc.getFilename(), *I)) { + if (!strcmp(PCLoc.getFilename(), *I)) { SeenThisFile = true; break; } diff --git a/test/CodeGen/debug-info-line.c b/test/CodeGen/debug-info-line.c new file mode 100644 index 0000000000..b255d90b34 --- /dev/null +++ b/test/CodeGen/debug-info-line.c @@ -0,0 +1,15 @@ +// RUN: %clang -emit-llvm -S -g %s -o %t +// RUN: grep DW_TAG_lexical_block %t | count 3 + +// Radar 8396182 +// There are three lexical blocks in this test case. + +int foo() { + int i = 1; +# 4 "m.c" +# 1 "m.h" 1 + int j = 2; +# 2 "m.h" +# 5 "m.c" 2 + return i + j; +}