| /* PR c/7652 */ |
| /* { dg-do compile } */ |
| /* { dg-require-effective-target alloca } */ |
| /* { dg-options "-Wimplicit-fallthrough" } */ |
| |
| extern void bar (int); |
| extern int bar2 (void); |
| extern int *map; |
| void |
| f (int i) |
| { |
| switch (i) |
| { |
| case 1: |
| bar (0); /* { dg-warning "statement may fall through" } */ |
| static int i = 10; |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { /* { dg-warning "statement may fall through" "" { target c } } */ |
| int a[i]; |
| } /* { dg-warning "statement may fall through" "" { target c++ } } */ |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1: |
| for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } } */ |
| map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } } */ |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1: |
| do |
| bar (2); |
| while (--i); /* { dg-warning "statement may fall through" } */ |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { |
| switch (i + 2) /* { dg-warning "statement may fall through" } */ |
| case 4: |
| bar (1); |
| case 5: |
| bar (5); |
| return; |
| } |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1:; |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| } |
| |
| switch (i) |
| { |
| case 1: |
| if (i & 1) /* { dg-warning "statement may fall through" } */ |
| { |
| bar (23); |
| break; |
| } |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1: |
| if (i > 9) /* { dg-warning "statement may fall through" } */ |
| { |
| bar (9); |
| if (i == 10) |
| { |
| bar (10); |
| break; |
| } |
| } |
| case 2: |
| bar (99); |
| } |
| |
| int r; |
| switch (i) |
| { |
| case 1: |
| r = bar2 (); |
| if (r) /* { dg-warning "statement may fall through" } */ |
| break; |
| case 2: |
| bar (99); |
| } |
| |
| switch (i) |
| { |
| case 1: |
| r = bar2 (); |
| if (r) |
| return; |
| if (!i) /* { dg-warning "statement may fall through" } */ |
| return; |
| case 2: |
| bar (99); |
| } |
| } |