1/* { dg-do run } */ 2/* { dg-options "-O2 -fno-inline" } */ 3 4typedef struct _GtkCssStyleProperty GtkCssStyleProperty; 5 6struct _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 20void 21g_assertion_message_expr (const char *domain, 22 const char *file, 23 int line, 24 const char *func, 25 const char *expr) __attribute__((__noreturn__)); 26 27void 28g_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} 36int 37get_id (GtkCssStyleProperty *property) 38{ 39 return 1; 40} 41int 42_gtk_css_style_property_get_type () 43{ 44 return 1; 45} 46 47GtkCssStyleProperty * 48g_object_new (int object_type, 49 const char *first_property_name, 50 ...) 51{ 52 return (GtkCssStyleProperty *) __builtin_malloc (sizeof (GtkCssStyleProperty)); 53} 54 55typedef enum { 56 INHERIT = (1 << 0), 57 ANIMATED = (1 << 1), 58 RESIZE = (1 << 2), 59 FONT = (1 << 3) 60} GtkStylePropertyFlags; 61 62int t = 0; 63void 64gtk_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 199int 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} 207