https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52897

Jeffrey A. Law <law at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P5
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-01-16
                 CC|                            |law at redhat dot com
     Ever confirmed|0                           |1

--- Comment #7 from Jeffrey A. Law <law at redhat dot com> ---
It would be best to describe the m68k port as in maintenance mode only.  As
Mikael noted, it's certainly not a priority anymore, but we do make an effort
to fix correctness issues, particularly those which are regressions relative to
prior releases.

Code generation improvements are significantly lower in terms of priority. 
However, if you're able to show the same code regressing from a performance
standpoint on another more common platform (say m68k, aarch64, power), then
there's a better chance someone will devote some time to the issue since it's
likely a target independent missed optimization.

The first thing I notice when I look at this bug is that as we come out of the
SSA optimizers we've split the memory references.  That isn't inherently wrong
as we have RTL optimizers that ought to be able to put them back together.  
But that doesn't happen because the key memory objects are declared volatile.

If I remove the volatile designation I get dramatically better code because we
end up doing memory->memory moves rather than load into a register then a store
from the register.

I suspect this particular issue is only going to show up on targets where we
have memory-to-memory moves which is relatively rare.

Reply via email to