diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2022-06-22 19:11:20 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2022-06-24 20:49:58 +0200 |
commit | c0ad48527c314a1e9354b7c26718b56ed4abc92c (patch) | |
tree | 505100920ec9714013c52f1ee20dcb25ef6158e5 | |
parent | bb403de36aa29e5398119e78a2c96794bdd6bad8 (diff) | |
download | gcc-c0ad48527c314a1e9354b7c26718b56ed4abc92c.zip gcc-c0ad48527c314a1e9354b7c26718b56ed4abc92c.tar.gz gcc-c0ad48527c314a1e9354b7c26718b56ed4abc92c.tar.bz2 |
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.
-rw-r--r-- | gcc/config/tilepro/gen-mul-tables.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/tilepro/gen-mul-tables.cc b/gcc/config/tilepro/gen-mul-tables.cc index 5218398..c125748 100644 --- a/gcc/config/tilepro/gen-mul-tables.cc +++ b/gcc/config/tilepro/gen-mul-tables.cc @@ -1192,11 +1192,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 |