(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
pr57637.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -fno-inline" } */
       3  
       4  typedef struct _GtkCssStyleProperty GtkCssStyleProperty;
       5  
       6  struct _GtkCssStyleProperty
       7  {
       8    int *initial_value;
       9    unsigned int id;
      10    unsigned int inherit :1;
      11    unsigned int animated :1;
      12    unsigned int affects_size :1;
      13    unsigned int affects_font :1;
      14  
      15    int * parse_value;
      16    int * query_value;
      17    int * assign_value;
      18  };
      19  
      20  void
      21  g_assertion_message_expr (const char *domain,
      22  			  const char *file,
      23  			  int line,
      24  			  const char *func,
      25  			  const char *expr) __attribute__((__noreturn__));
      26  
      27  void
      28  g_assertion_message_expr (const char *domain,
      29  			  const char *file,
      30  			  int line,
      31  			  const char *func,
      32  			  const char *expr)
      33  {
      34    __builtin_abort ();
      35  }
      36  int
      37  get_id (GtkCssStyleProperty *property)
      38  {
      39    return 1;
      40  }
      41  int
      42  _gtk_css_style_property_get_type ()
      43  {
      44    return 1;
      45  }
      46  
      47  GtkCssStyleProperty *
      48  g_object_new (int object_type,
      49              const char *first_property_name,
      50              ...)
      51  {
      52    return (GtkCssStyleProperty *) __builtin_malloc (sizeof (GtkCssStyleProperty));
      53  }
      54  
      55  typedef enum {
      56    INHERIT = (1 << 0),
      57    ANIMATED = (1 << 1),
      58    RESIZE = (1 << 2),
      59    FONT = (1 << 3)
      60  } GtkStylePropertyFlags;
      61  
      62  int t = 0;
      63  void
      64  gtk_css_style_property_register (const char * name,
      65  				 int expected_id,
      66  				 int value_type,
      67  				 int flags,
      68  				 int *parse_value,
      69  				 int *query_value,
      70  				 int *assign_value,
      71  				 int *initial_value)
      72  {
      73    GtkCssStyleProperty *node;
      74  
      75    do
      76      {
      77        if (__builtin_expect (__extension__ (
      78  					   {
      79  					     int _g_boolean_var_;
      80  					     if (initial_value != ((void *)0))
      81  					       _g_boolean_var_ = 1;
      82  					     else
      83  					       _g_boolean_var_ = 0;
      84  					     _g_boolean_var_;
      85  					   }),
      86  			    1))
      87  	;
      88        else
      89          g_assertion_message_expr ("Gtk",
      90  				  "gtkcssstylepropertyimpl.c",
      91  				  85,
      92  				  ((const char*) (__PRETTY_FUNCTION__)),
      93  				  "initial_value != NULL");
      94      } while (0);
      95  
      96    do
      97      {
      98        if (__builtin_expect (__extension__ (
      99  					   {
     100  					     int _g_boolean_var_;
     101  					     if (parse_value != ((void *)0))
     102  					       _g_boolean_var_ = 1;
     103  					     else
     104  					       _g_boolean_var_ = 0;
     105  					     _g_boolean_var_;
     106  					   }),
     107  			    1))
     108  	;
     109        else
     110  	g_assertion_message_expr ("Gtk",
     111  				  "gtkcssstylepropertyimpl.c",
     112  				  86,
     113  				  ((const char*) (__PRETTY_FUNCTION__)),
     114  				  "parse_value != NULL");
     115      } while (0);
     116  
     117    do
     118      {
     119        if (__builtin_expect (__extension__ (
     120  					   {
     121  					     int _g_boolean_var_;
     122  					     if (value_type == ((int) ((1) << (2)))
     123  						 || query_value != ((void *)0))
     124  					       _g_boolean_var_ = 1;
     125  					     else
     126  					       _g_boolean_var_ = 0;
     127  					     _g_boolean_var_;
     128  					   }),
     129  			    1))
     130  	;
     131        else
     132  	g_assertion_message_expr ("Gtk",
     133  				  "gtkcssstylepropertyimpl.c",
     134  				  87, ((const char*) (__PRETTY_FUNCTION__)),
     135  				  "value_type == NONE || query_value != NULL");
     136      } while (0);
     137  
     138    /* FLAGS is changed in a cond_exec instruction with pr57637.  */
     139    if (flags  == 15)
     140      t = 15;
     141  
     142    do
     143      {
     144        if (__builtin_expect (__extension__ (
     145  					   {
     146  					     int _g_boolean_var_;
     147  					     if (value_type == ((1) << (2))
     148  						 || assign_value != ((void *)0))
     149  					       _g_boolean_var_ = 1;
     150  					     else
     151  					       _g_boolean_var_ = 0;
     152  					     _g_boolean_var_;
     153  					   }),
     154  			    1))
     155  	;
     156        else
     157  	g_assertion_message_expr ("Gtk",
     158  				  "gtkcssstylepropertyimpl.c",
     159  				  88, ((const char*) (__PRETTY_FUNCTION__)),
     160  				  "value_type == NONE || assign_value != NULL");
     161      } while (0);
     162  
     163    node = g_object_new ((_gtk_css_style_property_get_type ()),
     164  			"value-type", value_type,
     165  			"affects-size", (flags & RESIZE) ? (0) : (!(0)),
     166  			"affects-font", (flags & FONT) ? (!(0)) : (0),
     167  			"animated", (flags & ANIMATED) ? (!(0)) : (0),
     168  			"inherit", (flags & INHERIT) ? (!(0)) : (0),
     169  			"initial-value", initial_value,
     170  			"name", name,
     171  			((void *)0));
     172  
     173    node->parse_value = parse_value;
     174    node->query_value = query_value;
     175    node->assign_value = assign_value;
     176  
     177    do
     178      {
     179        if (__builtin_expect (__extension__ (
     180  					   {
     181  					     int _g_boolean_var_;
     182  					     if (get_id (node) == expected_id)
     183  					       _g_boolean_var_ = 1;
     184  					     else
     185  					       _g_boolean_var_ = 0;
     186  					     _g_boolean_var_;
     187  					   }),
     188  			    1))
     189  	;
     190        else
     191  	g_assertion_message_expr ("Gtk",
     192  				  "gtkcssstylepropertyimpl.c",
     193  				  106,
     194  				  ((const char*) (__PRETTY_FUNCTION__)),
     195  				  "get_id (node) == expected_id");
     196      } while (0);
     197  }
     198  
     199  int main ()
     200  {
     201    gtk_css_style_property_register ("test", 1, 4, 15, &t, &t, &t, &t);
     202  
     203    if (t != 15)
     204      __builtin_abort ();
     205    return 0;
     206  }