1 /* { dg-do run } */
2
3 typedef struct {
4 unsigned long a;
5 unsigned long b;
6 unsigned long c;
7 } data_o;
8 typedef struct {
9 unsigned long c;
10 unsigned long gap1;
11 unsigned long b;
12 unsigned long gap2;
13 unsigned long a;
14 unsigned long x;
15 } data_i;
16
17 volatile unsigned long gx;
18 void __attribute__((noipa))
19 bar(unsigned long x)
20 {
21 gx = x;
22 }
23
24 void __attribute__((noipa))
25 foo(data_o *o, data_i *i)
26 {
27 o->a = i->a;
28 o->b = i->b;
29 o->c = i->c;
30 bar (i->x);
31 }
32
33 int main()
34 {
35 unsigned long data[9];
36 if ((__UINTPTR_TYPE__)data & 15 != 0)
37 foo ((data_o *)&data[6], (data_i *)data);
38 else
39 foo ((data_o *)data, (data_i *)&data[3]);
40 return 0;
41 }