summaryrefslogtreecommitdiff
path: root/libcpp/line-map.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2019-09-05 11:23:48 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2019-09-05 11:23:48 +0000
commit056f95ec951178a110b57e58a2ee434907de2e38 (patch)
treea8e6ad6be4a477e263294cb8c34feef8df71253e /libcpp/line-map.c
parente7414688f16c4c9db2dacbc31da683887b4ba1bd (diff)
downloadgcc-056f95ec951178a110b57e58a2ee434907de2e38.tar.gz
[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/line-map.c')
-rw-r--r--libcpp/line-map.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index 572d7f416f5..d6924eb3e78 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -764,7 +764,11 @@ linemap_line_start (line_maps *set, linenum_type to_line,
/* Locations of ordinary tokens are always lower than locations of
macro tokens. */
if (r >= LINE_MAP_MAX_LOCATION)
- return 0;
+ {
+ /* Remember we overflowed. */
+ set->highest_line = set->highest_location = LINE_MAP_MAX_LOCATION - 1;
+ return 0;
+ }
set->highest_line = r;
if (r > set->highest_location)