| /* { dg-require-effective-target label_values } */ | |
| int try (int num) { | |
| __label__ lab1, lab2, lab3, lab4, lab5, lab6, default_lab; | |
| void *do_switch (int num) { | |
| switch(num) { | |
| case 1: | |
| return &&lab1; | |
| case 2: | |
| return &&lab2; | |
| case 3: | |
| return &&lab3; | |
| case 4: | |
| return &&lab4; | |
| case 5: | |
| return &&lab5; | |
| case 6: | |
| return &&lab6; | |
| default: | |
| return &&default_lab; | |
| } | |
| } | |
| goto *do_switch (num); | |
| lab1: | |
| return 1; | |
| lab2: | |
| return 2; | |
| lab3: | |
| return 3; | |
| lab4: | |
| return 4; | |
| lab5: | |
| return 5; | |
| lab6: | |
| return 6; | |
| default_lab: | |
| return -1; | |
| } | |
| main() | |
| { | |
| int i; | |
| for (i = 1; i <= 6; i++) | |
| { | |
| if (try (i) != i) | |
| abort(); | |
| } | |
| exit(0); | |
| } |