summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/m68k
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2016-11-18 14:52:32 -0700
committerJeff Law <law@gcc.gnu.org>2016-11-18 14:52:32 -0700
commit57d7fe867cfc59db8481dfe0f8646f029889ef3f (patch)
tree9985d818e7b6cf2ddc5531b04e2a1537e4997fd1 /gcc/testsuite/gcc.target/m68k
parent0bdc4c1ce9470d4b5b926d2d62ba3ed243775d9e (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.c26
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)
+
+