https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51017
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Known to work| |4.3.4
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
Target Milestone|--- |4.8.5
Summary|GCC 4.6 performance |[4.8/4.9/5 Regression] GCC
|regression (vs. 4.4/4.5), |performance regression (vs.
|PRE increases register |4.4/4.5), PRE increases
|pressure |register pressure too much
Known to fail| |4.8.3, 4.9.2, 5.0
--- Comment #20 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Alexander Peslyak from comment #19)
> (In reply to Alexander Peslyak from comment #17)
> > Should we create a new bug for the unnecessary and non-optional use of
> > unaligned load instructions for source code like this, or is this considered
> > the new intended behavior despite of the major slowdown on such CPUs?
> > (Presumably not only for JtR. I'd expect this to affect many programs.)
>
> Upon further analysis, I now think that this was my fault, and (presumably)
> not common in other programs. What I had was differing definition vs.
> declaration, so a bug. The lack of alignment specification in the
> declaration of the struct essentially told (newer) GCC not to assume
> alignment - to an extent greater than e.g. a pointer would. As far as I can
> tell, GCC does not currently produce unaligned load instructions (so assumes
> that SSE* vectors are properly aligned) when all it has is a pointer coming
> from another object file. I think that's the common scenario, whereas mine
> was uncommon (and incorrect).
Yes. Note that we are trying to be more forgiving to users here and do not
exploit undefined behavior fully.
> So let's focus on PRE only.
Ok. There are related bugreports for that I think.