/* PR tree-optimization/57442 */
/* { dg-do compile } */
/* { dg-options "-O1" } */
short a;
unsigned b;
long c;
int d;

void f(void)
{
    b = a ? : (a = b) - c + (d - (b + b));
}