https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110271
Bug ID: 110271 Summary: [14 Regression] UICE on pycryptodome-3.17.0 during GIMPLE pass: widening_mul: in gsi_replace, at gimple-iterator.cc:437 Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: slyfox at gcc dot gnu.org Target Milestone: --- Found an ICE on pycryptodome-3.17.0 when building against r14-1868-ga4df0ce78d6f1b Reduced example: // $ cat mont.c.c unsigned square_sum_hi, square_sum_lo, square_tmp, square_carry, square_tmp2; void square(unsigned *t, int nw) { int i = 0; for (; i < nw; i++) { square_sum_lo += square_carry; square_sum_hi += square_sum_lo < square_carry; square_sum_hi += square_tmp = (unsigned long)t > 3; square_carry = t[1] + (square_sum_hi < square_tmp); square_sum_hi += square_tmp2; square_carry += square_sum_hi < square_tmp2; } } void mont_mult(void) { unsigned *t; square(t, 9); } $ gcc -fwrapv -O3 -c mont.c.c -o moujnt.o -mavx2 -Wall -Wextra mont.c.c: In function 'mont_mult': mont.c.c:15:3: warning: 't' is used uninitialized [-Wuninitialized] 15 | square(t, 9); | ^~~~~~~~~~~~ mont.c.c:14:13: note: 't' was declared here 14 | unsigned *t; | ^ during GIMPLE pass: widening_mul mont.c.c:13:6: internal compiler error: in gsi_replace, at gimple-iterator.cc:437 13 | void mont_mult(void) { | ^~~~~~~~~ 0x6bcf05 gsi_replace(gimple_stmt_iterator*, gimple*, bool) ../../source/gcc/gimple-iterator.cc:437 0xe203f4 match_uaddc_usubc ../../source/gcc/tree-ssa-math-opts.cc:4880 0xe296f1 after_dom_children ../../source/gcc/tree-ssa-math-opts.cc:5581 0x1886063 dom_walker::walk(basic_block_def*) ../../source/gcc/domwalk.cc:354 0xe1d76d execute ../../source/gcc/tree-ssa-math-opts.cc:5658 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. $ gcc -v |& unnix Using built-in specs. COLLECT_GCC=/<<NIX>>/gcc-14.0.0/bin/gcc COLLECT_LTO_WRAPPER=/<<NIX>>/gcc-14.0.0/libexec/gcc/x86_64-unknown-linux-gnu/14.0.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: Thread model: posix Supported LTO compression algorithms: zlib gcc version 14.0.0 99999999 (experimental) (GCC)