diff options
author | Jakub Jelinek <jakub@redhat.com> | 2025-05-20 08:21:14 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2025-06-13 09:58:17 +0200 |
commit | 5a349dc6a6f37997f871f79e2f702182427f85e2 (patch) | |
tree | 5de9250769b8a88cef5b2e26898bb292902998b7 /gcc | |
parent | 1549bb90c10c5e3ef1c5f2080cdb58dbaee25291 (diff) | |
download | gcc-5a349dc6a6f37997f871f79e2f702182427f85e2.zip gcc-5a349dc6a6f37997f871f79e2f702182427f85e2.tar.gz gcc-5a349dc6a6f37997f871f79e2f702182427f85e2.tar.bz2 |
tree-chrec: Use signed_type_for in convert_affine_scev
On s390x-linux I've run into the gcc.dg/torture/bitint-27.c test ICEing in
build_nonstandard_integer_type called from convert_affine_scev (not sure
why it doesn't trigger on x86_64/aarch64).
The problem is clear, when ct is a BITINT_TYPE with some large
TYPE_PRECISION, build_nonstandard_integer_type won't really work on it.
The patch fixes it similarly what has been done for GCC 14 in various
other spots.
2025-05-20 Jakub Jelinek <jakub@redhat.com>
* tree-chrec.cc (convert_affine_scev): Use signed_type_for instead of
build_nonstandard_integer_type.
(cherry picked from commit e38027c8ff449ffadaca449004bb891b9094ad00)
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-chrec.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-chrec.cc b/gcc/tree-chrec.cc index 38eb329..a7c2f8d 100644 --- a/gcc/tree-chrec.cc +++ b/gcc/tree-chrec.cc @@ -1490,7 +1490,7 @@ convert_affine_scev (class loop *loop, tree type, new_step = *step; if (TYPE_PRECISION (step_type) > TYPE_PRECISION (ct) && TYPE_UNSIGNED (ct)) { - tree signed_ct = build_nonstandard_integer_type (TYPE_PRECISION (ct), 0); + tree signed_ct = signed_type_for (ct); new_step = chrec_convert (signed_ct, new_step, at_stmt, use_overflow_semantics); } |