summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture/pr69542.c
blob: ced5c326ac87f2eff44747d43df37117cf463680 (plain)
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
32
33
34
35
36
37
/* PR middle-end/69542 */
/* { dg-do compile } */
/* { dg-additional-options "-fcompare-debug" } */

typedef struct A *B;
extern int *a[];
struct C { B b; struct D *d; };
struct A { struct { struct C e[1]; long long f[1]; } u; };
struct D { int g; B h[100]; };
int b, c, e, g;
B d, f;
void foo (void) __attribute__ ((__noreturn__));
int bar (void)
{
  int i = 0;
  do
    {
      if ('E' && a[e][0] != 'V')
        foo ();
      struct D *k = d->u.e[0].d;
      B x = k->h[i], o = f->u.e[0].b;
      if (b)
        return 0;
      if (a[g][0] != 'E' && a[g][0] != 'V')
        foo ();
      struct D *n = o->u.e[0].d;
      int r = x->u.f[0];
      (void) r;
      if (c)
        foo ();
      B y = n->h[x->u.f[0]];
      if (i != y->u.f[0])
        return 0;
      i++;
    }
  while (1);
}