1 /* PR target/78904 */
2 /* { dg-do assemble } */
3 /* { dg-options "-O2" } */
4 
5 typedef __SIZE_TYPE__ size_t;
6 
7 struct S1
8 {
9   unsigned char pad1;
10   unsigned char val;
11   unsigned short pad2;
12 };
13 
14 extern struct S1 t[256];
15 
test_and(struct S1 a,size_t i)16 struct S1 test_and (struct S1 a, size_t i)
17 {
18   a.val &= t[i].val;
19 
20   return a;
21 }
22 
test_or(struct S1 a,size_t i)23 struct S1 test_or (struct S1 a, size_t i)
24 {
25   a.val |= t[i].val;
26 
27   return a;
28 }
29 
test_xor(struct S1 a,size_t i)30 struct S1 test_xor (struct S1 a, size_t i)
31 {
32   a.val ^= t[i].val;
33 
34   return a;
35 }
36 
test_add(struct S1 a,size_t i)37 struct S1 test_add (struct S1 a, size_t i)
38 {
39   a.val += t[i].val;
40 
41   return a;
42 }
43