https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117068
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- in the case of GCC, the attribute is lost early on for many accesses. Especially a target specific one. In RTL mem has attributes but nothing like preserve_static_offset . CE (ifcvt) could turn in theory turn a ? mem(reg+OFF0) : mem(reg+OFF1) into off = a ? OFF0 : OFF1; mem(reg+off) . Because there is nothing blocking mem here. I wonder if this was the best way of solving this rather than turn the issue over to how to say these are special global "registers" which get loaded/stored to and then turn that into load/stores.