зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
f73c93fea0
Коммит
424a5c63bb
|
@ -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;
|
||||
}
|
Загрузка…
Ссылка в новой задаче