http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60546
--- Comment #19 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to linzj from comment #18) > (In reply to rguent...@suse.de from comment #17) > > On Mon, 17 Mar 2014, manjian2006 at gmail dot com wrote: > > > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60546 > > > > > > --- Comment #16 from linzj <manjian2006 at gmail dot com> --- > > > Yes,that may work.But what exactly go wrong in the original algorithm? I > > > can't > > > change a correct algorithm just because it volatiles TBBA and make the > > > compiler > > > generate wrong code.Because it's CORRECT logically. > > > > You have to fix the memory reads from data[] to not read 'short's but > > to read 'char's. > > Just out of curiosity , why this behavior causes tbba failure?And is that a > logical error?I am sure it's not an alignment error. > Interpreting a block of raw data from a temporary stack space as a short > array does not seem like any error to me. Except short cannot alias char. That is the point of type based alias analysis.