[ARM] Tests for arm_restrict_it patterns in thumb2.md
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Feb 2016 14:21:52 +0000 (14:21 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Feb 2016 14:21:52 +0000 (14:21 +0000)
* gcc.target/arm/cond_sub_restrict_it.c: New test.
* gcc.target/arm/condarith_restrict_it.c: Likewise.
* gcc.target/arm/movcond_restrict_it.c: Likewise.
* gcc.target/arm/negscc_restrict_it.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233667 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/condarith_restrict_it.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/movcond_restrict_it.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/negscc_restrict_it.c [new file with mode: 0644]

index 5b758dc..bbc005e 100644 (file)
@@ -1,3 +1,10 @@
+2016-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * gcc.target/arm/cond_sub_restrict_it.c: New test.
+       * gcc.target/arm/condarith_restrict_it.c: Likewise.
+       * gcc.target/arm/movcond_restrict_it.c: Likewise.
+       * gcc.target/arm/negscc_restrict_it.c: Likewise.
+
 2016-02-24  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/69915
diff --git a/gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c b/gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c
new file mode 100644 (file)
index 0000000..8411643
--- /dev/null
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-mthumb -O -mrestrict-it" }  */
+
+int a;
+
+__attribute__((noinline, noclone)) int
+fn1 (int c, int d)
+{
+  a -= c == d;
+  return a;
+}
+
+int
+main (void)
+{
+  a = 10;
+  if (fn1 (4, 4) != 9)
+    __builtin_abort ();
+
+  a = 5;
+  if (fn1 (3, 4) != 5)
+    __builtin_abort ();
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/condarith_restrict_it.c b/gcc/testsuite/gcc.target/arm/condarith_restrict_it.c
new file mode 100644 (file)
index 0000000..ad0d15b
--- /dev/null
@@ -0,0 +1,47 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-mthumb -O2 -mrestrict-it" }  */
+
+__attribute__ ((noinline, noclone)) void
+fn2 ()
+{
+  __builtin_printf ("4");
+}
+
+enum
+{
+  ONE = 1,
+  TWO
+} a;
+
+int b;
+
+__attribute__ ((noinline, noclone)) int
+fn1 ()
+{
+  int c = b == 0;
+  if (a <= ONE)
+    if (b == 0)
+      fn2 ();
+  if (a)
+    if (c)
+      a = 0;
+
+  return a;
+}
+
+int
+main (void)
+{
+  a = ONE;
+  b = 1;
+  if (fn1 () != ONE)
+    __builtin_abort ();
+
+  a = TWO;
+  b = 0;
+  if (fn1 () != 0)
+    __builtin_abort ();
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/movcond_restrict_it.c b/gcc/testsuite/gcc.target/arm/movcond_restrict_it.c
new file mode 100644 (file)
index 0000000..f1f9cfa
--- /dev/null
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-mthumb -O3 -mrestrict-it" }  */
+
+int a;
+
+__attribute__ ((noinline, noclone)) int
+fn1 (int c, int d)
+{
+  if (c > d)
+    a = 1;
+  else
+    a = -1;
+  return a;
+}
+
+int
+main (void)
+{
+  if (fn1 (4, 5) != -1)
+    __builtin_abort ();
+
+  if (fn1 (5, 4) != 1)
+    __builtin_abort ();
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/negscc_restrict_it.c b/gcc/testsuite/gcc.target/arm/negscc_restrict_it.c
new file mode 100644 (file)
index 0000000..b24c6ec
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-mthumb -O2 -mrestrict-it" }  */
+
+__attribute__ ((noinline, noclone)) int
+fn1 (int a, int b)
+{
+  return (a == b ? 0 : -1);
+}
+
+int
+main (void)
+{
+  if (fn1 (3, 3) != 0)
+    __builtin_abort ();
+
+  if (fn1 (6, 7) != -1)
+    __builtin_abort ();
+}