| /* PR c/7652 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Wimplicit-fallthrough" } */ |
| |
| extern void bar (int); |
| extern void die (void) __attribute__((noreturn)); |
| |
| /* Test may_fallthru-ness. */ |
| |
| void |
| f (int i) |
| { |
| switch (i) |
| { |
| case 1: |
| bar (0); |
| __attribute__((fallthrough)); |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| bar (0); |
| return; |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| bar (0); |
| break; |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| bar (0); |
| goto L1; |
| L1: |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| bar (0); |
| die (); |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { |
| int i, j, k; |
| bar (0); |
| __attribute__((fallthrough)); |
| } |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { |
| int i, j, k; |
| bar (0); |
| return; |
| } |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { |
| int i, j, k; |
| bar (0); |
| break; |
| } |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { |
| int i, j, k; |
| bar (0); |
| goto L2; |
| } |
| L2: |
| case 2:; |
| } |
| |
| switch (i) |
| { |
| case 1: |
| { |
| int i, j, k; |
| bar (0); |
| die (); |
| } |
| case 2:; |
| } |
| } |