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