/* { dg-do compile} */
/* { dg-options "-O2 -fdump-tree-evrp" } */


unsigned char
foo (unsigned int x)
{
  _Bool y = x;
  return (((unsigned char) ~0) >> y) * 2;
}

unsigned char
bar (unsigned int x)
{
  return (((unsigned char) ~0) >> (_Bool) x) * 2;
}

unsigned
baz (unsigned int x)
{
  if (x >= 4) return 32;
  return (-1U >> x) * 16;
}

/* { dg-final { scan-tree-dump-times  "254" 2 "evrp" } }  */
/* { dg-final { scan-tree-dump "= PHI <32.*, 4294967280" "evrp" } }  */

