1/* { dg-do compile } */
2/* { dg-options "-O2" } */
3
4__extension__ typedef __SIZE_TYPE__ size_t;
5typedef unsigned char uint8_t;
6typedef unsigned short int uint16_t;
7typedef unsigned long long int uint64_t;
8struct magic {
9  uint8_t mask_op;
10  union {
11   uint64_t _mask;
12  } _u;
13  union VALUETYPE {
14   uint16_t h;
15  } value;
16};
17void cvt_16(union VALUETYPE *p, const struct magic *m)
18{
19  if (m->_u._mask)
20    p->h %= (uint16_t) m->_u._mask;
21}
22