re PR tree-optimization/56407 (Optimizations (-O2 -O3) make comparison of arrays...
authorRichard Biener <rguenther@suse.de>
Wed, 3 Apr 2013 10:25:23 +0000 (10:25 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 3 Apr 2013 10:25:23 +0000 (10:25 +0000)
2013-04-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/56407
* gcc.dg/torture/pr56407.c: New testcase.

From-SVN: r197399

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr56407.c [new file with mode: 0644]

index b147235b908e9ae3eceb04de291c0c969305a844..5b2ae9536a514ad63226845da6cb47af14cf5d55 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-03  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/56407
+       * gcc.dg/torture/pr56407.c: New testcase.
+
 2013-04-03  Marc Glisse  <marc.glisse@inria.fr>
 
        PR tree-optimization/56790
diff --git a/gcc/testsuite/gcc.dg/torture/pr56407.c b/gcc/testsuite/gcc.dg/torture/pr56407.c
new file mode 100644 (file)
index 0000000..f26fd23
--- /dev/null
@@ -0,0 +1,48 @@
+/* { dg-do run } */
+
+extern void abort(void);
+extern int rand(void);
+
+static void copy(int *r,int *a,int na)
+{
+  int i;
+  for( i = 0 ; i < na ; i++ )
+    r[i] = a[i];
+}
+
+static void foo(int *a,int na)
+{
+  int i;
+  for( i = 0 ; i < na ; i++ )
+    a[i] = rand();
+}
+
+static int cmp(int *a,int *b,int n)
+{
+  int i;
+  for( i = 0 ; i < n ; i++ )
+    if ( a[i] != b[i] )
+      return -1;
+  return 0;
+}
+
+void __attribute__((noinline,noclone))
+test(int sz,int comm)
+{
+  int j,n;
+  int v[64],w[64];
+  for( j = 1 ; j <= sz ; j++ )
+    {
+      n = (2 * j - 1) * (2 * j - 1);
+      foo(w,n);
+      copy(v,w,n);
+      if ( comm )
+       if ( cmp(v,w,n) ) abort ();
+    }
+}
+
+int main()
+{
+  test(2,1);
+  return 0;
+}