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
This commit is contained in:
Devang Patel 2010-09-15 20:50:40 +00:00
Родитель f73c93fea0
Коммит 424a5c63bb
2 изменённых файлов: 17 добавлений и 1 удалений

Просмотреть файл

@ -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<const char *>::iterator I = LineDirectiveFiles.begin(),
E = LineDirectiveFiles.end(); I != E; ++I)
if (!strcmp(PPLoc.getFilename(), *I)) {
if (!strcmp(PCLoc.getFilename(), *I)) {
SeenThisFile = true;
break;
}

Просмотреть файл

@ -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;
}