public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug rtl-optimization/54555] New: (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising @ 2012-09-12 9:37 schwab@linux-m68k.org 2014-06-16 13:14 ` [Bug rtl-optimization/54555] " schwab@linux-m68k.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: schwab@linux-m68k.org @ 2012-09-12 9:37 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54555 Bug #: 54555 Summary: (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned@gcc.gnu.org ReportedBy: schwab@linux-m68k.org Target: m68k-*-* Postreload (reload_cse_move2add) transforms (set (REGX) (CONST_INT A)) ... (set (REGX) (CONST_INT B)) into (set (REGX) (CONST_INT A)) ... (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) which is a pessimisation on m68k if REGX is a data register and B is a small constant in range for moveq which can no longer be used for the second SET; instead moveb is used which is bigger and also slower on <= m68030. $ cat moveb.c void foo (void); void bar (int a) { if (a == 16 || a == 23) foo (); if (a == -110 || a == -128) foo (); } $ gcc -O2 -S moveb.c $ cat moveb.s #NO_APP .file "moveb.c" .text .align 2 .globl f .type f, @function f: link.w %fp,#0 move.l %d2,-(%sp) move.l 8(%fp),%d2 moveq #16,%d0 cmp.l %d2,%d0 jeq .L2 move.b #23,%d0 <--- should be moveq #23,%d0 cmp.l %d2,%d0 jeq .L2 moveq #-110,%d0 cmp.l %d2,%d0 jeq .L4 .L13: move.b #-128,%d0 <--- should be moveq #-128,%d0 cmp.l %d2,%d0 jeq .L4 move.l -4(%fp),%d2 unlk %fp rts .L2: jsr foo moveq #-110,%d0 cmp.l %d2,%d0 jne .L13 .L4: move.l -4(%fp),%d2 unlk %fp jra bar .size f, .-f .ident "GCC: (GNU) 4.8.0 20120912 (experimental)" .section .note.GNU-stack,"",@progbits This transformation was introduced in r68532 (gcc 3.4). ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/54555] (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising 2012-09-12 9:37 [Bug rtl-optimization/54555] New: (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising schwab@linux-m68k.org @ 2014-06-16 13:14 ` schwab@linux-m68k.org 2014-06-18 10:37 ` schwab at gcc dot gnu.org 2014-06-18 10:41 ` schwab@linux-m68k.org 2 siblings, 0 replies; 4+ messages in thread From: schwab@linux-m68k.org @ 2014-06-16 13:14 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54555 --- Comment #1 from Andreas Schwab <schwab@linux-m68k.org> --- Introduced in r63426. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/54555] (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising 2012-09-12 9:37 [Bug rtl-optimization/54555] New: (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising schwab@linux-m68k.org 2014-06-16 13:14 ` [Bug rtl-optimization/54555] " schwab@linux-m68k.org @ 2014-06-18 10:37 ` schwab at gcc dot gnu.org 2014-06-18 10:41 ` schwab@linux-m68k.org 2 siblings, 0 replies; 4+ messages in thread From: schwab at gcc dot gnu.org @ 2014-06-18 10:37 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54555 --- Comment #2 from Andreas Schwab <schwab at gcc dot gnu.org> --- Author: schwab Date: Wed Jun 18 10:37:14 2014 New Revision: 211777 URL: https://gcc.gnu.org/viewcvs?rev=211777&root=gcc&view=rev Log: Use strict_low_part for loading a constant only if it is cheaper PR rtl-optimization/54555 * postreload.c (move2add_use_add2_insn): Substitute STRICT_LOW_PART only if it is cheaper. testsuite/: PR rtl-optimization/54555 * gcc.target/m68k/pr54555.c: New test. Added: trunk/gcc/testsuite/gcc.target/m68k/pr54555.c Modified: trunk/gcc/ChangeLog trunk/gcc/postreload.c trunk/gcc/testsuite/ChangeLog ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/54555] (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising 2012-09-12 9:37 [Bug rtl-optimization/54555] New: (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising schwab@linux-m68k.org 2014-06-16 13:14 ` [Bug rtl-optimization/54555] " schwab@linux-m68k.org 2014-06-18 10:37 ` schwab at gcc dot gnu.org @ 2014-06-18 10:41 ` schwab@linux-m68k.org 2 siblings, 0 replies; 4+ messages in thread From: schwab@linux-m68k.org @ 2014-06-18 10:41 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54555 Andreas Schwab <schwab@linux-m68k.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED Target Milestone|--- |4.10.0 --- Comment #3 from Andreas Schwab <schwab@linux-m68k.org> --- Fixed for 4.10. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-06-18 10:41 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-09-12 9:37 [Bug rtl-optimization/54555] New: (set (REGX) (CONST_INT B)) -> (set (STRICT_LOW_PART (REGX)) (CONST_INT B)) is pessimising schwab@linux-m68k.org 2014-06-16 13:14 ` [Bug rtl-optimization/54555] " schwab@linux-m68k.org 2014-06-18 10:37 ` schwab at gcc dot gnu.org 2014-06-18 10:41 ` schwab@linux-m68k.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).