https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112573
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The rev issue is recorded seperately already. The difference between f and h are due to reassociation . In f, (y+CST) can overflow so it is not reassociated with the addition with &a. While h the addition is done in pointer size (64bit) so it can be reassociated and you get that effect.