This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fix rtl/23560


On Fri, Aug 26, 2005 at 12:14:51AM -0700, Richard Henderson wrote:
> 	* loop.c (biased_biv_may_wrap_p): New.
> 	(maybe_eliminate_biv_1): Use it to suppress non-equality
> 	comparison transformations.  Delete disabled code.

You haven't committed the testcase with it, ok to commit?
Tested on HEAD with your patch applied.

2005-08-26  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-opt/23560
	* gcc.c-torture/execute/20050826-2.c: New test.

--- gcc/testsuite/gcc.c-torture/execute/20050826-2.c.jj	2005-08-22 12:21:00.108311280 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20050826-2.c	2005-08-26 16:21:05.000000000 +0200
@@ -0,0 +1,62 @@
+/* PR rtl-optimization/23560 */
+
+struct rtattr
+{
+  unsigned short rta_len;
+  unsigned short rta_type;
+};
+
+__attribute__ ((noinline))
+int inet_check_attr (void *r, struct rtattr **rta)
+{
+  int i;
+
+  for (i = 1; i <= 14; i++)
+    {
+      struct rtattr *attr = rta[i - 1];
+      if (attr)
+	{
+	  if (attr->rta_len - sizeof (struct rtattr) < 4)
+	    return -22;
+	  if (i != 9 && i != 8)
+	    rta[i - 1] = attr + 1;
+	}
+    }
+  return 0;
+}
+
+extern void abort (void);
+
+int
+main (void)
+{
+  struct rtattr rt[2];
+  struct rtattr *rta[14];
+  int i;
+
+  rt[0].rta_len = sizeof (struct rtattr) + 8;
+  rt[0].rta_type = 0;
+  rt[1] = rt[0];
+  for (i = 0; i < 14; i++)
+    rta[i] = &rt[0];
+  if (inet_check_attr (0, rta) != 0)
+    abort ();
+  for (i = 0; i < 14; i++)
+    if (rta[i] != &rt[i != 7 && i != 8])
+      abort ();
+  for (i = 0; i < 14; i++)
+    rta[i] = &rt[0];
+  rta[1] = 0;
+  rt[1].rta_len -= 8;
+  rta[5] = &rt[1];
+  if (inet_check_attr (0, rta) != -22)
+    abort ();
+  for (i = 0; i < 14; i++)
+    if (i == 1 && rta[i] != 0)
+      abort ();
+    else if (i != 1 && i <= 5 && rta[i] != &rt[1])
+      abort ();
+    else if (i > 5 && rta[i] != &rt[0])
+      abort ();
+  return 0;
+}

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]