]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-chrec: Use signed_type_for in convert_affine_scev
authorJakub Jelinek <jakub@redhat.com>
Tue, 20 May 2025 06:21:14 +0000 (08:21 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 20 May 2025 06:21:14 +0000 (08:21 +0200)
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.

gcc/tree-chrec.cc

index 38eb32916b8699575d91d64f6c9741a82099f976..a7c2f8de0d51fb8fac868560153c685e766338dd 100644 (file)
@@ -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);
     }