https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91708
--- Comment #10 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- $ grep -A4 -r "insn 234 .*:SI 340" real.c.*|less real.c.237r.subreg1:(insn 234 233 235 11 (set (reg:SI 340) real.c.237r.subreg1- (mem:SI (reg/v/f:SI 273 [ rD.73757 ]) [52 MEM <unsigned int> [(struct real_valueD.28367 *)r_77(D)]+0 S4 A32])) "../../gcc-trunk-1/gcc/real.c":5185:9 643 {*thumb2_movsi_vfp} real.c.237r.subreg1- (nil)) real.c.237r.subreg1-(insn 235 234 236 11 (set (reg:SI 339) real.c.237r.subreg1- (and:SI (reg:SI 340) -- real.c.238r.dfinit:(insn 234 233 235 11 (set (reg:SI 340) real.c.238r.dfinit- (mem:SI (reg/v/f:SI 273 [ rD.73757 ]) [52 MEM <unsigned int> [(struct real_valueD.28367 *)r_77(D)]+0 S4 A32])) "../../gcc-trunk-1/gcc/real.c":5185:9 643 {*thumb2_movsi_vfp} real.c.238r.dfinit- (nil)) real.c.238r.dfinit-(insn 235 234 236 11 (set (reg:SI 339) real.c.238r.dfinit- (and:SI (reg:SI 340) -- real.c.239r.cse1:(insn 234 233 235 11 (set (reg:SI 340) real.c.239r.cse1- (mem:SI (reg/v/f:SI 273 [ rD.73757 ]) [52 MEM <unsigned int> [(struct real_valueD.28367 *)r_77(D)]+0 S4 A32])) "../../gcc-trunk-1/gcc/real.c":5185:9 643 {*thumb2_movsi_vfp} real.c.239r.cse1- (nil)) real.c.239r.cse1-(insn 235 234 236 11 (set (reg:SI 339) real.c.239r.cse1- (and:SI (reg:SI 340) -- real.c.239r.cse1:(insn 234 233 235 11 (set (reg:SI 340 [ MEM <unsigned int> [(struct real_valueD.28367 *)r_77(D)] ]) real.c.239r.cse1- (mem:SI (plus:SI (reg/v/f:SI 273 [ rD.73757 ]) real.c.239r.cse1- (const_int 20 [0x14])) [0 MEM <charD.7[1:24]> [(voidD.73 *)r_77(D)]+20 S4 A8])) "../../gcc-trunk-1/gcc/real.c":5185:9 643 {*thumb2_movsi_vfp} real.c.239r.cse1- (nil)) real.c.239r.cse1-(insn 235 234 236 11 (set (reg:SI 339) -- so initially the mem-ref was: [52 MEM <unsigned int> [(struct real_valueD.28367 *)r_77(D)]+0 S4 A32] but it is replaced by: [0 MEM <charD.7[1:24]> [(voidD.73 *)r_77(D)]+20 S4 A8] this is bad, because the Alignment is worse, and the alias-set is changed from 52 to 0, alias everything.