/* PR c/60439 */
/* { dg-do compile } */
/* { dg-prune-output "case label value exceeds" } */

#ifndef __cplusplus
# define bool _Bool
#endif

extern bool foo (void);

void
f1 (bool b)
{
  switch (b) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
}

void
f2 (int a, int b)
{
  switch (a && b) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch ((bool) (a && b)) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch ((a && b) || a) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  /* No warnings on following.  */
  switch ((int) (a && b))
    break;
  switch ((unsigned int) (a && b))
    break;
  switch ((unsigned short int) (a && b))
    break;
  switch ((char) (a && b))
    break;
}

void
f3 (int a)
{
  switch (!!a) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (!a) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
}

void
f4 (void)
{
  switch (foo ()) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
}

void
f5 (int a)
{
  switch (a == 3) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (a != 3) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (a > 3) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (a < 3) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (a <= 3) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (a >= 3) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (foo (), foo (), a >= 42) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (a == 3, a & 4, a ^ 5, a)
    break;
  switch ((int) (a == 3))
    break;
  switch ((int) (a != 3))
    break;
}

void
f6 (bool b)
{
  switch (b) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
  switch (!b) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
}

void
f7 (void)
{
  bool b;
  switch (b = 1) /* { dg-warning "switch condition has" } */
    {
    case 3:
      break;
    }
}

void
f8 (int i)
{
  switch (i)
    break;
  switch ((int) i)
    break;
  switch ((unsigned int) i)
    break;
  switch ((bool) i) /* { dg-warning "switch condition has" } */
    {
    case 11:
      break;
    }
}
