OSDN Git Service

gcc/testsuite/
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / tree-ssa / pr21417.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-dom3-details" } */
3
4 struct tree_common 
5
6   int code; 
7 }; 
8 union tree_node 
9
10   struct tree_common common; 
11 }; 
12 typedef union tree_node *tree; 
13  
14 extern tree test (tree, int, int); 
15 extern tree foo (void); 
16 extern void abort (void) __attribute__ ((__noreturn__)); 
17  
18 tree 
19 test (tree expr, int t, int D17630) 
20
21   int __i; 
22  
23 L0: 
24   if (expr->common.code != 142) goto L23; else goto L2; 
25  
26 L2: 
27   __i = 0; 
28   goto L10; 
29  
30 L10: 
31   __i = __i + 1; 
32   if (D17630 != __i) goto L8; else goto L19; 
33  
34 L8: 
35   if (t) goto L15; else goto L10; 
36  
37 L15: 
38   expr = foo (); 
39   if (expr->common.code != 142) goto L23; else goto L0; 
40  
41 L19: 
42   abort (); 
43  
44 L23: 
45   return expr; 
46
47
48
49 /* We should thread the backedge to the top of the loop; ie we only
50    execute the if (expr->common.code != 142) test once per loop
51    iteration.  */
52 /* { dg-final { scan-tree-dump-times "Threaded jump" 1 "dom3" } } */
53 /* { dg-final { cleanup-tree-dump "dom3" } } */
54