aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr91854.c
blob: fbf33a5889062781200b0f3181580bbdb04cfab4 (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
/* PR target/91854 */
/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
/* { dg-do assemble } */
/* { dg-options "-O2 -Wno-int-conversion" }  */
/* { dg-additional-options "-fPIE -mcpu=niagara4" { target sparc*-*-* } } */

typedef struct {
  long a;
} __attribute__((packed)) c;
void *e, *f;
int i, j, ab, k, l, m, o;
inline int g(int p) {
  if (__builtin_expect(p, 1)) {
    const int aa = ((c *)e)->a ^ ((c *)f)->a;
    if (aa)
      f = sizeof(long);
    return f;
  }
}
void d();
int am ();
inline int n(char p, int u) {
  int q, r, ac = i;
  short b = m;
  while (r && u) {
    if (l) {
      if (k) {
        void *h = i;
        if (__builtin_expect(p, 1)) {
          const int aa = ((c *)e)->a ^ ((c *)h)->a;
          if (aa)
            h = sizeof(long);
          q = h;
        }
      }
      ab = q;
      char s;
      if (s) {
        char t = l = g(t);
      }
    }
    if (j && b)
      if (ac)
        d();
  }
}
void v() {
  const int al = am();
  if (al)
    n(am, v);
an:
  n(am, v);
  if (o)
    goto an;
}