http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55738
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-19 12:25:49 UTC --- Well - that's because values_ may point to *this and thus au::BoundBit< 7 >( values_[ index ] ) = 1; may alter it. Remember values_ is a pointer to char *. So it's not valid for GCC to CSE the load of values_ which means the stores are not detected as redundant.