diff options
author | Jeff Law <law@redhat.com> | 2016-11-18 14:52:32 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2016-11-18 14:52:32 -0700 |
commit | 57d7fe867cfc59db8481dfe0f8646f029889ef3f (patch) | |
tree | 9985d818e7b6cf2ddc5531b04e2a1537e4997fd1 /gcc/testsuite/gcc.target/m68k | |
parent | 0bdc4c1ce9470d4b5b926d2d62ba3ed243775d9e (diff) |
re PR target/25112 ([m68k] Suboptimal equality comparisons with small integers)
PR target/25112
* config/m68k/m68k.c (moveq feeding equality comparison): New
peepholes.
* config/m68k/predicates.md (addq_subq_operand): New predicate.
(equality_comparison_operator): Likewise.
PR target/25112
* gcc.target/m68k/pr25112: New test.
From-SVN: r242605
Diffstat (limited to 'gcc/testsuite/gcc.target/m68k')
-rw-r--r-- | gcc/testsuite/gcc.target/m68k/pr25112.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/m68k/pr25112.c b/gcc/testsuite/gcc.target/m68k/pr25112.c new file mode 100644 index 00000000000..0633cc10564 --- /dev/null +++ b/gcc/testsuite/gcc.target/m68k/pr25112.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +/* { dg-final { scan-assembler-times "addq" 16 } } */ +/* { dg-final { scan-assembler-times "subq" 16 } } */ +/* { dg-final { scan-assembler-times "moveq" 4 } } */ +extern int bar (void); + +#define FOO(x) \ + void foo##x (void) { int a = bar (); if (a == x) bar (); } \ + void bar##x (void) { int a = bar (); if (a == -x) bar (); } \ + void foon##x (void) { int a = bar (); if (a != x) bar (); } \ + void barn##x (void) { int a = bar (); if (a != -x) bar (); } \ + + +FOO (1) +FOO (2) +FOO (3) +FOO (4) +FOO (5) +FOO (6) +FOO (7) +FOO (8) +FOO (9) + + |