https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83176
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2017-11-27 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Target Milestone|--- |8.0 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. (gdb) p debug_generic_expr (scev) {(int) {(unsigned int) pretmp_68, +, 2147483712}_4, +, 8555712}_2 and we fail in chrec_apply for _2 doing case POLYNOMIAL_CHREC: ... /* "{a, +, b} (x)" -> "a + b*x". */ x = chrec_convert_rhs (type, x, NULL); res = chrec_fold_multiply (TREE_TYPE (x), CHREC_RIGHT (chrec), x); res = chrec_fold_plus (type, CHREC_LEFT (chrec), res); chrec_fold_plus (int, (int) {(unsigned int) pretmp_68, +, 2147483712}_4, (int) graphite_IV.18_31 * 8555712) which has switch (TREE_CODE (op0)) { ... CASE_CONVERT: if (tree_contains_chrecs (op0, NULL)) return chrec_dont_know; /* FALLTHRU */ I think we can handle this particular case as (int) {(unsigned int) pretmp_68 + (unsigned int) (int) graphite_IV.18_31 * 8555712, +, 2147483712}_4 but in the end during SCEV validation we may want to avoid conversions of CHRECs in not outer context.