/* { dg-do compile } */
/* { dg-options "-O2" } */

typedef unsigned int size_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned long long int uint64_t;
struct magic {
  uint8_t mask_op;
  union {
   uint64_t _mask;
  } _u;
  union VALUETYPE {
   uint16_t h;
  } value;
};
void cvt_16(union VALUETYPE *p, const struct magic *m)
{
  if (m->_u._mask)
    p->h %= (uint16_t) m->_u._mask;
}
