http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56590
Bug #: 56590
Summary: Replace auto-inc-dec pass with generic address mode
selection pass
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: [email protected]
ReportedBy: [email protected]
Target: sh*-*-*
At least on SH there are several address mode selection issues which I'd like
to group in this PR.
PR 54065
[SH] Prefer @(R0,Rn) addressing for floating-point load/store
PR 53911
[SH] Improve displacement addressing
PR 50749
Auto-inc-dec does not find subsequent contiguous mem accesses
PR 39423
[4.6/4.7/4.8 Regression] [SH] performance regression: lost mov @(disp,Rn)
PR 52049
SH Target: Inefficient constant address access
Based on my observations so far, I think the right thing to do is to replace
the current auto-inc-dec pass with a pass that optimizes address mode selection
in a more generic way, instead of just trying to find auto inc/dec
opportunities.
The basic idea is to look at all memory accesses in a function (or basic block
as a start) that share a base address and then try to select the cheapest
addressing modes for each memory access. The current address cost target hook
can be used to determine the costs of a memory access with a particular
address.
I have already started working on such a replacement pass a while ago and would
like to first do a trial with the SH target. Other targets might then also
pick it up if it seems beneficial to do so.