2012-01-27 Tom de Vries <tom@codesourcery.com>
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Jan 2012 10:38:34 +0000 (10:38 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Jan 2012 10:38:34 +0000 (10:38 +0000)
PR tree-optimization/51990
* gcc.dg/pr51990.c: New test.
* gcc.dg/pr51990-2.c: Same.

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

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr51990-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr51990.c [new file with mode: 0644]

index f08fb6c..58311bc 100644 (file)
@@ -1,3 +1,9 @@
+2012-01-27  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/51990
+       * gcc.dg/pr51990.c: New test.
+       * gcc.dg/pr51990-2.c: Same.
+
 2012-01-27  Paul Thomas  <pault@gcc.gnu.org>
            Tobias Burnus <burnus@gcc.gnu.org>
 
diff --git a/gcc/testsuite/gcc.dg/pr51990-2.c b/gcc/testsuite/gcc.dg/pr51990-2.c
new file mode 100644 (file)
index 0000000..1ced0a8
--- /dev/null
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int y;
+extern int foo (int, ...) __attribute__((pure));
+
+int
+zzz (char *s1, char *s2, int len, int *q, int c)
+{
+  int z = 5;
+  unsigned int i, b;
+  struct s { char a[z]; };
+  struct s x;
+  int y_tmp = 5;
+
+  for (i = 0; i < len; i++)
+    s1[i] = s2[i];
+
+  b = z & 0x3;
+
+  len += (b == 0 ? 0 : 1) + z;
+
+  *q = len;
+
+ if (c)
+   y_tmp = foo (z, x, x) + 4;
+
+ z = foo (z, x, x) + 4;
+ y = y_tmp;
+
+ return  z;
+}
diff --git a/gcc/testsuite/gcc.dg/pr51990.c b/gcc/testsuite/gcc.dg/pr51990.c
new file mode 100644 (file)
index 0000000..c7d1b53
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int
+zzz (char *s1, char *s2, int len, int *q)
+{
+  int z = 5;
+  unsigned int i, b;
+  struct s { char a[z]; };
+  struct s x;
+
+  extern int foo (int, ...) __attribute__((pure));
+
+  for (i = 0; i < len; i++)
+    s1[i] = s2[i];
+
+  b = z & 0x3;
+
+  len += (b == 0 ? 0 : 1) + z;
+
+  *q = len;
+  return foo (z, x, x);
+}