https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88770
--- Comment #3 from Hongtao.liu <crazylht at gmail dot com> --- Shouldn't pass_store_merging be better place to handle such optimization? currently store-merging only merges .a and .b, fails to merge .c and .d 202t.store-merging void caller () { struct guu D.4030; struct guu D.4029; <bb 2> [local count: 1073741824]: MEM <unsigned long> [(int *)&D.4029] = 21474836483; D.4029.c = 7.0e+0; D.4029.d = 9; test (D.4029); MEM <unsigned long> [(int *)&D.4030] = 21474836483; D.4030.c = 7.0e+0; D.4030.d = 9; test (D.4030); D.4029 ={v} {CLOBBER}; D.4030 ={v} {CLOBBER}; return;