https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81500
Bug ID: 81500 Summary: ice with -O3 in process_use, at tree-vect-stmts.c:506 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- The following code, when compiled by recent gcc trunk and flag -O3, does this: /home/dcb/creduce/dcbTest/bug369.c:2:1: internal compiler error: in process_use, at tree-vect-stmts.c:506 c(b) { ^ 0xeddbb0 process_use ../../trunk/gcc/tree-vect-stmts.c:505 0xede01d vect_mark_stmts_to_be_vectorized(_loop_vec_info*) ../../trunk/gcc/tree-vect-stmts.c:789 0xf0722d vect_analyze_loop_2 ../../trunk/gcc/tree-vect-loop.c:1950 0xf0722d vect_analyze_loop(loop*, _loop_vec_info*) ../../trunk/gcc/tree-vect-loop.c:2405 Source is typedef a; c(b) { int d; a e, f, *g, *h = b; for (; d; d--) { f = *g & 1; *h-- = *g-- | e; e = f; } } Problem seems to exist between gcc revisions 250361 and 250395. Looking at recent changes to source code file tree-vect-stmt.c, Richard Biener's revision 250382 looks a likely candidate.