https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117166
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
maybe changing
if (line_delta < 0
|| (line_delta > 10
&& line_delta * map->m_column_and_range_bits > 1000)
to
if (line_delta < 0
|| line_delta > INT_MAX / map->m_column_and_range_bits
|| (line_delta > 10
&& line_delta * map->m_column_and_range_bits > 1000)
or performing the multiplication in int64_t fixes it? The compare could
also just be line_delta > 1000, I don't think m_column_and_range_bits
is ever so big that a smaller line_delta overflows the multiplication.