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
      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