https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68513
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> --- A slightly different, but equivalent testcase: int i; unsigned u; volatile unsigned int *e; void fn1 (void) { (short) ((i ? *e : 0) & ~u | i & u); }