blob: fbb97122ecb5ea39d5eed7644a770c6fcef0b896 [file] [log] [blame]
/* PR c/7652 */
/* { dg-do compile } */
/* { dg-options "-Wimplicit-fallthrough" } */
extern void bar (int);
/* Test if with else. */
void
f (int i)
{
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
bar (1);
else
bar (2);
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
bar (2);
bar (3); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
bar (2); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
bar (2);
bar (3); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
bar (1);
else
return;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
return;
bar (3); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
return;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
return;
bar (3); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
{
bar (1);
bar (2);
bar (3);
bar (4);
}
else
{
bar (5);
bar (6);
bar (7);
bar (8);
}
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
{
bar (1);
bar (2);
bar (3);
bar (4);
}
else
{
bar (5);
bar (6);
bar (7);
bar (8);
}
bar (9); /* { dg-warning "statement may fall through" } */
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
{
}
else
bar (2);
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
bar (1);
else
{
}
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
{
}
else
{
}
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
return;
else
{
}
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
{
}
else
return;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L1;
else
bar (2); /* { dg-warning "statement may fall through" } */
case 2:
L1:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L2;
else
bar (2); /* { dg-warning "statement may fall through" } */
L2:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
bar (1);
else
goto L3;
case 2:
L3:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i) /* { dg-warning "statement may fall through" } */
bar (1);
else
goto L4;
L4:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L5;
else
goto L5;
L5:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
bar (2);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
bar (2);
bar (3);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
bar (2);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
bar (2);
bar (3);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
return;
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
return;
bar (3);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
return;
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
return;
bar (3);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
{
bar (1);
bar (2);
bar (3);
bar (4);
}
else
{
bar (5);
bar (6);
bar (7);
bar (8);
}
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
{
bar (1);
bar (2);
bar (3);
bar (4);
}
else
{
bar (5);
bar (6);
bar (7);
bar (8);
}
bar (9);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
{
}
else
bar (2);
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
{
}
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
{
}
else
{
}
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
return;
else
{
}
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
{
}
else
return;
break;
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L6;
else
bar (2);
break;
case 2:
L6:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L7;
else
bar (2);
break;
L7:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
goto L8;
break;
case 2:
L8:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
bar (1);
else
goto L9;
break;
L9:
case 2:
__builtin_abort ();
}
switch (i)
{
case 1:
if (i)
goto L10;
else
goto L10;
break;
L10:
case 2:
__builtin_abort ();
}
}