https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113255
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> --- _.dse1 pass is removing the store for some reason, -fno-dse "fixes" the testcase. Before _.dse1 pass, we have: (insn 41 40 46 4 (set (mem/c:SI (plus:DI (reg/f:DI 19 frame) (const_int -36 [0xffffffffffffffdc])) [2 e[1].y+0 S4 A32]) (reg:SI 98 [ e$1$y ])) "pr113255.c":21:9 85 {*movsi_internal} (expr_list:REG_DEAD (reg:SI 98 [ e$1$y ]) (nil))) But _.dse1 pass decides that: **scanning insn=41 mem: (plus:DI (reg/f:DI 19 frame) (const_int -36 [0xffffffffffffffdc])) after canon_rtx address: (plus:DI (reg/f:DI 19 frame) (const_int -36 [0xffffffffffffffdc])) gid=1 offset=-36 processing const base store gid=1[-36..-32) mems_found = 1, cannot_delete = false ... Locally deleting insn 41 deferring deletion of insn with uid = 41.