diff mbox

Add testcase for pr39726, update ChangeLog to note when it was fixed

Message ID 5566336C.7030200@redhat.com
State New
Headers show

Commit Message

Jeff Law May 27, 2015, 9:13 p.m. UTC
My most recent match.pd changes inadvertently fixed 39726.  I guess it's 
only fitting since it was 39726 that got me started looking at using 
match.pd to solve certain operand narrowing problems.

This just adds a regression test for the m68k port and puts a marker on 
the ChangeLog entry which fixed 39726.

Applied to the trunk.
commit aff2f8a50a248d802d37ffcd478a12eb6ee3a72b
Author: Jeff Law <law@redhat.com>
Date:   Wed May 27 15:11:25 2015 -0600

            PR target/39726
            * gcc.dg/target/m68k/pr39726-1.c: New test.
diff mbox

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 76bb537..6528d42 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -2964,6 +2964,7 @@ 
 
 2015-05-07  Jeff Law  <law@redhat.com>
 
+	PR target/39726
 	* match.pd (bit_and (plus/minus (convert @0) (convert @1) mask): New
 	simplifier to narrow arithmetic.
 	* generic-match-head.c: (types_match, single_use): New functions.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1923a2f..a1a242e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@ 
+2015-05-27  Jeff Law  <law@redhat.com>
+
+	PR target/39726
+	* gcc.dg/target/m68k/pr39726-1.c: New test.
+
 2015-05-27  Nathan Sidwell  <nathan@acm.org>
 
 	PR c++/66270
diff --git a/gcc/testsuite/gcc.target/m68k/pr39726.c b/gcc/testsuite/gcc.target/m68k/pr39726.c
new file mode 100644
index 0000000..94d41ba
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/pr39726.c
@@ -0,0 +1,65 @@ 
+/* { dg-do assemble } /*
+/* { dg-options "-O2 -fomit-frame-pointer" } */
+/* { dg-final { object-size text <= 228 } } */
+
+unsigned char v;
+
+int a0bs (unsigned char u, unsigned char w)
+{
+  if ((u - w) & 0x80)
+    v = 1;
+}
+
+int a1bs (unsigned char u, unsigned char w)
+{
+  if ((u + w) & 0x80)
+    v = 1;
+}
+
+int a0b (unsigned char u, unsigned char w)
+{
+  if ((u - w) & 0x22)
+    v = 1;
+}
+
+int a1b (unsigned char u, unsigned char w)
+{
+  if ((u + w) & 0x22)
+    v = 1;
+}
+
+int a0ws (unsigned short u, unsigned short w)
+{
+  if ((u - w) & 0x8000)
+    v = 1;
+}
+
+int a1ws (unsigned short u, unsigned short w)
+{
+  if ((u + w) & 0x8000)
+    v = 1;
+}
+
+int a0wbs (unsigned short u, unsigned short w)
+{
+  if ((u - w) & 0x80)
+    v = 1;
+}
+
+int a1wbs (unsigned short u, unsigned short w)
+{
+  if ((u + w) & 0x80)
+    v = 1;
+}
+
+int a0w (unsigned short u, unsigned short w)
+{
+  if ((u - w) & 0x8421)
+    v = 1;
+}
+
+int a1w (unsigned short u, unsigned short w)
+{
+  if ((u + w) & 0x8421)
+    v = 1;
+}