https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91665
Bug ID: 91665 Summary: [9/10 Regression] ICE in build_vector_from_val, at tree.c:1904 Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-checking, ice-on-invalid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-10.0.0-alpha20190901 snapshot (r275284) ICEs when compiling the following testcase w/ -Ofast: short int u2; void nn (short int dv, short int cu) { short int *sz = &u2; dv = 1; while (dv != 0) dv += ++cu || (*sz = dv); } % gcc-10.0.0-alpha20190901 -Ofast -c xsledmfe.c during GIMPLE pass: vect xsledmfe.c: In function 'nn': xsledmfe.c:4:1: internal compiler error: in build_vector_from_val, at tree.c:1904 4 | nn (short int dv, short int cu) | ^~ 0x71589c build_vector_from_val(tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree.c:1904 0xfb1035 vect_create_epilog_for_reduction /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vect-loop.c:4666 0xfb8475 vectorizable_reduction(_stmt_vec_info*, gimple_stmt_iterator*, _stmt_vec_info**, _slp_tree*, _slp_instance*, vec<stmt_info_for_cost, va_heap, vl_ptr>*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vect-loop.c:7408 0xfa29ee vect_transform_stmt(_stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vect-stmts.c:10783 0xfa3bb9 vect_transform_loop_stmt /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vect-loop.c:8459 0xfa8bc9 vect_transform_loop(_loop_vec_info*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vect-loop.c:8684 0xfd5cac try_vectorize_loop_1 /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vectorizer.c:980 0xfd671f vectorize_loops() /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190901/work/gcc-10-20190901/gcc/tree-vectorizer.c:1112 gcc 9 fails differently: % gcc-9.2.0 -Ofast -c xsledmfe.c -fchecking xsledmfe.c: In function 'nn': xsledmfe.c:4:1: error: mismatching comparison operand types 4 | nn (short int dv, short int cu) | ^~ short int unsigned short stmp_u2_lsm.20_78 = stmp_u2_lsm.20_77 == 0 ? u2_lsm.6_5 : stmp_u2_lsm.20_77; xsledmfe.c:4: confused by earlier errors, bailing out