Patchwork Some data-dep testcases

login
register
mail settings
Submitter Richard Guenther
Date Aug. 19, 2011, 12:29 p.m.
Message ID <alpine.LNX.2.00.1108191428530.2130@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/110586/
State New
Headers show

Comments

Richard Guenther - Aug. 19, 2011, 12:29 p.m.
While working on PR50067, with some local changes I made them fail.

Tested on x86_64-unknown-linux-gnu, applied.

Richard.

2011-08-19  Richard Guenther  <rguenther@suse.de>

	* gcc.dg/torture/pr50067-1.c: New testcase.
	* gcc.dg/torture/pr50067-2.c: Likewise.

Patch

Index: testsuite/gcc.dg/torture/pr50067-1.c
===================================================================
--- testsuite/gcc.dg/torture/pr50067-1.c	(revision 0)
+++ testsuite/gcc.dg/torture/pr50067-1.c	(revision 0)
@@ -0,0 +1,18 @@ 
+/* { dg-do run } */
+
+/* Make sure data-dependence analysis does not compute a bogus
+   distance vector for the different sized accesses.  */
+
+extern int memcmp(const void *, const void *, __SIZE_TYPE__);
+extern void abort (void);
+short a[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 };
+short b[32] = { 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, };
+int main()
+{
+  int i;
+  for (i = 0; i < 32; ++i)
+    (*((unsigned short(*)[32])&a[0]))[i] = (*((char(*)[32])&a[0]))[i+8];
+  if (memcmp (&a, &b, sizeof (a)) != 0)
+    abort ();
+  return 0;
+}
Index: testsuite/gcc.dg/torture/pr50067-2.c
===================================================================
--- testsuite/gcc.dg/torture/pr50067-2.c	(revision 0)
+++ testsuite/gcc.dg/torture/pr50067-2.c	(revision 0)
@@ -0,0 +1,20 @@ 
+/* { dg-do run } */
+
+/* Make sure data-dependence analysis does not compute a bogus
+  distance vector for the different sized accesses.  */
+
+extern int memcmp(const void *, const void *, __SIZE_TYPE__);
+extern void abort (void);
+short a[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 };
+short b[32] = { 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, };
+int main()
+{
+  int i;
+  for (i = 0; i < 32; ++i)
+    {
+      a[i] = (*((char(*)[32])&a[0]))[i+8];
+    }
+  if (memcmp (&a, &b, sizeof (a)) != 0)
+    abort ();
+  return 0;
+}