https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83827
--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> --- For f, pass_combine failed Trying 20, 21 -> 22: 20: clobber r83:TI 21: r83:TI#0=r88:DI REG_DEAD r88:DI 22: r83:TI#8=r89:DI REG_DEAD r89:DI Can't combine i2 into i3 (insn 20 6 21 2 (clobber (reg/v:TI 83 [ x ])) "test.cpp":3:11 -1 (nil)) (insn 21 20 22 2 (set (subreg:DI (reg/v:TI 83 [ x ]) 0) (reg:DI 88 [ x ])) "test.cpp":3:11 74 {*movdi_internal} (expr_list:REG_DEAD (reg:DI 88 [ x ]) (nil))) (insn 22 21 8 2 (set (subreg:DI (reg/v:TI 83 [ x ]) 8) (reg:DI 89 [+8 ])) "test.cpp":3:11 74 {*movdi_internal} (expr_list:REG_DEAD (reg:DI 89 [+8 ]) And it should be optimized to (set (reg:TI 83) (subreg:TI (vec_concat:V2DI (reg:DI 88) (reg:DI 89)) 0))??