From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18615 invoked by alias); 16 Sep 2012 15:26:59 -0000 Received: (qmail 18605 invoked by uid 22791); 16 Sep 2012 15:26:58 -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; Sun, 16 Sep 2012 15:26:43 +0000 From: "olegendo at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/54602] New: [SH] Register pop insn not put in rts delay slot Date: Sun, 16 Sep 2012 15:26: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-09/txt/msg01222.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54602 Bug #: 54602 Summary: [SH] Register pop insn not put in rts delay slot 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 following case: int test01 (int a, int b); int test00 (int a, int b, int c, int d) { return test01 (a, b) + c; } Compiled with -O2 -m2: mov.l .L3,r0 ! 9 movsi_i/1 [length = 2] mov.l r8,@-r15 ! 26 movsi_i/7 [length = 2] sts.l pr,@-r15 ! 27 movsi_i/9 [length = 2] jsr @r0 ! 12 call_valuei [length = 2] mov r6,r8 ! 4 movsi_i/2 [length = 2] add r8,r0 ! 14 *addsi3_compact [length = 2] lds.l @r15+,pr ! 33 *movsi_pop/3 [length = 2] mov.l @r15+,r8 ! 34 *movsi_pop/1 [length = 2] rts nop ! 36 *return_i [length = 4] Compiled with -O2 -m2a: mov.l .L3,r0 ! 9 movsi_ie/1 [length = 2] mov.l r8,@-r15 ! 30 movsi_ie/9 [length = 4] sts.l pr,@-r15 ! 31 movsi_ie/11 [length = 2] jsr @r0 ! 12 call_valuei [length = 2] mov r6,r8 ! 4 movsi_ie/2 [length = 2] add r8,r0 ! 14 *addsi3_compact [length = 2] lds.l @r15+,pr ! 37 *movsi_pop/3 [length = 2] mov.l @r15+,r8 ! 38 *movsi_pop/1 [length = 2] rts/n ! 40 *return_i [length = 4] The pop insn of r8 is not placed in the delay slot of rts without any obvious reason. This happens only for -m1 and -m2*.