1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-dom2-details -w" } */
3 
4 typedef union tree_node *tree;
5 struct gcc_options
6 {
7   int x_flag_finite_math_only;
8 };
9 extern struct gcc_options global_options;
10 enum mode_class
11 { MODE_RANDOM, MODE_CC, MODE_INT, MODE_PARTIAL_INT, MODE_FRACT, MODE_UFRACT,
12   MODE_ACCUM, MODE_UACCUM, MODE_FLOAT, MODE_DECIMAL_FLOAT, MODE_COMPLEX_INT,
13   MODE_COMPLEX_FLOAT, MODE_VECTOR_INT, MODE_VECTOR_FRACT,
14   MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM,
15   MODE_VECTOR_FLOAT, MAX_MODE_CLASS
16 };
17 extern const unsigned char mode_class[27];
18 extern const unsigned char mode_inner[27];
19 struct real_value
20 {
21 };
22 struct real_format
23 {
24   unsigned char has_inf;
25 };
26 extern const struct real_format *real_format_for_mode[5 -
27 						      2 + 1 + 15 - 10 + 1];
28 struct tree_type
29 {
30 };
31 union tree_node
32 {
33   int code;
34   int mode;
35   struct tree_type type;
36 };
37 tree
omp_reduction_init(tree clause,tree type)38 omp_reduction_init (tree clause, tree type)
39 {
40   if ((((type)->code) == 64))
41     {
42       struct real_value max;
43       if (((((mode_class[((((type))->code) ==
44 			  32 ?
45 			  vector_type_mode (type)
46 			  : (type)->mode)]) ==
47 	     MODE_VECTOR_FLOAT)
48 	    &&
49 	    ((real_format_for_mode
50 	      [((mode_class[((mode_class[((((type))->code) ==
51 					  32 ?
52 					  vector_type_mode (type)
53 					  : (type)->mode)]) ==
54 			     12) ? (((((type))->code)
55 				     ==
56 				     32 ?
57 				     vector_type_mode
58 				     (type)
59 				     : (type)->mode))
60 			    : (mode_inner[((((type))->code) ==
61 					   32 ?
62 					   vector_type_mode (type)
63 					   : (type)->mode)])]) ==
64 		12)
65 	       ? (((((mode_class[((((type))->code) ==
66 				  32 ? vector_type_mode (type)
67 				  : (type)->mode)]) ==
68 		     12) ? (((((type))->code) ==
69 			     32 ?
70 			     vector_type_mode (type)
71 			     : (type)->mode)) : (mode_inner
72 						 [((((type))->code) ==
73 						   32 ?
74 						   vector_type_mode (type)
75 						   : (type)->mode)])) - 10) +
76 		  (5 - 2 +
77 		   1))
78 	       : ((((mode_class
79 		     [((((type))->code) ==
80 		       32 ? vector_type_mode (type) : (type)->mode)]) ==
81 		    12) ? (((((type))->code) ==
82 			    32 ? vector_type_mode (type) : (type)->
83 			    mode)) : (mode_inner[((((type))->code) ==
84 						  32 ? vector_type_mode (type)
85 						  : (type)->mode)])) -
86 		  2)]))->has_inf) && !global_options.x_flag_finite_math_only))
87 	real_inf (&max);
88     }
89 }
90 
91 /* { dg-final { scan-tree-dump "Marking all outgoing edges of unreachable" "dom2"} } */
92 
93