https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118832
Li Pan <pan2.li at intel dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |juzhe.zhong at rivai dot ai --- Comment #2 from Li Pan <pan2.li at intel dot com> --- Link PR117878, looks like the same problem of PR117878, the define_insn_and_split rtx is introduced by reload, and then keep existing until final pass. test.c.309r.outof_cfglayout:105: (vec_duplicate:RVVM2DI (reg:DI 204))) "test.c":7:10 3626 {*vec_duplicatervvm2di} test.c.309r.outof_cfglayout:168: (vec_duplicate:RVVM1SI (const_int -16776961 [0xffffffffff0000ff]))) "test.c":7:10 3623 {*vec_duplicatervvm1si} test.c.322r.reload:4433: (vec_duplicate:RVVM2DI (reg:DI 14 a4 [393]))) "test.c":12:10 3626 {*vec_duplicatervvm2di} test.c.322r.reload:4866: (vec_duplicate:RVVM2DI (reg:DI 12 a2 [370]))) "test.c":12:10 3626 {*vec_duplicatervvm2di} test.c.323r.postreload:570: (vec_duplicate:RVVM2DI (reg:DI 14 a4 [393]))) "test.c":12:10 3626 {*vec_duplicatervvm2di} ... ... ... test.c.358r.nothrow:1013: (vec_duplicate:RVVM2DI (reg:DI 14 a4 [393]))) "test.c":12:10 3626 {*vec_duplicatervvm2di} test.c.360r.final:487: (vec_duplicate:RVVM2DI (reg:DI 12 a2 [370]))) "test.c":12:10 3626 {*vec_duplicatervvm2di} test.c.360r.final:1018: (vec_duplicate:RVVM2DI (reg:DI 14 a4 [393]))) "test.c":12:10 3626 {*vec_duplicatervvm2di} And then it will hit the assert as nothing to split. 2808 ........ { 2809 ........ rtx_insn *new_rtx = try_split (body, insn, 0); 2810 2811 ........ /* If we didn't split the insn, go away. */ 2812 ........ if (new_rtx == insn && PATTERN (new_rtx) == body) 2813 ........ fatal_insn ("could not split insn", insn); 2814 --------------------------------------------------------------------- Hi Robin, Juzhe, Kito and Jeff, Shall we take something like ix86_pre_reload_split here, (occurs twice, may be more in future). Or just find the specific insn and fix it similar as PR117878? Personally, I may prefer ix86_pre_reload_split here.