summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/pr84821.C
blob: 39da3671eec13decd0426fe07f7fc2cd869e1b35 (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// { dg-do compile }
// { dg-options "-O2" }
// { dg-additional-options "-fPIC" { target fpic } }

typedef struct a *b;
struct a {
  int c;
  unsigned d[];
};
int e, f, g, i, l, m;
struct o {
  long *h;
  int c;
  unsigned j;
  int k;
  long aa;
};
inline void p(o *r) { r->c = g; }
int *n, *ab;
inline bool s(o *r) {
  for (; r->aa == 0; r->aa = r->h[r->j])
    if (r->j >= r->c)
      return false;
  r->aa >>= 1;
  for (; r->aa;)
    r++;
  *n = r->k;
  return true;
}
class t {
public:
  t(int);
  operator b() { return q; }
  b q;
};
bool u, v, ac;
void fn3() {
  long w, x;
  o ad;
  bool ae;
  t af(i), ag(i);
  for (p(&ad); s(&ad);) {
    a *ah = af, *ai = ah, *aj = ag;
    x = ai->d[e] >> f & 1;
    ae = x;
    ai = aj;
    w = ai->d[e] >> f & 1;
    ac = w;
    if (v && u && w && x)
      ab[l] = ++m;
    u = x;
  }
  for (;;)
    ;
}