From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1390 invoked by alias); 10 Jul 2012 07:38:53 -0000 Received: (qmail 1301 invoked by uid 22791); 10 Jul 2012 07:38:52 -0000 X-SWARE-Spam-Status: No, hits=-3.6 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 10 Jul 2012 07:38:39 +0000 From: "olegendo at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/53911] New: [SH] Improve displacement addressing Date: Tue, 10 Jul 2012 07:38:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: olegendo at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-07/txt/msg00803.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53911 Bug #: 53911 Summary: [SH] Improve displacement addressing Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: target AssignedTo: unassigned@gcc.gnu.org ReportedBy: olegendo@gcc.gnu.org Target: sh*-*-* The address re-basing for displacement addresses could be improved by looking at all the required displacements in a function. The current approach re-bases an address on certain alignments and just hopes that the new base address will be useful and that CSE will eliminate redundant address re-base calculations. Probably a target specific RTL pass is required to accomplish this. Since address re-base calculations require additional registers it has an impact on register allocation. Thus the pass should be ran sometime after combine and before reload. On the other hand, reload itself might generate displacement addresses to access pseudos on the stack, which also produces displacement addressings. Probably it would be useful to run the pass again after reload, too.