https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78222
--- Comment #1 from Chen Gang <gang.chen.5i5j at gmail dot com> --- The root cause is: in tilegx_gen_bundle, gcc will lose prev insn when it deletes useless insns. The related insns before tilegx_gen_bbundle (it is correct). 249 (insn:TI 71 68 75 4 (set (mem:DI (reg/f:DI 10 r10 [112]) [3 *rp_19(D)+8 S8 A64]) 250 (reg:DI 32 r32 [orig:115 r+8 ] [115])) "test.c":25 4 {*movdi_insn} 251 (expr_list:REG_DEAD (reg:DI 32 r32 [orig:115 r+8 ] [115]) 252 (expr_list:REG_DEAD (reg/f:DI 10 r10 [112]) 253 (nil)))) 254 (insn 75 71 78 4 (unspec_volatile [ 255 (const_int 0 [0]) 256 ] 201) "test.c":27 162 {blockage} 257 (nil)) 258 (insn 78 71 160 4 (unspec_volatile [ 259 (const_int 0 [0]) 260 ] 201) "test.c":27 162 {blockage} 261 (nil)) 262 263 264 (insn:TI 144 160 142 4 (set (reg:DI 28 r28) 265 (plus:DI (reg/f:DI 54 sp) 266 (const_int 120 [0x78]))) "test.c":27 38 {adddi3} 267 (nil)) 268 (insn 142 144 79 4 (set (reg:DI 29 r29) 269 (plus:DI (reg/f:DI 54 sp) 270 (const_int 128 [0x80]))) "test.c":27 38 {adddi3} 271 (nil)) The insns after tilegx_gen_bundle (remove 2 useless insns, but forgot to correct the prev insn) 249 (insn:SI # 0 0 4 (set (mem:DI (reg/f:DI 10 r10 [112]) [ *rp_19(D)+8 S8 A64]) 250 (reg:DI 32 r32 [orig:115 r+8 ] [115])) "test.c":25# {*movdi_insn} 251 (expr_list:REG_DEAD (reg:DI 32 r32 [orig:115 r+8 ] [115]) 252 (expr_list:REG_DEAD (reg/f:DI 10 r10 [112]) 253 (nil)))) 254 (insn:SI # 0 0 4 (set (reg:DI 28 r28) 255 (plus:DI (reg/f:DI 54 sp) 256 (const_int 120 [0x78]))) "test.c":27# {adddi3} 257 (nil)) 258 (insn:QI # 0 0 4 (set (reg:DI 29 r29) 259 (plus:DI (reg/f:DI 54 sp) 260 (const_int 128 [0x80]))) "test.c":27# {adddi3} 261 (nil)) The correct insns after tilegx_gen_bundle should be: 220 (insn:QI # 0 0 4 (set (mem:DI (reg/f:DI 10 r10 [112]) [ *rp_19(D)+8 S8 A64]) 221 (reg:DI 32 r32 [orig:115 r+8 ] [115])) "test.c":25# {*movdi_insn} 222 (expr_list:REG_DEAD (reg:DI 32 r32 [orig:115 r+8 ] [115]) 223 (expr_list:REG_DEAD (reg/f:DI 10 r10 [112]) 224 (nil)))) 225 (note # 0 0 NOTE_INSN_EPILOGUE_BEG) 226 (insn:SI # 0 0 4 (set (reg:DI 28 r28) 227 (plus:DI (reg/f:DI 54 sp) 228 (const_int 120 [0x78]))) "test.c":27# {adddi3} 229 (nil)) 230 (insn:QI # 0 0 4 (set (reg:DI 29 r29) 231 (plus:DI (reg/f:DI 54 sp) 232 (const_int 128 [0x80]))) "test.c":27# {adddi3} 233 (nil)) 234 (insn # 0 0 4 (use (reg/i:TI 0 r0)) "test.c":27# 235 (nil)) I shall make patch for it next.