blob: eb1e9e4a2ed1f8dab730cd9c79e890b9cd2ae6f8 [file] [log] [blame]
/* PR c/66322 */
/* { dg-do compile } */
#ifndef __cplusplus
# define bool _Bool
# define true 1
# define false 0
#endif
void
nowarn (bool b)
{
switch (b)
;
switch (b)
{
case true:
case false:
break;
}
switch (b)
{
case true:
break;
}
switch (b)
{
case true:
default:
break;
}
switch (b)
{
case false:
break;
}
switch (b)
{
case false:
default:
break;
}
switch (b)
{
default:
break;
}
switch (b)
{
case false ... true:
break;
}
switch (b)
{
case 1:
switch (b)
{
case true:
default:
break;
}
default:
break;
}
}
void
warn (bool b)
{
switch (b) /* { dg-warning "switch condition has" } */
{
case true:
case false:
default:
break;
}
switch (b) /* { dg-warning "switch condition has" } */
{
case false ... true:
default:
break;
}
}
void
warn2 (int n)
{
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case 0 ... 2: /* { dg-warning "upper value" "" { target c++ } } */
default:
break;
}
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case 1 ... 10: /* { dg-warning "upper value" "" { target c++ } } */
default:
break;
}
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case 2: /* { dg-warning "case label" "" { target c++ } } */
break;
}
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case 0:
case 1:
case -1: /* { dg-warning "case label" "" { target c++ } } */
break;
}
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case -1 ... 1: /* { dg-warning "lower value" "" { target c++ } } */
break;
}
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case -1 ... 0: /* { dg-warning "lower value" "" { target c++ } } */
default:
break;
}
switch (n == 2) /* { dg-warning "switch condition has" } */
{
case -10 ... -1: /* { dg-warning "case label" "" { target c++ } } */
default:
break;
}
}