https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71942
Richard Earnshaw <rearnsha at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Target| |arm Status|UNCONFIRMED |NEW Last reconfirmed| |2016-07-20 Ever confirmed|0 |1 --- Comment #2 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- This is a well known problem. When a data object is marked volatile the compiler is ultra-conservative about optimizing around it. The result is that the load and the zero-extend get separated and then never merged back together again.