diff options
author | Nathan Sidwell <nathan@acm.org> | 2019-09-05 11:23:48 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2019-09-05 11:23:48 +0000 |
commit | 056f95ec951178a110b57e58a2ee434907de2e38 (patch) | |
tree | a8e6ad6be4a477e263294cb8c34feef8df71253e /libcpp/directives.c | |
parent | e7414688f16c4c9db2dacbc31da683887b4ba1bd (diff) | |
download | gcc-056f95ec951178a110b57e58a2ee434907de2e38.zip gcc-056f95ec951178a110b57e58a2ee434907de2e38.tar.gz gcc-056f95ec951178a110b57e58a2ee434907de2e38.tar.bz2 |
[preprocessor/91639] #includes at EOF
https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00280.html
libcpp/
PR preprocessor/91639
* directives.c (do_include_common): Tell lexer we're a #include.
* files.c (_cpp_stack_file): Lexer will have always incremented.
* internal.h (struct cpp_context): Extend in_directive's
semantics.
* lex.c (_cpp_lex_direct): Increment line for final \n when lexing
for an ISO #include.
* line-map.c (linemap_line_start): Remember if we overflowed.
gcc/testsuite/
PR preprocessor/91639
* c-c++-common/cpp/pr91639.c: New.
* c-c++-common/cpp/pr91639-one.h: New.
* c-c++-common/cpp/pr91639-two.h: New.
From-SVN: r275402
Diffstat (limited to 'libcpp/directives.c')
-rw-r--r-- | libcpp/directives.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libcpp/directives.c b/libcpp/directives.c index 29d21ed..1c6b31e 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -818,6 +818,10 @@ do_include_common (cpp_reader *pfile, enum include_type type) callback can dump comments which follow #include. */ pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments); + /* Tell the lexer this is an include directive -- we want it to + increment the line number even if this is the last line of a file. */ + pfile->state.in_directive = 2; + fname = parse_include (pfile, &angle_brackets, &buf, &location); if (!fname) goto done; |