forked from OSchip/llvm-project
[frontend] -frewrite-includes: if there was no inclusion, don't add lineinfo that indicates return from another file.
llvm-svn: 179143
This commit is contained in:
parent
82a2a3d8f5
commit
953ef33f59
|
@ -253,7 +253,7 @@ bool InclusionRewriter::Process(FileID FileId,
|
||||||
bool Invalid;
|
bool Invalid;
|
||||||
const MemoryBuffer &FromFile = *SM.getBuffer(FileId, &Invalid);
|
const MemoryBuffer &FromFile = *SM.getBuffer(FileId, &Invalid);
|
||||||
if (Invalid) // invalid inclusion
|
if (Invalid) // invalid inclusion
|
||||||
return true;
|
return false;
|
||||||
const char *FileName = FromFile.getBufferIdentifier();
|
const char *FileName = FromFile.getBufferIdentifier();
|
||||||
Lexer RawLex(FileId, &FromFile, PP.getSourceManager(), PP.getLangOpts());
|
Lexer RawLex(FileId, &FromFile, PP.getSourceManager(), PP.getLangOpts());
|
||||||
RawLex.SetCommentRetentionState(false);
|
RawLex.SetCommentRetentionState(false);
|
||||||
|
@ -264,7 +264,7 @@ bool InclusionRewriter::Process(FileID FileId,
|
||||||
WriteLineInfo(FileName, 1, FileType, EOL, " 1");
|
WriteLineInfo(FileName, 1, FileType, EOL, " 1");
|
||||||
|
|
||||||
if (SM.getFileIDSize(FileId) == 0)
|
if (SM.getFileIDSize(FileId) == 0)
|
||||||
return true;
|
return false;
|
||||||
|
|
||||||
// The next byte to be copied from the source file
|
// The next byte to be copied from the source file
|
||||||
unsigned NextToWrite = 0;
|
unsigned NextToWrite = 0;
|
||||||
|
@ -292,12 +292,17 @@ bool InclusionRewriter::Process(FileID FileId,
|
||||||
if (const FileChange *Change = FindFileChangeLocation(
|
if (const FileChange *Change = FindFileChangeLocation(
|
||||||
HashToken.getLocation())) {
|
HashToken.getLocation())) {
|
||||||
// now include and recursively process the file
|
// now include and recursively process the file
|
||||||
if (Process(Change->Id, Change->FileType))
|
if (Process(Change->Id, Change->FileType)) {
|
||||||
// and set lineinfo back to this file, if the nested one was
|
// and set lineinfo back to this file, if the nested one was
|
||||||
// actually included
|
// actually included
|
||||||
// `2' indicates returning to a file (after having included
|
// `2' indicates returning to a file (after having included
|
||||||
// another file.
|
// another file.
|
||||||
WriteLineInfo(FileName, Line, FileType, EOL, " 2");
|
WriteLineInfo(FileName, Line, FileType, EOL, " 2");
|
||||||
|
} else {
|
||||||
|
// fix up lineinfo (since commented out directive changed line
|
||||||
|
// numbers).
|
||||||
|
WriteLineInfo(FileName, Line, FileType, EOL);
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
// fix up lineinfo (since commented out directive changed line
|
// fix up lineinfo (since commented out directive changed line
|
||||||
// numbers) for inclusions that were skipped due to header guards
|
// numbers) for inclusions that were skipped due to header guards
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
// CHECK: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
|
// CHECK: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
|
||||||
// CHECK-NEXT: {{^}}#include "foobar.h"
|
// CHECK-NEXT: {{^}}#include "foobar.h"
|
||||||
// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
|
// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
|
||||||
// CHECK-NEXT: {{^}}# 4 "{{.*}}rewrite-includes-missing.c" 2{{$}}
|
// CHECK-NEXT: {{^}}# 4 "{{.*}}rewrite-includes-missing.c"{{$}}
|
||||||
|
|
Loading…
Reference in New Issue