https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110152
Bug ID: 110152 Summary: [14 Regression] ICE on 3dnow-1.c since r14-1166 Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- Starting with r14-1166-gaffee7dcfa1ee272d43ac7cb I'm seeing +FAIL: gcc.target/i386/3dnow-1.c (internal compiler error: Segmentation fault signal terminated program cc1) +FAIL: gcc.target/i386/3dnow-1.c (test for excess errors) +FAIL: gcc.target/i386/3dnow-2.c (internal compiler error: Segmentation fault signal terminated program cc1) +FAIL: gcc.target/i386/3dnow-2.c (test for excess errors) +FAIL: gcc.target/i386/mmx-1.c (internal compiler error: Segmentation fault signal terminated program cc1) +FAIL: gcc.target/i386/mmx-1.c (test for excess errors) +FAIL: gcc.target/i386/mmx-2.c (internal compiler error: Segmentation fault signal terminated program cc1) +FAIL: gcc.target/i386/mmx-2.c (test for excess errors) on i686-linux. When the testcase is compiled with -m32 -m3dnow -mno-sse, I see ix86_expand_vector_init_general (true, E_V4HImode, ..., ...) call, which since the above change recurses into ix86_expand_vector_init_general (false, E_V2SImode, ..., ...) but as mmx_ok is false in that case, it will not handle V2SImode using ix86_expand_vector_init_concat, but recurses endlessly calling itself with (false, E_V2SImode, ..., ...). I think we should pass mmx_ok instead of false in the nwords == 2 case.