https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92596
Bug ID: 92596 Summary: [10 Regression] ICE in exact_div, at poly-int.h:2162 since r278406 Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: rguenth at gcc dot gnu.org, rsandifo at gcc dot gnu.org Target Milestone: --- I see the following ICE: $ cat div2.i typedef struct { long n[5]; } secp256k1_fe; int a, b, c; void fn1(secp256k1_fe *p1, int p2) { p1->n[2] = p1->n[3] = p1->n[4] = p2; } void fn2() { fn1(b, !c); fn1(a, !c); } $ gcc -c div2.i -O3 div2.i: In function ‘fn2’: div2.i:8:7: warning: passing argument 1 of ‘fn1’ makes pointer from integer without a cast [-Wint-conversion] 8 | fn1(b, !c); | ^ | | | int div2.i:6:24: note: expected ‘secp256k1_fe *’ but argument is of type ‘int’ 6 | void fn1(secp256k1_fe *p1, int p2) { p1->n[2] = p1->n[3] = p1->n[4] = p2; } | ~~~~~~~~~~~~~~^~ div2.i:9:7: warning: passing argument 1 of ‘fn1’ makes pointer from integer without a cast [-Wint-conversion] 9 | fn1(a, !c); | ^ | | | int div2.i:6:24: note: expected ‘secp256k1_fe *’ but argument is of type ‘int’ 6 | void fn1(secp256k1_fe *p1, int p2) { p1->n[2] = p1->n[3] = p1->n[4] = p2; } | ~~~~~~~~~~~~~~^~ during GIMPLE pass: slp div2.i:7:6: internal compiler error: in exact_div, at poly-int.h:2162 7 | void fn2() { | ^~~ 0x738c34 poly_int<1u, poly_result<unsigned long, if_nonpoly<unsigned long, unsigned long, poly_int_traits<unsigned long>::is_poly>::type, poly_coeff_pair_traits<unsigned long, if_nonpoly<unsigned long, unsigned long, poly_int_traits<unsigned long>::is_poly>::type>::result_kind>::type> exact_div<1u, unsigned long, unsigned long>(poly_int_pod<1u, unsigned long> const&, unsigned long) /home/marxin/Programming/gcc/gcc/poly-int.h:2162 0x738c34 poly_int<1u, poly_result<unsigned long, unsigned long, poly_coeff_pair_traits<unsigned long, unsigned long>::result_kind>::type> exact_div<1u, unsigned long, unsigned long>(poly_int_pod<1u, unsigned long> const&, poly_int_pod<1u, unsigned long> const&) /home/marxin/Programming/gcc/gcc/poly-int.h:2175 0x738c34 vect_get_num_vectors /home/marxin/Programming/gcc/gcc/tree-vectorizer.h:1490 0x738c34 vect_slp_analyze_node_operations_1 /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2795 0x738c34 vect_slp_analyze_node_operations /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2905 0x1064d78 vect_slp_analyze_node_operations /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2863 0x1064d78 vect_slp_analyze_node_operations /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2863 0x1065778 vect_slp_analyze_operations(vec_info*) /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2939 0x106b352 vect_slp_analyze_bb_1 /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:3267 0x106b352 vect_slp_bb_region /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:3328 0x106b352 vect_slp_bb(basic_block_def*) /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:3463 0x106d34f execute /home/marxin/Programming/gcc/gcc/tree-vectorizer.c:1320 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. And one starting from r278334: $ cat div.c typedef struct { long n[5]; } secp256k1_fe; secp256k1_fe a; void fn1(int p1) { a.n[0] = a.n[1] = a.n[2] = p1; } void fn2() { int b; fn1(!b); } $ gcc -c div.c -O3 during GIMPLE pass: slp div.c: In function ‘fn2’: div.c:8:6: internal compiler error: in exact_div, at poly-int.h:2162 8 | void fn2() { | ^~~ 0x738c34 poly_int<1u, poly_result<unsigned long, if_nonpoly<unsigned long, unsigned long, poly_int_traits<unsigned long>::is_poly>::type, poly_coeff_pair_traits<unsigned long, if_nonpoly<unsigned long, unsigned long, poly_int_traits<unsigned long>::is_poly>::type>::result_kind>::type> exact_div<1u, unsigned long, unsigned long>(poly_int_pod<1u, unsigned long> const&, unsigned long) /home/marxin/Programming/gcc/gcc/poly-int.h:2162 0x738c34 poly_int<1u, poly_result<unsigned long, unsigned long, poly_coeff_pair_traits<unsigned long, unsigned long>::result_kind>::type> exact_div<1u, unsigned long, unsigned long>(poly_int_pod<1u, unsigned long> const&, poly_int_pod<1u, unsigned long> const&) /home/marxin/Programming/gcc/gcc/poly-int.h:2175 0x738c34 vect_get_num_vectors /home/marxin/Programming/gcc/gcc/tree-vectorizer.h:1490 0x738c34 vect_slp_analyze_node_operations_1 /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2795 0x738c34 vect_slp_analyze_node_operations /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2905 0x1064d78 vect_slp_analyze_node_operations /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2863 0x1064d78 vect_slp_analyze_node_operations /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2863 0x1065778 vect_slp_analyze_operations(vec_info*) /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:2939 0x106b352 vect_slp_analyze_bb_1 /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:3267 0x106b352 vect_slp_bb_region /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:3328 0x106b352 vect_slp_bb(basic_block_def*) /home/marxin/Programming/gcc/gcc/tree-vect-slp.c:3463 0x106d34f execute /home/marxin/Programming/gcc/gcc/tree-vectorizer.c:1320 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.