[Bug lto/88147] [9 Regression] ICE in linemap_line_start, at libcpp/line-map.c:781 starting from r265875
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 11 11:24:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88147
--- Comment #15 from Martin Liška <marxin at gcc dot gnu.org> ---
During the bug investigation I noticed a strange thing in line-map.c:
700 if (line_delta < 0
701 || (line_delta > 10
702 && line_delta * map->m_column_and_range_bits > 1000)
703 || (max_column_hint >= (1U << effective_column_bits))
704 || (max_column_hint <= 80 && effective_column_bits >= 10)
705 || (highest > LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES
706 && map->m_range_bits > 0)
707 || (highest > LINE_MAP_MAX_LOCATION_WITH_COLS
708 && (set->max_column_hint || highest >=
LINE_MAP_MAX_LOCATION)))
709 add_map = true;
m_column_and_range_bits > 1000 is always false as:
/* Number of the low-order source_location bits used for column numbers
and ranges. */
unsigned int m_column_and_range_bits : 8;
and the sub-expression on lines 701 and 702 is ugly as well.
What's the purpose of the check?
More information about the Gcc-bugs
mailing list