OSDN Git Service

* gcc.dg/intmax_t-1.c: Remove mmix-*-* from dg-error statement.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / 20020310-1.c
1 /* PR optimization/5844
2    This testcase was miscompiled because of an rtx sharing bug.  */
3 /* { dg-do run } */
4 /* { dg-options "-O2" } */
5 /* { dg-options "-O2 -mtune=i586" { target { i?86-*-* && ilp32 } } } */
6 /* { dg-options "-O2 -mtune=i586" { target { x86_64-*-* && ilp32 } } } */
7
8 struct A
9 {
10   struct A *a;
11   int b;
12 };
13
14 struct B
15 {
16   struct A *c;
17   unsigned int d;
18 };
19
20 struct A p = { &p, -1 };
21 struct B q = { &p, 0 };
22
23 extern void abort (void);
24 extern void exit (int);
25
26 struct B *
27 foo (void)
28 {
29   return &q;
30 }
31
32 void
33 bar (void)
34 {
35   struct B *e = foo ();
36   struct A *f = e->c;
37   int g = f->b;
38
39   if (++g == 0)
40     {
41       e->d++;
42       e->c = f->a;
43     }
44
45   f->b = g;
46 }
47
48 int
49 main ()
50 {
51   bar ();
52   if (p.b != 0 || q.d != 1 || q.c != &p)
53     abort ();
54   exit (0);
55 }