tilegx: Fix infinite loop in gen-mul-tables generator

Since around GCC 10, the condition `j < (INTMAX_MAX / 10)' will get
optimized into `j != 922337203685477580', which will result in an
infinite loop for certain inputs of `j'.

Copy the condition already used by the -DTILEPRO generator code, which
doesn't fall into this trap.

gcc/ChangeLog:

	* config/tilepro/gen-mul-tables.cc (tilegx_emit): Adjust loop
	condition to avoid overflow.

(cherry picked from commit c0ad48527c)
This commit is contained in:
Iain Buclaw 2022-06-22 19:11:20 +02:00
parent 5cf4746c3d
commit 16d4ccc27d
1 changed files with 2 additions and 2 deletions

View File

@ -1190,11 +1190,11 @@ tilegx_emit (long long multiplier, int num_ops)
long long next_pow10;
while (((j * 10) < abs_multiplier)
&& (j < (INTMAX_MAX / 10)))
&& (j < (j * 10)))
j = j * 10;
prev_pow10 = j;
next_pow10 = (j > (INTMAX_MAX / 10)) ? 0 : j * 10;
next_pow10 = j * 10;
if ((abs_multiplier - prev_pow10 <= 100)
|| (next_pow10