This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/71506] [5 Regression] ICE with libvpx with -floop-interchange: isl_constraint.c:627: expecting integer value
- From: "vries at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 25 Aug 2016 09:19:31 +0000
- Subject: [Bug tree-optimization/71506] [5 Regression] ICE with libvpx with -floop-interchange: isl_constraint.c:627: expecting integer value
- Auto-submitted: auto-generated
- References: <bug-71506-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71506
--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
At the first call to build_linearized_memory_access, at the 3rd loop iteration
we have:
...
(gdb)
133 subsize = isl_set_max_val (pdr->extent, aff);
(gdb) call (char *)
isl_printer_get_str(isl_printer_print_set(isl_printer_to_str(ctx),
pdr->extent))
$5 = 0x30f6b90 "{ [1, i1, i2, i3, i4] : i4 >= 0 and i1 >= 0 and i2 >= 0 and i3
>= 0 and i4 <= 1 and i3 <= 1 }"
(gdb) call (char *)
isl_printer_get_str(isl_printer_print_aff(isl_printer_to_str(ctx), aff))
$6 = 0x30f5e30 "{ [i0, i1, i2, i3, i4] -> [(i2)] }"
(gdb) n
134 isl_aff_free (aff);
(gdb) call (char *)
isl_printer_get_str(isl_printer_print_val(isl_printer_to_str(ctx), subsize))
$7 = 0x30f8f00 "infty"
...
The infinity in subsize is propagated to size, and then 'res =
isl_constraint_set_coefficient_val (res, isl_dim_out, offset + i, size)' ICEs
because isl_constraint_set_coefficient_val expects the last argument to be an
int.
In 5.0, subsize is an isl_val:
...
isl_val *subsize;
...
subsize = isl_set_max_val (pdr->extent, aff);
...
But in 4.9, subsize is an isl_int:
...
isl_int subsize;
...
isl_set_max (pdr->extent, aff, &subsize);
...
And at the same point in execution, subsize is 1 instead of infty (which seems
to be caused by subsize being 1 before the call, and isl_set_max not having an
effect, which sound fishy).