On Mon, 19 May 2025, Jakub Jelinek wrote:
Hi!
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.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
OK.
Richard.
2025-05-19 Jakub Jelinek <ja...@redhat.com>
* tree-chrec.cc (convert_affine_scev): Use signed_type_for instead of
build_nonstandard_integer_type.
--- gcc/tree-chrec.cc.jj 2025-04-08 14:09:24.743815607 +0200
+++ gcc/tree-chrec.cc 2025-05-15 16:06:05.383354229 +0200
@@ -1490,7 +1490,7 @@ convert_affine_scev (class loop *loop, t
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);
}
Jakub