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);
}
