diff options
author | Lubos Lunak <l.lunak@centrum.cz> | 2014-05-01 12:45:08 +0000 |
---|---|---|
committer | Lubos Lunak <l.lunak@centrum.cz> | 2014-05-01 12:45:08 +0000 |
commit | c5f2bca86615322f0295f0cf448dfc350f6e7d1e (patch) | |
tree | 01c0858f2ac0e2dce845429c996fa3cabd525749 | |
parent | adcf88eeda3e08ad0dd506adb6d0ad6401863f5b (diff) | |
download | bcm5719-llvm-c5f2bca86615322f0295f0cf448dfc350f6e7d1e.tar.gz bcm5719-llvm-c5f2bca86615322f0295f0cf448dfc350f6e7d1e.zip |
write a line marker right before adding included file
Enclosing the original #include directive inside #if 0 adds lines,
so warning/errors messages would have the line number off in
"In file included from <file>:<line>:", so add line marker to fix this.
llvm-svn: 207756
-rw-r--r-- | clang/lib/Rewrite/Frontend/InclusionRewriter.cpp | 1 | ||||
-rw-r--r-- | clang/test/Frontend/Inputs/rewrite-includes-messages.h | 4 | ||||
-rw-r--r-- | clang/test/Frontend/rewrite-includes-messages.c | 8 | ||||
-rw-r--r-- | clang/test/Frontend/rewrite-includes-missing.c | 1 | ||||
-rw-r--r-- | clang/test/Frontend/rewrite-includes-modules.c | 2 | ||||
-rw-r--r-- | clang/test/Frontend/rewrite-includes.c | 10 |
6 files changed, 26 insertions, 0 deletions
diff --git a/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp b/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp index 058960d3e43..70b299213f3 100644 --- a/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp +++ b/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp @@ -383,6 +383,7 @@ bool InclusionRewriter::Process(FileID FileId, case tok::pp_import: { CommentOutDirective(RawLex, HashToken, FromFile, EOL, NextToWrite, Line); + WriteLineInfo(FileName, Line - 1, FileType, EOL, ""); StringRef LineInfoExtra; if (const FileChange *Change = FindFileChangeLocation( HashToken.getLocation())) { diff --git a/clang/test/Frontend/Inputs/rewrite-includes-messages.h b/clang/test/Frontend/Inputs/rewrite-includes-messages.h new file mode 100644 index 00000000000..e5f0eb25147 --- /dev/null +++ b/clang/test/Frontend/Inputs/rewrite-includes-messages.h @@ -0,0 +1,4 @@ +void f() +{ + int unused_variable; +} diff --git a/clang/test/Frontend/rewrite-includes-messages.c b/clang/test/Frontend/rewrite-includes-messages.c new file mode 100644 index 00000000000..37b970669f1 --- /dev/null +++ b/clang/test/Frontend/rewrite-includes-messages.c @@ -0,0 +1,8 @@ +// RUN: %clang -E -frewrite-includes %s -I%S/Inputs/ | %clang -Wall -Wunused-macros -x c -c - 2> %t.1 +// RUN: %clang -I%S/Inputs/ -Wall -Wunused-macros -c %s 2> %t.2 +// RUN: cmp -s %t.1 %t.2 +// expected-no-diagnostics +// REQUIRES: shell + +#include "rewrite-includes-messages.h" +#define UNUSED_MACRO diff --git a/clang/test/Frontend/rewrite-includes-missing.c b/clang/test/Frontend/rewrite-includes-missing.c index da4e209bc1f..25a59a03217 100644 --- a/clang/test/Frontend/rewrite-includes-missing.c +++ b/clang/test/Frontend/rewrite-includes-missing.c @@ -4,4 +4,5 @@ // CHECK: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "foobar.h" // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 3 "{{.*}}rewrite-includes-missing.c"{{$}} // CHECK-NEXT: {{^}}# 4 "{{.*}}rewrite-includes-missing.c"{{$}} diff --git a/clang/test/Frontend/rewrite-includes-modules.c b/clang/test/Frontend/rewrite-includes-modules.c index 783a96739ae..58d7809909d 100644 --- a/clang/test/Frontend/rewrite-includes-modules.c +++ b/clang/test/Frontend/rewrite-includes-modules.c @@ -10,11 +10,13 @@ int foo(); // CHECK-NEXT: #if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: #include <Module/Module.h>{{$}} // CHECK-NEXT: #endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: # 5 "{{.*[/\\]}}rewrite-includes-modules.c"{{$}} // CHECK-NEXT: @import Module; /* clang -frewrite-includes: implicit import */{{$}} // CHECK-NEXT: # 6 "{{.*[/\\]}}rewrite-includes-modules.c"{{$}} // CHECK-NEXT: int foo();{{$}} // CHECK-NEXT: #if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: #include <Module/Module.h>{{$}} // CHECK-NEXT: #endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: # 7 "{{.*[/\\]}}rewrite-includes-modules.c"{{$}} // CHECK-NEXT: @import Module; /* clang -frewrite-includes: implicit import */{{$}} // CHECK-NEXT: # 8 "{{.*[/\\]}}rewrite-includes-modules.c"{{$}} diff --git a/clang/test/Frontend/rewrite-includes.c b/clang/test/Frontend/rewrite-includes.c index 2158dd0e8ea..8b0a86b2e10 100644 --- a/clang/test/Frontend/rewrite-includes.c +++ b/clang/test/Frontend/rewrite-includes.c @@ -27,6 +27,7 @@ A(1,2) // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 6 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 1{{$}} // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#pragma clang system_header{{$}} @@ -36,6 +37,7 @@ A(1,2) // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 3 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 3{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes2.h" 1 3{{$}} // CHECK-NEXT: {{^}}included_line2{{$}} // CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 2 3{{$}} @@ -45,6 +47,7 @@ A(1,2) // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include HEADER{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 9 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes3.h" 1{{$}} // CHECK-NEXT: {{^}}included_line3{{$}} // CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}} @@ -53,6 +56,7 @@ A(1,2) // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 11 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}#endif{{$}} // CHECK-NEXT: {{^}}# 13 "{{.*}}rewrite-includes.c"{{$}} @@ -61,12 +65,14 @@ A(1,2) // CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}} // CHECK-NEXT: {{^}} {{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes5.h" 1{{$}} // CHECK-NEXT: {{^}}included_line5{{$}} // CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}} // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes6.h" 1{{$}} // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#pragma once{{$}} @@ -79,10 +85,12 @@ A(1,2) // CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}} // CHECK-NEXT: {{^}} continues */{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes7.h" 1{{$}} // CHECK-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}} // CHECK-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}} @@ -93,10 +101,12 @@ A(1,2) // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 22 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}#include "rewrite-includes8.h"{{$}} // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} +// CHECK-NEXT: {{^}}# 22 "{{.*}}rewrite-includes.c"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes8.h" 1{{$}} // CHECK-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes8.h>)*/{{$}} // CHECK-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}} |