This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[testcase] PR optimization/5844
- From: Jakub Jelinek <jakub at redhat dot com>
- To: rth at redhat dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sun, 10 Mar 2002 21:02:15 +0100
- Subject: [testcase] PR optimization/5844
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
I didn't see any testcase being commited together with PR 5844 fix.
Ok to commit the following?
2002-03-10 Jakub Jelinek <jakub@redhat.com>
PR optimization/5844
* gcc.dg/20020310-1.c: New test.
--- gcc/testsuite/gcc.dg/20020310-1.c.jj Sun Mar 10 21:06:41 2002
+++ gcc/testsuite/gcc.dg/20020310-1.c Sun Mar 10 21:05:04 2002
@@ -0,0 +1,54 @@
+/* PR optimization/5844
+ This testcase was miscompiled because of an rtx sharing bug. */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mcpu=i586" { target i?86-*-* } } */
+
+struct A
+{
+ struct A *a;
+ int b;
+};
+
+struct B
+{
+ struct A *c;
+ unsigned int d;
+};
+
+struct A p = { &p, -1 };
+struct B q = { &p, 0 };
+
+extern void abort (void);
+extern void exit (int);
+
+struct B *
+foo (void)
+{
+ return &q;
+}
+
+void
+bar (void)
+{
+ struct B *e = foo ();
+ struct A *f = e->c;
+ int g = f->b;
+
+ if (++g == 0)
+ {
+ e->d++;
+ e->c = f->a;
+ }
+
+ f->b = g;
+}
+
+int
+main ()
+{
+ bar ();
+ if (p.b != 0 || q.d != 1 || q.c != &p)
+ abort ();
+ exit (0);
+}
Jakub