Move strcmpopt_6.c from gcc.dg to gcc.target/aarch64 and gcc.target/i386.
authorQing Zhao <qing.zhao@oracle.com>
Thu, 30 Aug 2018 14:46:53 +0000 (14:46 +0000)
committerQing Zhao <qinzhao@gcc.gnu.org>
Thu, 30 Aug 2018 14:46:53 +0000 (14:46 +0000)
From-SVN: r263983

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/strcmpopt_6.c [deleted file]
gcc/testsuite/gcc.target/aarch64/strcmpopt_6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/strcmpopt_6.c [new file with mode: 0644]

index 75e6c6755638dd87cf03ad624a2748752541b785..e9e4b5c91b5bb2840bb249d3b0e5e266c0acc2e2 100644 (file)
@@ -1,3 +1,10 @@
+2018-08-30  Qing Zhao  <qing.zhao@oracle.com>
+
+       PR 86519
+       gcc.dg/strcmpopt_6.c: Remove.
+       gcc.target/aarch64/strcmpopt_6.c: New testcase.
+       gcc.target/i386/strcmpopt_6.c: Likewise.
+
 2018-08-30  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/87147
diff --git a/gcc/testsuite/gcc.dg/strcmpopt_6.c b/gcc/testsuite/gcc.dg/strcmpopt_6.c
deleted file mode 100644 (file)
index 4c6de02..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* When the specified length exceeds one of the arguments of the call to memcmp, 
-   the call to memcmp should NOT be inlined.  */
-/* { dg-do compile } */
-/* { dg-options "-O2 -Wno-stringop-overflow" } */
-
-typedef struct { char s[8]; int x; } S;
-
-__attribute__ ((noinline)) int
-f1 (S * s)
-{
-  int result = 0;
-  result += __builtin_memcmp (s->s, "a", 3); 
-  return result;
-}
-
-__attribute__ ((noinline)) int
-f2 (char *p)
-{
-  int result = 0;
-  result += __builtin_memcmp (p, "a", 3); 
-  return result;
-}
-
-int main (void)
-{
-  S ss = {{'a','b','c'}, 2};
-  char *s = "abcd";
-
-  if (f1 (&ss) < 0 || f2 (s) < 0)
-    __builtin_abort ();
-
-  return 0;
-
-}
-
-/* { dg-final { scan-assembler-times "memcmp" 2 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/strcmpopt_6.c b/gcc/testsuite/gcc.target/aarch64/strcmpopt_6.c
new file mode 100644 (file)
index 0000000..4c6de02
--- /dev/null
@@ -0,0 +1,36 @@
+/* When the specified length exceeds one of the arguments of the call to memcmp, 
+   the call to memcmp should NOT be inlined.  */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wno-stringop-overflow" } */
+
+typedef struct { char s[8]; int x; } S;
+
+__attribute__ ((noinline)) int
+f1 (S * s)
+{
+  int result = 0;
+  result += __builtin_memcmp (s->s, "a", 3); 
+  return result;
+}
+
+__attribute__ ((noinline)) int
+f2 (char *p)
+{
+  int result = 0;
+  result += __builtin_memcmp (p, "a", 3); 
+  return result;
+}
+
+int main (void)
+{
+  S ss = {{'a','b','c'}, 2};
+  char *s = "abcd";
+
+  if (f1 (&ss) < 0 || f2 (s) < 0)
+    __builtin_abort ();
+
+  return 0;
+
+}
+
+/* { dg-final { scan-assembler-times "memcmp" 2 } } */
diff --git a/gcc/testsuite/gcc.target/i386/strcmpopt_6.c b/gcc/testsuite/gcc.target/i386/strcmpopt_6.c
new file mode 100644 (file)
index 0000000..4c6de02
--- /dev/null
@@ -0,0 +1,36 @@
+/* When the specified length exceeds one of the arguments of the call to memcmp, 
+   the call to memcmp should NOT be inlined.  */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wno-stringop-overflow" } */
+
+typedef struct { char s[8]; int x; } S;
+
+__attribute__ ((noinline)) int
+f1 (S * s)
+{
+  int result = 0;
+  result += __builtin_memcmp (s->s, "a", 3); 
+  return result;
+}
+
+__attribute__ ((noinline)) int
+f2 (char *p)
+{
+  int result = 0;
+  result += __builtin_memcmp (p, "a", 3); 
+  return result;
+}
+
+int main (void)
+{
+  S ss = {{'a','b','c'}, 2};
+  char *s = "abcd";
+
+  if (f1 (&ss) < 0 || f2 (s) < 0)
+    __builtin_abort ();
+
+  return 0;
+
+}
+
+/* { dg-final { scan-assembler-times "memcmp" 2 } } */