On Fri, Sep 25, 2020 at 11:13:06AM +0200, Martin Liška wrote:
> --- a/gcc/tree-switch-conversion.c
> +++ b/gcc/tree-switch-conversion.c
> @@ -1268,6 +1268,15 @@ jump_table_cluster::can_be_handled (const vec<cluster
> *> &clusters,
> if (range == 0)
> return false;
>
> + unsigned HOST_WIDE_INT lhs = 100 * range;
> + if (lhs < range)
> + return false;
If this test is meant to detect when 100 * range has overflowed,
then I think it is insufficient.
Perhaps do
if (range > HOST_WIDE_INT_M1U / 100)
return false;
unsigned HOST_WIDE_INT lhs = 100 * range;
instead?
Jakub