Commit 924b9276 by Nathan Sidwell Committed by Nathan Sidwell

[preprocessor/91991] column location overflow

https://gcc.gnu.org/ml/gcc-patches/2019-10/msg00371.html
	PR preprocessor/91991
	* line-map.c (linemap_line_start): Clear max_column_hint if we run
	out of locations.

From-SVN: r276596
parent 2066f795
2019-10-04 Nathan Sidwell <nathan@acm.org>
PR preprocessor/91991
* line-map.c (linemap_line_start): Clear max_column_hint if we run
out of locations.
2019-10-02 Richard Biener <rguenther@suse.de> 2019-10-02 Richard Biener <rguenther@suse.de>
* internal.h (enum include_type): Remove trailing comma. * internal.h (enum include_type): Remove trailing comma.
......
...@@ -717,11 +717,11 @@ linemap_line_start (line_maps *set, linenum_type to_line, ...@@ -717,11 +717,11 @@ linemap_line_start (line_maps *set, linenum_type to_line,
/* If the column number is ridiculous or we've allocated a huge /* If the column number is ridiculous or we've allocated a huge
number of location_ts, give up on column numbers number of location_ts, give up on column numbers
(and on packed ranges). */ (and on packed ranges). */
max_column_hint = 0; max_column_hint = 1;
column_bits = 0; column_bits = 0;
range_bits = 0; range_bits = 0;
if (highest >= LINE_MAP_MAX_LOCATION) if (highest >= LINE_MAP_MAX_LOCATION)
return 0; goto overflowed;
} }
else else
{ {
...@@ -735,6 +735,7 @@ linemap_line_start (line_maps *set, linenum_type to_line, ...@@ -735,6 +735,7 @@ linemap_line_start (line_maps *set, linenum_type to_line,
max_column_hint = 1U << column_bits; max_column_hint = 1U << column_bits;
column_bits += range_bits; column_bits += range_bits;
} }
/* Allocate the new line_map. However, if the current map only has a /* Allocate the new line_map. However, if the current map only has a
single line we can sometimes just increase its column_bits instead. */ single line we can sometimes just increase its column_bits instead. */
if (line_delta < 0 if (line_delta < 0
...@@ -765,8 +766,11 @@ linemap_line_start (line_maps *set, linenum_type to_line, ...@@ -765,8 +766,11 @@ linemap_line_start (line_maps *set, linenum_type to_line,
macro tokens. */ macro tokens. */
if (r >= LINE_MAP_MAX_LOCATION) if (r >= LINE_MAP_MAX_LOCATION)
{ {
overflowed:
/* Remember we overflowed. */ /* Remember we overflowed. */
set->highest_line = set->highest_location = LINE_MAP_MAX_LOCATION - 1; set->highest_line = set->highest_location = LINE_MAP_MAX_LOCATION - 1;
/* No column numbers! */
set->max_column_hint = 1;
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment