From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26937 invoked by alias); 3 Jan 2015 08:05:14 -0000 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 Received: (qmail 26913 invoked by uid 48); 3 Jan 2015 08:05:09 -0000 From: "oshima-ya@yagoto-urayama.jp" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/64479] New: wrong optimization delayed-branch for SH Date: Sat, 03 Jan 2015 08:05:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Version: 4.8.4 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: oshima-ya@yagoto-urayama.jp X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-01/txt/msg00091.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D64479 Bug ID: 64479 Summary: wrong optimization delayed-branch for SH Product: gcc Version: 4.8.4 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: oshima-ya@yagoto-urayama.jp On NetBSD/landisk(sh3) 7.0_BETA, gcc4.8.4 generates some strange code. Test case: int foo(int); void bar(int *); void func(int args) { int key; int flag =3D (args=3D=3D0); bar(&key); if (!args) foo(1); if (foo(args)) { if (flag && key =3D=3D 0) foo(2); else if (flag) foo(3); } } it generated by compile with -Os -S: func: .LFB0: .cfi_startproc mov.l r8,@-r15 .cfi_def_cfa_offset 4 .cfi_offset 8, -4 mov.l r9,@-r15 .cfi_def_cfa_offset 8 .cfi_offset 9, -8 mov.l r10,@-r15 .cfi_def_cfa_offset 12 .cfi_offset 10, -12 mov.l r11,@-r15 .cfi_def_cfa_offset 16 .cfi_offset 11, -16 sts.l pr,@-r15 .cfi_def_cfa_offset 20 .cfi_offset 17, -20 add #-4,r15 .cfi_def_cfa_offset 24 mov.l .L16,r1 tst r4,r4 movt r8 # T bit -> R8 mov r4,r9 jsr @r1 # subroutine call (bar) mov r15,r4 mov.l .L18,r11 bf .L2=E3=80=80=E3=80=80=E3=80=80 =E3=80=80# what condition? (= T bit =3D=3D 0?) jsr @r11 mov #1,r4 .L2 When compiled with -Os -fno-delayed-branch -S: func: .LFB0: .cfi_startproc mov.l r8,@-r15 .cfi_def_cfa_offset 4 .cfi_offset 8, -4 mov.l r9,@-r15 .cfi_def_cfa_offset 8 .cfi_offset 9, -8 mov.l r10,@-r15 .cfi_def_cfa_offset 12 .cfi_offset 10, -12 mov.l r11,@-r15 .cfi_def_cfa_offset 16 .cfi_offset 11, -16 sts.l pr,@-r15 .cfi_def_cfa_offset 20 .cfi_offset 17, -20 add #-4,r15 .cfi_def_cfa_offset 24 mov.l .L16,r1 tst r4,r4 movt r8 # T bit -> R8 mov r4,r9 mov r15,r4 jsr @r1 # subroutine call (bar) nop tst r8,r8 # if (R8 =3D=3D 0) then T bit =3D 1 mov.l .L18,r11=20=20 bt .L2 # if (T bit =3D=3D 1) branch .L2 mov #1,r4 jsr @r11 nop .L2: With -Os (include -fdelayed-branch), tst r8,r8 instruction is omitted, and branch condition is inverted. The same problem in this case occurs in flow_loops_find() function of gcc/cfgloop.c when building gcc 4.8.4 for NetBSD/sh3-binary. So gcc native-binary for sh3 will be wrong. >>From gcc-bugs-return-472098-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Jan 03 08:19:04 2015 Return-Path: Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 30993 invoked by alias); 3 Jan 2015 08:19:03 -0000 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 Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 30946 invoked by uid 48); 3 Jan 2015 08:18:58 -0000 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/64477] [4.9/5 Regression] x86 sse unnecessary GPR spill Date: Sat, 03 Jan 2015 08:19:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 4.9.2 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.9.3 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status cf_reconfirmed_on cc target_milestone short_desc everconfirmed Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-01/txt/msg00092.txt.bz2 Content-length: 842 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64477 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-01-03 CC| |jakub at gcc dot gnu.org, | |vmakarov at gcc dot gnu.org Target Milestone|--- |4.9.3 Summary|x86 sse unnecessary GPR |[4.9/5 Regression] x86 sse |spill |unnecessary GPR spill Ever confirmed|0 |1 --- Comment #1 from Jakub Jelinek --- Started with r210824.