https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89779
--- Comment #2 from Sunil Pandey <skpgkp1 at gmail dot com> --- Reduced test: $ cat x.i typedef a; c(a *d, int b) { int e, f, g; for (; e; e++) for (f = 0; f < 4; f++) if (d) for (g = e + 1; g; g++) h(d[g]); } i() { a *j; int k, l; for (; k; k++) c(j, l); } Good case: $ gcc -B./ -Ofast -S x.i -w $ echo $? 0 Bad case: $ gcc -B./ -Ofast -S x.i -w during GIMPLE pass: ivopts x.i: In function ‘i’: x.i:10:1: internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in tree_nop_conversion_p, at tree.c:12792 10 | i() { | ^ 0x7265a6 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc-main.42UM/gcc/tree.c:9909 0x72cd07 tree_class_check(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc-main.42UM/gcc/tree.h:3555 0x72cd07 tree_nop_conversion_p(tree_node const*, tree_node const*) ../../gcc-main.42UM/gcc/tree.c:12792 0x1014931 tree_nop_conversion ../../gcc-main.42UM/gcc/tree.c:12818 0x1014931 tree_strip_nop_conversions(tree_node*) ../../gcc-main.42UM/gcc/tree.c:12845 0xa6b027 operand_equal_p(tree_node const*, tree_node const*, unsigned int) ../../gcc-main.42UM/gcc/fold-const.c:3017 0xa6b4b2 operand_equal_p(tree_node const*, tree_node const*, unsigned int) ../../gcc-main.42UM/gcc/fold-const.c:3201 0xa6b15a operand_equal_p(tree_node const*, tree_node const*, unsigned int) ../../gcc-main.42UM/gcc/fold-const.c:2950 0xed336d loop_exits_before_overflow ../../gcc-main.42UM/gcc/tree-ssa-loop-niter.c:4627 0xed336d scev_probably_wraps_p(tree_node*, tree_node*, tree_node*, gimple*, loop*, bool) ../../gcc-main.42UM/gcc/tree-ssa-loop-niter.c:4835 0xed336d scev_probably_wraps_p(tree_node*, tree_node*, tree_node*, gimple*, loop*, bool) ../../gcc-main.42UM/gcc/tree-ssa-loop-niter.c:4793 0x1643f8f convert_affine_scev(loop*, tree_node*, tree_node**, tree_node**, gimple*, bool, tree_node*) ../../gcc-main.42UM/gcc/tree-chrec.c:1299 0x1643a78 chrec_convert_1 ../../gcc-main.42UM/gcc/tree-chrec.c:1357 0xe47dd8 interpret_rhs_expr ../../gcc-main.42UM/gcc/tree-scalar-evolution.c:1766 0xe45209 interpret_gimple_assign ../../gcc-main.42UM/gcc/tree-scalar-evolution.c:2045 0xe45209 analyze_scalar_evolution_1 ../../gcc-main.42UM/gcc/tree-scalar-evolution.c:2096 0xe45bea analyze_scalar_evolution(loop*, tree_node*) ../../gcc-main.42UM/gcc/tree-scalar-evolution.c:2165 0xe48f8a analyze_scalar_evolution_in_loop ../../gcc-main.42UM/gcc/tree-scalar-evolution.c:2267 0xe490a8 simple_iv_with_niters(loop*, loop*, tree_node*, affine_iv*, tree_node**, bool) ../../gcc-main.42UM/gcc/tree-scalar-evolution.c:3364 0xebe6f8 find_givs_in_stmt_scev ../../gcc-main.42UM/gcc/tree-ssa-loop-ivopts.c:1426 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.