aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr49163.c
blob: 4f3b056053e9d3d2cdeda946a61205de7174baf8 (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
/* PR target/49163 */
/* { dg-require-effective-target int32plus } */
struct S1
{
 unsigned f0:18;
 int f1;
} __attribute__ ((packed));

struct S2
{
  volatile long long f0;
  int f1;
};

struct S1 s1;
struct S2 s2;
const struct S2 s2array[2][1] = { };

struct S2 **sptr;

extern int bar (char a, long long b, int * c, long long d, long long e);
extern int baz (void);

int i;
int *ptr;

void
foo (int *arg)
{
  for (i = 0; i < 1; i = baz())
    {
      *arg = *(int *)sptr;
      *ptr = bar (*arg, s2.f1, ptr,
		  bar (s2array[1][0].f0, *arg, ptr, s1.f1, *ptr), *arg);
    }
}