https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82050

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
In:
1418    static column_range
1419    get_affected_columns (const fixit_hint *hint)
1420    {
1421      int start_column = LOCATION_COLUMN (hint->get_start_loc ());
1422      int finish_column = LOCATION_COLUMN (hint->get_next_loc ()) - 1;
1423    
1424      return column_range (start_column, finish_column);
(gdb) p hint->get_start_loc ()
$3 = 438112
(gdb) p hint->get_next_loc ()
$4 = 307392
(gdb) p expand_location ($3)
$5 = {file = 0x7fffffffe3d1 "pr82050.c", line = 14, column = 4086, data = 0x0,
sysp = false}
(gdb) p expand_location ($4)
$6 = {file = 0x7fffffffe3d1 "pr82050.c", line = 14, column = 1, data = 0x0,
sysp = false}

so finish_column is 0 and smaller than start_column, which is what column_range
ICEs on.  Is that because we have:
/* Do not track column numbers higher than this one.  As a result, the
   range of column_bits is [12, 18] (or 0 if column numbers are
   disabled).  */
const unsigned int LINE_MAP_MAX_COLUMN_NUMBER = (1U << 12);
and thus effectively can only track columns up to 4095 (or 4096 if 1 based)?
If so, something should punt on it rather than ICE it is not possible.

Reply via email to