1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-optimized-blocks" } */
3 
4 int c, d;
5 
6 int
bar(int a)7 bar (int a)
8 {
9   void *p;
10   int b;
11 
12   if (a!=0)
13     {
14       b = 3;
15       p = &&L0;
16     }
17   else
18     {
19       b = 5;
20       p = &&L1;
21     }
22 
23   goto *p;
24 
25  L0:
26   c = b;
27   return 1;
28 
29  L1:
30   d = b;
31   return 0;
32 }
33 
34 /* The both paths to the block containing the goto *p should
35    have been threaded, thus eliminating the need for the goto *p.  */
36 
37 /* { dg-final { scan-tree-dump-times "goto p" 0 "optimized" } } */
38 
39 /* There should not be any abnormal edges as DOM removed the
40    computed goto.  */
41 
42 /* { dg-final { scan-tree-dump-times "ab" 0 "optimized" } } */
43