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
g_assertion_message_expr(const char * domain,const char * file,int line,const char * func,const char * expr)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
get_id(GtkCssStyleProperty * property)37 get_id (GtkCssStyleProperty *property)
38 {
39   return 1;
40 }
41 int
_gtk_css_style_property_get_type()42 _gtk_css_style_property_get_type ()
43 {
44   return 1;
45 }
46 
47 GtkCssStyleProperty *
g_object_new(int object_type,const char * first_property_name,...)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
gtk_css_style_property_register(const char * name,int expected_id,int value_type,int flags,int * parse_value,int * query_value,int * assign_value,int * initial_value)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 
main()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 }
207