https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87633
--- Comment #7 from Yury Gribov <ygribov at gcc dot gnu.org> ---
Problem seems to be in extract_range_from_binary_expr_1, in
/* Build the bounds. */
combine_bound (code, wmin, min_ovf, expr_type, min_op0, min_op1);
min_op0 is NULL_TREE which causes set_value_range_with_overflow to generate
invalid range which then ICEs. Simply adding
&& min_op0 && min_op1 && max_op0 && max_op1
to guarding condition works around the error but I guess you'll want a more
clever fix.
I'll try retesting without isl until it's fixed.