1struct tmp
2{
3  long long int pad : 12;
4  long long int field : 52;
5};
6
7struct tmp2
8{
9  long long int field : 52;
10  long long int pad : 12;
11};
12
13struct tmp
14sub (struct tmp tmp)
15{
16  tmp.field |= 0x0008765412345678LL;
17  return tmp;
18}
19
20struct tmp2
21sub2 (struct tmp2 tmp2)
22{
23  tmp2.field |= 0x0008765412345678LL;
24  return tmp2;
25}
26
27main()
28{
29  struct tmp tmp = {0x123, 0xFFF000FFF000FLL};
30  struct tmp2 tmp2 = {0xFFF000FFF000FLL, 0x123};
31
32  tmp = sub (tmp);
33  tmp2 = sub2 (tmp2);
34
35  if (tmp.pad != 0x123 || tmp.field != 0xFFFFFF541FFF567FLL)
36    abort ();
37  if (tmp2.pad != 0x123 || tmp2.field != 0xFFFFFF541FFF567FLL)
38    abort ();
39  exit (0);
40}
41