1 /* { dg-require-effective-target label_values } */
2 
try(int num)3 int try (int num) {
4   __label__ lab1, lab2, lab3, lab4, lab5, lab6, default_lab;
5 
6   void *do_switch (int num) {
7     switch(num) {
8     case 1:
9       return &&lab1;
10     case 2:
11       return &&lab2;
12     case 3:
13       return &&lab3;
14     case 4:
15       return &&lab4;
16     case 5:
17       return &&lab5;
18     case 6:
19       return &&lab6;
20     default:
21       return &&default_lab;
22     }
23   }
24 
25   goto *do_switch (num);
26 
27  lab1:
28   return 1;
29 
30  lab2:
31   return 2;
32 
33  lab3:
34   return 3;
35 
36  lab4:
37   return 4;
38 
39  lab5:
40   return 5;
41 
42  lab6:
43   return 6;
44 
45  default_lab:
46   return -1;
47 }
48 
main()49 main()
50 {
51   int i;
52   for (i = 1; i <= 6; i++)
53     {
54       if (try (i) != i)
55 	abort();
56     }
57   exit(0);
58 }
59