/* { 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; }