blob: 4dfb278c27b30188c3d889522ea48a05b2d6d616 [file] [log] [blame]
/* PR c/7652 */
/* { dg-do compile } */
/* { dg-options "-Wimplicit-fallthrough" } */
extern void bar (int);
/* Test if without else. */
void
f (int i)
{
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
bar (1);
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
return;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
goto L1;
case 2:
L1:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
goto L2;
L2:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L3;
break;
case 2:
L3:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L4;
break;
L4:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
if (i > 9)
bar (1);
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
if (i > 9)
bar (1);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
{ int a; }
{
if (i) /* { dg-warning "statement may fall through" } */
if (i > 9)
bar (1);
}
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
bar (2); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
bar (2);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
bar (2); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
bar (2);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
if (i)
bar (2);
if (i)
bar (3);
bar (4); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
if (i)
bar (2);
if (i) /* { dg-warning "statement may fall through" } */
bar (3);
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
if (i)
bar (2);
if (i)
bar (3);
bar (4);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
if (i)
bar (2);
if (i)
bar (3);
break;
case 2:
__builtin_abort ();
}
}