File: | build/gcc/cp/decl.cc |
Warning: | line 946, column 7 Called C++ object pointer is null |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* Process declarations and variables for -*- C++ -*- compiler. | ||||||
2 | Copyright (C) 1988-2023 Free Software Foundation, Inc. | ||||||
3 | Contributed by Michael Tiemann (tiemann@cygnus.com) | ||||||
4 | |||||||
5 | This file is part of GCC. | ||||||
6 | |||||||
7 | GCC is free software; you can redistribute it and/or modify | ||||||
8 | it under the terms of the GNU General Public License as published by | ||||||
9 | the Free Software Foundation; either version 3, or (at your option) | ||||||
10 | any later version. | ||||||
11 | |||||||
12 | GCC is distributed in the hope that it will be useful, | ||||||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
15 | GNU General Public License for more details. | ||||||
16 | |||||||
17 | You should have received a copy of the GNU General Public License | ||||||
18 | along with GCC; see the file COPYING3. If not see | ||||||
19 | <http://www.gnu.org/licenses/>. */ | ||||||
20 | |||||||
21 | |||||||
22 | /* Process declarations and symbol lookup for C++ front end. | ||||||
23 | Also constructs types; the standard scalar types at initialization, | ||||||
24 | and structure, union, array and enum types when they are declared. */ | ||||||
25 | |||||||
26 | /* ??? not all decl nodes are given the most useful possible | ||||||
27 | line numbers. For example, the CONST_DECLs for enum values. */ | ||||||
28 | |||||||
29 | #include "config.h" | ||||||
30 | #include "system.h" | ||||||
31 | #include "coretypes.h" | ||||||
32 | #include "target.h" | ||||||
33 | #include "c-family/c-target.h" | ||||||
34 | #include "cp-tree.h" | ||||||
35 | #include "timevar.h" | ||||||
36 | #include "stringpool.h" | ||||||
37 | #include "cgraph.h" | ||||||
38 | #include "stor-layout.h" | ||||||
39 | #include "varasm.h" | ||||||
40 | #include "attribs.h" | ||||||
41 | #include "flags.h" | ||||||
42 | #include "tree-iterator.h" | ||||||
43 | #include "decl.h" | ||||||
44 | #include "intl.h" | ||||||
45 | #include "toplev.h" | ||||||
46 | #include "c-family/c-objc.h" | ||||||
47 | #include "c-family/c-pragma.h" | ||||||
48 | #include "c-family/c-ubsan.h" | ||||||
49 | #include "debug.h" | ||||||
50 | #include "plugin.h" | ||||||
51 | #include "builtins.h" | ||||||
52 | #include "gimplify.h" | ||||||
53 | #include "asan.h" | ||||||
54 | #include "gcc-rich-location.h" | ||||||
55 | #include "langhooks.h" | ||||||
56 | #include "context.h" /* For 'g'. */ | ||||||
57 | #include "omp-general.h" | ||||||
58 | #include "omp-offload.h" /* For offload_vars. */ | ||||||
59 | #include "opts.h" | ||||||
60 | #include "langhooks-def.h" /* For lhd_simulate_record_decl */ | ||||||
61 | |||||||
62 | /* Possible cases of bad specifiers type used by bad_specifiers. */ | ||||||
63 | enum bad_spec_place { | ||||||
64 | BSP_VAR, /* variable */ | ||||||
65 | BSP_PARM, /* parameter */ | ||||||
66 | BSP_TYPE, /* type */ | ||||||
67 | BSP_FIELD /* field */ | ||||||
68 | }; | ||||||
69 | |||||||
70 | static const char *redeclaration_error_message (tree, tree); | ||||||
71 | |||||||
72 | static int decl_jump_unsafe (tree); | ||||||
73 | static void require_complete_types_for_parms (tree); | ||||||
74 | static tree grok_reference_init (tree, tree, tree, int); | ||||||
75 | static tree grokvardecl (tree, tree, tree, const cp_decl_specifier_seq *, | ||||||
76 | int, int, int, bool, int, tree, location_t); | ||||||
77 | static void check_static_variable_definition (tree, tree); | ||||||
78 | static void record_unknown_type (tree, const char *); | ||||||
79 | static int member_function_or_else (tree, tree, enum overload_flags); | ||||||
80 | static tree local_variable_p_walkfn (tree *, int *, void *); | ||||||
81 | static const char *tag_name (enum tag_types); | ||||||
82 | static tree lookup_and_check_tag (enum tag_types, tree, TAG_how, bool); | ||||||
83 | static void maybe_deduce_size_from_array_init (tree, tree); | ||||||
84 | static void layout_var_decl (tree); | ||||||
85 | static tree check_initializer (tree, tree, int, vec<tree, va_gc> **); | ||||||
86 | static void make_rtl_for_nonlocal_decl (tree, tree, const char *); | ||||||
87 | static void copy_type_enum (tree , tree); | ||||||
88 | static void check_function_type (tree, tree); | ||||||
89 | static void begin_destructor_body (void); | ||||||
90 | static void record_key_method_defined (tree); | ||||||
91 | static tree create_array_type_for_decl (tree, tree, tree, location_t); | ||||||
92 | static tree get_atexit_node (void); | ||||||
93 | static tree get_dso_handle_node (void); | ||||||
94 | static tree start_cleanup_fn (void); | ||||||
95 | static void end_cleanup_fn (void); | ||||||
96 | static tree cp_make_fname_decl (location_t, tree, int); | ||||||
97 | static void initialize_predefined_identifiers (void); | ||||||
98 | static tree check_special_function_return_type | ||||||
99 | (special_function_kind, tree, tree, int, const location_t*); | ||||||
100 | static tree push_cp_library_fn (enum tree_code, tree, int); | ||||||
101 | static tree build_cp_library_fn (tree, enum tree_code, tree, int); | ||||||
102 | static void store_parm_decls (tree); | ||||||
103 | static void initialize_local_var (tree, tree); | ||||||
104 | static void expand_static_init (tree, tree); | ||||||
105 | static location_t smallest_type_location (const cp_decl_specifier_seq*); | ||||||
106 | |||||||
107 | /* The following symbols are subsumed in the cp_global_trees array, and | ||||||
108 | listed here individually for documentation purposes. | ||||||
109 | |||||||
110 | C++ extensions | ||||||
111 | tree wchar_decl_node; | ||||||
112 | |||||||
113 | tree vtable_entry_type; | ||||||
114 | tree delta_type_node; | ||||||
115 | tree __t_desc_type_node; | ||||||
116 | |||||||
117 | tree class_type_node; | ||||||
118 | tree unknown_type_node; | ||||||
119 | |||||||
120 | Array type `vtable_entry_type[]' | ||||||
121 | |||||||
122 | tree vtbl_type_node; | ||||||
123 | tree vtbl_ptr_type_node; | ||||||
124 | |||||||
125 | Namespaces, | ||||||
126 | |||||||
127 | tree std_node; | ||||||
128 | tree abi_node; | ||||||
129 | |||||||
130 | A FUNCTION_DECL which can call `abort'. Not necessarily the | ||||||
131 | one that the user will declare, but sufficient to be called | ||||||
132 | by routines that want to abort the program. | ||||||
133 | |||||||
134 | tree abort_fndecl; | ||||||
135 | |||||||
136 | Used by RTTI | ||||||
137 | tree type_info_type_node, tinfo_decl_id, tinfo_decl_type; | ||||||
138 | tree tinfo_var_id; */ | ||||||
139 | |||||||
140 | tree cp_global_trees[CPTI_MAX]; | ||||||
141 | |||||||
142 | /* A list of objects which have constructors or destructors | ||||||
143 | which reside in namespace scope. The decl is stored in | ||||||
144 | the TREE_VALUE slot and the initializer is stored | ||||||
145 | in the TREE_PURPOSE slot. */ | ||||||
146 | tree static_aggregates; | ||||||
147 | |||||||
148 | /* Like static_aggregates, but for thread_local variables. */ | ||||||
149 | tree tls_aggregates; | ||||||
150 | |||||||
151 | /* A hash-map mapping from variable decls to the dynamic initializer for | ||||||
152 | the decl. This is currently only used by OpenMP. */ | ||||||
153 | decl_tree_map *dynamic_initializers; | ||||||
154 | |||||||
155 | /* -- end of C++ */ | ||||||
156 | |||||||
157 | /* A node for the integer constant 2. */ | ||||||
158 | |||||||
159 | tree integer_two_node; | ||||||
160 | |||||||
161 | /* vector of static decls. */ | ||||||
162 | vec<tree, va_gc> *static_decls; | ||||||
163 | |||||||
164 | /* vector of keyed classes. */ | ||||||
165 | vec<tree, va_gc> *keyed_classes; | ||||||
166 | |||||||
167 | /* Used only for jumps to as-yet undefined labels, since jumps to | ||||||
168 | defined labels can have their validity checked immediately. */ | ||||||
169 | |||||||
170 | struct GTY((chain_next ("%h.next"))) named_label_use_entry { | ||||||
171 | struct named_label_use_entry *next; | ||||||
172 | /* The binding level to which this entry is *currently* attached. | ||||||
173 | This is initially the binding level in which the goto appeared, | ||||||
174 | but is modified as scopes are closed. */ | ||||||
175 | cp_binding_level *binding_level; | ||||||
176 | /* The head of the names list that was current when the goto appeared, | ||||||
177 | or the inner scope popped. These are the decls that will *not* be | ||||||
178 | skipped when jumping to the label. */ | ||||||
179 | tree names_in_scope; | ||||||
180 | /* The location of the goto, for error reporting. */ | ||||||
181 | location_t o_goto_locus; | ||||||
182 | /* True if an OpenMP structured block scope has been closed since | ||||||
183 | the goto appeared. This means that the branch from the label will | ||||||
184 | illegally exit an OpenMP scope. */ | ||||||
185 | bool in_omp_scope; | ||||||
186 | }; | ||||||
187 | |||||||
188 | /* A list of all LABEL_DECLs in the function that have names. Here so | ||||||
189 | we can clear out their names' definitions at the end of the | ||||||
190 | function, and so we can check the validity of jumps to these labels. */ | ||||||
191 | |||||||
192 | struct GTY((for_user)) named_label_entry { | ||||||
193 | |||||||
194 | tree name; /* Name of decl. */ | ||||||
195 | |||||||
196 | tree label_decl; /* LABEL_DECL, unless deleted local label. */ | ||||||
197 | |||||||
198 | named_label_entry *outer; /* Outer shadowed chain. */ | ||||||
199 | |||||||
200 | /* The binding level to which the label is *currently* attached. | ||||||
201 | This is initially set to the binding level in which the label | ||||||
202 | is defined, but is modified as scopes are closed. */ | ||||||
203 | cp_binding_level *binding_level; | ||||||
204 | |||||||
205 | /* The head of the names list that was current when the label was | ||||||
206 | defined, or the inner scope popped. These are the decls that will | ||||||
207 | be skipped when jumping to the label. */ | ||||||
208 | tree names_in_scope; | ||||||
209 | |||||||
210 | /* A vector of all decls from all binding levels that would be | ||||||
211 | crossed by a backward branch to the label. */ | ||||||
212 | vec<tree, va_gc> *bad_decls; | ||||||
213 | |||||||
214 | /* A list of uses of the label, before the label is defined. */ | ||||||
215 | named_label_use_entry *uses; | ||||||
216 | |||||||
217 | /* The following bits are set after the label is defined, and are | ||||||
218 | updated as scopes are popped. They indicate that a jump to the | ||||||
219 | label will illegally enter a scope of the given flavor. */ | ||||||
220 | bool in_try_scope; | ||||||
221 | bool in_catch_scope; | ||||||
222 | bool in_omp_scope; | ||||||
223 | bool in_transaction_scope; | ||||||
224 | bool in_constexpr_if; | ||||||
225 | bool in_consteval_if; | ||||||
226 | bool in_stmt_expr; | ||||||
227 | }; | ||||||
228 | |||||||
229 | #define named_labels((cfun + 0)->language)->x_named_labels cp_function_chain((cfun + 0)->language)->x_named_labels | ||||||
230 | |||||||
231 | /* The number of function bodies which we are currently processing. | ||||||
232 | (Zero if we are at namespace scope, one inside the body of a | ||||||
233 | function, two inside the body of a function in a local class, etc.) */ | ||||||
234 | int function_depth; | ||||||
235 | |||||||
236 | /* Whether the exception-specifier is part of a function type (i.e. C++17). */ | ||||||
237 | bool flag_noexcept_type; | ||||||
238 | |||||||
239 | /* States indicating how grokdeclarator() should handle declspecs marked | ||||||
240 | with __attribute__((deprecated)). An object declared as | ||||||
241 | __attribute__((deprecated)) suppresses warnings of uses of other | ||||||
242 | deprecated items. */ | ||||||
243 | enum deprecated_states deprecated_state = DEPRECATED_NORMAL; | ||||||
244 | |||||||
245 | |||||||
246 | /* A list of VAR_DECLs whose type was incomplete at the time the | ||||||
247 | variable was declared. */ | ||||||
248 | |||||||
249 | struct GTY(()) incomplete_var { | ||||||
250 | tree decl; | ||||||
251 | tree incomplete_type; | ||||||
252 | }; | ||||||
253 | |||||||
254 | |||||||
255 | static GTY(()) vec<incomplete_var, va_gc> *incomplete_vars; | ||||||
256 | |||||||
257 | /* Returns the kind of template specialization we are currently | ||||||
258 | processing, given that it's declaration contained N_CLASS_SCOPES | ||||||
259 | explicit scope qualifications. */ | ||||||
260 | |||||||
261 | tmpl_spec_kind | ||||||
262 | current_tmpl_spec_kind (int n_class_scopes) | ||||||
263 | { | ||||||
264 | int n_template_parm_scopes = 0; | ||||||
265 | int seen_specialization_p = 0; | ||||||
266 | int innermost_specialization_p = 0; | ||||||
267 | cp_binding_level *b; | ||||||
268 | |||||||
269 | /* Scan through the template parameter scopes. */ | ||||||
270 | for (b = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); | ||||||
271 | b->kind == sk_template_parms; | ||||||
272 | b = b->level_chain) | ||||||
273 | { | ||||||
274 | /* If we see a specialization scope inside a parameter scope, | ||||||
275 | then something is wrong. That corresponds to a declaration | ||||||
276 | like: | ||||||
277 | |||||||
278 | template <class T> template <> ... | ||||||
279 | |||||||
280 | which is always invalid since [temp.expl.spec] forbids the | ||||||
281 | specialization of a class member template if the enclosing | ||||||
282 | class templates are not explicitly specialized as well. */ | ||||||
283 | if (b->explicit_spec_p) | ||||||
284 | { | ||||||
285 | if (n_template_parm_scopes == 0) | ||||||
286 | innermost_specialization_p = 1; | ||||||
287 | else | ||||||
288 | seen_specialization_p = 1; | ||||||
289 | } | ||||||
290 | else if (seen_specialization_p == 1) | ||||||
291 | return tsk_invalid_member_spec; | ||||||
292 | |||||||
293 | ++n_template_parm_scopes; | ||||||
294 | } | ||||||
295 | |||||||
296 | /* Handle explicit instantiations. */ | ||||||
297 | if (processing_explicit_instantiationscope_chain->x_processing_explicit_instantiation) | ||||||
298 | { | ||||||
299 | if (n_template_parm_scopes != 0) | ||||||
300 | /* We've seen a template parameter list during an explicit | ||||||
301 | instantiation. For example: | ||||||
302 | |||||||
303 | template <class T> template void f(int); | ||||||
304 | |||||||
305 | This is erroneous. */ | ||||||
306 | return tsk_invalid_expl_inst; | ||||||
307 | else | ||||||
308 | return tsk_expl_inst; | ||||||
309 | } | ||||||
310 | |||||||
311 | if (n_template_parm_scopes < n_class_scopes) | ||||||
312 | /* We've not seen enough template headers to match all the | ||||||
313 | specialized classes present. For example: | ||||||
314 | |||||||
315 | template <class T> void R<T>::S<T>::f(int); | ||||||
316 | |||||||
317 | This is invalid; there needs to be one set of template | ||||||
318 | parameters for each class. */ | ||||||
319 | return tsk_insufficient_parms; | ||||||
320 | else if (n_template_parm_scopes == n_class_scopes) | ||||||
321 | /* We're processing a non-template declaration (even though it may | ||||||
322 | be a member of a template class.) For example: | ||||||
323 | |||||||
324 | template <class T> void S<T>::f(int); | ||||||
325 | |||||||
326 | The `class T' matches the `S<T>', leaving no template headers | ||||||
327 | corresponding to the `f'. */ | ||||||
328 | return tsk_none; | ||||||
329 | else if (n_template_parm_scopes > n_class_scopes + 1) | ||||||
330 | /* We've got too many template headers. For example: | ||||||
331 | |||||||
332 | template <> template <class T> void f (T); | ||||||
333 | |||||||
334 | There need to be more enclosing classes. */ | ||||||
335 | return tsk_excessive_parms; | ||||||
336 | else | ||||||
337 | /* This must be a template. It's of the form: | ||||||
338 | |||||||
339 | template <class T> template <class U> void S<T>::f(U); | ||||||
340 | |||||||
341 | This is a specialization if the innermost level was a | ||||||
342 | specialization; otherwise it's just a definition of the | ||||||
343 | template. */ | ||||||
344 | return innermost_specialization_p ? tsk_expl_spec : tsk_template; | ||||||
345 | } | ||||||
346 | |||||||
347 | /* Exit the current scope. */ | ||||||
348 | |||||||
349 | void | ||||||
350 | finish_scope (void) | ||||||
351 | { | ||||||
352 | poplevel (0, 0, 0); | ||||||
353 | } | ||||||
354 | |||||||
355 | /* When a label goes out of scope, check to see if that label was used | ||||||
356 | in a valid manner, and issue any appropriate warnings or errors. */ | ||||||
357 | |||||||
358 | static void | ||||||
359 | check_label_used (tree label) | ||||||
360 | { | ||||||
361 | if (!processing_template_declscope_chain->x_processing_template_decl) | ||||||
362 | { | ||||||
363 | if (DECL_INITIAL (label)((contains_struct_check ((label), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 363, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null) | ||||||
364 | { | ||||||
365 | location_t location; | ||||||
366 | |||||||
367 | error ("label %q+D used but not defined", label); | ||||||
368 | location = input_location; | ||||||
369 | /* FIXME want (LOCATION_FILE (input_location), (line)0) */ | ||||||
370 | /* Avoid crashing later. */ | ||||||
371 | define_label (location, DECL_NAME (label)((contains_struct_check ((label), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 371, __FUNCTION__))->decl_minimal.name)); | ||||||
372 | } | ||||||
373 | else | ||||||
374 | warn_for_unused_label (label); | ||||||
375 | } | ||||||
376 | } | ||||||
377 | |||||||
378 | /* Helper function to sort named label entries in a vector by DECL_UID. */ | ||||||
379 | |||||||
380 | static int | ||||||
381 | sort_labels (const void *a, const void *b) | ||||||
382 | { | ||||||
383 | tree label1 = *(tree const *) a; | ||||||
384 | tree label2 = *(tree const *) b; | ||||||
385 | |||||||
386 | /* DECL_UIDs can never be equal. */ | ||||||
387 | return DECL_UID (label1)((contains_struct_check ((label1), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 387, __FUNCTION__))->decl_minimal.uid) > DECL_UID (label2)((contains_struct_check ((label2), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 387, __FUNCTION__))->decl_minimal.uid) ? -1 : +1; | ||||||
388 | } | ||||||
389 | |||||||
390 | /* At the end of a function, all labels declared within the function | ||||||
391 | go out of scope. BLOCK is the top-level block for the | ||||||
392 | function. */ | ||||||
393 | |||||||
394 | static void | ||||||
395 | pop_labels (tree block) | ||||||
396 | { | ||||||
397 | if (!named_labels((cfun + 0)->language)->x_named_labels) | ||||||
398 | return; | ||||||
399 | |||||||
400 | /* We need to add the labels to the block chain, so debug | ||||||
401 | information is emitted. But, we want the order to be stable so | ||||||
402 | need to sort them first. Otherwise the debug output could be | ||||||
403 | randomly ordered. I guess it's mostly stable, unless the hash | ||||||
404 | table implementation changes. */ | ||||||
405 | auto_vec<tree, 32> labels (named_labels((cfun + 0)->language)->x_named_labels->elements ()); | ||||||
406 | hash_table<named_label_hash>::iterator end (named_labels((cfun + 0)->language)->x_named_labels->end ()); | ||||||
407 | for (hash_table<named_label_hash>::iterator iter | ||||||
408 | (named_labels((cfun + 0)->language)->x_named_labels->begin ()); iter != end; ++iter) | ||||||
409 | { | ||||||
410 | named_label_entry *ent = *iter; | ||||||
411 | |||||||
412 | gcc_checking_assert (!ent->outer)((void)(!(!ent->outer) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 412, __FUNCTION__), 0 : 0)); | ||||||
413 | if (ent->label_decl) | ||||||
414 | labels.quick_push (ent->label_decl); | ||||||
415 | ggc_free (ent); | ||||||
416 | } | ||||||
417 | named_labels((cfun + 0)->language)->x_named_labels = NULL__null; | ||||||
418 | labels.qsort (sort_labels)qsort (sort_labels); | ||||||
419 | |||||||
420 | while (labels.length ()) | ||||||
421 | { | ||||||
422 | tree label = labels.pop (); | ||||||
423 | |||||||
424 | DECL_CHAIN (label)(((contains_struct_check (((contains_struct_check ((label), ( TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 424, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 424, __FUNCTION__))->common.chain)) = BLOCK_VARS (block)((tree_check ((block), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 424, __FUNCTION__, (BLOCK)))->block.vars); | ||||||
425 | BLOCK_VARS (block)((tree_check ((block), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 425, __FUNCTION__, (BLOCK)))->block.vars) = label; | ||||||
426 | |||||||
427 | check_label_used (label); | ||||||
428 | } | ||||||
429 | } | ||||||
430 | |||||||
431 | /* At the end of a block with local labels, restore the outer definition. */ | ||||||
432 | |||||||
433 | static void | ||||||
434 | pop_local_label (tree id, tree label) | ||||||
435 | { | ||||||
436 | check_label_used (label); | ||||||
437 | named_label_entry **slot = named_labels((cfun + 0)->language)->x_named_labels->find_slot_with_hash | ||||||
438 | (id, IDENTIFIER_HASH_VALUE (id)((tree_check ((id), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 438, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ), NO_INSERT); | ||||||
439 | named_label_entry *ent = *slot; | ||||||
440 | |||||||
441 | if (ent->outer) | ||||||
442 | ent = ent->outer; | ||||||
443 | else | ||||||
444 | { | ||||||
445 | ent = ggc_cleared_alloc<named_label_entry> (); | ||||||
446 | ent->name = id; | ||||||
447 | } | ||||||
448 | *slot = ent; | ||||||
449 | } | ||||||
450 | |||||||
451 | /* The following two routines are used to interface to Objective-C++. | ||||||
452 | The binding level is purposely treated as an opaque type. */ | ||||||
453 | |||||||
454 | void * | ||||||
455 | objc_get_current_scope (void) | ||||||
456 | { | ||||||
457 | return current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); | ||||||
458 | } | ||||||
459 | |||||||
460 | /* The following routine is used by the NeXT-style SJLJ exceptions; | ||||||
461 | variables get marked 'volatile' so as to not be clobbered by | ||||||
462 | _setjmp()/_longjmp() calls. All variables in the current scope, | ||||||
463 | as well as parent scopes up to (but not including) ENCLOSING_BLK | ||||||
464 | shall be thusly marked. */ | ||||||
465 | |||||||
466 | void | ||||||
467 | objc_mark_locals_volatile (void *enclosing_blk) | ||||||
468 | { | ||||||
469 | cp_binding_level *scope; | ||||||
470 | |||||||
471 | for (scope = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); | ||||||
472 | scope && scope != enclosing_blk; | ||||||
473 | scope = scope->level_chain) | ||||||
474 | { | ||||||
475 | tree decl; | ||||||
476 | |||||||
477 | for (decl = scope->names; decl; decl = TREE_CHAIN (decl)((contains_struct_check ((decl), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 477, __FUNCTION__))->common.chain)) | ||||||
478 | objc_volatilize_decl (decl); | ||||||
479 | |||||||
480 | /* Do not climb up past the current function. */ | ||||||
481 | if (scope->kind == sk_function_parms) | ||||||
482 | break; | ||||||
483 | } | ||||||
484 | } | ||||||
485 | |||||||
486 | /* True if B is the level for the condition of a constexpr if. */ | ||||||
487 | |||||||
488 | static bool | ||||||
489 | level_for_constexpr_if (cp_binding_level *b) | ||||||
490 | { | ||||||
491 | return (b->kind == sk_cond && b->this_entity | ||||||
492 | && TREE_CODE (b->this_entity)((enum tree_code) (b->this_entity)->base.code) == IF_STMT | ||||||
493 | && IF_STMT_CONSTEXPR_P (b->this_entity)((tree_not_check2 (((tree_check ((b->this_entity), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 493, __FUNCTION__, (IF_STMT)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 493, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)); | ||||||
494 | } | ||||||
495 | |||||||
496 | /* True if B is the level for the condition of a consteval if. */ | ||||||
497 | |||||||
498 | static bool | ||||||
499 | level_for_consteval_if (cp_binding_level *b) | ||||||
500 | { | ||||||
501 | return (b->kind == sk_cond && b->this_entity | ||||||
502 | && TREE_CODE (b->this_entity)((enum tree_code) (b->this_entity)->base.code) == IF_STMT | ||||||
503 | && IF_STMT_CONSTEVAL_P (b->this_entity)((tree_not_check2 (((tree_check ((b->this_entity), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 503, __FUNCTION__, (IF_STMT)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 503, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)); | ||||||
504 | } | ||||||
505 | |||||||
506 | /* Update data for defined and undefined labels when leaving a scope. */ | ||||||
507 | |||||||
508 | int | ||||||
509 | poplevel_named_label_1 (named_label_entry **slot, cp_binding_level *bl) | ||||||
510 | { | ||||||
511 | named_label_entry *ent = *slot; | ||||||
512 | cp_binding_level *obl = bl->level_chain; | ||||||
513 | |||||||
514 | if (ent->binding_level == bl) | ||||||
515 | { | ||||||
516 | tree decl; | ||||||
517 | |||||||
518 | /* ENT->NAMES_IN_SCOPE may contain a mixture of DECLs and | ||||||
519 | TREE_LISTs representing OVERLOADs, so be careful. */ | ||||||
520 | for (decl = ent->names_in_scope; decl; decl = (DECL_P (decl)(tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code ) (decl)->base.code))] == tcc_declaration) | ||||||
521 | ? DECL_CHAIN (decl)(((contains_struct_check (((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 521, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 521, __FUNCTION__))->common.chain)) | ||||||
522 | : TREE_CHAIN (decl)((contains_struct_check ((decl), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 522, __FUNCTION__))->common.chain))) | ||||||
523 | if (decl_jump_unsafe (decl)) | ||||||
524 | vec_safe_push (ent->bad_decls, decl); | ||||||
525 | |||||||
526 | ent->binding_level = obl; | ||||||
527 | ent->names_in_scope = obl->names; | ||||||
528 | switch (bl->kind) | ||||||
529 | { | ||||||
530 | case sk_try: | ||||||
531 | ent->in_try_scope = true; | ||||||
532 | break; | ||||||
533 | case sk_catch: | ||||||
534 | ent->in_catch_scope = true; | ||||||
535 | break; | ||||||
536 | case sk_omp: | ||||||
537 | ent->in_omp_scope = true; | ||||||
538 | break; | ||||||
539 | case sk_transaction: | ||||||
540 | ent->in_transaction_scope = true; | ||||||
541 | break; | ||||||
542 | case sk_stmt_expr: | ||||||
543 | ent->in_stmt_expr = true; | ||||||
544 | break; | ||||||
545 | case sk_block: | ||||||
546 | if (level_for_constexpr_if (bl->level_chain)) | ||||||
547 | ent->in_constexpr_if = true; | ||||||
548 | else if (level_for_consteval_if (bl->level_chain)) | ||||||
549 | ent->in_consteval_if = true; | ||||||
550 | break; | ||||||
551 | default: | ||||||
552 | break; | ||||||
553 | } | ||||||
554 | } | ||||||
555 | else if (ent->uses) | ||||||
556 | { | ||||||
557 | struct named_label_use_entry *use; | ||||||
558 | |||||||
559 | for (use = ent->uses; use ; use = use->next) | ||||||
560 | if (use->binding_level == bl) | ||||||
561 | { | ||||||
562 | use->binding_level = obl; | ||||||
563 | use->names_in_scope = obl->names; | ||||||
564 | if (bl->kind == sk_omp) | ||||||
565 | use->in_omp_scope = true; | ||||||
566 | } | ||||||
567 | } | ||||||
568 | |||||||
569 | return 1; | ||||||
570 | } | ||||||
571 | |||||||
572 | /* Saved errorcount to avoid -Wunused-but-set-{parameter,variable} warnings | ||||||
573 | when errors were reported, except for -Werror-unused-but-set-*. */ | ||||||
574 | static int unused_but_set_errorcount; | ||||||
575 | |||||||
576 | /* Exit a binding level. | ||||||
577 | Pop the level off, and restore the state of the identifier-decl mappings | ||||||
578 | that were in effect when this level was entered. | ||||||
579 | |||||||
580 | If KEEP == 1, this level had explicit declarations, so | ||||||
581 | and create a "block" (a BLOCK node) for the level | ||||||
582 | to record its declarations and subblocks for symbol table output. | ||||||
583 | |||||||
584 | If FUNCTIONBODY is nonzero, this level is the body of a function, | ||||||
585 | so create a block as if KEEP were set and also clear out all | ||||||
586 | label names. | ||||||
587 | |||||||
588 | If REVERSE is nonzero, reverse the order of decls before putting | ||||||
589 | them into the BLOCK. */ | ||||||
590 | |||||||
591 | tree | ||||||
592 | poplevel (int keep, int reverse, int functionbody) | ||||||
593 | { | ||||||
594 | tree link; | ||||||
595 | /* The chain of decls was accumulated in reverse order. | ||||||
596 | Put it into forward order, just for cleanliness. */ | ||||||
597 | tree decls; | ||||||
598 | tree subblocks; | ||||||
599 | tree block; | ||||||
600 | tree decl; | ||||||
601 | scope_kind kind; | ||||||
602 | |||||||
603 | auto_cond_timevar tv (TV_NAME_LOOKUP); | ||||||
604 | restart: | ||||||
605 | |||||||
606 | block = NULL_TREE(tree) __null; | ||||||
607 | |||||||
608 | gcc_assert (current_binding_level->kind != sk_class((void)(!((*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))-> kind != sk_class && (*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)->language)->bindings : &scope_chain ->bindings))->kind != sk_namespace) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 609, __FUNCTION__), 0 : 0)) | ||||||
609 | && current_binding_level->kind != sk_namespace)((void)(!((*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))-> kind != sk_class && (*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)->language)->bindings : &scope_chain ->bindings))->kind != sk_namespace) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 609, __FUNCTION__), 0 : 0)); | ||||||
610 | |||||||
611 | if (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->kind == sk_cleanup) | ||||||
612 | functionbody = 0; | ||||||
613 | subblocks = functionbody >= 0 ? current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks : 0; | ||||||
614 | |||||||
615 | gcc_assert (!vec_safe_length (current_binding_level->class_shadowed))((void)(!(!vec_safe_length ((*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)->language)->bindings : &scope_chain ->bindings))->class_shadowed)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 615, __FUNCTION__), 0 : 0)); | ||||||
616 | |||||||
617 | /* We used to use KEEP == 2 to indicate that the new block should go | ||||||
618 | at the beginning of the list of blocks at this binding level, | ||||||
619 | rather than the end. This hack is no longer used. */ | ||||||
620 | gcc_assert (keep == 0 || keep == 1)((void)(!(keep == 0 || keep == 1) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 620, __FUNCTION__), 0 : 0)); | ||||||
621 | |||||||
622 | if (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->keep) | ||||||
623 | keep = 1; | ||||||
624 | |||||||
625 | /* Any uses of undefined labels, and any defined labels, now operate | ||||||
626 | under constraints of next binding contour. */ | ||||||
627 | if (cfun(cfun + 0) && !functionbody && named_labels((cfun + 0)->language)->x_named_labels) | ||||||
628 | named_labels((cfun + 0)->language)->x_named_labels->traverse<cp_binding_level *, poplevel_named_label_1> | ||||||
629 | (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))); | ||||||
630 | |||||||
631 | /* Get the decls in the order they were written. | ||||||
632 | Usually current_binding_level->names is in reverse order. | ||||||
633 | But parameter decls were previously put in forward order. */ | ||||||
634 | |||||||
635 | decls = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names; | ||||||
636 | if (reverse) | ||||||
637 | { | ||||||
638 | decls = nreverse (decls); | ||||||
639 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names = decls; | ||||||
640 | } | ||||||
641 | |||||||
642 | /* If there were any declarations or structure tags in that level, | ||||||
643 | or if this level is a function body, | ||||||
644 | create a BLOCK to record them for the life of this function. */ | ||||||
645 | block = NULL_TREE(tree) __null; | ||||||
646 | /* Avoid function body block if possible. */ | ||||||
647 | if (functionbody && subblocks && BLOCK_CHAIN (subblocks)((tree_check ((subblocks), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 647, __FUNCTION__, (BLOCK)))->block.chain) == NULL_TREE(tree) __null) | ||||||
648 | keep = 0; | ||||||
649 | else if (keep == 1 || functionbody) | ||||||
650 | block = make_node (BLOCK); | ||||||
651 | if (block != NULL_TREE(tree) __null) | ||||||
652 | { | ||||||
653 | BLOCK_VARS (block)((tree_check ((block), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 653, __FUNCTION__, (BLOCK)))->block.vars) = decls; | ||||||
654 | BLOCK_SUBBLOCKS (block)((tree_check ((block), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 654, __FUNCTION__, (BLOCK)))->block.subblocks) = subblocks; | ||||||
655 | } | ||||||
656 | |||||||
657 | /* In each subblock, record that this is its superior. */ | ||||||
658 | if (keep >= 0) | ||||||
659 | for (link = subblocks; link; link = BLOCK_CHAIN (link)((tree_check ((link), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 659, __FUNCTION__, (BLOCK)))->block.chain)) | ||||||
660 | BLOCK_SUPERCONTEXT (link)((tree_check ((link), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 660, __FUNCTION__, (BLOCK)))->block.supercontext) = block; | ||||||
661 | |||||||
662 | /* Before we remove the declarations first check for unused variables. */ | ||||||
663 | if ((warn_unused_variableglobal_options.x_warn_unused_variable || warn_unused_but_set_variableglobal_options.x_warn_unused_but_set_variable) | ||||||
664 | && current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->kind != sk_template_parms | ||||||
665 | && !processing_template_declscope_chain->x_processing_template_decl) | ||||||
666 | for (tree d = get_local_decls (); d; d = TREE_CHAIN (d)((contains_struct_check ((d), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 666, __FUNCTION__))->common.chain)) | ||||||
667 | { | ||||||
668 | /* There are cases where D itself is a TREE_LIST. See in | ||||||
669 | push_local_binding where the list of decls returned by | ||||||
670 | getdecls is built. */ | ||||||
671 | decl = TREE_CODE (d)((enum tree_code) (d)->base.code) == TREE_LIST ? TREE_VALUE (d)((tree_check ((d), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 671, __FUNCTION__, (TREE_LIST)))->list.value) : d; | ||||||
672 | |||||||
673 | tree type = TREE_TYPE (decl)((contains_struct_check ((decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 673, __FUNCTION__))->typed.type); | ||||||
674 | if (VAR_P (decl)(((enum tree_code) (decl)->base.code) == VAR_DECL) | ||||||
675 | && (! TREE_USED (decl)((decl)->base.used_flag) || !DECL_READ_P (decl)((tree_check2 ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 675, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag)) | ||||||
676 | && ! DECL_IN_SYSTEM_HEADER (decl)(in_system_header_at (((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 676, __FUNCTION__))->decl_minimal.locus))) | ||||||
677 | /* For structured bindings, consider only real variables, not | ||||||
678 | subobjects. */ | ||||||
679 | && (DECL_DECOMPOSITION_P (decl)((((enum tree_code) (decl)->base.code) == VAR_DECL) && ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 679, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 679, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false) ? !DECL_DECOMP_BASE (decl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 679, __FUNCTION__))->decl_common.lang_specific); if (!(( (enum tree_code) (decl)->base.code) == VAR_DECL) || lt-> u.base.selector != lds_decomp) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 679, __FUNCTION__); <->u.decomp; })->base) | ||||||
680 | : (DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 680, __FUNCTION__))->decl_minimal.name) && !DECL_ARTIFICIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 680, __FUNCTION__))->decl_common.artificial_flag))) | ||||||
681 | && type != error_mark_nodeglobal_trees[TI_ERROR_MARK] | ||||||
682 | && (!CLASS_TYPE_P (type)(((((enum tree_code) (type)->base.code)) == RECORD_TYPE || (((enum tree_code) (type)->base.code)) == UNION_TYPE) && ((tree_class_check ((type), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 682, __FUNCTION__))->type_common.lang_flag_5)) | ||||||
683 | || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)(((tree_class_check ((type), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 683, __FUNCTION__))->type_common.lang_flag_4)) | ||||||
684 | || lookup_attribute ("warn_unused", | ||||||
685 | TYPE_ATTRIBUTES (TREE_TYPE (decl))((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 685, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 685, __FUNCTION__))->type_common.attributes)))) | ||||||
686 | { | ||||||
687 | if (! TREE_USED (decl)((decl)->base.used_flag)) | ||||||
688 | { | ||||||
689 | if (!DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 689, __FUNCTION__))->decl_minimal.name) && DECL_DECOMPOSITION_P (decl)((((enum tree_code) (decl)->base.code) == VAR_DECL) && ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 689, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 689, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false)) | ||||||
690 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 690, __FUNCTION__))->decl_minimal.locus), | ||||||
691 | OPT_Wunused_variable, | ||||||
692 | "unused structured binding declaration"); | ||||||
693 | else | ||||||
694 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 694, __FUNCTION__))->decl_minimal.locus), | ||||||
695 | OPT_Wunused_variable, "unused variable %qD", decl); | ||||||
696 | suppress_warning (decl, OPT_Wunused_variable); | ||||||
697 | } | ||||||
698 | else if (DECL_CONTEXT (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 698, __FUNCTION__))->decl_minimal.context) == current_function_decl | ||||||
699 | // For -Wunused-but-set-variable leave references alone. | ||||||
700 | && !TYPE_REF_P (TREE_TYPE (decl))(((enum tree_code) (((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 700, __FUNCTION__))->typed.type))->base.code) == REFERENCE_TYPE ) | ||||||
701 | && errorcount(global_dc)->diagnostic_count[(int) (DK_ERROR)] == unused_but_set_errorcount) | ||||||
702 | { | ||||||
703 | if (!DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 703, __FUNCTION__))->decl_minimal.name) && DECL_DECOMPOSITION_P (decl)((((enum tree_code) (decl)->base.code) == VAR_DECL) && ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 703, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 703, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false)) | ||||||
704 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 704, __FUNCTION__))->decl_minimal.locus), | ||||||
705 | OPT_Wunused_but_set_variable, "structured " | ||||||
706 | "binding declaration set but not used"); | ||||||
707 | else | ||||||
708 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 708, __FUNCTION__))->decl_minimal.locus), | ||||||
709 | OPT_Wunused_but_set_variable, | ||||||
710 | "variable %qD set but not used", decl); | ||||||
711 | unused_but_set_errorcount = errorcount(global_dc)->diagnostic_count[(int) (DK_ERROR)]; | ||||||
712 | } | ||||||
713 | } | ||||||
714 | } | ||||||
715 | |||||||
716 | /* Remove declarations for all the DECLs in this level. */ | ||||||
717 | for (link = decls; link; link = TREE_CHAIN (link)((contains_struct_check ((link), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 717, __FUNCTION__))->common.chain)) | ||||||
718 | { | ||||||
719 | tree name; | ||||||
720 | if (TREE_CODE (link)((enum tree_code) (link)->base.code) == TREE_LIST) | ||||||
721 | { | ||||||
722 | decl = TREE_VALUE (link)((tree_check ((link), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 722, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
723 | name = TREE_PURPOSE (link)((tree_check ((link), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 723, __FUNCTION__, (TREE_LIST)))->list.purpose); | ||||||
724 | gcc_checking_assert (name)((void)(!(name) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 724, __FUNCTION__), 0 : 0)); | ||||||
725 | } | ||||||
726 | else | ||||||
727 | { | ||||||
728 | decl = link; | ||||||
729 | name = DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 729, __FUNCTION__))->decl_minimal.name); | ||||||
730 | } | ||||||
731 | |||||||
732 | /* Remove the binding. */ | ||||||
733 | if (TREE_CODE (decl)((enum tree_code) (decl)->base.code) == LABEL_DECL) | ||||||
734 | pop_local_label (name, decl); | ||||||
735 | else | ||||||
736 | pop_local_binding (name, decl); | ||||||
737 | } | ||||||
738 | |||||||
739 | /* Restore the IDENTIFIER_TYPE_VALUEs. */ | ||||||
740 | for (link = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->type_shadowed; | ||||||
741 | link; link = TREE_CHAIN (link)((contains_struct_check ((link), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 741, __FUNCTION__))->common.chain)) | ||||||
742 | SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (link), TREE_VALUE (link))(((contains_struct_check ((((tree_check ((link), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 742, __FUNCTION__, (TREE_LIST)))->list.purpose)), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 742, __FUNCTION__))->typed.type) = (((tree_check ((link) , "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 742, __FUNCTION__, (TREE_LIST)))->list.value))); | ||||||
743 | |||||||
744 | /* There may be OVERLOADs (wrapped in TREE_LISTs) on the BLOCK_VARs | ||||||
745 | list if a `using' declaration put them there. The debugging | ||||||
746 | back ends won't understand OVERLOAD, so we remove them here. | ||||||
747 | Because the BLOCK_VARS are (temporarily) shared with | ||||||
748 | CURRENT_BINDING_LEVEL->NAMES we must do this fixup after we have | ||||||
749 | popped all the bindings. Also remove undeduced 'auto' decls, | ||||||
750 | which LTO doesn't understand, and can't have been used by anything. */ | ||||||
751 | if (block) | ||||||
752 | { | ||||||
753 | tree* d; | ||||||
754 | |||||||
755 | for (d = &BLOCK_VARS (block)((tree_check ((block), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 755, __FUNCTION__, (BLOCK)))->block.vars); *d; ) | ||||||
756 | { | ||||||
757 | if (TREE_CODE (*d)((enum tree_code) (*d)->base.code) == TREE_LIST | ||||||
758 | || (!processing_template_declscope_chain->x_processing_template_decl | ||||||
759 | && undeduced_auto_decl (*d))) | ||||||
760 | *d = TREE_CHAIN (*d)((contains_struct_check ((*d), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 760, __FUNCTION__))->common.chain); | ||||||
761 | else | ||||||
762 | d = &DECL_CHAIN (*d)(((contains_struct_check (((contains_struct_check ((*d), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 762, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 762, __FUNCTION__))->common.chain)); | ||||||
763 | } | ||||||
764 | } | ||||||
765 | |||||||
766 | /* If the level being exited is the top level of a function, | ||||||
767 | check over all the labels. */ | ||||||
768 | if (functionbody) | ||||||
769 | { | ||||||
770 | if (block) | ||||||
771 | { | ||||||
772 | /* Since this is the top level block of a function, the vars are | ||||||
773 | the function's parameters. Don't leave them in the BLOCK | ||||||
774 | because they are found in the FUNCTION_DECL instead. */ | ||||||
775 | BLOCK_VARS (block)((tree_check ((block), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 775, __FUNCTION__, (BLOCK)))->block.vars) = 0; | ||||||
776 | pop_labels (block); | ||||||
777 | } | ||||||
778 | else | ||||||
779 | pop_labels (subblocks); | ||||||
780 | } | ||||||
781 | |||||||
782 | kind = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->kind; | ||||||
783 | if (kind == sk_cleanup) | ||||||
784 | { | ||||||
785 | tree stmt; | ||||||
786 | |||||||
787 | /* If this is a temporary binding created for a cleanup, then we'll | ||||||
788 | have pushed a statement list level. Pop that, create a new | ||||||
789 | BIND_EXPR for the block, and insert it into the stream. */ | ||||||
790 | stmt = pop_stmt_list (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->statement_list); | ||||||
791 | stmt = c_build_bind_expr (input_location, block, stmt); | ||||||
792 | add_stmt (stmt); | ||||||
793 | } | ||||||
794 | |||||||
795 | leave_scope (); | ||||||
796 | if (functionbody) | ||||||
797 | { | ||||||
798 | /* The current function is being defined, so its DECL_INITIAL | ||||||
799 | should be error_mark_node. */ | ||||||
800 | gcc_assert (DECL_INITIAL (current_function_decl) == error_mark_node)((void)(!(((contains_struct_check ((current_function_decl), ( TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 800, __FUNCTION__))->decl_common.initial) == global_trees [TI_ERROR_MARK]) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 800, __FUNCTION__), 0 : 0)); | ||||||
801 | DECL_INITIAL (current_function_decl)((contains_struct_check ((current_function_decl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 801, __FUNCTION__))->decl_common.initial) = block ? block : subblocks; | ||||||
802 | if (subblocks) | ||||||
803 | { | ||||||
804 | if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)(((tree_check (((((enum tree_code) (current_function_decl)-> base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)( const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result : current_function_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.cxx_constructor ) || ((tree_check (((((enum tree_code) (current_function_decl )->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result : current_function_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.cxx_destructor ) || ((((enum tree_code) (current_function_decl)->base.code ) == FUNCTION_DECL || (((enum tree_code) (current_function_decl )->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result)->base .code) == FUNCTION_DECL)) && (((tree_not_check2 (((tree_check ((((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.name)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (IDENTIFIER_NODE)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)) && ((__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (current_function_decl )->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result : current_function_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_common.lang_specific); if (!(( (enum tree_code) (current_function_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (current_function_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast <union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (TEMPLATE_DECL))))))))->result)->base .code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__); <->u.fn; })->ovl_op_code) == OVL_OP_CALL_EXPR) && (((enum tree_code) ((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == RECORD_TYPE && (((( tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name))) && ((tree_check ((((((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__))->type_common.name)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 804, __FUNCTION__, (IDENTIFIER_NODE)))->base.protected_flag ))))) | ||||||
805 | { | ||||||
806 | if (BLOCK_SUBBLOCKS (subblocks)((tree_check ((subblocks), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 806, __FUNCTION__, (BLOCK)))->block.subblocks)) | ||||||
807 | BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks))((tree_not_check2 (((tree_check ((((tree_check ((subblocks), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 807, __FUNCTION__, (BLOCK)))->block.subblocks)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 807, __FUNCTION__, (BLOCK)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 807, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0) = 1; | ||||||
808 | } | ||||||
809 | else | ||||||
810 | BLOCK_OUTER_CURLY_BRACE_P (subblocks)((tree_not_check2 (((tree_check ((subblocks), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 810, __FUNCTION__, (BLOCK)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 810, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0) = 1; | ||||||
811 | } | ||||||
812 | } | ||||||
813 | else if (block) | ||||||
814 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks | ||||||
815 | = block_chainon (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks, block); | ||||||
816 | |||||||
817 | /* If we did not make a block for the level just exited, | ||||||
818 | any blocks made for inner levels | ||||||
819 | (since they cannot be recorded as subblocks in that level) | ||||||
820 | must be carried forward so they will later become subblocks | ||||||
821 | of something else. */ | ||||||
822 | else if (subblocks) | ||||||
823 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks | ||||||
824 | = block_chainon (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks, subblocks); | ||||||
825 | |||||||
826 | /* Each and every BLOCK node created here in `poplevel' is important | ||||||
827 | (e.g. for proper debugging information) so if we created one | ||||||
828 | earlier, mark it as "used". */ | ||||||
829 | if (block) | ||||||
830 | TREE_USED (block)((block)->base.used_flag) = 1; | ||||||
831 | |||||||
832 | /* All temporary bindings created for cleanups are popped silently. */ | ||||||
833 | if (kind == sk_cleanup) | ||||||
834 | goto restart; | ||||||
835 | |||||||
836 | return block; | ||||||
837 | } | ||||||
838 | |||||||
839 | /* Call wrapup_globals_declarations for the globals in NAMESPACE. */ | ||||||
840 | /* Diagnose odr-used extern inline variables without definitions | ||||||
841 | in the current TU. */ | ||||||
842 | |||||||
843 | int | ||||||
844 | wrapup_namespace_globals () | ||||||
845 | { | ||||||
846 | if (vec<tree, va_gc> *statics = static_decls) | ||||||
847 | { | ||||||
848 | for (tree decl : *statics) | ||||||
849 | { | ||||||
850 | if (warn_unused_functionglobal_options.x_warn_unused_function | ||||||
851 | && TREE_CODE (decl)((enum tree_code) (decl)->base.code) == FUNCTION_DECL | ||||||
852 | && DECL_INITIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 852, __FUNCTION__))->decl_common.initial) == 0 | ||||||
853 | && DECL_EXTERNAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 853, __FUNCTION__))->decl_common.decl_flag_1) | ||||||
854 | && !TREE_PUBLIC (decl)((decl)->base.public_flag) | ||||||
855 | && !DECL_ARTIFICIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 855, __FUNCTION__))->decl_common.artificial_flag) | ||||||
856 | && !DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION (decl)(((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 856, __FUNCTION__))->decl_common.lang_specific) && (((contains_struct_check ((template_info_decl_check ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 856, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 856, __FUNCTION__))->decl_common.lang_specific) ->u.min .template_info) && !(((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 856, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) | ||||||
857 | && !warning_suppressed_p (decl, OPT_Wunused_function)) | ||||||
858 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 858, __FUNCTION__))->decl_minimal.locus), | ||||||
859 | OPT_Wunused_function, | ||||||
860 | "%qF declared %<static%> but never defined", decl); | ||||||
861 | |||||||
862 | if (VAR_P (decl)(((enum tree_code) (decl)->base.code) == VAR_DECL) | ||||||
863 | && DECL_EXTERNAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 863, __FUNCTION__))->decl_common.decl_flag_1) | ||||||
864 | && DECL_INLINE_VAR_P (decl)((((contains_struct_check (((tree_check ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__))->decl_common.lang_specific)->u.base .var_declared_inline_p : false) || (cxx_dialect >= cxx17 && ((contains_struct_check (((tree_check2 (((((enum tree_code) ( decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__, (TEMPLATE_DECL))))))))->result : decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__))->decl_common.lang_flag_8) && (((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__))->decl_minimal.context) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 864, __FUNCTION__))->decl_minimal.context))->base.code ))] == tcc_type)))) | ||||||
865 | && DECL_ODR_USED (decl)(((contains_struct_check (((tree_check2 ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 865, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 865, __FUNCTION__))->decl_common.lang_specific) ->u.base .odr_used)) | ||||||
866 | error_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 866, __FUNCTION__))->decl_minimal.locus), | ||||||
867 | "odr-used inline variable %qD is not defined", decl); | ||||||
868 | } | ||||||
869 | |||||||
870 | /* Clear out the list, so we don't rescan next time. */ | ||||||
871 | static_decls = NULL__null; | ||||||
872 | |||||||
873 | /* Write out any globals that need to be output. */ | ||||||
874 | return wrapup_global_declarations (statics->address (), | ||||||
875 | statics->length ()); | ||||||
876 | } | ||||||
877 | return 0; | ||||||
878 | } | ||||||
879 | |||||||
880 | /* In C++, you don't have to write `struct S' to refer to `S'; you | ||||||
881 | can just use `S'. We accomplish this by creating a TYPE_DECL as | ||||||
882 | if the user had written `typedef struct S S'. Create and return | ||||||
883 | the TYPE_DECL for TYPE. */ | ||||||
884 | |||||||
885 | tree | ||||||
886 | create_implicit_typedef (tree name, tree type) | ||||||
887 | { | ||||||
888 | tree decl; | ||||||
889 | |||||||
890 | decl = build_decl (input_location, TYPE_DECL, name, type); | ||||||
891 | DECL_ARTIFICIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 891, __FUNCTION__))->decl_common.artificial_flag) = 1; | ||||||
892 | /* There are other implicit type declarations, like the one *within* | ||||||
893 | a class that allows you to write `S::S'. We must distinguish | ||||||
894 | amongst these. */ | ||||||
895 | SET_DECL_IMPLICIT_TYPEDEF_P (decl)(((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 895, __FUNCTION__))->decl_common.lang_flag_2) = 1); | ||||||
896 | TYPE_NAME (type)((tree_class_check ((type), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 896, __FUNCTION__))->type_common.name) = decl; | ||||||
897 | TYPE_STUB_DECL (type)(((contains_struct_check (((tree_class_check ((type), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 897, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 897, __FUNCTION__))->common.chain)) = decl; | ||||||
898 | |||||||
899 | return decl; | ||||||
900 | } | ||||||
901 | |||||||
902 | /* Function-scope local entities that need discriminators. Each entry | ||||||
903 | is a {decl,name} pair. VAR_DECLs for anon unions get their name | ||||||
904 | smashed, so we cannot rely on DECL_NAME. */ | ||||||
905 | |||||||
906 | static GTY((deletable)) vec<tree, va_gc> *local_entities; | ||||||
907 | |||||||
908 | /* Determine the mangling discriminator of local DECL. There are | ||||||
909 | generally very few of these in any particular function. */ | ||||||
910 | |||||||
911 | void | ||||||
912 | determine_local_discriminator (tree decl) | ||||||
913 | { | ||||||
914 | auto_cond_timevar tv (TV_NAME_LOOKUP); | ||||||
915 | retrofit_lang_decl (decl); | ||||||
916 | tree ctx = DECL_CONTEXT (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 916, __FUNCTION__))->decl_minimal.context); | ||||||
917 | tree name = (TREE_CODE (decl)((enum tree_code) (decl)->base.code) == TYPE_DECL | ||||||
918 | && TYPE_UNNAMED_P (TREE_TYPE (decl))((((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name))) && ((tree_check ((((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__, (IDENTIFIER_NODE)))->base.private_flag )) && !((tree_check ((((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__))->type_common.name)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 918, __FUNCTION__, (IDENTIFIER_NODE)))->base.protected_flag )) | ||||||
919 | ? NULL_TREE(tree) __null : DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 919, __FUNCTION__))->decl_minimal.name)); | ||||||
920 | size_t nelts = vec_safe_length (local_entities); | ||||||
921 | for (size_t i = 0; i < nelts; i += 2) | ||||||
922 | { | ||||||
923 | tree *pair = &(*local_entities)[i]; | ||||||
924 | tree d = pair[0]; | ||||||
925 | tree n = pair[1]; | ||||||
926 | gcc_checking_assert (d != decl)((void)(!(d != decl) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 926, __FUNCTION__), 0 : 0)); | ||||||
927 | if (name == n | ||||||
928 | && TREE_CODE (decl)((enum tree_code) (decl)->base.code) == TREE_CODE (d)((enum tree_code) (d)->base.code) | ||||||
929 | && ctx == DECL_CONTEXT (d)((contains_struct_check ((d), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 929, __FUNCTION__))->decl_minimal.context)) | ||||||
930 | { | ||||||
931 | tree disc = integer_one_nodeglobal_trees[TI_INTEGER_ONE]; | ||||||
932 | if (DECL_DISCRIMINATOR (d)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((d), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 932, __FUNCTION__))->decl_common.lang_specific); if (!(( ((enum tree_code) (d)->base.code) == VAR_DECL || ((enum tree_code ) (d)->base.code) == FUNCTION_DECL) || ((enum tree_code) ( d)->base.code) == FIELD_DECL || ((enum tree_code) (d)-> base.code) == CONST_DECL || ((enum tree_code) (d)->base.code ) == TYPE_DECL || ((enum tree_code) (d)->base.code) == TEMPLATE_DECL || ((enum tree_code) (d)->base.code) == USING_DECL || ((enum tree_code) (d)->base.code) == CONCEPT_DECL)) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 932, __FUNCTION__); <->u.min; })->access)) | ||||||
933 | disc = build_int_cst (TREE_TYPE (disc)((contains_struct_check ((disc), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 933, __FUNCTION__))->typed.type), | ||||||
934 | TREE_INT_CST_LOW (DECL_DISCRIMINATOR (d))((unsigned long) (*tree_int_cst_elt_check (((__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((d), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 934, __FUNCTION__))->decl_common.lang_specific); if (!(( ((enum tree_code) (d)->base.code) == VAR_DECL || ((enum tree_code ) (d)->base.code) == FUNCTION_DECL) || ((enum tree_code) ( d)->base.code) == FIELD_DECL || ((enum tree_code) (d)-> base.code) == CONST_DECL || ((enum tree_code) (d)->base.code ) == TYPE_DECL || ((enum tree_code) (d)->base.code) == TEMPLATE_DECL || ((enum tree_code) (d)->base.code) == USING_DECL || ((enum tree_code) (d)->base.code) == CONCEPT_DECL)) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 934, __FUNCTION__); <->u.min; })->access)), (0) , "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 934, __FUNCTION__))) + 1); | ||||||
935 | DECL_DISCRIMINATOR (decl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 935, __FUNCTION__))->decl_common.lang_specific); if (!(( ((enum tree_code) (decl)->base.code) == VAR_DECL || ((enum tree_code) (decl)->base.code) == FUNCTION_DECL) || ((enum tree_code) (decl)->base.code) == FIELD_DECL || ((enum tree_code ) (decl)->base.code) == CONST_DECL || ((enum tree_code) (decl )->base.code) == TYPE_DECL || ((enum tree_code) (decl)-> base.code) == TEMPLATE_DECL || ((enum tree_code) (decl)->base .code) == USING_DECL || ((enum tree_code) (decl)->base.code ) == CONCEPT_DECL)) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 935, __FUNCTION__); <->u.min; })->access) = disc; | ||||||
936 | /* Replace the saved decl. */ | ||||||
937 | pair[0] = decl; | ||||||
938 | decl = NULL_TREE(tree) __null; | ||||||
939 | break; | ||||||
940 | } | ||||||
941 | } | ||||||
942 | |||||||
943 | if (decl
| ||||||
944 | { | ||||||
945 | vec_safe_reserve (local_entities, 2); | ||||||
946 | local_entities->quick_push (decl); | ||||||
| |||||||
947 | local_entities->quick_push (name); | ||||||
948 | } | ||||||
949 | } | ||||||
950 | |||||||
951 | |||||||
952 | |||||||
953 | /* Returns true if functions FN1 and FN2 have equivalent trailing | ||||||
954 | requires clauses. */ | ||||||
955 | |||||||
956 | static bool | ||||||
957 | function_requirements_equivalent_p (tree newfn, tree oldfn) | ||||||
958 | { | ||||||
959 | /* In the concepts TS, the combined constraints are compared. */ | ||||||
960 | if (cxx_dialect < cxx20) | ||||||
961 | { | ||||||
962 | tree ci1 = get_constraints (oldfn); | ||||||
963 | tree ci2 = get_constraints (newfn); | ||||||
964 | tree req1 = ci1 ? CI_ASSOCIATED_CONSTRAINTS (ci1)check_constraint_info (check_nonnull (ci1))->associated_constr : NULL_TREE(tree) __null; | ||||||
965 | tree req2 = ci2 ? CI_ASSOCIATED_CONSTRAINTS (ci2)check_constraint_info (check_nonnull (ci2))->associated_constr : NULL_TREE(tree) __null; | ||||||
966 | return cp_tree_equal (req1, req2); | ||||||
967 | } | ||||||
968 | |||||||
969 | /* Compare only trailing requirements. */ | ||||||
970 | tree reqs1 = get_trailing_function_requirements (newfn); | ||||||
971 | tree reqs2 = get_trailing_function_requirements (oldfn); | ||||||
972 | if ((reqs1 != NULL_TREE(tree) __null) != (reqs2 != NULL_TREE(tree) __null)) | ||||||
973 | return false; | ||||||
974 | |||||||
975 | /* Substitution is needed when friends are involved. */ | ||||||
976 | reqs1 = maybe_substitute_reqs_for (reqs1, newfn); | ||||||
977 | reqs2 = maybe_substitute_reqs_for (reqs2, oldfn); | ||||||
978 | |||||||
979 | return cp_tree_equal (reqs1, reqs2); | ||||||
980 | } | ||||||
981 | |||||||
982 | /* Two functions of the same name correspond [basic.scope.scope] if | ||||||
983 | |||||||
984 | + both declare functions with the same non-object-parameter-type-list, | ||||||
985 | equivalent ([temp.over.link]) trailing requires-clauses (if any, except as | ||||||
986 | specified in [temp.friend]), and, if both are non-static members, they have | ||||||
987 | corresponding object parameters, or | ||||||
988 | |||||||
989 | + both declare function templates with equivalent | ||||||
990 | non-object-parameter-type-lists, return types (if any), template-heads, and | ||||||
991 | trailing requires-clauses (if any), and, if both are non-static members, | ||||||
992 | they have corresponding object parameters. | ||||||
993 | |||||||
994 | This is a subset of decls_match: it identifies declarations that cannot be | ||||||
995 | overloaded with one another. This function does not consider DECL_NAME. */ | ||||||
996 | |||||||
997 | bool | ||||||
998 | fns_correspond (tree newdecl, tree olddecl) | ||||||
999 | { | ||||||
1000 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code)) | ||||||
1001 | return false; | ||||||
1002 | |||||||
1003 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) | ||||||
1004 | { | ||||||
1005 | if (!template_heads_equivalent_p (newdecl, olddecl)) | ||||||
1006 | return 0; | ||||||
1007 | newdecl = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1007, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1008 | olddecl = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1008, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1009 | } | ||||||
1010 | |||||||
1011 | tree f1 = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1011, __FUNCTION__))->typed.type); | ||||||
1012 | tree f2 = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1012, __FUNCTION__))->typed.type); | ||||||
1013 | |||||||
1014 | int rq1 = type_memfn_rqual (f1); | ||||||
1015 | int rq2 = type_memfn_rqual (f2); | ||||||
1016 | |||||||
1017 | /* If only one is a non-static member function, ignore ref-quals. */ | ||||||
1018 | if (TREE_CODE (f1)((enum tree_code) (f1)->base.code) != TREE_CODE (f2)((enum tree_code) (f2)->base.code)) | ||||||
1019 | rq1 = rq2; | ||||||
1020 | /* Two non-static member functions have corresponding object parameters if: | ||||||
1021 | + exactly one is an implicit object member function with no ref-qualifier | ||||||
1022 | and the types of their object parameters ([dcl.fct]), after removing | ||||||
1023 | top-level references, are the same, or | ||||||
1024 | + their object parameters have the same type. */ | ||||||
1025 | /* ??? We treat member functions of different classes as corresponding even | ||||||
1026 | though that means the object parameters have different types. */ | ||||||
1027 | else if ((rq1 == REF_QUAL_NONE) != (rq2 == REF_QUAL_NONE)) | ||||||
1028 | rq1 = rq2; | ||||||
1029 | |||||||
1030 | bool types_match = rq1 == rq2; | ||||||
1031 | |||||||
1032 | if (types_match) | ||||||
1033 | { | ||||||
1034 | tree p1 = FUNCTION_FIRST_USER_PARMTYPE (newdecl)skip_artificial_parms_for ((newdecl), ((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1034, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1034, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); | ||||||
1035 | tree p2 = FUNCTION_FIRST_USER_PARMTYPE (olddecl)skip_artificial_parms_for ((olddecl), ((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1035, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1035, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); | ||||||
1036 | types_match = compparms (p1, p2); | ||||||
1037 | } | ||||||
1038 | |||||||
1039 | /* Two function declarations match if either has a requires-clause | ||||||
1040 | then both have a requires-clause and their constraints-expressions | ||||||
1041 | are equivalent. */ | ||||||
1042 | if (types_match && flag_conceptsglobal_options.x_flag_concepts) | ||||||
1043 | types_match = function_requirements_equivalent_p (newdecl, olddecl); | ||||||
1044 | |||||||
1045 | return types_match; | ||||||
1046 | } | ||||||
1047 | |||||||
1048 | /* Subroutine of duplicate_decls: return truthvalue of whether | ||||||
1049 | or not types of these decls match. | ||||||
1050 | |||||||
1051 | For C++, we must compare the parameter list so that `int' can match | ||||||
1052 | `int&' in a parameter position, but `int&' is not confused with | ||||||
1053 | `const int&'. */ | ||||||
1054 | |||||||
1055 | int | ||||||
1056 | decls_match (tree newdecl, tree olddecl, bool record_versions /* = true */) | ||||||
1057 | { | ||||||
1058 | int types_match; | ||||||
1059 | |||||||
1060 | if (newdecl == olddecl) | ||||||
1061 | return 1; | ||||||
1062 | |||||||
1063 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code)) | ||||||
1064 | /* If the two DECLs are not even the same kind of thing, we're not | ||||||
1065 | interested in their types. */ | ||||||
1066 | return 0; | ||||||
1067 | |||||||
1068 | gcc_assert (DECL_P (newdecl))((void)(!((tree_code_type_tmpl <0>::tree_code_type[(int ) (((enum tree_code) (newdecl)->base.code))] == tcc_declaration )) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1068, __FUNCTION__), 0 : 0)); | ||||||
1069 | |||||||
1070 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
1071 | { | ||||||
1072 | /* Specializations of different templates are different functions | ||||||
1073 | even if they have the same type. */ | ||||||
1074 | tree t1 = (DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1074, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) | ||||||
1075 | ? DECL_TI_TEMPLATE (newdecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1075, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1075, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1075, __FUNCTION__, (TEMPLATE_INFO))))->tmpl | ||||||
1076 | : NULL_TREE(tree) __null); | ||||||
1077 | tree t2 = (DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1077, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) | ||||||
1078 | ? DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1078, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1078, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1078, __FUNCTION__, (TEMPLATE_INFO))))->tmpl | ||||||
1079 | : NULL_TREE(tree) __null); | ||||||
1080 | if (t1 != t2) | ||||||
1081 | return 0; | ||||||
1082 | |||||||
1083 | if (CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1083, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1083, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1083, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) != CP_DECL_CONTEXT (olddecl)(!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1083, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1083, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1083, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) | ||||||
1084 | && ! (DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1084, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1084, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) | ||||||
1085 | && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1085, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1085, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c))) | ||||||
1086 | return 0; | ||||||
1087 | |||||||
1088 | /* A new declaration doesn't match a built-in one unless it | ||||||
1089 | is also extern "C". */ | ||||||
1090 | if (DECL_IS_UNDECLARED_BUILTIN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1090, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1)) | ||||||
1091 | && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1091, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1091, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) && !DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1091, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1091, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) | ||||||
1092 | return 0; | ||||||
1093 | |||||||
1094 | tree f1 = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1094, __FUNCTION__))->typed.type); | ||||||
1095 | tree f2 = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1095, __FUNCTION__))->typed.type); | ||||||
1096 | if (TREE_CODE (f1)((enum tree_code) (f1)->base.code) != TREE_CODE (f2)((enum tree_code) (f2)->base.code)) | ||||||
1097 | return 0; | ||||||
1098 | |||||||
1099 | /* A declaration with deduced return type should use its pre-deduction | ||||||
1100 | type for declaration matching. */ | ||||||
1101 | tree r2 = fndecl_declared_return_type (olddecl); | ||||||
1102 | tree r1 = fndecl_declared_return_type (newdecl); | ||||||
1103 | |||||||
1104 | tree p1 = TYPE_ARG_TYPES (f1)((tree_check2 ((f1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1104, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); | ||||||
1105 | tree p2 = TYPE_ARG_TYPES (f2)((tree_check2 ((f2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1105, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); | ||||||
1106 | |||||||
1107 | if (same_type_p (r1, r2)comptypes ((r1), (r2), 0)) | ||||||
1108 | { | ||||||
1109 | if (!prototype_p (f2) && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1109, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1109, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) | ||||||
1110 | && fndecl_built_in_p (olddecl)) | ||||||
1111 | { | ||||||
1112 | types_match = self_promoting_args_p (p1); | ||||||
1113 | if (p1 == void_list_nodeglobal_trees[TI_VOID_LIST_NODE]) | ||||||
1114 | TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1114, __FUNCTION__))->typed.type) = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1114, __FUNCTION__))->typed.type); | ||||||
1115 | } | ||||||
1116 | else | ||||||
1117 | types_match = | ||||||
1118 | compparms (p1, p2) | ||||||
1119 | && type_memfn_rqual (f1) == type_memfn_rqual (f2) | ||||||
1120 | && (TYPE_ATTRIBUTES (TREE_TYPE (newdecl))((tree_class_check ((((contains_struct_check ((newdecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1120, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1120, __FUNCTION__))->type_common.attributes) == NULL_TREE(tree) __null | ||||||
1121 | || comp_type_attributes (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1121, __FUNCTION__))->typed.type), | ||||||
1122 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1122, __FUNCTION__))->typed.type)) != 0); | ||||||
1123 | } | ||||||
1124 | else | ||||||
1125 | types_match = 0; | ||||||
1126 | |||||||
1127 | /* Two function declarations match if either has a requires-clause | ||||||
1128 | then both have a requires-clause and their constraints-expressions | ||||||
1129 | are equivalent. */ | ||||||
1130 | if (types_match && flag_conceptsglobal_options.x_flag_concepts) | ||||||
1131 | types_match = function_requirements_equivalent_p (newdecl, olddecl); | ||||||
1132 | |||||||
1133 | /* The decls dont match if they correspond to two different versions | ||||||
1134 | of the same function. Disallow extern "C" functions to be | ||||||
1135 | versions for now. */ | ||||||
1136 | if (types_match | ||||||
1137 | && !DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1137, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1137, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) | ||||||
1138 | && !DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1138, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1138, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) | ||||||
1139 | && targetm.target_option.function_versions (newdecl, olddecl)) | ||||||
1140 | { | ||||||
1141 | if (record_versions) | ||||||
1142 | maybe_version_functions (newdecl, olddecl, | ||||||
1143 | (!DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1143, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) | ||||||
1144 | || !DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1144, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ))); | ||||||
1145 | return 0; | ||||||
1146 | } | ||||||
1147 | } | ||||||
1148 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) | ||||||
1149 | { | ||||||
1150 | if (!template_heads_equivalent_p (newdecl, olddecl)) | ||||||
1151 | return 0; | ||||||
1152 | |||||||
1153 | tree oldres = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1153, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1154 | tree newres = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1154, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1155 | |||||||
1156 | if (TREE_CODE (newres)((enum tree_code) (newres)->base.code) != TREE_CODE (oldres)((enum tree_code) (oldres)->base.code)) | ||||||
1157 | return 0; | ||||||
1158 | |||||||
1159 | /* Two template types match if they are the same. Otherwise, compare | ||||||
1160 | the underlying declarations. */ | ||||||
1161 | if (TREE_CODE (newres)((enum tree_code) (newres)->base.code) == TYPE_DECL) | ||||||
1162 | types_match = same_type_p (TREE_TYPE (newres), TREE_TYPE (oldres))comptypes ((((contains_struct_check ((newres), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1162, __FUNCTION__))->typed.type)), (((contains_struct_check ((oldres), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1162, __FUNCTION__))->typed.type)), 0); | ||||||
1163 | else | ||||||
1164 | types_match = decls_match (newres, oldres); | ||||||
1165 | } | ||||||
1166 | else | ||||||
1167 | { | ||||||
1168 | /* Need to check scope for variable declaration (VAR_DECL). | ||||||
1169 | For typedef (TYPE_DECL), scope is ignored. */ | ||||||
1170 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) | ||||||
1171 | && CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1171, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1171, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1171, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) != CP_DECL_CONTEXT (olddecl)(!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1171, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1171, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1171, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) | ||||||
1172 | /* [dcl.link] | ||||||
1173 | Two declarations for an object with C language linkage | ||||||
1174 | with the same name (ignoring the namespace that qualify | ||||||
1175 | it) that appear in different namespace scopes refer to | ||||||
1176 | the same object. */ | ||||||
1177 | && !(DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1177, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1177, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) && DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1177, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1177, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c))) | ||||||
1178 | return 0; | ||||||
1179 | |||||||
1180 | if (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1180, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK]) | ||||||
1181 | types_match = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1181, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1182 | else if (TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1182, __FUNCTION__))->typed.type) == NULL_TREE(tree) __null) | ||||||
1183 | types_match = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1183, __FUNCTION__))->typed.type) == NULL_TREE(tree) __null; | ||||||
1184 | else if (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1184, __FUNCTION__))->typed.type) == NULL_TREE(tree) __null) | ||||||
1185 | types_match = 0; | ||||||
1186 | else | ||||||
1187 | types_match = comptypes (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1187, __FUNCTION__))->typed.type), | ||||||
1188 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1188, __FUNCTION__))->typed.type), | ||||||
1189 | COMPARE_REDECLARATION4); | ||||||
1190 | } | ||||||
1191 | |||||||
1192 | return types_match; | ||||||
1193 | } | ||||||
1194 | |||||||
1195 | /* Mark DECL as versioned if it isn't already. */ | ||||||
1196 | |||||||
1197 | static void | ||||||
1198 | maybe_mark_function_versioned (tree decl) | ||||||
1199 | { | ||||||
1200 | if (!DECL_FUNCTION_VERSIONED (decl)((tree_check ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1200, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) | ||||||
1201 | { | ||||||
1202 | DECL_FUNCTION_VERSIONED (decl)((tree_check ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1202, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) = 1; | ||||||
1203 | /* If DECL_ASSEMBLER_NAME has already been set, re-mangle | ||||||
1204 | to include the version marker. */ | ||||||
1205 | if (DECL_ASSEMBLER_NAME_SET_P (decl)(((contains_struct_check ((decl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1205, __FUNCTION__))->decl_with_vis.assembler_name) != ( tree) __null)) | ||||||
1206 | mangle_decl (decl); | ||||||
1207 | } | ||||||
1208 | } | ||||||
1209 | |||||||
1210 | /* NEWDECL and OLDDECL have identical signatures. If they are | ||||||
1211 | different versions adjust them and return true. | ||||||
1212 | If RECORD is set to true, record function versions. */ | ||||||
1213 | |||||||
1214 | bool | ||||||
1215 | maybe_version_functions (tree newdecl, tree olddecl, bool record) | ||||||
1216 | { | ||||||
1217 | if (!targetm.target_option.function_versions (newdecl, olddecl)) | ||||||
1218 | return false; | ||||||
1219 | |||||||
1220 | maybe_mark_function_versioned (olddecl); | ||||||
1221 | if (DECL_LOCAL_DECL_P (olddecl)((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1221, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1221, __FUNCTION__))->decl_common.lang_flag_0)) | ||||||
1222 | { | ||||||
1223 | olddecl = DECL_LOCAL_DECL_ALIAS (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__), 0 : 0)), olddecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1223, __FUNCTION__); <->u.min; })->access); | ||||||
1224 | maybe_mark_function_versioned (olddecl); | ||||||
1225 | } | ||||||
1226 | |||||||
1227 | maybe_mark_function_versioned (newdecl); | ||||||
1228 | if (DECL_LOCAL_DECL_P (newdecl)((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1228, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1228, __FUNCTION__))->decl_common.lang_flag_0)) | ||||||
1229 | { | ||||||
1230 | /* Unfortunately, we can get here before pushdecl naturally calls | ||||||
1231 | push_local_extern_decl_alias, so we need to call it directly. */ | ||||||
1232 | if (!DECL_LOCAL_DECL_ALIAS (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1232, __FUNCTION__); <->u.min; })->access)) | ||||||
1233 | push_local_extern_decl_alias (newdecl); | ||||||
1234 | newdecl = DECL_LOCAL_DECL_ALIAS (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1234, __FUNCTION__); <->u.min; })->access); | ||||||
1235 | maybe_mark_function_versioned (newdecl); | ||||||
1236 | } | ||||||
1237 | |||||||
1238 | if (record) | ||||||
1239 | cgraph_node::record_function_versions (olddecl, newdecl); | ||||||
1240 | |||||||
1241 | return true; | ||||||
1242 | } | ||||||
1243 | |||||||
1244 | /* If NEWDECL is `static' and an `extern' was seen previously, | ||||||
1245 | warn about it. OLDDECL is the previous declaration. | ||||||
1246 | |||||||
1247 | Note that this does not apply to the C++ case of declaring | ||||||
1248 | a variable `extern const' and then later `const'. | ||||||
1249 | |||||||
1250 | Don't complain about built-in functions, since they are beyond | ||||||
1251 | the user's control. */ | ||||||
1252 | |||||||
1253 | void | ||||||
1254 | warn_extern_redeclared_static (tree newdecl, tree olddecl) | ||||||
1255 | { | ||||||
1256 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL | ||||||
1257 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL | ||||||
1258 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == CONST_DECL | ||||||
1259 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) | ||||||
1260 | return; | ||||||
1261 | |||||||
1262 | /* Don't get confused by static member functions; that's a different | ||||||
1263 | use of `static'. */ | ||||||
1264 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
1265 | && DECL_STATIC_FUNCTION_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1265, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1265, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1265, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1265, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1265, __FUNCTION__); <->u.fn; })->static_function )) | ||||||
1266 | return; | ||||||
1267 | |||||||
1268 | /* If the old declaration was `static', or the new one isn't, then | ||||||
1269 | everything is OK. */ | ||||||
1270 | if (DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1270, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1270, __FUNCTION__))->decl_common.lang_flag_6) || !DECL_THIS_STATIC (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1270, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1270, __FUNCTION__))->decl_common.lang_flag_6)) | ||||||
1271 | return; | ||||||
1272 | |||||||
1273 | /* It's OK to declare a builtin function as `static'. */ | ||||||
1274 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL | ||||||
1275 | && DECL_ARTIFICIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1275, __FUNCTION__))->decl_common.artificial_flag)) | ||||||
1276 | return; | ||||||
1277 | |||||||
1278 | auto_diagnostic_group d; | ||||||
1279 | if (permerror (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1279, __FUNCTION__))->decl_minimal.locus), | ||||||
1280 | "%qD was declared %<extern%> and later %<static%>", newdecl)) | ||||||
1281 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1281, __FUNCTION__))->decl_minimal.locus), | ||||||
1282 | "previous declaration of %qD", olddecl); | ||||||
1283 | } | ||||||
1284 | |||||||
1285 | /* NEW_DECL is a redeclaration of OLD_DECL; both are functions or | ||||||
1286 | function templates. If their exception specifications do not | ||||||
1287 | match, issue a diagnostic. */ | ||||||
1288 | |||||||
1289 | static void | ||||||
1290 | check_redeclaration_exception_specification (tree new_decl, | ||||||
1291 | tree old_decl) | ||||||
1292 | { | ||||||
1293 | tree new_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (new_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (new_decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1293, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1293, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1293, __FUNCTION__))->type_non_common.lang_1); | ||||||
1294 | tree old_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (old_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (old_decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1294, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1294, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1294, __FUNCTION__))->type_non_common.lang_1); | ||||||
1295 | |||||||
1296 | /* Two default specs are equivalent, don't force evaluation. */ | ||||||
1297 | if (UNEVALUATED_NOEXCEPT_SPEC_P (new_exceptions)(((new_exceptions) && (((tree_check ((new_exceptions) , "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1297, __FUNCTION__, (TREE_LIST)))->list.purpose)) && (((enum tree_code) (((tree_check ((new_exceptions), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1297, __FUNCTION__, (TREE_LIST)))->list.purpose))->base .code) == DEFERRED_NOEXCEPT)) && (((struct tree_deferred_noexcept *)(tree_check ((((tree_check ((new_exceptions), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1297, __FUNCTION__, (TREE_LIST)))->list.purpose)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1297, __FUNCTION__, (DEFERRED_NOEXCEPT))))->pattern) == ( tree) __null) | ||||||
1298 | && UNEVALUATED_NOEXCEPT_SPEC_P (old_exceptions)(((old_exceptions) && (((tree_check ((old_exceptions) , "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1298, __FUNCTION__, (TREE_LIST)))->list.purpose)) && (((enum tree_code) (((tree_check ((old_exceptions), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1298, __FUNCTION__, (TREE_LIST)))->list.purpose))->base .code) == DEFERRED_NOEXCEPT)) && (((struct tree_deferred_noexcept *)(tree_check ((((tree_check ((old_exceptions), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1298, __FUNCTION__, (TREE_LIST)))->list.purpose)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1298, __FUNCTION__, (DEFERRED_NOEXCEPT))))->pattern) == ( tree) __null)) | ||||||
1299 | return; | ||||||
1300 | |||||||
1301 | if (!type_dependent_expression_p (old_decl)) | ||||||
1302 | { | ||||||
1303 | maybe_instantiate_noexcept (new_decl); | ||||||
1304 | maybe_instantiate_noexcept (old_decl); | ||||||
1305 | } | ||||||
1306 | new_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (new_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (new_decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1306, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1306, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1306, __FUNCTION__))->type_non_common.lang_1); | ||||||
1307 | old_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (old_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (old_decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1307, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1307, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1307, __FUNCTION__))->type_non_common.lang_1); | ||||||
1308 | |||||||
1309 | /* [except.spec] | ||||||
1310 | |||||||
1311 | If any declaration of a function has an exception-specification, | ||||||
1312 | all declarations, including the definition and an explicit | ||||||
1313 | specialization, of that function shall have an | ||||||
1314 | exception-specification with the same set of type-ids. */ | ||||||
1315 | if (!DECL_IS_UNDECLARED_BUILTIN (old_decl)(((contains_struct_check ((old_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1315, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1)) | ||||||
1316 | && !DECL_IS_UNDECLARED_BUILTIN (new_decl)(((contains_struct_check ((new_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1316, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1)) | ||||||
1317 | && !comp_except_specs (new_exceptions, old_exceptions, ce_normal)) | ||||||
1318 | { | ||||||
1319 | const char *const msg | ||||||
1320 | = G_("declaration of %qF has a different exception specifier")"declaration of %qF has a different exception specifier"; | ||||||
1321 | bool complained = true; | ||||||
1322 | location_t new_loc = DECL_SOURCE_LOCATION (new_decl)((contains_struct_check ((new_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1322, __FUNCTION__))->decl_minimal.locus); | ||||||
1323 | auto_diagnostic_group d; | ||||||
1324 | if (DECL_IN_SYSTEM_HEADER (old_decl)(in_system_header_at (((contains_struct_check ((old_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1324, __FUNCTION__))->decl_minimal.locus)))) | ||||||
1325 | complained = pedwarn (new_loc, OPT_Wsystem_headers, msg, new_decl); | ||||||
1326 | else if (!flag_exceptionsglobal_options.x_flag_exceptions) | ||||||
1327 | /* We used to silently permit mismatched eh specs with | ||||||
1328 | -fno-exceptions, so make them a pedwarn now. */ | ||||||
1329 | complained = pedwarn (new_loc, OPT_Wpedantic, msg, new_decl); | ||||||
1330 | else | ||||||
1331 | error_at (new_loc, msg, new_decl); | ||||||
1332 | if (complained) | ||||||
1333 | inform (DECL_SOURCE_LOCATION (old_decl)((contains_struct_check ((old_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1333, __FUNCTION__))->decl_minimal.locus), | ||||||
1334 | "from previous declaration %qF", old_decl); | ||||||
1335 | } | ||||||
1336 | } | ||||||
1337 | |||||||
1338 | /* Return true if OLD_DECL and NEW_DECL agree on constexprness. | ||||||
1339 | Otherwise issue diagnostics. */ | ||||||
1340 | |||||||
1341 | static bool | ||||||
1342 | validate_constexpr_redeclaration (tree old_decl, tree new_decl) | ||||||
1343 | { | ||||||
1344 | old_decl = STRIP_TEMPLATE (old_decl)(((enum tree_code) (old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1344, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl ); | ||||||
1345 | new_decl = STRIP_TEMPLATE (new_decl)(((enum tree_code) (new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1345, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl ); | ||||||
1346 | if (!VAR_OR_FUNCTION_DECL_P (old_decl)(((enum tree_code) (old_decl)->base.code) == VAR_DECL || ( (enum tree_code) (old_decl)->base.code) == FUNCTION_DECL) | ||||||
1347 | || !VAR_OR_FUNCTION_DECL_P (new_decl)(((enum tree_code) (new_decl)->base.code) == VAR_DECL || ( (enum tree_code) (new_decl)->base.code) == FUNCTION_DECL)) | ||||||
1348 | return true; | ||||||
1349 | if (DECL_DECLARED_CONSTEXPR_P (old_decl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1349, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1349, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1349, __FUNCTION__))->decl_common.lang_flag_8) | ||||||
1350 | == DECL_DECLARED_CONSTEXPR_P (new_decl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1350, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1350, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1350, __FUNCTION__))->decl_common.lang_flag_8)) | ||||||
1351 | { | ||||||
1352 | if (TREE_CODE (old_decl)((enum tree_code) (old_decl)->base.code) != FUNCTION_DECL) | ||||||
1353 | return true; | ||||||
1354 | if (DECL_IMMEDIATE_FUNCTION_P (old_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (old_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (old_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1354, __FUNCTION__); <->u.fn; })->immediate_fn_p : false) | ||||||
1355 | == DECL_IMMEDIATE_FUNCTION_P (new_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (new_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (new_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1355, __FUNCTION__); <->u.fn; })->immediate_fn_p : false)) | ||||||
1356 | return true; | ||||||
1357 | } | ||||||
1358 | if (TREE_CODE (old_decl)((enum tree_code) (old_decl)->base.code) == FUNCTION_DECL) | ||||||
1359 | { | ||||||
1360 | /* With -fimplicit-constexpr, ignore changes in the constexpr | ||||||
1361 | keyword. */ | ||||||
1362 | if (flag_implicit_constexprglobal_options.x_flag_implicit_constexpr | ||||||
1363 | && (DECL_IMMEDIATE_FUNCTION_P (new_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (new_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (new_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1363, __FUNCTION__); <->u.fn; })->immediate_fn_p : false) | ||||||
1364 | == DECL_IMMEDIATE_FUNCTION_P (old_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (old_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (old_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1364, __FUNCTION__); <->u.fn; })->immediate_fn_p : false))) | ||||||
1365 | return true; | ||||||
1366 | if (fndecl_built_in_p (old_decl)) | ||||||
1367 | { | ||||||
1368 | /* Hide a built-in declaration. */ | ||||||
1369 | DECL_DECLARED_CONSTEXPR_P (old_decl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1369, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1369, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1369, __FUNCTION__))->decl_common.lang_flag_8) | ||||||
1370 | = DECL_DECLARED_CONSTEXPR_P (new_decl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1370, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1370, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1370, __FUNCTION__))->decl_common.lang_flag_8); | ||||||
1371 | if (DECL_IMMEDIATE_FUNCTION_P (new_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (new_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (new_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1371, __FUNCTION__); <->u.fn; })->immediate_fn_p : false)) | ||||||
1372 | SET_DECL_IMMEDIATE_FUNCTION_P (old_decl)(retrofit_lang_decl ((tree_check ((old_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1372, __FUNCTION__, (FUNCTION_DECL)))), __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1372, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1372, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (old_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (old_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1372, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1372, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1372, __FUNCTION__); <->u.fn; })->immediate_fn_p = true); | ||||||
1373 | return true; | ||||||
1374 | } | ||||||
1375 | /* 7.1.5 [dcl.constexpr] | ||||||
1376 | Note: An explicit specialization can differ from the template | ||||||
1377 | declaration with respect to the constexpr specifier. */ | ||||||
1378 | if (! DECL_TEMPLATE_SPECIALIZATION (old_decl)((((contains_struct_check ((old_decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1378, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) | ||||||
1379 | && DECL_TEMPLATE_SPECIALIZATION (new_decl)((((contains_struct_check ((new_decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1379, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) | ||||||
1380 | return true; | ||||||
1381 | |||||||
1382 | const char *kind = "constexpr"; | ||||||
1383 | if (DECL_IMMEDIATE_FUNCTION_P (old_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (old_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (old_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (old_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1383, __FUNCTION__); <->u.fn; })->immediate_fn_p : false) | ||||||
1384 | || DECL_IMMEDIATE_FUNCTION_P (new_decl)(((contains_struct_check (((tree_check (((((enum tree_code) ( new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__))->decl_common.lang_specific) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (new_decl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (new_decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (new_decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1384, __FUNCTION__); <->u.fn; })->immediate_fn_p : false)) | ||||||
1385 | kind = "consteval"; | ||||||
1386 | error_at (DECL_SOURCE_LOCATION (new_decl)((contains_struct_check ((new_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1386, __FUNCTION__))->decl_minimal.locus), | ||||||
1387 | "redeclaration %qD differs in %qs " | ||||||
1388 | "from previous declaration", new_decl, | ||||||
1389 | kind); | ||||||
1390 | inform (DECL_SOURCE_LOCATION (old_decl)((contains_struct_check ((old_decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1390, __FUNCTION__))->decl_minimal.locus), | ||||||
1391 | "previous declaration %qD", old_decl); | ||||||
1392 | return false; | ||||||
1393 | } | ||||||
1394 | return true; | ||||||
1395 | } | ||||||
1396 | |||||||
1397 | // If OLDDECL and NEWDECL are concept declarations with the same type | ||||||
1398 | // (i.e., and template parameters), but different requirements, | ||||||
1399 | // emit diagnostics and return true. Otherwise, return false. | ||||||
1400 | static inline bool | ||||||
1401 | check_concept_refinement (tree olddecl, tree newdecl) | ||||||
1402 | { | ||||||
1403 | if (!DECL_DECLARED_CONCEPT_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1403, __FUNCTION__))->decl_common.lang_specific)->u.base .concept_p) || !DECL_DECLARED_CONCEPT_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1403, __FUNCTION__))->decl_common.lang_specific)->u.base .concept_p)) | ||||||
1404 | return false; | ||||||
1405 | |||||||
1406 | tree d1 = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1406, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1407 | tree d2 = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1407, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1408 | if (TREE_CODE (d1)((enum tree_code) (d1)->base.code) != TREE_CODE (d2)((enum tree_code) (d2)->base.code)) | ||||||
1409 | return false; | ||||||
1410 | |||||||
1411 | tree t1 = TREE_TYPE (d1)((contains_struct_check ((d1), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1411, __FUNCTION__))->typed.type); | ||||||
1412 | tree t2 = TREE_TYPE (d2)((contains_struct_check ((d2), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1412, __FUNCTION__))->typed.type); | ||||||
1413 | if (TREE_CODE (d1)((enum tree_code) (d1)->base.code) == FUNCTION_DECL) | ||||||
1414 | { | ||||||
1415 | if (compparms (TYPE_ARG_TYPES (t1)((tree_check2 ((t1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1415, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), TYPE_ARG_TYPES (t2)((tree_check2 ((t2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1415, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)) | ||||||
1416 | && comp_template_parms (DECL_TEMPLATE_PARMS (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1416, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments, | ||||||
1417 | DECL_TEMPLATE_PARMS (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1417, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments) | ||||||
1418 | && !equivalently_constrained (olddecl, newdecl)) | ||||||
1419 | { | ||||||
1420 | error ("cannot specialize concept %q#D", olddecl); | ||||||
1421 | return true; | ||||||
1422 | } | ||||||
1423 | } | ||||||
1424 | return false; | ||||||
1425 | } | ||||||
1426 | |||||||
1427 | /* DECL is a redeclaration of a function or function template. If | ||||||
1428 | it does have default arguments issue a diagnostic. Note: this | ||||||
1429 | function is used to enforce the requirements in C++11 8.3.6 about | ||||||
1430 | no default arguments in redeclarations. */ | ||||||
1431 | |||||||
1432 | static void | ||||||
1433 | check_redeclaration_no_default_args (tree decl) | ||||||
1434 | { | ||||||
1435 | gcc_assert (DECL_DECLARES_FUNCTION_P (decl))((void)(!((((enum tree_code) (decl)->base.code) == FUNCTION_DECL || (((enum tree_code) (decl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1435, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((decl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1435, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL))) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1435, __FUNCTION__), 0 : 0)); | ||||||
1436 | |||||||
1437 | for (tree t = FUNCTION_FIRST_USER_PARMTYPE (decl)skip_artificial_parms_for ((decl), ((tree_check2 ((((contains_struct_check ((decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1437, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1437, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); | ||||||
1438 | t && t != void_list_nodeglobal_trees[TI_VOID_LIST_NODE]; t = TREE_CHAIN (t)((contains_struct_check ((t), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1438, __FUNCTION__))->common.chain)) | ||||||
1439 | if (TREE_PURPOSE (t)((tree_check ((t), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1439, __FUNCTION__, (TREE_LIST)))->list.purpose)) | ||||||
1440 | { | ||||||
1441 | permerror (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1441, __FUNCTION__))->decl_minimal.locus), | ||||||
1442 | "redeclaration of %q#D may not have default " | ||||||
1443 | "arguments", decl); | ||||||
1444 | return; | ||||||
1445 | } | ||||||
1446 | } | ||||||
1447 | |||||||
1448 | /* NEWDECL is a redeclaration of a function or function template OLDDECL, | ||||||
1449 | in any case represented as FUNCTION_DECLs (the DECL_TEMPLATE_RESULTs of | ||||||
1450 | the TEMPLATE_DECLs in case of function templates). This function is used | ||||||
1451 | to enforce the final part of C++17 11.3.6/4, about a single declaration: | ||||||
1452 | "If a friend declaration specifies a default argument expression, that | ||||||
1453 | declaration shall be a definition and shall be the only declaration of | ||||||
1454 | the function or function template in the translation unit." */ | ||||||
1455 | |||||||
1456 | static void | ||||||
1457 | check_no_redeclaration_friend_default_args (tree olddecl, tree newdecl) | ||||||
1458 | { | ||||||
1459 | if (!DECL_UNIQUE_FRIEND_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1459, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1459, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) && !DECL_UNIQUE_FRIEND_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1459, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1459, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls)) | ||||||
1460 | return; | ||||||
1461 | |||||||
1462 | for (tree t1 = FUNCTION_FIRST_USER_PARMTYPE (olddecl)skip_artificial_parms_for ((olddecl), ((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1462, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1462, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)), | ||||||
1463 | t2 = FUNCTION_FIRST_USER_PARMTYPE (newdecl)skip_artificial_parms_for ((newdecl), ((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1463, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1463, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); | ||||||
1464 | t1 && t1 != void_list_nodeglobal_trees[TI_VOID_LIST_NODE]; | ||||||
1465 | t1 = TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1465, __FUNCTION__))->common.chain), t2 = TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1465, __FUNCTION__))->common.chain)) | ||||||
1466 | if ((DECL_UNIQUE_FRIEND_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1466, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1466, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) && TREE_PURPOSE (t1)((tree_check ((t1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1466, __FUNCTION__, (TREE_LIST)))->list.purpose)) | ||||||
1467 | || (DECL_UNIQUE_FRIEND_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1467, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1467, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) && TREE_PURPOSE (t2)((tree_check ((t2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1467, __FUNCTION__, (TREE_LIST)))->list.purpose))) | ||||||
1468 | { | ||||||
1469 | auto_diagnostic_group d; | ||||||
1470 | if (permerror (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1470, __FUNCTION__))->decl_minimal.locus), | ||||||
1471 | "friend declaration of %q#D specifies default " | ||||||
1472 | "arguments and isn%'t the only declaration", newdecl)) | ||||||
1473 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1473, __FUNCTION__))->decl_minimal.locus), | ||||||
1474 | "previous declaration of %q#D", olddecl); | ||||||
1475 | return; | ||||||
1476 | } | ||||||
1477 | } | ||||||
1478 | |||||||
1479 | /* Merge tree bits that correspond to attributes noreturn, nothrow, | ||||||
1480 | const, malloc, and pure from NEWDECL with those of OLDDECL. */ | ||||||
1481 | |||||||
1482 | static void | ||||||
1483 | merge_attribute_bits (tree newdecl, tree olddecl) | ||||||
1484 | { | ||||||
1485 | TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag) |= TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag); | ||||||
1486 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) |= TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag); | ||||||
1487 | TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag) |= TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag); | ||||||
1488 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) |= TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag); | ||||||
1489 | TREE_READONLY (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1489, __FUNCTION__))->base.readonly_flag) |= TREE_READONLY (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1489, __FUNCTION__))->base.readonly_flag); | ||||||
1490 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1490, __FUNCTION__))->base.readonly_flag) |= TREE_READONLY (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1490, __FUNCTION__))->base.readonly_flag); | ||||||
1491 | DECL_IS_MALLOC (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1491, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ) |= DECL_IS_MALLOC (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1491, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ); | ||||||
1492 | DECL_IS_MALLOC (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1492, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ) |= DECL_IS_MALLOC (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1492, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ); | ||||||
1493 | DECL_PURE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1493, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ) |= DECL_PURE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1493, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ); | ||||||
1494 | DECL_PURE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1494, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ) |= DECL_PURE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1494, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ); | ||||||
1495 | DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1495, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) |= DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1495, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); | ||||||
1496 | DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1496, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) |= DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1496, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); | ||||||
1497 | } | ||||||
1498 | |||||||
1499 | #define GNU_INLINE_P(fn)(((tree_check ((fn), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1499, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((fn), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1499, __FUNCTION__))->decl_common.attributes))) (DECL_DECLARED_INLINE_P (fn)((tree_check ((fn), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1499, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) \ | ||||||
1500 | && lookup_attribute ("gnu_inline", \ | ||||||
1501 | DECL_ATTRIBUTES (fn)((contains_struct_check ((fn), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1501, __FUNCTION__))->decl_common.attributes))) | ||||||
1502 | |||||||
1503 | /* A subroutine of duplicate_decls. Emits a diagnostic when newdecl | ||||||
1504 | ambiguates olddecl. Returns true if an error occurs. */ | ||||||
1505 | |||||||
1506 | static bool | ||||||
1507 | duplicate_function_template_decls (tree newdecl, tree olddecl) | ||||||
1508 | { | ||||||
1509 | |||||||
1510 | tree newres = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1510, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1511 | tree oldres = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1511, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1512 | /* Function template declarations can be differentiated by parameter | ||||||
1513 | and return type. */ | ||||||
1514 | if (compparms (TYPE_ARG_TYPES (TREE_TYPE (oldres))((tree_check2 ((((contains_struct_check ((oldres), (TS_TYPED) , "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1514, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1514, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), | ||||||
1515 | TYPE_ARG_TYPES (TREE_TYPE (newres))((tree_check2 ((((contains_struct_check ((newres), (TS_TYPED) , "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1515, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1515, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)) | ||||||
1516 | && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),comptypes ((((contains_struct_check ((((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1516, __FUNCTION__))->typed.type)), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1516, __FUNCTION__))->typed.type)), (((contains_struct_check ((((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1517, __FUNCTION__))->typed.type)), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1517, __FUNCTION__))->typed.type)), 0) | ||||||
1517 | TREE_TYPE (TREE_TYPE (olddecl)))comptypes ((((contains_struct_check ((((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1516, __FUNCTION__))->typed.type)), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1516, __FUNCTION__))->typed.type)), (((contains_struct_check ((((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1517, __FUNCTION__))->typed.type)), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1517, __FUNCTION__))->typed.type)), 0)) | ||||||
1518 | { | ||||||
1519 | /* ... and also by their template-heads and requires-clauses. */ | ||||||
1520 | if (template_heads_equivalent_p (newdecl, olddecl) | ||||||
1521 | && function_requirements_equivalent_p (newres, oldres)) | ||||||
1522 | { | ||||||
1523 | error ("ambiguating new declaration %q+#D", newdecl); | ||||||
1524 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1524, __FUNCTION__))->decl_minimal.locus), | ||||||
1525 | "old declaration %q#D", olddecl); | ||||||
1526 | return true; | ||||||
1527 | } | ||||||
1528 | |||||||
1529 | /* FIXME: The types are the same but the are differences | ||||||
1530 | in either the template heads or function requirements. | ||||||
1531 | We should be able to diagnose a set of common errors | ||||||
1532 | stemming from these declarations. For example: | ||||||
1533 | |||||||
1534 | template<typename T> requires C void f(...); | ||||||
1535 | template<typename T> void f(...) requires C; | ||||||
1536 | |||||||
1537 | These are functionally equivalent but not equivalent. */ | ||||||
1538 | } | ||||||
1539 | |||||||
1540 | return false; | ||||||
1541 | } | ||||||
1542 | |||||||
1543 | /* OLD_PARMS is the innermost set of template parameters for some template | ||||||
1544 | declaration, and NEW_PARMS is the corresponding set of template parameters | ||||||
1545 | for a redeclaration of that template. Merge the default arguments within | ||||||
1546 | these two sets of parameters. CLASS_P is true iff the template in | ||||||
1547 | question is a class template. */ | ||||||
1548 | |||||||
1549 | bool | ||||||
1550 | merge_default_template_args (tree new_parms, tree old_parms, bool class_p) | ||||||
1551 | { | ||||||
1552 | gcc_checking_assert (TREE_VEC_LENGTH (new_parms)((void)(!(((tree_check ((new_parms), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1552, __FUNCTION__, (TREE_VEC)))->base.u.length) == ((tree_check ((old_parms), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1553, __FUNCTION__, (TREE_VEC)))->base.u.length)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1553, __FUNCTION__), 0 : 0)) | ||||||
1553 | == TREE_VEC_LENGTH (old_parms))((void)(!(((tree_check ((new_parms), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1552, __FUNCTION__, (TREE_VEC)))->base.u.length) == ((tree_check ((old_parms), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1553, __FUNCTION__, (TREE_VEC)))->base.u.length)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1553, __FUNCTION__), 0 : 0)); | ||||||
1554 | for (int i = 0; i < TREE_VEC_LENGTH (new_parms)((tree_check ((new_parms), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1554, __FUNCTION__, (TREE_VEC)))->base.u.length); i++) | ||||||
1555 | { | ||||||
1556 | tree new_parm = TREE_VALUE (TREE_VEC_ELT (new_parms, i))((tree_check (((*((const_cast<tree *> (tree_vec_elt_check ((new_parms), (i), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1556, __FUNCTION__)))))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1556, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
1557 | tree old_parm = TREE_VALUE (TREE_VEC_ELT (old_parms, i))((tree_check (((*((const_cast<tree *> (tree_vec_elt_check ((old_parms), (i), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1557, __FUNCTION__)))))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1557, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
1558 | tree& new_default = TREE_PURPOSE (TREE_VEC_ELT (new_parms, i))((tree_check (((*((const_cast<tree *> (tree_vec_elt_check ((new_parms), (i), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1558, __FUNCTION__)))))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1558, __FUNCTION__, (TREE_LIST)))->list.purpose); | ||||||
1559 | tree& old_default = TREE_PURPOSE (TREE_VEC_ELT (old_parms, i))((tree_check (((*((const_cast<tree *> (tree_vec_elt_check ((old_parms), (i), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1559, __FUNCTION__)))))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1559, __FUNCTION__, (TREE_LIST)))->list.purpose); | ||||||
1560 | if (error_operand_p (new_parm) || error_operand_p (old_parm)) | ||||||
1561 | return false; | ||||||
1562 | if (new_default != NULL_TREE(tree) __null && old_default != NULL_TREE(tree) __null) | ||||||
1563 | { | ||||||
1564 | auto_diagnostic_group d; | ||||||
1565 | error ("redefinition of default argument for %q+#D", new_parm); | ||||||
1566 | inform (DECL_SOURCE_LOCATION (old_parm)((contains_struct_check ((old_parm), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1566, __FUNCTION__))->decl_minimal.locus), | ||||||
1567 | "original definition appeared here"); | ||||||
1568 | return false; | ||||||
1569 | } | ||||||
1570 | else if (new_default != NULL_TREE(tree) __null) | ||||||
1571 | /* Update the previous template parameters (which are the ones | ||||||
1572 | that will really count) with the new default value. */ | ||||||
1573 | old_default = new_default; | ||||||
1574 | else if (class_p && old_default != NULL_TREE(tree) __null) | ||||||
1575 | /* Update the new parameters, too; they'll be used as the | ||||||
1576 | parameters for any members. */ | ||||||
1577 | new_default = old_default; | ||||||
1578 | } | ||||||
1579 | return true; | ||||||
1580 | } | ||||||
1581 | |||||||
1582 | /* If NEWDECL is a redeclaration of OLDDECL, merge the declarations. | ||||||
1583 | If the redeclaration is invalid, a diagnostic is issued, and the | ||||||
1584 | error_mark_node is returned. Otherwise, OLDDECL is returned. | ||||||
1585 | |||||||
1586 | If NEWDECL is not a redeclaration of OLDDECL, NULL_TREE is | ||||||
1587 | returned. | ||||||
1588 | |||||||
1589 | HIDING is true if the new decl is being hidden. WAS_HIDDEN is true | ||||||
1590 | if the old decl was hidden. | ||||||
1591 | |||||||
1592 | Hidden decls can be anticipated builtins, injected friends, or | ||||||
1593 | (coming soon) injected from a local-extern decl. */ | ||||||
1594 | |||||||
1595 | tree | ||||||
1596 | duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) | ||||||
1597 | { | ||||||
1598 | unsigned olddecl_uid = DECL_UID (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1598, __FUNCTION__))->decl_minimal.uid); | ||||||
1599 | int types_match = 0; | ||||||
1600 | int new_defines_function = 0; | ||||||
1601 | tree new_template_info; | ||||||
1602 | location_t olddecl_loc = DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1602, __FUNCTION__))->decl_minimal.locus); | ||||||
1603 | location_t newdecl_loc = DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1603, __FUNCTION__))->decl_minimal.locus); | ||||||
1604 | |||||||
1605 | if (newdecl == olddecl) | ||||||
1606 | return olddecl; | ||||||
1607 | |||||||
1608 | types_match = decls_match (newdecl, olddecl); | ||||||
1609 | |||||||
1610 | /* If either the type of the new decl or the type of the old decl is an | ||||||
1611 | error_mark_node, then that implies that we have already issued an | ||||||
1612 | error (earlier) for some bogus type specification, and in that case, | ||||||
1613 | it is rather pointless to harass the user with yet more error message | ||||||
1614 | about the same declaration, so just pretend the types match here. */ | ||||||
1615 | if (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1615, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK] | ||||||
1616 | || TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1616, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK]) | ||||||
1617 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1618 | |||||||
1619 | /* Check for redeclaration and other discrepancies. */ | ||||||
1620 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL | ||||||
1621 | && DECL_IS_UNDECLARED_BUILTIN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1621, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1))) | ||||||
1622 | { | ||||||
1623 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != FUNCTION_DECL) | ||||||
1624 | { | ||||||
1625 | /* Avoid warnings redeclaring built-ins which have not been | ||||||
1626 | explicitly declared. */ | ||||||
1627 | if (was_hidden) | ||||||
1628 | { | ||||||
1629 | if (TREE_PUBLIC (newdecl)((newdecl)->base.public_flag) | ||||||
1630 | && CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1630, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1630, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1630, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) == global_namespacecp_global_trees[CPTI_GLOBAL]) | ||||||
1631 | warning_at (newdecl_loc, | ||||||
1632 | OPT_Wbuiltin_declaration_mismatch, | ||||||
1633 | "built-in function %qD declared as non-function", | ||||||
1634 | newdecl); | ||||||
1635 | return NULL_TREE(tree) __null; | ||||||
1636 | } | ||||||
1637 | |||||||
1638 | /* If you declare a built-in or predefined function name as static, | ||||||
1639 | the old definition is overridden, but optionally warn this was a | ||||||
1640 | bad choice of name. */ | ||||||
1641 | if (! TREE_PUBLIC (newdecl)((newdecl)->base.public_flag)) | ||||||
1642 | { | ||||||
1643 | warning_at (newdecl_loc, | ||||||
1644 | OPT_Wshadow, | ||||||
1645 | fndecl_built_in_p (olddecl) | ||||||
1646 | ? G_("shadowing built-in function %q#D")"shadowing built-in function %q#D" | ||||||
1647 | : G_("shadowing library function %q#D")"shadowing library function %q#D", olddecl); | ||||||
1648 | /* Discard the old built-in function. */ | ||||||
1649 | return NULL_TREE(tree) __null; | ||||||
1650 | } | ||||||
1651 | /* If the built-in is not ansi, then programs can override | ||||||
1652 | it even globally without an error. */ | ||||||
1653 | else if (! fndecl_built_in_p (olddecl)) | ||||||
1654 | warning_at (newdecl_loc, 0, | ||||||
1655 | "library function %q#D redeclared as non-function %q#D", | ||||||
1656 | olddecl, newdecl); | ||||||
1657 | else | ||||||
1658 | error_at (newdecl_loc, | ||||||
1659 | "declaration of %q#D conflicts with built-in " | ||||||
1660 | "declaration %q#D", newdecl, olddecl); | ||||||
1661 | return NULL_TREE(tree) __null; | ||||||
1662 | } | ||||||
1663 | else if (!types_match) | ||||||
1664 | { | ||||||
1665 | /* Avoid warnings redeclaring built-ins which have not been | ||||||
1666 | explicitly declared. */ | ||||||
1667 | if (was_hidden) | ||||||
1668 | { | ||||||
1669 | tree t1, t2; | ||||||
1670 | |||||||
1671 | /* A new declaration doesn't match a built-in one unless it | ||||||
1672 | is also extern "C". */ | ||||||
1673 | gcc_assert (DECL_IS_UNDECLARED_BUILTIN (olddecl))((void)(!((((contains_struct_check ((olddecl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1673, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1))) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1673, __FUNCTION__), 0 : 0)); | ||||||
1674 | gcc_assert (DECL_EXTERN_C_P (olddecl))((void)(!(((((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1674, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1674, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1674, __FUNCTION__), 0 : 0)); | ||||||
1675 | if (!DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1675, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1675, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) | ||||||
1676 | return NULL_TREE(tree) __null; | ||||||
1677 | |||||||
1678 | for (t1 = TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1678, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1678, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), | ||||||
1679 | t2 = TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1679, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1679, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); | ||||||
1680 | t1 || t2; | ||||||
1681 | t1 = TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1681, __FUNCTION__))->common.chain), t2 = TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1681, __FUNCTION__))->common.chain)) | ||||||
1682 | { | ||||||
1683 | if (!t1 || !t2) | ||||||
1684 | break; | ||||||
1685 | /* FILE, tm types are not known at the time | ||||||
1686 | we create the builtins. */ | ||||||
1687 | for (unsigned i = 0; | ||||||
1688 | i < sizeof (builtin_structptr_types) | ||||||
1689 | / sizeof (builtin_structptr_type); | ||||||
1690 | ++i) | ||||||
1691 | if (TREE_VALUE (t2)((tree_check ((t2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1691, __FUNCTION__, (TREE_LIST)))->list.value) == builtin_structptr_types[i].node) | ||||||
1692 | { | ||||||
1693 | tree t = TREE_VALUE (t1)((tree_check ((t1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1693, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
1694 | |||||||
1695 | if (TYPE_PTR_P (t)(((enum tree_code) (t)->base.code) == POINTER_TYPE) | ||||||
1696 | && TYPE_IDENTIFIER (TREE_TYPE (t))(((tree_class_check ((((contains_struct_check ((t), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->type_common.name) && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) (((tree_class_check ((((contains_struct_check ((t), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->type_common.name))->base.code)) ] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((contains_struct_check ((t), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((contains_struct_check ((t), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1696, __FUNCTION__))->type_common.name)) | ||||||
1697 | == get_identifier (builtin_structptr_types[i].str)(__builtin_constant_p (builtin_structptr_types[i].str) ? get_identifier_with_length ((builtin_structptr_types[i].str), strlen (builtin_structptr_types [i].str)) : get_identifier (builtin_structptr_types[i].str)) | ||||||
1698 | && compparms (TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1698, __FUNCTION__))->common.chain), TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1698, __FUNCTION__))->common.chain))) | ||||||
1699 | { | ||||||
1700 | tree oldargs = TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1700, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1700, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); | ||||||
1701 | |||||||
1702 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1702, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1702, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values) | ||||||
1703 | = TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1703, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1703, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); | ||||||
1704 | types_match = decls_match (newdecl, olddecl); | ||||||
1705 | if (types_match) | ||||||
1706 | return duplicate_decls (newdecl, olddecl, | ||||||
1707 | hiding, was_hidden); | ||||||
1708 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1708, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1708, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values) = oldargs; | ||||||
1709 | } | ||||||
1710 | goto next_arg; | ||||||
1711 | } | ||||||
1712 | |||||||
1713 | if (! same_type_p (TREE_VALUE (t1), TREE_VALUE (t2))comptypes ((((tree_check ((t1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1713, __FUNCTION__, (TREE_LIST)))->list.value)), (((tree_check ((t2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1713, __FUNCTION__, (TREE_LIST)))->list.value)), 0)) | ||||||
1714 | break; | ||||||
1715 | next_arg:; | ||||||
1716 | } | ||||||
1717 | |||||||
1718 | warning_at (newdecl_loc, | ||||||
1719 | OPT_Wbuiltin_declaration_mismatch, | ||||||
1720 | "declaration of %q#D conflicts with built-in " | ||||||
1721 | "declaration %q#D", newdecl, olddecl); | ||||||
1722 | } | ||||||
1723 | else if ((DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1723, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1723, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) | ||||||
1724 | && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1724, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1724, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) | ||||||
1725 | || compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1725, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1725, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), | ||||||
1726 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1726, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1726, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values))) | ||||||
1727 | { | ||||||
1728 | /* Don't really override olddecl for __* prefixed builtins | ||||||
1729 | except for __[^b]*_chk, the compiler might be using those | ||||||
1730 | explicitly. */ | ||||||
1731 | if (fndecl_built_in_p (olddecl)) | ||||||
1732 | { | ||||||
1733 | tree id = DECL_NAME (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1733, __FUNCTION__))->decl_minimal.name); | ||||||
1734 | const char *name = IDENTIFIER_POINTER (id)((const char *) (tree_check ((id), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1734, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.str ); | ||||||
1735 | size_t len; | ||||||
1736 | |||||||
1737 | if (name[0] == '_' | ||||||
1738 | && name[1] == '_' | ||||||
1739 | && (startswith (name + 2, "builtin_") | ||||||
1740 | || (len = strlen (name)) <= strlen ("___chk") | ||||||
1741 | || memcmp (name + len - strlen ("_chk"), | ||||||
1742 | "_chk", strlen ("_chk") + 1) != 0)) | ||||||
1743 | { | ||||||
1744 | if (DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1744, __FUNCTION__))->decl_common.initial)) | ||||||
1745 | { | ||||||
1746 | error_at (newdecl_loc, | ||||||
1747 | "definition of %q#D ambiguates built-in " | ||||||
1748 | "declaration %q#D", newdecl, olddecl); | ||||||
1749 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1750 | } | ||||||
1751 | auto_diagnostic_group d; | ||||||
1752 | if (permerror (newdecl_loc, | ||||||
1753 | "new declaration %q#D ambiguates built-in" | ||||||
1754 | " declaration %q#D", newdecl, olddecl) | ||||||
1755 | && flag_permissiveglobal_options.x_flag_permissive) | ||||||
1756 | inform (newdecl_loc, | ||||||
1757 | "ignoring the %q#D declaration", newdecl); | ||||||
1758 | return flag_permissiveglobal_options.x_flag_permissive ? olddecl : error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1759 | } | ||||||
1760 | } | ||||||
1761 | |||||||
1762 | /* A near match; override the builtin. */ | ||||||
1763 | |||||||
1764 | if (TREE_PUBLIC (newdecl)((newdecl)->base.public_flag)) | ||||||
1765 | warning_at (newdecl_loc, | ||||||
1766 | OPT_Wbuiltin_declaration_mismatch, | ||||||
1767 | "new declaration %q#D ambiguates built-in " | ||||||
1768 | "declaration %q#D", newdecl, olddecl); | ||||||
1769 | else | ||||||
1770 | warning (OPT_Wshadow, | ||||||
1771 | fndecl_built_in_p (olddecl) | ||||||
1772 | ? G_("shadowing built-in function %q#D")"shadowing built-in function %q#D" | ||||||
1773 | : G_("shadowing library function %q#D")"shadowing library function %q#D", olddecl); | ||||||
1774 | } | ||||||
1775 | else | ||||||
1776 | /* Discard the old built-in function. */ | ||||||
1777 | return NULL_TREE(tree) __null; | ||||||
1778 | |||||||
1779 | /* Replace the old RTL to avoid problems with inlining. */ | ||||||
1780 | COPY_DECL_RTL (newdecl, olddecl)((contains_struct_check ((olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1780, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((newdecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1780, __FUNCTION__))->decl_with_rtl.rtl); | ||||||
1781 | } | ||||||
1782 | else | ||||||
1783 | { | ||||||
1784 | /* Even if the types match, prefer the new declarations type | ||||||
1785 | for built-ins which have not been explicitly declared, | ||||||
1786 | for exception lists, etc... */ | ||||||
1787 | tree type = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1787, __FUNCTION__))->typed.type); | ||||||
1788 | tree attribs = (*targetm.merge_type_attributes) | ||||||
1789 | (TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1789, __FUNCTION__))->typed.type), type); | ||||||
1790 | |||||||
1791 | type = cp_build_type_attribute_variant (type, attribs); | ||||||
1792 | TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1792, __FUNCTION__))->typed.type) = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1792, __FUNCTION__))->typed.type) = type; | ||||||
1793 | } | ||||||
1794 | |||||||
1795 | /* If a function is explicitly declared "throw ()", propagate that to | ||||||
1796 | the corresponding builtin. */ | ||||||
1797 | if (DECL_BUILT_IN_CLASS (olddecl)((built_in_class) (tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1797, __FUNCTION__, (FUNCTION_DECL)))->function_decl.built_in_class ) == BUILT_IN_NORMAL | ||||||
1798 | && was_hidden | ||||||
1799 | && TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag) | ||||||
1800 | && !TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag)) | ||||||
1801 | { | ||||||
1802 | enum built_in_function fncode = DECL_FUNCTION_CODE (olddecl); | ||||||
1803 | tree tmpdecl = builtin_decl_explicit (fncode); | ||||||
1804 | if (tmpdecl && tmpdecl != olddecl && types_match) | ||||||
1805 | TREE_NOTHROW (tmpdecl)((tmpdecl)->base.nothrow_flag) = 1; | ||||||
1806 | } | ||||||
1807 | |||||||
1808 | /* Whether or not the builtin can throw exceptions has no | ||||||
1809 | bearing on this declarator. */ | ||||||
1810 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) = 0; | ||||||
1811 | |||||||
1812 | if (DECL_THIS_STATIC (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1812, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1812, __FUNCTION__))->decl_common.lang_flag_6) && !DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1812, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1812, __FUNCTION__))->decl_common.lang_flag_6)) | ||||||
1813 | { | ||||||
1814 | /* If a builtin function is redeclared as `static', merge | ||||||
1815 | the declarations, but make the original one static. */ | ||||||
1816 | DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1816, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1816, __FUNCTION__))->decl_common.lang_flag_6) = 1; | ||||||
1817 | TREE_PUBLIC (olddecl)((olddecl)->base.public_flag) = 0; | ||||||
1818 | |||||||
1819 | /* Make the old declaration consistent with the new one so | ||||||
1820 | that all remnants of the builtin-ness of this function | ||||||
1821 | will be banished. */ | ||||||
1822 | SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl))(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1822, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1822, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1822, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); | ||||||
1823 | COPY_DECL_RTL (newdecl, olddecl)((contains_struct_check ((olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1823, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((newdecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1823, __FUNCTION__))->decl_with_rtl.rtl); | ||||||
1824 | } | ||||||
1825 | } | ||||||
1826 | else if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) != TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code)) | ||||||
1827 | { | ||||||
1828 | /* C++ Standard, 3.3, clause 4: | ||||||
1829 | "[Note: a namespace name or a class template name must be unique | ||||||
1830 | in its declarative region (7.3.2, clause 14). ]" */ | ||||||
1831 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == NAMESPACE_DECL | ||||||
1832 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) | ||||||
1833 | /* Namespace conflicts with not namespace. */; | ||||||
1834 | else if (DECL_TYPE_TEMPLATE_P (olddecl)(((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1834, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1834, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == TYPE_DECL) | ||||||
1835 | || DECL_TYPE_TEMPLATE_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1835, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1835, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == TYPE_DECL)) | ||||||
1836 | /* Class template conflicts. */; | ||||||
1837 | else if ((TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL | ||||||
1838 | && DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1838, __FUNCTION__, (TEMPLATE_DECL))))))))->result | ||||||
1839 | && TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1839, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == VAR_DECL) | ||||||
1840 | || (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL | ||||||
1841 | && DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1841, __FUNCTION__, (TEMPLATE_DECL))))))))->result | ||||||
1842 | && TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1842, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == VAR_DECL)) | ||||||
1843 | /* Variable template conflicts. */; | ||||||
1844 | else if (concept_definition_p (olddecl) | ||||||
1845 | || concept_definition_p (newdecl)) | ||||||
1846 | /* Concept conflicts. */; | ||||||
1847 | else if ((TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
1848 | && DECL_FUNCTION_TEMPLATE_P (olddecl)(((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1848, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1848, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) | ||||||
1849 | || (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL | ||||||
1850 | && DECL_FUNCTION_TEMPLATE_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1850, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1850, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL))) | ||||||
1851 | { | ||||||
1852 | /* One is a function and the other is a template | ||||||
1853 | function. */ | ||||||
1854 | if (!UDLIT_OPER_P (DECL_NAME (newdecl))(!strncmp (((const char *) (tree_check ((((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1854, __FUNCTION__))->decl_minimal.name)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1854, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.str ), "operator\"\"", sizeof ("operator\"\"") - 1))) | ||||||
1855 | return NULL_TREE(tree) __null; | ||||||
1856 | |||||||
1857 | /* There can only be one! */ | ||||||
1858 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL | ||||||
1859 | && check_raw_literal_operator (olddecl)) | ||||||
1860 | error_at (newdecl_loc, | ||||||
1861 | "literal operator %q#D conflicts with" | ||||||
1862 | " raw literal operator", newdecl); | ||||||
1863 | else if (check_raw_literal_operator (newdecl)) | ||||||
1864 | error_at (newdecl_loc, | ||||||
1865 | "raw literal operator %q#D conflicts with" | ||||||
1866 | " literal operator template", newdecl); | ||||||
1867 | else | ||||||
1868 | return NULL_TREE(tree) __null; | ||||||
1869 | |||||||
1870 | inform (olddecl_loc, "previous declaration %q#D", olddecl); | ||||||
1871 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1872 | } | ||||||
1873 | else if ((VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) && DECL_DECOMPOSITION_P (olddecl)((((enum tree_code) (olddecl)->base.code) == VAR_DECL) && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1873, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1873, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false)) | ||||||
1874 | || (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) && DECL_DECOMPOSITION_P (newdecl)((((enum tree_code) (newdecl)->base.code) == VAR_DECL) && ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1874, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1874, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false))) | ||||||
1875 | /* A structured binding must be unique in its declarative region. */; | ||||||
1876 | else if (DECL_IMPLICIT_TYPEDEF_P (olddecl)(((enum tree_code) (olddecl)->base.code) == TYPE_DECL && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1876, __FUNCTION__))->decl_common.lang_flag_2)) | ||||||
1877 | || DECL_IMPLICIT_TYPEDEF_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TYPE_DECL && ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1877, __FUNCTION__))->decl_common.lang_flag_2))) | ||||||
1878 | /* One is an implicit typedef, that's ok. */ | ||||||
1879 | return NULL_TREE(tree) __null; | ||||||
1880 | |||||||
1881 | error ("%q#D redeclared as different kind of entity", newdecl); | ||||||
1882 | inform (olddecl_loc, "previous declaration %q#D", olddecl); | ||||||
1883 | |||||||
1884 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1885 | } | ||||||
1886 | else if (!types_match) | ||||||
1887 | { | ||||||
1888 | if (CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1888, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1888, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1888, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) != CP_DECL_CONTEXT (olddecl)(!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1888, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1888, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1888, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])) | ||||||
1889 | /* These are certainly not duplicate declarations; they're | ||||||
1890 | from different scopes. */ | ||||||
1891 | return NULL_TREE(tree) __null; | ||||||
1892 | |||||||
1893 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) | ||||||
1894 | { | ||||||
1895 | tree oldres = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1895, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1896 | tree newres = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1896, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
1897 | |||||||
1898 | /* The name of a class template may not be declared to refer to | ||||||
1899 | any other template, class, function, object, namespace, value, | ||||||
1900 | or type in the same scope. */ | ||||||
1901 | if (TREE_CODE (oldres)((enum tree_code) (oldres)->base.code) == TYPE_DECL | ||||||
1902 | || TREE_CODE (newres)((enum tree_code) (newres)->base.code) == TYPE_DECL) | ||||||
1903 | { | ||||||
1904 | error_at (newdecl_loc, | ||||||
1905 | "conflicting declaration of template %q#D", newdecl); | ||||||
1906 | inform (olddecl_loc, | ||||||
1907 | "previous declaration %q#D", olddecl); | ||||||
1908 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1909 | } | ||||||
1910 | |||||||
1911 | else if (TREE_CODE (oldres)((enum tree_code) (oldres)->base.code) == FUNCTION_DECL | ||||||
1912 | && TREE_CODE (newres)((enum tree_code) (newres)->base.code) == FUNCTION_DECL) | ||||||
1913 | { | ||||||
1914 | if (duplicate_function_template_decls (newdecl, olddecl)) | ||||||
1915 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1916 | return NULL_TREE(tree) __null; | ||||||
1917 | } | ||||||
1918 | else if (check_concept_refinement (olddecl, newdecl)) | ||||||
1919 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1920 | return NULL_TREE(tree) __null; | ||||||
1921 | } | ||||||
1922 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
1923 | { | ||||||
1924 | if (DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1924, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1924, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1924, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1924, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) | ||||||
1925 | { | ||||||
1926 | error_at (newdecl_loc, | ||||||
1927 | "conflicting declaration of C function %q#D", | ||||||
1928 | newdecl); | ||||||
1929 | inform (olddecl_loc, | ||||||
1930 | "previous declaration %q#D", olddecl); | ||||||
1931 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1932 | } | ||||||
1933 | /* For function versions, params and types match, but they | ||||||
1934 | are not ambiguous. */ | ||||||
1935 | else if ((!DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1935, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) | ||||||
1936 | && !DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1936, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) | ||||||
1937 | // The functions have the same parameter types. | ||||||
1938 | && compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1938, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1938, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), | ||||||
1939 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1939, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1939, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)) | ||||||
1940 | // And the same constraints. | ||||||
1941 | && equivalently_constrained (newdecl, olddecl)) | ||||||
1942 | { | ||||||
1943 | error_at (newdecl_loc, | ||||||
1944 | "ambiguating new declaration of %q#D", newdecl); | ||||||
1945 | inform (olddecl_loc, | ||||||
1946 | "old declaration %q#D", olddecl); | ||||||
1947 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1948 | } | ||||||
1949 | else | ||||||
1950 | return NULL_TREE(tree) __null; | ||||||
1951 | } | ||||||
1952 | else | ||||||
1953 | { | ||||||
1954 | error_at (newdecl_loc, "conflicting declaration %q#D", newdecl); | ||||||
1955 | inform (olddecl_loc, | ||||||
1956 | "previous declaration as %q#D", olddecl); | ||||||
1957 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1958 | } | ||||||
1959 | } | ||||||
1960 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
1961 | && DECL_OMP_DECLARE_REDUCTION_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__)))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> (( ((tree_check (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__)))->base.code) == FUNCTION_DECL || (( (enum tree_code) ((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__)))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1961, __FUNCTION__); <->u.fn; })->omp_declare_reduction_p )) | ||||||
1962 | { | ||||||
1963 | /* OMP UDRs are never duplicates. */ | ||||||
1964 | gcc_assert (DECL_OMP_DECLARE_REDUCTION_P (olddecl))((void)(!((__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__)))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> (( ((tree_check (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__)))->base.code) == FUNCTION_DECL || (( (enum tree_code) ((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__)))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__); <->u.fn; })->omp_declare_reduction_p )) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1964, __FUNCTION__), 0 : 0)); | ||||||
1965 | error_at (newdecl_loc, | ||||||
1966 | "redeclaration of %<pragma omp declare reduction%>"); | ||||||
1967 | inform (olddecl_loc, | ||||||
1968 | "previous %<pragma omp declare reduction%> declaration"); | ||||||
1969 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
1970 | } | ||||||
1971 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
1972 | && ((DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1972, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) | ||||||
1973 | && (!DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1973, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1973, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) | ||||||
1974 | || (DECL_TI_TEMPLATE (newdecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1974, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1974, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1974, __FUNCTION__, (TEMPLATE_INFO))))->tmpl | ||||||
1975 | != DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1975, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1975, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1975, __FUNCTION__, (TEMPLATE_INFO))))->tmpl))) | ||||||
1976 | || (DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1976, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) | ||||||
1977 | && (!DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1977, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1977, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) | ||||||
1978 | || (DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1978, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1978, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1978, __FUNCTION__, (TEMPLATE_INFO))))->tmpl | ||||||
1979 | != DECL_TI_TEMPLATE (newdecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1979, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1979, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1979, __FUNCTION__, (TEMPLATE_INFO))))->tmpl))))) | ||||||
1980 | /* It's OK to have a template specialization and a non-template | ||||||
1981 | with the same type, or to have specializations of two | ||||||
1982 | different templates with the same type. Note that if one is a | ||||||
1983 | specialization, and the other is an instantiation of the same | ||||||
1984 | template, that we do not exit at this point. That situation | ||||||
1985 | can occur if we instantiate a template class, and then | ||||||
1986 | specialize one of its methods. This situation is valid, but | ||||||
1987 | the declarations must be merged in the usual way. */ | ||||||
1988 | return NULL_TREE(tree) __null; | ||||||
1989 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
1990 | && ((DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1990, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) | ||||||
1991 | && !DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1991, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) | ||||||
1992 | || (DECL_TEMPLATE_INSTANTIATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1992, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) | ||||||
1993 | && !DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 1993, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)))) | ||||||
1994 | /* One of the declarations is a template instantiation, and the | ||||||
1995 | other is not a template at all. That's OK. */ | ||||||
1996 | return NULL_TREE(tree) __null; | ||||||
1997 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) | ||||||
1998 | { | ||||||
1999 | /* In [namespace.alias] we have: | ||||||
2000 | |||||||
2001 | In a declarative region, a namespace-alias-definition can be | ||||||
2002 | used to redefine a namespace-alias declared in that declarative | ||||||
2003 | region to refer only to the namespace to which it already | ||||||
2004 | refers. | ||||||
2005 | |||||||
2006 | Therefore, if we encounter a second alias directive for the same | ||||||
2007 | alias, we can just ignore the second directive. */ | ||||||
2008 | if (DECL_NAMESPACE_ALIAS (newdecl)((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2008, __FUNCTION__, (NAMESPACE_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2008, __FUNCTION__))->decl_common.abstract_origin) | ||||||
2009 | && (DECL_NAMESPACE_ALIAS (newdecl)((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2009, __FUNCTION__, (NAMESPACE_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2009, __FUNCTION__))->decl_common.abstract_origin) | ||||||
2010 | == DECL_NAMESPACE_ALIAS (olddecl)((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2010, __FUNCTION__, (NAMESPACE_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2010, __FUNCTION__))->decl_common.abstract_origin))) | ||||||
2011 | return olddecl; | ||||||
2012 | |||||||
2013 | /* Leave it to update_binding to merge or report error. */ | ||||||
2014 | return NULL_TREE(tree) __null; | ||||||
2015 | } | ||||||
2016 | else | ||||||
2017 | { | ||||||
2018 | const char *errmsg = redeclaration_error_message (newdecl, olddecl); | ||||||
2019 | if (errmsg) | ||||||
2020 | { | ||||||
2021 | auto_diagnostic_group d; | ||||||
2022 | error_at (newdecl_loc, errmsg, newdecl); | ||||||
2023 | if (DECL_NAME (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2023, __FUNCTION__))->decl_minimal.name) != NULL_TREE(tree) __null) | ||||||
2024 | inform (olddecl_loc, | ||||||
2025 | (DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2025, __FUNCTION__))->decl_common.initial) && namespace_bindings_p ()) | ||||||
2026 | ? G_("%q#D previously defined here")"%q#D previously defined here" | ||||||
2027 | : G_("%q#D previously declared here")"%q#D previously declared here", olddecl); | ||||||
2028 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
2029 | } | ||||||
2030 | else if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL | ||||||
2031 | && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2031, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null | ||||||
2032 | && !prototype_p (TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2032, __FUNCTION__))->typed.type)) | ||||||
2033 | && prototype_p (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2033, __FUNCTION__))->typed.type))) | ||||||
2034 | { | ||||||
2035 | /* Prototype decl follows defn w/o prototype. */ | ||||||
2036 | auto_diagnostic_group d; | ||||||
2037 | if (warning_at (newdecl_loc, 0, | ||||||
2038 | "prototype specified for %q#D", newdecl)) | ||||||
2039 | inform (olddecl_loc, | ||||||
2040 | "previous non-prototype definition here"); | ||||||
2041 | } | ||||||
2042 | else if (VAR_OR_FUNCTION_DECL_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL || (( enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) | ||||||
2043 | && DECL_LANGUAGE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2043, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2043, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) != DECL_LANGUAGE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2043, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2043, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus))) | ||||||
2044 | { | ||||||
2045 | /* [dcl.link] | ||||||
2046 | If two declarations of the same function or object | ||||||
2047 | specify different linkage-specifications ..., the program | ||||||
2048 | is ill-formed.... Except for functions with C++ linkage, | ||||||
2049 | a function declaration without a linkage specification | ||||||
2050 | shall not precede the first linkage specification for | ||||||
2051 | that function. A function can be declared without a | ||||||
2052 | linkage specification after an explicit linkage | ||||||
2053 | specification has been seen; the linkage explicitly | ||||||
2054 | specified in the earlier declaration is not affected by | ||||||
2055 | such a function declaration. | ||||||
2056 | |||||||
2057 | DR 563 raises the question why the restrictions on | ||||||
2058 | functions should not also apply to objects. Older | ||||||
2059 | versions of G++ silently ignore the linkage-specification | ||||||
2060 | for this example: | ||||||
2061 | |||||||
2062 | namespace N { | ||||||
2063 | extern int i; | ||||||
2064 | extern "C" int i; | ||||||
2065 | } | ||||||
2066 | |||||||
2067 | which is clearly wrong. Therefore, we now treat objects | ||||||
2068 | like functions. */ | ||||||
2069 | if (current_lang_depth () == 0) | ||||||
2070 | { | ||||||
2071 | /* There is no explicit linkage-specification, so we use | ||||||
2072 | the linkage from the previous declaration. */ | ||||||
2073 | retrofit_lang_decl (newdecl); | ||||||
2074 | SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2074, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2074, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2074, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); | ||||||
2075 | } | ||||||
2076 | else | ||||||
2077 | { | ||||||
2078 | auto_diagnostic_group d; | ||||||
2079 | error_at (newdecl_loc, | ||||||
2080 | "conflicting declaration of %q#D with %qL linkage", | ||||||
2081 | newdecl, DECL_LANGUAGE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2081, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2081, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus))); | ||||||
2082 | inform (olddecl_loc, | ||||||
2083 | "previous declaration with %qL linkage", | ||||||
2084 | DECL_LANGUAGE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2084, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2084, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus))); | ||||||
2085 | } | ||||||
2086 | } | ||||||
2087 | |||||||
2088 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2088, __FUNCTION__))->decl_common.lang_specific) && DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2088, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) | ||||||
2089 | ; | ||||||
2090 | else if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) | ||||||
2091 | { | ||||||
2092 | /* Note: free functions, as TEMPLATE_DECLs, are handled below. */ | ||||||
2093 | if (DECL_FUNCTION_MEMBER_P (olddecl)((((enum tree_code) (((contains_struct_check ((olddecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2093, __FUNCTION__))->typed.type))->base.code) == METHOD_TYPE ) || (__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2093, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2093, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2093, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2093, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2093, __FUNCTION__); <->u.fn; })->static_function )) | ||||||
2094 | && (/* grokfndecl passes member function templates too | ||||||
2095 | as FUNCTION_DECLs. */ | ||||||
2096 | DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2096, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2096, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) | ||||||
2097 | /* C++11 8.3.6/6. | ||||||
2098 | Default arguments for a member function of a class | ||||||
2099 | template shall be specified on the initial declaration | ||||||
2100 | of the member function within the class template. */ | ||||||
2101 | || CLASSTYPE_TEMPLATE_INFO (CP_DECL_CONTEXT (olddecl))(((tree_class_check (((tree_check3 (((!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2101, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2101, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2101, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2101, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE )))), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2101, __FUNCTION__))->type_non_common.lang_1)))) | ||||||
2102 | { | ||||||
2103 | check_redeclaration_no_default_args (newdecl); | ||||||
2104 | |||||||
2105 | if (DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2105, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2105, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) | ||||||
2106 | && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (olddecl))(((contains_struct_check (((tree_check ((((struct tree_template_info *)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2106, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2106, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2106, __FUNCTION__, (TEMPLATE_INFO))))->tmpl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2106, __FUNCTION__, (TEMPLATE_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2106, __FUNCTION__))->decl_common.lang_flag_1))) | ||||||
2107 | { | ||||||
2108 | tree new_parms = DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2108, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2108, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) | ||||||
2109 | ? DECL_INNERMOST_TEMPLATE_PARMS (DECL_TI_TEMPLATE (newdecl))((tree_check ((((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((((struct tree_template_info *)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2109, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2109, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2109, __FUNCTION__, (TEMPLATE_INFO))))->tmpl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2109, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2109, __FUNCTION__, (TREE_LIST)))->list.value) | ||||||
2110 | : INNERMOST_TEMPLATE_PARMS (current_template_parms)((tree_check ((scope_chain->template_parms), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2110, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
2111 | tree old_parms | ||||||
2112 | = DECL_INNERMOST_TEMPLATE_PARMS (DECL_TI_TEMPLATE (olddecl))((tree_check ((((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((((struct tree_template_info *)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2112, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2112, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2112, __FUNCTION__, (TEMPLATE_INFO))))->tmpl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2112, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2112, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
2113 | merge_default_template_args (new_parms, old_parms, | ||||||
2114 | /*class_p=*/false); | ||||||
2115 | } | ||||||
2116 | } | ||||||
2117 | else | ||||||
2118 | { | ||||||
2119 | tree t1 = FUNCTION_FIRST_USER_PARMTYPE (olddecl)skip_artificial_parms_for ((olddecl), ((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2119, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2119, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); | ||||||
2120 | tree t2 = FUNCTION_FIRST_USER_PARMTYPE (newdecl)skip_artificial_parms_for ((newdecl), ((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2120, __FUNCTION__))->typed.type)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2120, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); | ||||||
2121 | int i = 1; | ||||||
2122 | |||||||
2123 | for (; t1 && t1 != void_list_nodeglobal_trees[TI_VOID_LIST_NODE]; | ||||||
2124 | t1 = TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2124, __FUNCTION__))->common.chain), t2 = TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2124, __FUNCTION__))->common.chain), i++) | ||||||
2125 | if (TREE_PURPOSE (t1)((tree_check ((t1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2125, __FUNCTION__, (TREE_LIST)))->list.purpose) && TREE_PURPOSE (t2)((tree_check ((t2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2125, __FUNCTION__, (TREE_LIST)))->list.purpose)) | ||||||
2126 | { | ||||||
2127 | if (simple_cst_equal (TREE_PURPOSE (t1)((tree_check ((t1), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2127, __FUNCTION__, (TREE_LIST)))->list.purpose), | ||||||
2128 | TREE_PURPOSE (t2)((tree_check ((t2), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2128, __FUNCTION__, (TREE_LIST)))->list.purpose)) == 1) | ||||||
2129 | { | ||||||
2130 | auto_diagnostic_group d; | ||||||
2131 | if (permerror (newdecl_loc, | ||||||
2132 | "default argument given for parameter " | ||||||
2133 | "%d of %q#D", i, newdecl)) | ||||||
2134 | inform (olddecl_loc, | ||||||
2135 | "previous specification in %q#D here", | ||||||
2136 | olddecl); | ||||||
2137 | } | ||||||
2138 | else | ||||||
2139 | { | ||||||
2140 | auto_diagnostic_group d; | ||||||
2141 | error_at (newdecl_loc, | ||||||
2142 | "default argument given for parameter %d " | ||||||
2143 | "of %q#D", i, newdecl); | ||||||
2144 | inform (olddecl_loc, | ||||||
2145 | "previous specification in %q#D here", | ||||||
2146 | olddecl); | ||||||
2147 | } | ||||||
2148 | } | ||||||
2149 | |||||||
2150 | /* C++17 11.3.6/4: "If a friend declaration specifies a default | ||||||
2151 | argument expression, that declaration... shall be the only | ||||||
2152 | declaration of the function or function template in the | ||||||
2153 | translation unit." */ | ||||||
2154 | check_no_redeclaration_friend_default_args (olddecl, newdecl); | ||||||
2155 | } | ||||||
2156 | } | ||||||
2157 | } | ||||||
2158 | |||||||
2159 | /* Do not merge an implicit typedef with an explicit one. In: | ||||||
2160 | |||||||
2161 | class A; | ||||||
2162 | ... | ||||||
2163 | typedef class A A __attribute__ ((foo)); | ||||||
2164 | |||||||
2165 | the attribute should apply only to the typedef. */ | ||||||
2166 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TYPE_DECL | ||||||
2167 | && (DECL_IMPLICIT_TYPEDEF_P (olddecl)(((enum tree_code) (olddecl)->base.code) == TYPE_DECL && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2167, __FUNCTION__))->decl_common.lang_flag_2)) | ||||||
2168 | || DECL_IMPLICIT_TYPEDEF_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TYPE_DECL && ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2168, __FUNCTION__))->decl_common.lang_flag_2)))) | ||||||
2169 | return NULL_TREE(tree) __null; | ||||||
2170 | |||||||
2171 | if (DECL_TEMPLATE_PARM_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2171, __FUNCTION__))->decl_common.lang_flag_0) && (((enum tree_code) (olddecl)->base.code) == CONST_DECL || ((enum tree_code) (olddecl)->base.code) == PARM_DECL || ( (enum tree_code) (olddecl)->base.code) == TYPE_DECL || ((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL)) != DECL_TEMPLATE_PARM_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2171, __FUNCTION__))->decl_common.lang_flag_0) && (((enum tree_code) (newdecl)->base.code) == CONST_DECL || ((enum tree_code) (newdecl)->base.code) == PARM_DECL || ( (enum tree_code) (newdecl)->base.code) == TYPE_DECL || ((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL))) | ||||||
2172 | return NULL_TREE(tree) __null; | ||||||
2173 | |||||||
2174 | if (!validate_constexpr_redeclaration (olddecl, newdecl)) | ||||||
2175 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
2176 | |||||||
2177 | if (modules_p () | ||||||
2178 | && TREE_CODE (CP_DECL_CONTEXT (olddecl))((enum tree_code) ((!(! (((contains_struct_check ((olddecl), ( TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2178, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2178, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2178, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == NAMESPACE_DECL | ||||||
2179 | && TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) != NAMESPACE_DECL | ||||||
2180 | && !hiding) | ||||||
2181 | { | ||||||
2182 | if (!module_may_redeclare (olddecl)) | ||||||
2183 | { | ||||||
2184 | if (DECL_ARTIFICIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2184, __FUNCTION__))->decl_common.artificial_flag)) | ||||||
2185 | error ("declaration %qD conflicts with builtin", newdecl); | ||||||
2186 | else | ||||||
2187 | { | ||||||
2188 | error ("declaration %qD conflicts with import", newdecl); | ||||||
2189 | inform (olddecl_loc, "import declared %q#D here", olddecl); | ||||||
2190 | } | ||||||
2191 | |||||||
2192 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
2193 | } | ||||||
2194 | |||||||
2195 | tree not_tmpl = STRIP_TEMPLATE (olddecl)(((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2195, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl ); | ||||||
2196 | if (DECL_LANG_SPECIFIC (not_tmpl)((contains_struct_check ((not_tmpl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2196, __FUNCTION__))->decl_common.lang_specific) && DECL_MODULE_ATTACH_P (not_tmpl)(((contains_struct_check (((tree_not_check ((not_tmpl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2196, __FUNCTION__, (TEMPLATE_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2196, __FUNCTION__))->decl_common.lang_specific)->u.base .module_attach_p)) | ||||||
2197 | { | ||||||
2198 | if (DECL_MODULE_EXPORT_P (STRIP_TEMPLATE (newdecl))((tree_not_check2 (((((enum tree_code) (newdecl)->base.code ) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast <union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2198, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2198, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3) | ||||||
2199 | && !DECL_MODULE_EXPORT_P (not_tmpl)((tree_not_check2 ((not_tmpl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2199, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3)) | ||||||
2200 | { | ||||||
2201 | error ("conflicting exporting declaration %qD", newdecl); | ||||||
2202 | inform (olddecl_loc, "previous declaration %q#D here", olddecl); | ||||||
2203 | } | ||||||
2204 | } | ||||||
2205 | else if (DECL_MODULE_EXPORT_P (newdecl)((tree_not_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2205, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3)) | ||||||
2206 | DECL_MODULE_EXPORT_P (not_tmpl)((tree_not_check2 ((not_tmpl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2206, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3) = true; | ||||||
2207 | } | ||||||
2208 | |||||||
2209 | /* We have committed to returning OLDDECL at this point. */ | ||||||
2210 | |||||||
2211 | /* If new decl is `static' and an `extern' was seen previously, | ||||||
2212 | warn about it. */ | ||||||
2213 | warn_extern_redeclared_static (newdecl, olddecl); | ||||||
2214 | |||||||
2215 | /* True to merge attributes between the declarations, false to | ||||||
2216 | set OLDDECL's attributes to those of NEWDECL (for template | ||||||
2217 | explicit specializations that specify their own attributes | ||||||
2218 | independent of those specified for the primary template). */ | ||||||
2219 | const bool merge_attr = (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != FUNCTION_DECL | ||||||
2220 | || !DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2220, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) | ||||||
2221 | || DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2221, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)); | ||||||
2222 | |||||||
2223 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2224 | { | ||||||
2225 | if (merge_attr) | ||||||
2226 | { | ||||||
2227 | if (diagnose_mismatched_attributes (olddecl, newdecl)) | ||||||
2228 | inform (olddecl_loc, DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2228, __FUNCTION__))->decl_common.initial) | ||||||
2229 | ? G_("previous definition of %qD here")"previous definition of %qD here" | ||||||
2230 | : G_("previous declaration of %qD here")"previous declaration of %qD here", olddecl); | ||||||
2231 | |||||||
2232 | /* [dcl.attr.noreturn]: The first declaration of a function shall | ||||||
2233 | specify the noreturn attribute if any declaration of that function | ||||||
2234 | specifies the noreturn attribute. */ | ||||||
2235 | tree a; | ||||||
2236 | if (TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag) | ||||||
2237 | && !TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) | ||||||
2238 | /* This applies to [[noreturn]] only, not its GNU variants. */ | ||||||
2239 | && (a = lookup_attribute ("noreturn", DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2239, __FUNCTION__))->decl_common.attributes))) | ||||||
2240 | && cxx11_attribute_p (a) | ||||||
2241 | && get_attribute_namespace (a) == NULL_TREE(tree) __null) | ||||||
2242 | { | ||||||
2243 | error_at (newdecl_loc, "function %qD declared %<[[noreturn]]%> " | ||||||
2244 | "but its first declaration was not", newdecl); | ||||||
2245 | inform (olddecl_loc, "previous declaration of %qD", olddecl); | ||||||
2246 | } | ||||||
2247 | } | ||||||
2248 | |||||||
2249 | /* Now that functions must hold information normally held | ||||||
2250 | by field decls, there is extra work to do so that | ||||||
2251 | declaration information does not get destroyed during | ||||||
2252 | definition. */ | ||||||
2253 | if (DECL_VINDEX (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2253, __FUNCTION__, (FUNCTION_DECL)))->function_decl.vindex )) | ||||||
2254 | DECL_VINDEX (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2254, __FUNCTION__, (FUNCTION_DECL)))->function_decl.vindex ) = DECL_VINDEX (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2254, __FUNCTION__, (FUNCTION_DECL)))->function_decl.vindex ); | ||||||
2255 | if (DECL_CONTEXT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2255, __FUNCTION__))->decl_minimal.context)) | ||||||
2256 | DECL_CONTEXT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2256, __FUNCTION__))->decl_minimal.context) = DECL_CONTEXT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2256, __FUNCTION__))->decl_minimal.context); | ||||||
2257 | DECL_STATIC_CONSTRUCTOR (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2257, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_ctor_flag ) |= DECL_STATIC_CONSTRUCTOR (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2257, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_ctor_flag ); | ||||||
2258 | DECL_STATIC_DESTRUCTOR (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2258, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_dtor_flag ) |= DECL_STATIC_DESTRUCTOR (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2258, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_dtor_flag ); | ||||||
2259 | DECL_PURE_VIRTUAL_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__); <->u.fn; })->pure_virtual) |= DECL_PURE_VIRTUAL_P (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2259, __FUNCTION__); <->u.fn; })->pure_virtual); | ||||||
2260 | DECL_VIRTUAL_P (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2260, __FUNCTION__))->decl_common.virtual_flag) |= DECL_VIRTUAL_P (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2260, __FUNCTION__))->decl_common.virtual_flag); | ||||||
2261 | DECL_INVALID_OVERRIDER_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2261, __FUNCTION__))->decl_common.lang_flag_4)) |= DECL_INVALID_OVERRIDER_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2261, __FUNCTION__))->decl_common.lang_flag_4)); | ||||||
2262 | DECL_FINAL_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2262, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.final ) |= DECL_FINAL_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2262, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.final ); | ||||||
2263 | DECL_OVERRIDE_P (newdecl)(((tree_not_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2263, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)) |= DECL_OVERRIDE_P (olddecl)(((tree_not_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2263, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)); | ||||||
2264 | DECL_THIS_STATIC (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2264, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2264, __FUNCTION__))->decl_common.lang_flag_6) |= DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2264, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2264, __FUNCTION__))->decl_common.lang_flag_6); | ||||||
2265 | DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2265, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2265, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2265, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2265, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2265, __FUNCTION__); <->u.fn; })->has_dependent_explicit_spec_p ) | ||||||
2266 | |= DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2266, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2266, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2266, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2266, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2266, __FUNCTION__); <->u.fn; })->has_dependent_explicit_spec_p ); | ||||||
2267 | if (DECL_OVERLOADED_OPERATOR_P (olddecl)(((tree_not_check2 (((tree_check ((((contains_struct_check (( olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2267, __FUNCTION__))->decl_minimal.name)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2267, __FUNCTION__, (IDENTIFIER_NODE)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2267, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2))) | ||||||
2268 | DECL_OVERLOADED_OPERATOR_CODE_RAW (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2268, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2268, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2268, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2268, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2268, __FUNCTION__); <->u.fn; })->ovl_op_code) | ||||||
2269 | = DECL_OVERLOADED_OPERATOR_CODE_RAW (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2269, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2269, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2269, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2269, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2269, __FUNCTION__); <->u.fn; })->ovl_op_code); | ||||||
2270 | new_defines_function = DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2270, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null; | ||||||
2271 | |||||||
2272 | duplicate_contracts (newdecl, olddecl); | ||||||
2273 | |||||||
2274 | /* Optionally warn about more than one declaration for the same | ||||||
2275 | name, but don't warn about a function declaration followed by a | ||||||
2276 | definition. */ | ||||||
2277 | if (warn_redundant_declsglobal_options.x_warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2277, __FUNCTION__))->decl_common.artificial_flag) | ||||||
2278 | && !(new_defines_function && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2278, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null) | ||||||
2279 | /* Don't warn about extern decl followed by definition. */ | ||||||
2280 | && !(DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2280, __FUNCTION__))->decl_common.decl_flag_1) && ! DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2280, __FUNCTION__))->decl_common.decl_flag_1)) | ||||||
2281 | /* Don't warn if at least one is/was hidden. */ | ||||||
2282 | && !(hiding || was_hidden) | ||||||
2283 | /* Don't warn about declaration followed by specialization. */ | ||||||
2284 | && (! DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2284, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) | ||||||
2285 | || DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2285, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2))) | ||||||
2286 | { | ||||||
2287 | auto_diagnostic_group d; | ||||||
2288 | if (warning_at (newdecl_loc, | ||||||
2289 | OPT_Wredundant_decls, | ||||||
2290 | "redundant redeclaration of %qD in same scope", | ||||||
2291 | newdecl)) | ||||||
2292 | inform (olddecl_loc, | ||||||
2293 | "previous declaration of %qD", olddecl); | ||||||
2294 | } | ||||||
2295 | |||||||
2296 | /* [dcl.fct.def.delete] A deleted definition of a function shall be the | ||||||
2297 | first declaration of the function or, for an explicit specialization | ||||||
2298 | of a function template, the first declaration of that | ||||||
2299 | specialization. */ | ||||||
2300 | if (!(DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2300, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) | ||||||
2301 | && DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2301, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2))) | ||||||
2302 | { | ||||||
2303 | if (DECL_DELETED_FN (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2303, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2303, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2303, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2303, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2303, __FUNCTION__); <->u.fn; })->min.base.threadprivate_or_deleted_p )) | ||||||
2304 | { | ||||||
2305 | auto_diagnostic_group d; | ||||||
2306 | if (pedwarn (newdecl_loc, 0, "deleted definition of %qD " | ||||||
2307 | "is not first declaration", newdecl)) | ||||||
2308 | inform (olddecl_loc, | ||||||
2309 | "previous declaration of %qD", olddecl); | ||||||
2310 | } | ||||||
2311 | DECL_DELETED_FN (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__); <->u.fn; })->min.base.threadprivate_or_deleted_p ) |= DECL_DELETED_FN (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2311, __FUNCTION__); <->u.fn; })->min.base.threadprivate_or_deleted_p ); | ||||||
2312 | } | ||||||
2313 | } | ||||||
2314 | |||||||
2315 | /* Deal with C++: must preserve virtual function table size. */ | ||||||
2316 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TYPE_DECL) | ||||||
2317 | { | ||||||
2318 | tree newtype = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2318, __FUNCTION__))->typed.type); | ||||||
2319 | tree oldtype = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2319, __FUNCTION__))->typed.type); | ||||||
2320 | |||||||
2321 | if (newtype != error_mark_nodeglobal_trees[TI_ERROR_MARK] && oldtype != error_mark_nodeglobal_trees[TI_ERROR_MARK] | ||||||
2322 | && TYPE_LANG_SPECIFIC (newtype)((tree_class_check ((newtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2322, __FUNCTION__))->type_with_lang_specific.lang_specific ) && TYPE_LANG_SPECIFIC (oldtype)((tree_class_check ((oldtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2322, __FUNCTION__))->type_with_lang_specific.lang_specific )) | ||||||
2323 | CLASSTYPE_FRIEND_CLASSES (newtype)((((tree_class_check ((newtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2323, __FUNCTION__))->type_with_lang_specific.lang_specific ))->friend_classes) | ||||||
2324 | = CLASSTYPE_FRIEND_CLASSES (oldtype)((((tree_class_check ((oldtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2324, __FUNCTION__))->type_with_lang_specific.lang_specific ))->friend_classes); | ||||||
2325 | |||||||
2326 | DECL_ORIGINAL_TYPE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2326, __FUNCTION__, (TYPE_DECL)))->decl_non_common.result ) = DECL_ORIGINAL_TYPE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2326, __FUNCTION__, (TYPE_DECL)))->decl_non_common.result ); | ||||||
2327 | } | ||||||
2328 | |||||||
2329 | /* Copy all the DECL_... slots specified in the new decl except for | ||||||
2330 | any that we copy here from the old type. */ | ||||||
2331 | if (merge_attr) | ||||||
2332 | DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2332, __FUNCTION__))->decl_common.attributes) | ||||||
2333 | = (*targetm.merge_decl_attributes) (olddecl, newdecl); | ||||||
2334 | else | ||||||
2335 | DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2335, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2335, __FUNCTION__))->decl_common.attributes); | ||||||
2336 | |||||||
2337 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) | ||||||
2338 | { | ||||||
2339 | tree old_result = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2339, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
2340 | tree new_result = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2340, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
2341 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2341, __FUNCTION__))->typed.type) = TREE_TYPE (old_result)((contains_struct_check ((old_result), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2341, __FUNCTION__))->typed.type); | ||||||
2342 | |||||||
2343 | /* The new decl should not already have gathered any | ||||||
2344 | specializations. */ | ||||||
2345 | gcc_assert (!DECL_TEMPLATE_SPECIALIZATIONS (newdecl))((void)(!(!((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2345, __FUNCTION__, (TEMPLATE_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2345, __FUNCTION__))->decl_common.size)) ? fancy_abort ( "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2345, __FUNCTION__), 0 : 0)); | ||||||
2346 | |||||||
2347 | /* Make sure the contracts are equivalent. */ | ||||||
2348 | duplicate_contracts (newdecl, olddecl); | ||||||
2349 | |||||||
2350 | /* Remove contracts from old_result so they aren't appended to | ||||||
2351 | old_result by the merge function. */ | ||||||
2352 | remove_contract_attributes (old_result); | ||||||
2353 | |||||||
2354 | DECL_ATTRIBUTES (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2354, __FUNCTION__))->decl_common.attributes) | ||||||
2355 | = (*targetm.merge_decl_attributes) (old_result, new_result); | ||||||
2356 | |||||||
2357 | if (DECL_FUNCTION_TEMPLATE_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2357, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2357, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) | ||||||
2358 | { | ||||||
2359 | if (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2359, __FUNCTION__))->decl_minimal.locus) | ||||||
2360 | != DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2360, __FUNCTION__))->decl_minimal.locus)) | ||||||
2361 | { | ||||||
2362 | /* Per C++11 8.3.6/4, default arguments cannot be added in | ||||||
2363 | later declarations of a function template. */ | ||||||
2364 | check_redeclaration_no_default_args (newdecl); | ||||||
2365 | /* C++17 11.3.6/4: "If a friend declaration specifies a default | ||||||
2366 | argument expression, that declaration... shall be the only | ||||||
2367 | declaration of the function or function template in the | ||||||
2368 | translation unit." */ | ||||||
2369 | check_no_redeclaration_friend_default_args | ||||||
2370 | (old_result, new_result); | ||||||
2371 | |||||||
2372 | tree new_parms = DECL_INNERMOST_TEMPLATE_PARMS (newdecl)((tree_check ((((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2372, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2372, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
2373 | tree old_parms = DECL_INNERMOST_TEMPLATE_PARMS (olddecl)((tree_check ((((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2373, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2373, __FUNCTION__, (TREE_LIST)))->list.value); | ||||||
2374 | merge_default_template_args (new_parms, old_parms, | ||||||
2375 | /*class_p=*/false); | ||||||
2376 | } | ||||||
2377 | if (!DECL_UNIQUE_FRIEND_P (new_result)(((contains_struct_check (((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2377, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2377, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls)) | ||||||
2378 | DECL_UNIQUE_FRIEND_P (old_result)(((contains_struct_check (((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2378, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2378, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) = false; | ||||||
2379 | |||||||
2380 | check_default_args (newdecl); | ||||||
2381 | |||||||
2382 | if (GNU_INLINE_P (old_result)(((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2382, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2382, __FUNCTION__))->decl_common.attributes))) != GNU_INLINE_P (new_result)(((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2382, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2382, __FUNCTION__))->decl_common.attributes))) | ||||||
2383 | && DECL_INITIAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2383, __FUNCTION__))->decl_common.initial)) | ||||||
2384 | { | ||||||
2385 | if (DECL_INITIAL (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2385, __FUNCTION__))->decl_common.initial)) | ||||||
2386 | DECL_UNINLINABLE (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2386, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = 1; | ||||||
2387 | else | ||||||
2388 | DECL_UNINLINABLE (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2388, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = DECL_UNINLINABLE (new_result)((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2388, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); | ||||||
2389 | DECL_EXTERNAL (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2389, __FUNCTION__))->decl_common.decl_flag_1) = DECL_EXTERNAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2389, __FUNCTION__))->decl_common.decl_flag_1); | ||||||
2390 | DECL_NOT_REALLY_EXTERN (old_result)(((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2390, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern) | ||||||
2391 | = DECL_NOT_REALLY_EXTERN (new_result)(((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2391, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern); | ||||||
2392 | DECL_INTERFACE_KNOWN (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2392, __FUNCTION__))->decl_common.lang_flag_5) | ||||||
2393 | = DECL_INTERFACE_KNOWN (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2393, __FUNCTION__))->decl_common.lang_flag_5); | ||||||
2394 | DECL_DECLARED_INLINE_P (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2394, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) | ||||||
2395 | = DECL_DECLARED_INLINE_P (new_result)((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2395, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); | ||||||
2396 | DECL_DISREGARD_INLINE_LIMITS (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2396, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) | ||||||
2397 | |= DECL_DISREGARD_INLINE_LIMITS (new_result)((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2397, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ); | ||||||
2398 | } | ||||||
2399 | else | ||||||
2400 | { | ||||||
2401 | DECL_DECLARED_INLINE_P (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2401, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) | ||||||
2402 | |= DECL_DECLARED_INLINE_P (new_result)((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2402, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); | ||||||
2403 | DECL_DISREGARD_INLINE_LIMITS (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2403, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) | ||||||
2404 | |= DECL_DISREGARD_INLINE_LIMITS (new_result)((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2404, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ); | ||||||
2405 | check_redeclaration_exception_specification (newdecl, olddecl); | ||||||
2406 | |||||||
2407 | merge_attribute_bits (new_result, old_result); | ||||||
2408 | } | ||||||
2409 | } | ||||||
2410 | |||||||
2411 | /* If the new declaration is a definition, update the file and | ||||||
2412 | line information on the declaration, and also make | ||||||
2413 | the old declaration the same definition. */ | ||||||
2414 | if (DECL_INITIAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2414, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null) | ||||||
2415 | { | ||||||
2416 | DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2416, __FUNCTION__))->decl_minimal.locus) | ||||||
2417 | = DECL_SOURCE_LOCATION (old_result)((contains_struct_check ((old_result), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2417, __FUNCTION__))->decl_minimal.locus) | ||||||
2418 | = DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2418, __FUNCTION__))->decl_minimal.locus); | ||||||
2419 | DECL_INITIAL (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2419, __FUNCTION__))->decl_common.initial) = DECL_INITIAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2419, __FUNCTION__))->decl_common.initial); | ||||||
2420 | if (DECL_FUNCTION_TEMPLATE_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2420, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2420, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) | ||||||
2421 | { | ||||||
2422 | DECL_ARGUMENTS (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2422, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ) = DECL_ARGUMENTS (new_result)((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2422, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); | ||||||
2423 | for (tree p = DECL_ARGUMENTS (old_result)((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2423, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); p; p = DECL_CHAIN (p)(((contains_struct_check (((contains_struct_check ((p), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2423, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2423, __FUNCTION__))->common.chain))) | ||||||
2424 | DECL_CONTEXT (p)((contains_struct_check ((p), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2424, __FUNCTION__))->decl_minimal.context) = old_result; | ||||||
2425 | |||||||
2426 | if (tree fc = DECL_FRIEND_CONTEXT (new_result)(((((enum tree_code) (new_result)->base.code) == FUNCTION_DECL || (((enum tree_code) (new_result)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_result ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) && !((contains_struct_check ((new_result), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__))->decl_common.virtual_flag) && !((tree_check (((((enum tree_code) (new_result)->base.code ) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast <union tree_node *> ((((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_result )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.cxx_constructor )) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (new_result)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_result )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (new_result)->base.code) == FUNCTION_DECL || (((enum tree_code) (new_result)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_result ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2426, __FUNCTION__); <->u.fn; })->context : (tree ) __null)) | ||||||
2427 | SET_DECL_FRIEND_CONTEXT (old_result, fc)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (old_result)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2427, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_result )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2427, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (old_result)->base.code) == FUNCTION_DECL || (((enum tree_code) (old_result)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_result), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2427, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_result ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2427, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2427, __FUNCTION__); <->u.fn; })->context = (fc )); | ||||||
2428 | } | ||||||
2429 | } | ||||||
2430 | |||||||
2431 | return olddecl; | ||||||
2432 | } | ||||||
2433 | |||||||
2434 | if (types_match) | ||||||
2435 | { | ||||||
2436 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2437 | check_redeclaration_exception_specification (newdecl, olddecl); | ||||||
2438 | |||||||
2439 | /* Automatically handles default parameters. */ | ||||||
2440 | tree oldtype = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2440, __FUNCTION__))->typed.type); | ||||||
2441 | tree newtype; | ||||||
2442 | |||||||
2443 | /* For typedefs use the old type, as the new type's DECL_NAME points | ||||||
2444 | at newdecl, which will be ggc_freed. */ | ||||||
2445 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL) | ||||||
2446 | { | ||||||
2447 | /* But NEWTYPE might have an attribute, honor that. */ | ||||||
2448 | tree tem = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2448, __FUNCTION__))->typed.type); | ||||||
2449 | newtype = oldtype; | ||||||
2450 | |||||||
2451 | if (TYPE_USER_ALIGN (tem)((tree_class_check ((tem), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2451, __FUNCTION__))->base.u.bits.user_align)) | ||||||
2452 | { | ||||||
2453 | if (TYPE_ALIGN (tem)(((tree_class_check ((tem), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2453, __FUNCTION__))->type_common.align) ? ((unsigned)1) << (((tree_class_check ((tem), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2453, __FUNCTION__))->type_common.align) - 1) : 0) > TYPE_ALIGN (newtype)(((tree_class_check ((newtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2453, __FUNCTION__))->type_common.align) ? ((unsigned)1) << (((tree_class_check ((newtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2453, __FUNCTION__))->type_common.align) - 1) : 0)) | ||||||
2454 | SET_TYPE_ALIGN (newtype, TYPE_ALIGN (tem))((tree_class_check ((newtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2454, __FUNCTION__))->type_common.align = ffs_hwi ((((tree_class_check ((tem), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2454, __FUNCTION__))->type_common.align) ? ((unsigned)1) << (((tree_class_check ((tem), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2454, __FUNCTION__))->type_common.align) - 1) : 0))); | ||||||
2455 | TYPE_USER_ALIGN (newtype)((tree_class_check ((newtype), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2455, __FUNCTION__))->base.u.bits.user_align) = true; | ||||||
2456 | } | ||||||
2457 | |||||||
2458 | /* And remove the new type from the variants list. */ | ||||||
2459 | if (TYPE_NAME (TREE_TYPE (newdecl))((tree_class_check ((((contains_struct_check ((newdecl), (TS_TYPED ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2459, __FUNCTION__))->typed.type)), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2459, __FUNCTION__))->type_common.name) == newdecl) | ||||||
2460 | { | ||||||
2461 | tree remove = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2461, __FUNCTION__))->typed.type); | ||||||
2462 | if (TYPE_MAIN_VARIANT (remove)((tree_class_check ((remove), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2462, __FUNCTION__))->type_common.main_variant) == remove) | ||||||
2463 | { | ||||||
2464 | gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE)((void)(!(((tree_class_check ((remove), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2464, __FUNCTION__))->type_common.next_variant) == (tree ) __null) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2464, __FUNCTION__), 0 : 0)); | ||||||
2465 | /* If remove is the main variant, no need to remove that | ||||||
2466 | from the list. One of the DECL_ORIGINAL_TYPE | ||||||
2467 | variants, e.g. created for aligned attribute, might still | ||||||
2468 | refer to the newdecl TYPE_DECL though, so remove that one | ||||||
2469 | in that case. */ | ||||||
2470 | if (tree orig = DECL_ORIGINAL_TYPE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2470, __FUNCTION__, (TYPE_DECL)))->decl_non_common.result )) | ||||||
2471 | if (orig != remove) | ||||||
2472 | for (tree t = TYPE_MAIN_VARIANT (orig)((tree_class_check ((orig), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2472, __FUNCTION__))->type_common.main_variant); t; | ||||||
2473 | t = TYPE_MAIN_VARIANT (t)((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2473, __FUNCTION__))->type_common.main_variant)) | ||||||
2474 | if (TYPE_NAME (TYPE_NEXT_VARIANT (t))((tree_class_check ((((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2474, __FUNCTION__))->type_common.next_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2474, __FUNCTION__))->type_common.name) == newdecl) | ||||||
2475 | { | ||||||
2476 | TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2476, __FUNCTION__))->type_common.next_variant) | ||||||
2477 | = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t))((tree_class_check ((((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2477, __FUNCTION__))->type_common.next_variant)), (tcc_type ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2477, __FUNCTION__))->type_common.next_variant); | ||||||
2478 | break; | ||||||
2479 | } | ||||||
2480 | } | ||||||
2481 | else | ||||||
2482 | for (tree t = TYPE_MAIN_VARIANT (remove)((tree_class_check ((remove), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2482, __FUNCTION__))->type_common.main_variant); ; | ||||||
2483 | t = TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2483, __FUNCTION__))->type_common.next_variant)) | ||||||
2484 | if (TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2484, __FUNCTION__))->type_common.next_variant) == remove) | ||||||
2485 | { | ||||||
2486 | TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2486, __FUNCTION__))->type_common.next_variant) = TYPE_NEXT_VARIANT (remove)((tree_class_check ((remove), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2486, __FUNCTION__))->type_common.next_variant); | ||||||
2487 | break; | ||||||
2488 | } | ||||||
2489 | } | ||||||
2490 | } | ||||||
2491 | else if (merge_attr) | ||||||
2492 | newtype = merge_types (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2492, __FUNCTION__))->typed.type), TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2492, __FUNCTION__))->typed.type)); | ||||||
2493 | else | ||||||
2494 | newtype = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2494, __FUNCTION__))->typed.type); | ||||||
2495 | |||||||
2496 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) | ||||||
2497 | { | ||||||
2498 | DECL_THIS_EXTERN (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2498, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2498, __FUNCTION__))->decl_common.lang_flag_2) |= DECL_THIS_EXTERN (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2498, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2498, __FUNCTION__))->decl_common.lang_flag_2); | ||||||
2499 | /* For already initialized vars, TREE_READONLY could have been | ||||||
2500 | cleared in cp_finish_decl, because the var needs runtime | ||||||
2501 | initialization or destruction. Make sure not to set | ||||||
2502 | TREE_READONLY on it again. */ | ||||||
2503 | if (DECL_INITIALIZED_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2503, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2503, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) | ||||||
2504 | && !DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2504, __FUNCTION__))->decl_common.decl_flag_1) | ||||||
2505 | && !TREE_READONLY (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2505, __FUNCTION__))->base.readonly_flag)) | ||||||
2506 | TREE_READONLY (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2506, __FUNCTION__))->base.readonly_flag) = 0; | ||||||
2507 | DECL_INITIALIZED_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2507, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2507, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) |= DECL_INITIALIZED_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2507, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2507, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)); | ||||||
2508 | DECL_NONTRIVIALLY_INITIALIZED_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2508, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2508, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_6)) | ||||||
2509 | |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2509, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2509, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_6)); | ||||||
2510 | if (DECL_DEPENDENT_INIT_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2510, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2510, __FUNCTION__))->decl_common.lang_specific) && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2510, __FUNCTION__))->decl_common.lang_specific)->u.base .dependent_init_p)) | ||||||
2511 | SET_DECL_DEPENDENT_INIT_P (newdecl, true)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2511, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2511, __FUNCTION__))->decl_common.lang_specific)->u.base .dependent_init_p = (true)); | ||||||
2512 | DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2512, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2512, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)) | ||||||
2513 | |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2513, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2513, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)); | ||||||
2514 | DECL_DECLARED_CONSTEXPR_P (newdecl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2514, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2514, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2514, __FUNCTION__))->decl_common.lang_flag_8) | ||||||
2515 | |= DECL_DECLARED_CONSTEXPR_P (olddecl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2515, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2515, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2515, __FUNCTION__))->decl_common.lang_flag_8); | ||||||
2516 | DECL_DECLARED_CONSTINIT_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2516, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2516, __FUNCTION__))->decl_common.lang_flag_7)) | ||||||
2517 | |= DECL_DECLARED_CONSTINIT_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2517, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2517, __FUNCTION__))->decl_common.lang_flag_7)); | ||||||
2518 | |||||||
2519 | /* Merge the threadprivate attribute from OLDDECL into NEWDECL. */ | ||||||
2520 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2520, __FUNCTION__))->decl_common.lang_specific) | ||||||
2521 | && CP_DECL_THREADPRIVATE_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2521, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2521, __FUNCTION__))->decl_common.lang_specific)->u.base .threadprivate_or_deleted_p)) | ||||||
2522 | { | ||||||
2523 | /* Allocate a LANG_SPECIFIC structure for NEWDECL, if needed. */ | ||||||
2524 | retrofit_lang_decl (newdecl); | ||||||
2525 | CP_DECL_THREADPRIVATE_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2525, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2525, __FUNCTION__))->decl_common.lang_specific)->u.base .threadprivate_or_deleted_p) = 1; | ||||||
2526 | } | ||||||
2527 | } | ||||||
2528 | |||||||
2529 | /* An explicit specialization of a function template or of a member | ||||||
2530 | function of a class template can be declared transaction_safe | ||||||
2531 | independently of whether the corresponding template entity is declared | ||||||
2532 | transaction_safe. */ | ||||||
2533 | if (flag_tmglobal_options.x_flag_tm && TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
2534 | && DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2534, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) | ||||||
2535 | && DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2535, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) | ||||||
2536 | && tx_safe_fn_type_p (newtype) | ||||||
2537 | && !tx_safe_fn_type_p (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2537, __FUNCTION__))->typed.type))) | ||||||
2538 | newtype = tx_unsafe_fn_variant (newtype); | ||||||
2539 | |||||||
2540 | TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2540, __FUNCTION__))->typed.type) = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2540, __FUNCTION__))->typed.type) = newtype; | ||||||
2541 | |||||||
2542 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2543 | check_default_args (newdecl); | ||||||
2544 | |||||||
2545 | /* Lay the type out, unless already done. */ | ||||||
2546 | if (! same_type_p (newtype, oldtype)comptypes ((newtype), (oldtype), 0) | ||||||
2547 | && TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2547, __FUNCTION__))->typed.type) != error_mark_nodeglobal_trees[TI_ERROR_MARK] | ||||||
2548 | && !(processing_template_declscope_chain->x_processing_template_decl && uses_template_parms (newdecl))) | ||||||
2549 | layout_type (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2549, __FUNCTION__))->typed.type)); | ||||||
2550 | |||||||
2551 | if ((VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) | ||||||
2552 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == PARM_DECL | ||||||
2553 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == RESULT_DECL | ||||||
2554 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FIELD_DECL | ||||||
2555 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL) | ||||||
2556 | && !(processing_template_declscope_chain->x_processing_template_decl && uses_template_parms (newdecl))) | ||||||
2557 | layout_decl (newdecl, 0); | ||||||
2558 | |||||||
2559 | /* Merge deprecatedness. */ | ||||||
2560 | if (TREE_DEPRECATED (newdecl)((newdecl)->base.deprecated_flag)) | ||||||
2561 | TREE_DEPRECATED (olddecl)((olddecl)->base.deprecated_flag) = 1; | ||||||
2562 | |||||||
2563 | /* Merge unavailability. */ | ||||||
2564 | if (TREE_UNAVAILABLE (newdecl)((newdecl)->base.u.bits.unavailable_flag)) | ||||||
2565 | TREE_UNAVAILABLE (olddecl)((olddecl)->base.u.bits.unavailable_flag) = 1; | ||||||
2566 | |||||||
2567 | /* Preserve function specific target and optimization options */ | ||||||
2568 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2569 | { | ||||||
2570 | if (DECL_FUNCTION_SPECIFIC_TARGET (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2570, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target ) | ||||||
2571 | && !DECL_FUNCTION_SPECIFIC_TARGET (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2571, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target )) | ||||||
2572 | DECL_FUNCTION_SPECIFIC_TARGET (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2572, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target ) | ||||||
2573 | = DECL_FUNCTION_SPECIFIC_TARGET (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2573, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target ); | ||||||
2574 | |||||||
2575 | if (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2575, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization ) | ||||||
2576 | && !DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2576, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization )) | ||||||
2577 | DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2577, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization ) | ||||||
2578 | = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2578, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization ); | ||||||
2579 | |||||||
2580 | if (!DECL_UNIQUE_FRIEND_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2580, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2580, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls)) | ||||||
2581 | DECL_UNIQUE_FRIEND_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2581, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2581, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) = false; | ||||||
2582 | } | ||||||
2583 | else | ||||||
2584 | { | ||||||
2585 | /* Merge the const type qualifier. */ | ||||||
2586 | if (TREE_READONLY (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2586, __FUNCTION__))->base.readonly_flag)) | ||||||
2587 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2587, __FUNCTION__))->base.readonly_flag) = 1; | ||||||
2588 | /* Merge the volatile type qualifier. */ | ||||||
2589 | if (TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag)) | ||||||
2590 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) = 1; | ||||||
2591 | } | ||||||
2592 | |||||||
2593 | /* Merge the initialization information. */ | ||||||
2594 | if (DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2594, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null | ||||||
2595 | && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2595, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null) | ||||||
2596 | { | ||||||
2597 | DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2597, __FUNCTION__))->decl_common.initial) = DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2597, __FUNCTION__))->decl_common.initial); | ||||||
2598 | DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2598, __FUNCTION__))->decl_minimal.locus) = DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2598, __FUNCTION__))->decl_minimal.locus); | ||||||
2599 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2600 | { | ||||||
2601 | DECL_SAVED_TREE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2601, __FUNCTION__, (FUNCTION_DECL)))->function_decl.saved_tree ) = DECL_SAVED_TREE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2601, __FUNCTION__, (FUNCTION_DECL)))->function_decl.saved_tree ); | ||||||
2602 | DECL_STRUCT_FUNCTION (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2602, __FUNCTION__, (FUNCTION_DECL)))->function_decl.f) = DECL_STRUCT_FUNCTION (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2602, __FUNCTION__, (FUNCTION_DECL)))->function_decl.f); | ||||||
2603 | } | ||||||
2604 | } | ||||||
2605 | |||||||
2606 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2607 | { | ||||||
2608 | DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2608, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_instrument_function_entry_exit ) | ||||||
2609 | |= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2609, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_instrument_function_entry_exit ); | ||||||
2610 | DECL_NO_LIMIT_STACK (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2610, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_limit_stack ) |= DECL_NO_LIMIT_STACK (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2610, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_limit_stack ); | ||||||
2611 | if (DECL_IS_OPERATOR_NEW_P (olddecl)(((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2611, __FUNCTION__, (FUNCTION_DECL)))->function_decl.decl_type ) == OPERATOR_NEW)) | ||||||
2612 | DECL_SET_IS_OPERATOR_NEW (newdecl, true)set_function_decl_type ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2612, __FUNCTION__, (FUNCTION_DECL))), OPERATOR_NEW, true); | ||||||
2613 | DECL_LOOPING_CONST_OR_PURE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2613, __FUNCTION__, (FUNCTION_DECL)))->function_decl.looping_const_or_pure_flag ) | ||||||
2614 | |= DECL_LOOPING_CONST_OR_PURE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2614, __FUNCTION__, (FUNCTION_DECL)))->function_decl.looping_const_or_pure_flag ); | ||||||
2615 | DECL_IS_REPLACEABLE_OPERATOR (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2615, __FUNCTION__, (FUNCTION_DECL)))->function_decl.replaceable_operator ) | ||||||
2616 | |= DECL_IS_REPLACEABLE_OPERATOR (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2616, __FUNCTION__, (FUNCTION_DECL)))->function_decl.replaceable_operator ); | ||||||
2617 | |||||||
2618 | if (merge_attr) | ||||||
2619 | merge_attribute_bits (newdecl, olddecl); | ||||||
2620 | else | ||||||
2621 | { | ||||||
2622 | /* Merge the noreturn bit. */ | ||||||
2623 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) = TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag); | ||||||
2624 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2624, __FUNCTION__))->base.readonly_flag) = TREE_READONLY (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2624, __FUNCTION__))->base.readonly_flag); | ||||||
2625 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) = TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag); | ||||||
2626 | DECL_IS_MALLOC (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2626, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ) = DECL_IS_MALLOC (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2626, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ); | ||||||
2627 | DECL_PURE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2627, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ) = DECL_PURE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2627, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ); | ||||||
2628 | } | ||||||
2629 | /* Keep the old RTL. */ | ||||||
2630 | COPY_DECL_RTL (olddecl, newdecl)((contains_struct_check ((newdecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2630, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2630, __FUNCTION__))->decl_with_rtl.rtl); | ||||||
2631 | } | ||||||
2632 | else if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) | ||||||
2633 | && (DECL_SIZE (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2633, __FUNCTION__))->decl_common.size) || !DECL_SIZE (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2633, __FUNCTION__))->decl_common.size))) | ||||||
2634 | { | ||||||
2635 | /* Keep the old RTL. We cannot keep the old RTL if the old | ||||||
2636 | declaration was for an incomplete object and the new | ||||||
2637 | declaration is not since many attributes of the RTL will | ||||||
2638 | change. */ | ||||||
2639 | COPY_DECL_RTL (olddecl, newdecl)((contains_struct_check ((newdecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2639, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2639, __FUNCTION__))->decl_with_rtl.rtl); | ||||||
2640 | } | ||||||
2641 | } | ||||||
2642 | /* If cannot merge, then use the new type and qualifiers, | ||||||
2643 | and don't preserve the old rtl. */ | ||||||
2644 | else | ||||||
2645 | { | ||||||
2646 | /* Clean out any memory we had of the old declaration. */ | ||||||
2647 | tree oldstatic = value_member (olddecl, static_aggregates); | ||||||
2648 | if (oldstatic) | ||||||
2649 | TREE_VALUE (oldstatic)((tree_check ((oldstatic), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2649, __FUNCTION__, (TREE_LIST)))->list.value) = error_mark_nodeglobal_trees[TI_ERROR_MARK]; | ||||||
2650 | |||||||
2651 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2651, __FUNCTION__))->typed.type) = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2651, __FUNCTION__))->typed.type); | ||||||
2652 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2652, __FUNCTION__))->base.readonly_flag) = TREE_READONLY (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2652, __FUNCTION__))->base.readonly_flag); | ||||||
2653 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) = TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag); | ||||||
2654 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) = TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag); | ||||||
2655 | TREE_SIDE_EFFECTS (olddecl)((non_type_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2655, __FUNCTION__))->base.side_effects_flag) = TREE_SIDE_EFFECTS (newdecl)((non_type_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2655, __FUNCTION__))->base.side_effects_flag); | ||||||
2656 | } | ||||||
2657 | |||||||
2658 | /* Merge the storage class information. */ | ||||||
2659 | merge_weak (newdecl, olddecl); | ||||||
2660 | |||||||
2661 | DECL_DEFER_OUTPUT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2661, __FUNCTION__))->decl_with_vis.defer_output) |= DECL_DEFER_OUTPUT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2661, __FUNCTION__))->decl_with_vis.defer_output); | ||||||
2662 | TREE_PUBLIC (newdecl)((newdecl)->base.public_flag) = TREE_PUBLIC (olddecl)((olddecl)->base.public_flag); | ||||||
2663 | TREE_STATIC (olddecl)((olddecl)->base.static_flag) = TREE_STATIC (newdecl)((newdecl)->base.static_flag) |= TREE_STATIC (olddecl)((olddecl)->base.static_flag); | ||||||
2664 | if (! DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2664, __FUNCTION__))->decl_common.decl_flag_1)) | ||||||
2665 | DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2665, __FUNCTION__))->decl_common.decl_flag_1) = 0; | ||||||
2666 | if (! DECL_COMDAT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2666, __FUNCTION__))->decl_with_vis.comdat_flag)) | ||||||
2667 | DECL_COMDAT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2667, __FUNCTION__))->decl_with_vis.comdat_flag) = 0; | ||||||
2668 | |||||||
2669 | if (VAR_OR_FUNCTION_DECL_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL || (( enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) && DECL_LOCAL_DECL_P (newdecl)((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2669, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2669, __FUNCTION__))->decl_common.lang_flag_0)) | ||||||
2670 | { | ||||||
2671 | if (!DECL_LOCAL_DECL_P (olddecl)((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2671, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2671, __FUNCTION__))->decl_common.lang_flag_0)) | ||||||
2672 | /* This can happen if olddecl was brought in from the | ||||||
2673 | enclosing namespace via a using-decl. The new decl is | ||||||
2674 | then not a block-scope extern at all. */ | ||||||
2675 | DECL_LOCAL_DECL_P (newdecl)((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2675, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2675, __FUNCTION__))->decl_common.lang_flag_0) = false; | ||||||
2676 | else | ||||||
2677 | { | ||||||
2678 | retrofit_lang_decl (newdecl); | ||||||
2679 | tree alias = DECL_LOCAL_DECL_ALIAS (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2679, __FUNCTION__); <->u.min; })->access) | ||||||
2680 | = DECL_LOCAL_DECL_ALIAS (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__), 0 : 0)), olddecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2680, __FUNCTION__); <->u.min; })->access); | ||||||
2681 | DECL_ATTRIBUTES (alias)((contains_struct_check ((alias), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2681, __FUNCTION__))->decl_common.attributes) | ||||||
2682 | = (*targetm.merge_decl_attributes) (alias, newdecl); | ||||||
2683 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2684 | merge_attribute_bits (newdecl, alias); | ||||||
2685 | } | ||||||
2686 | } | ||||||
2687 | |||||||
2688 | new_template_info = NULL_TREE(tree) __null; | ||||||
2689 | if (DECL_LANG_SPECIFIC (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2689, __FUNCTION__))->decl_common.lang_specific) && DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2689, __FUNCTION__))->decl_common.lang_specific)) | ||||||
2690 | { | ||||||
2691 | bool new_redefines_gnu_inline = false; | ||||||
2692 | |||||||
2693 | if (new_defines_function | ||||||
2694 | && ((DECL_INTERFACE_KNOWN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2694, __FUNCTION__))->decl_common.lang_flag_5) | ||||||
2695 | && TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) | ||||||
2696 | || (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL | ||||||
2697 | && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2697, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) | ||||||
2698 | == FUNCTION_DECL)))) | ||||||
2699 | new_redefines_gnu_inline = GNU_INLINE_P (STRIP_TEMPLATE (olddecl))(((tree_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2699, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2699, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2699, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2699, __FUNCTION__))->decl_common.attributes))); | ||||||
2700 | |||||||
2701 | if (!new_redefines_gnu_inline) | ||||||
2702 | { | ||||||
2703 | DECL_INTERFACE_KNOWN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2703, __FUNCTION__))->decl_common.lang_flag_5) |= DECL_INTERFACE_KNOWN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2703, __FUNCTION__))->decl_common.lang_flag_5); | ||||||
2704 | DECL_NOT_REALLY_EXTERN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2704, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern) |= DECL_NOT_REALLY_EXTERN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2704, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern); | ||||||
2705 | DECL_COMDAT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2705, __FUNCTION__))->decl_with_vis.comdat_flag) |= DECL_COMDAT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2705, __FUNCTION__))->decl_with_vis.comdat_flag); | ||||||
2706 | } | ||||||
2707 | |||||||
2708 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != TYPE_DECL) | ||||||
2709 | { | ||||||
2710 | DECL_TEMPLATE_INSTANTIATED (newdecl)((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2710, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2710, __FUNCTION__))->decl_common.lang_flag_1) | ||||||
2711 | |= DECL_TEMPLATE_INSTANTIATED (olddecl)((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2711, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2711, __FUNCTION__))->decl_common.lang_flag_1); | ||||||
2712 | DECL_ODR_USED (newdecl)(((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2712, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2712, __FUNCTION__))->decl_common.lang_specific) ->u. base.odr_used) |= DECL_ODR_USED (olddecl)(((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2712, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2712, __FUNCTION__))->decl_common.lang_specific) ->u. base.odr_used); | ||||||
2713 | |||||||
2714 | /* If the OLDDECL is an instantiation and/or specialization, | ||||||
2715 | then the NEWDECL must be too. But, it may not yet be marked | ||||||
2716 | as such if the caller has created NEWDECL, but has not yet | ||||||
2717 | figured out that it is a redeclaration. */ | ||||||
2718 | if (!DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2718, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) | ||||||
2719 | DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2719, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) = DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2719, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template); | ||||||
2720 | |||||||
2721 | if (!DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2721, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) | ||||||
2722 | DECL_INITIALIZED_IN_CLASS_P (newdecl)(((contains_struct_check (((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2722, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2722, __FUNCTION__))->decl_common.lang_specific) ->u. base.initialized_in_class) | ||||||
2723 | |= DECL_INITIALIZED_IN_CLASS_P (olddecl)(((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2723, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2723, __FUNCTION__))->decl_common.lang_specific) ->u. base.initialized_in_class); | ||||||
2724 | } | ||||||
2725 | |||||||
2726 | /* Don't really know how much of the language-specific | ||||||
2727 | values we should copy from old to new. */ | ||||||
2728 | DECL_IN_AGGR_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2728, __FUNCTION__))->decl_common.lang_flag_3)) = DECL_IN_AGGR_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2728, __FUNCTION__))->decl_common.lang_flag_3)); | ||||||
2729 | |||||||
2730 | if (LANG_DECL_HAS_MIN (newdecl)((((enum tree_code) (newdecl)->base.code) == VAR_DECL || ( (enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) || ((enum tree_code) (newdecl)->base.code) == FIELD_DECL || ( (enum tree_code) (newdecl)->base.code) == CONST_DECL || (( enum tree_code) (newdecl)->base.code) == TYPE_DECL || ((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL || ((enum tree_code) (newdecl)->base.code) == USING_DECL || ((enum tree_code ) (newdecl)->base.code) == CONCEPT_DECL)) | ||||||
2731 | { | ||||||
2732 | DECL_ACCESS (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2732, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) (newdecl)->base.code) == VAR_DECL || (( enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) || ((enum tree_code) (newdecl)->base.code) == FIELD_DECL || ( (enum tree_code) (newdecl)->base.code) == CONST_DECL || (( enum tree_code) (newdecl)->base.code) == TYPE_DECL || ((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL || ((enum tree_code) (newdecl)->base.code) == USING_DECL || ((enum tree_code ) (newdecl)->base.code) == CONCEPT_DECL)) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2732, __FUNCTION__); <->u.min; })->access) = DECL_ACCESS (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2732, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) (olddecl)->base.code) == VAR_DECL || (( enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) || ((enum tree_code) (olddecl)->base.code) == FIELD_DECL || ( (enum tree_code) (olddecl)->base.code) == CONST_DECL || (( enum tree_code) (olddecl)->base.code) == TYPE_DECL || ((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL || ((enum tree_code) (olddecl)->base.code) == USING_DECL || ((enum tree_code ) (olddecl)->base.code) == CONCEPT_DECL)) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2732, __FUNCTION__); <->u.min; })->access); | ||||||
2733 | if (DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2733, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2733, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) | ||||||
2734 | { | ||||||
2735 | new_template_info = DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2735, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2735, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info); | ||||||
2736 | if (DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2736, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) | ||||||
2737 | && DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2737, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) | ||||||
2738 | /* Remember the presence of explicit specialization args. */ | ||||||
2739 | TINFO_USED_TEMPLATE_ID (DECL_TEMPLATE_INFO (olddecl))(((tree_not_check2 (((tree_check (((((contains_struct_check ( (template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2739, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2739, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2739, __FUNCTION__, (TEMPLATE_INFO)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2739, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) | ||||||
2740 | = TINFO_USED_TEMPLATE_ID (new_template_info)(((tree_not_check2 (((tree_check ((new_template_info), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2740, __FUNCTION__, (TEMPLATE_INFO)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2740, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)); | ||||||
2741 | } | ||||||
2742 | |||||||
2743 | /* We don't want to copy template info from a non-templated friend | ||||||
2744 | (PR105761), but these shouldn't have DECL_TEMPLATE_INFO now. */ | ||||||
2745 | gcc_checking_assert (!DECL_TEMPLATE_INFO (olddecl)((void)(!(!(((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2745, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2745, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) || !non_templated_friend_p (olddecl)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2746, __FUNCTION__), 0 : 0)) | ||||||
2746 | || !non_templated_friend_p (olddecl))((void)(!(!(((contains_struct_check ((template_info_decl_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2745, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2745, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) || !non_templated_friend_p (olddecl)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2746, __FUNCTION__), 0 : 0)); | ||||||
2747 | DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2747, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2747, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) = DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2747, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2747, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info); | ||||||
2748 | } | ||||||
2749 | |||||||
2750 | if (DECL_DECLARES_FUNCTION_P (newdecl)(((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2750, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2750, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL))) | ||||||
2751 | { | ||||||
2752 | /* Only functions have these fields. */ | ||||||
2753 | DECL_NONCONVERTING_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__); <->u.fn; })->nonconverting ) = DECL_NONCONVERTING_P (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2753, __FUNCTION__); <->u.fn; })->nonconverting ); | ||||||
2754 | DECL_BEFRIENDING_CLASSES (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2754, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2754, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2754, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2754, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2754, __FUNCTION__); <->u.fn; })->befriending_classes ) | ||||||
2755 | = chainon (DECL_BEFRIENDING_CLASSES (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2755, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2755, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2755, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2755, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2755, __FUNCTION__); <->u.fn; })->befriending_classes ), | ||||||
2756 | DECL_BEFRIENDING_CLASSES (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2756, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2756, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2756, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2756, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2756, __FUNCTION__); <->u.fn; })->befriending_classes )); | ||||||
2757 | /* DECL_THUNKS is only valid for virtual functions, | ||||||
2758 | otherwise it is a DECL_FRIEND_CONTEXT. */ | ||||||
2759 | if (DECL_VIRTUAL_P (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2759, __FUNCTION__))->decl_common.virtual_flag)) | ||||||
2760 | SET_DECL_THUNKS (newdecl, DECL_THUNKS (olddecl))(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__); <->u.fn; })->context = ((( (contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__))->decl_common.virtual_flag) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code ) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2760, __FUNCTION__); <->u.fn; })->context : (tree ) __null))); | ||||||
2761 | else if (tree fc = DECL_FRIEND_CONTEXT (newdecl)(((((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) && !((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__))->decl_common.virtual_flag) && !((tree_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.cxx_constructor )) ? __extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2761, __FUNCTION__); <->u.fn; })->context : (tree ) __null)) | ||||||
2762 | SET_DECL_FRIEND_CONTEXT (olddecl, fc)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2762, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2762, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2762, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2762, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2762, __FUNCTION__); <->u.fn; })->context = (fc )); | ||||||
2763 | } | ||||||
2764 | else if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) | ||||||
2765 | { | ||||||
2766 | /* Only variables have this field. */ | ||||||
2767 | if (VAR_HAD_UNKNOWN_BOUND (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2767, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2767, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2767, __FUNCTION__))->decl_common.lang_specific)->u.base .unknown_bound_p : false)) | ||||||
2768 | SET_VAR_HAD_UNKNOWN_BOUND (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2768, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2768, __FUNCTION__))->decl_common.lang_specific)->u.base .unknown_bound_p = true); | ||||||
2769 | } | ||||||
2770 | } | ||||||
2771 | |||||||
2772 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
2773 | { | ||||||
2774 | tree parm; | ||||||
2775 | |||||||
2776 | /* Merge parameter attributes. */ | ||||||
2777 | tree oldarg, newarg; | ||||||
2778 | for (oldarg = DECL_ARGUMENTS(olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2778, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ), newarg = DECL_ARGUMENTS(newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2778, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); | ||||||
2779 | oldarg && newarg; | ||||||
2780 | oldarg = DECL_CHAIN(oldarg)(((contains_struct_check (((contains_struct_check ((oldarg), ( TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2780, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2780, __FUNCTION__))->common.chain)), newarg = DECL_CHAIN(newarg)(((contains_struct_check (((contains_struct_check ((newarg), ( TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2780, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2780, __FUNCTION__))->common.chain))) | ||||||
2781 | { | ||||||
2782 | DECL_ATTRIBUTES (newarg)((contains_struct_check ((newarg), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2782, __FUNCTION__))->decl_common.attributes) | ||||||
2783 | = (*targetm.merge_decl_attributes) (oldarg, newarg); | ||||||
2784 | DECL_ATTRIBUTES (oldarg)((contains_struct_check ((oldarg), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2784, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (newarg)((contains_struct_check ((newarg), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2784, __FUNCTION__))->decl_common.attributes); | ||||||
2785 | } | ||||||
2786 | |||||||
2787 | if (DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2787, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) | ||||||
2788 | && !DECL_TEMPLATE_INSTANTIATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2788, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1)) | ||||||
2789 | { | ||||||
2790 | /* If newdecl is not a specialization, then it is not a | ||||||
2791 | template-related function at all. And that means that we | ||||||
2792 | should have exited above, returning 0. */ | ||||||
2793 | gcc_assert (DECL_TEMPLATE_SPECIALIZATION (newdecl))((void)(!(((((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2793, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2793, __FUNCTION__), 0 : 0)); | ||||||
2794 | |||||||
2795 | if (DECL_ODR_USED (olddecl)(((contains_struct_check (((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2795, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2795, __FUNCTION__))->decl_common.lang_specific) ->u. base.odr_used)) | ||||||
2796 | /* From [temp.expl.spec]: | ||||||
2797 | |||||||
2798 | If a template, a member template or the member of a class | ||||||
2799 | template is explicitly specialized then that | ||||||
2800 | specialization shall be declared before the first use of | ||||||
2801 | that specialization that would cause an implicit | ||||||
2802 | instantiation to take place, in every translation unit in | ||||||
2803 | which such a use occurs. */ | ||||||
2804 | error ("explicit specialization of %qD after first use", | ||||||
2805 | olddecl); | ||||||
2806 | |||||||
2807 | SET_DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2807, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) = 2); | ||||||
2808 | DECL_COMDAT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2808, __FUNCTION__))->decl_with_vis.comdat_flag) = (TREE_PUBLIC (newdecl)((newdecl)->base.public_flag) | ||||||
2809 | && DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2809, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag )); | ||||||
2810 | |||||||
2811 | /* Don't propagate visibility from the template to the | ||||||
2812 | specialization here. We'll do that in determine_visibility if | ||||||
2813 | appropriate. */ | ||||||
2814 | DECL_VISIBILITY_SPECIFIED (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2814, __FUNCTION__))->decl_with_vis.visibility_specified ) = 0; | ||||||
2815 | |||||||
2816 | /* [temp.expl.spec/14] We don't inline explicit specialization | ||||||
2817 | just because the primary template says so. */ | ||||||
2818 | gcc_assert (!merge_attr)((void)(!(!merge_attr) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2818, __FUNCTION__), 0 : 0)); | ||||||
2819 | |||||||
2820 | DECL_DECLARED_INLINE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2820, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) | ||||||
2821 | = DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2821, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); | ||||||
2822 | |||||||
2823 | DECL_DISREGARD_INLINE_LIMITS (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2823, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) | ||||||
2824 | = DECL_DISREGARD_INLINE_LIMITS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2824, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ); | ||||||
2825 | |||||||
2826 | DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2826, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2826, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); | ||||||
2827 | } | ||||||
2828 | else if (new_defines_function && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2828, __FUNCTION__))->decl_common.initial)) | ||||||
2829 | { | ||||||
2830 | /* Never inline re-defined extern inline functions. | ||||||
2831 | FIXME: this could be better handled by keeping both | ||||||
2832 | function as separate declarations. */ | ||||||
2833 | DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2833, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = 1; | ||||||
2834 | } | ||||||
2835 | else | ||||||
2836 | { | ||||||
2837 | if (DECL_PENDING_INLINE_P (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2837, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2837, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2837, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2837, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2837, __FUNCTION__); <->u.fn; })->pending_inline_p )) | ||||||
2838 | { | ||||||
2839 | DECL_PENDING_INLINE_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2839, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2839, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2839, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2839, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2839, __FUNCTION__); <->u.fn; })->pending_inline_p ) = 1; | ||||||
2840 | DECL_PENDING_INLINE_INFO (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2840, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2840, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2840, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2840, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2840, __FUNCTION__); <->u.fn; })->u.pending_inline_info ) | ||||||
2841 | = DECL_PENDING_INLINE_INFO (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2841, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2841, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2841, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2841, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2841, __FUNCTION__); <->u.fn; })->u.pending_inline_info ); | ||||||
2842 | } | ||||||
2843 | else if (DECL_PENDING_INLINE_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2843, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2843, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2843, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2843, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2843, __FUNCTION__); <->u.fn; })->pending_inline_p )) | ||||||
2844 | ; | ||||||
2845 | else if (DECL_SAVED_AUTO_RETURN_TYPE (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL))))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL))))->base.code) == FUNCTION_DECL || (((enum tree_code) ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2845, __FUNCTION__); <->u.fn; }) ->u.saved_auto_return_type ) == NULL__null) | ||||||
2846 | DECL_SAVED_AUTO_RETURN_TYPE (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL))))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL))))->base.code) == FUNCTION_DECL || (((enum tree_code) ((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2846, __FUNCTION__); <->u.fn; }) ->u.saved_auto_return_type ) | ||||||
2847 | = DECL_SAVED_AUTO_RETURN_TYPE (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL))))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL))))->base.code) == FUNCTION_DECL || (((enum tree_code) ((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (FUNCTION_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2847, __FUNCTION__); <->u.fn; }) ->u.saved_auto_return_type ); | ||||||
2848 | |||||||
2849 | DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2849, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) |= DECL_DECLARED_INLINE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2849, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); | ||||||
2850 | |||||||
2851 | DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2851, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2851, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) | ||||||
2852 | = (DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2852, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) || DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2852, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable )); | ||||||
2853 | |||||||
2854 | DECL_DISREGARD_INLINE_LIMITS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2854, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) | ||||||
2855 | = DECL_DISREGARD_INLINE_LIMITS (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2855, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) | ||||||
2856 | = (DECL_DISREGARD_INLINE_LIMITS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2856, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) | ||||||
2857 | || DECL_DISREGARD_INLINE_LIMITS (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2857, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits )); | ||||||
2858 | } | ||||||
2859 | |||||||
2860 | /* Preserve abstractness on cloned [cd]tors. */ | ||||||
2861 | DECL_ABSTRACT_P (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2861, __FUNCTION__))->decl_common.abstract_flag) = DECL_ABSTRACT_P (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2861, __FUNCTION__))->decl_common.abstract_flag); | ||||||
2862 | |||||||
2863 | /* Update newdecl's parms to point at olddecl. */ | ||||||
2864 | for (parm = DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2864, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); parm; | ||||||
2865 | parm = DECL_CHAIN (parm)(((contains_struct_check (((contains_struct_check ((parm), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2865, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2865, __FUNCTION__))->common.chain))) | ||||||
2866 | DECL_CONTEXT (parm)((contains_struct_check ((parm), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2866, __FUNCTION__))->decl_minimal.context) = olddecl; | ||||||
2867 | |||||||
2868 | if (! types_match) | ||||||
2869 | { | ||||||
2870 | SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl))(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2870, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2870, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2870, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); | ||||||
2871 | COPY_DECL_ASSEMBLER_NAME (newdecl, olddecl)overwrite_decl_assembler_name (olddecl, ((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2871, __FUNCTION__))->decl_with_vis.assembler_name)); | ||||||
2872 | COPY_DECL_RTL (newdecl, olddecl)((contains_struct_check ((olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2872, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((newdecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2872, __FUNCTION__))->decl_with_rtl.rtl); | ||||||
2873 | } | ||||||
2874 | if (! types_match || new_defines_function) | ||||||
2875 | { | ||||||
2876 | /* These are the final DECL_ARGUMENTS that will be used within the | ||||||
2877 | body; update any references to old DECL_ARGUMENTS in the | ||||||
2878 | contracts, if present. */ | ||||||
2879 | if (tree contracts = DECL_CONTRACTS (newdecl)(find_contract (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2879, __FUNCTION__))->decl_common.attributes)))) | ||||||
2880 | remap_contracts (olddecl, newdecl, contracts, true); | ||||||
2881 | |||||||
2882 | /* These need to be copied so that the names are available. | ||||||
2883 | Note that if the types do match, we'll preserve inline | ||||||
2884 | info and other bits, but if not, we won't. */ | ||||||
2885 | DECL_ARGUMENTS (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2885, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ) = DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2885, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); | ||||||
2886 | DECL_RESULT (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2886, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ) = DECL_RESULT (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2886, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ); | ||||||
2887 | |||||||
2888 | /* In some cases, duplicate_contracts will remove contracts from | ||||||
2889 | OLDDECL, to avoid duplications. Sometimes, the contracts end up | ||||||
2890 | shared. If we removed them, re-add them. */ | ||||||
2891 | if (!DECL_CONTRACTS (olddecl)(find_contract (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2891, __FUNCTION__))->decl_common.attributes)))) | ||||||
2892 | copy_contract_attributes (olddecl, newdecl); | ||||||
2893 | } | ||||||
2894 | /* If redeclaring a builtin function, it stays built in | ||||||
2895 | if newdecl is a gnu_inline definition, or if newdecl is just | ||||||
2896 | a declaration. */ | ||||||
2897 | if (fndecl_built_in_p (olddecl) | ||||||
2898 | && (new_defines_function ? GNU_INLINE_P (newdecl)(((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2898, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2898, __FUNCTION__))->decl_common.attributes))) : types_match)) | ||||||
2899 | { | ||||||
2900 | copy_decl_built_in_function (newdecl, olddecl); | ||||||
2901 | /* If we're keeping the built-in definition, keep the rtl, | ||||||
2902 | regardless of declaration matches. */ | ||||||
2903 | COPY_DECL_RTL (olddecl, newdecl)((contains_struct_check ((newdecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2903, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2903, __FUNCTION__))->decl_with_rtl.rtl); | ||||||
2904 | if (DECL_BUILT_IN_CLASS (newdecl)((built_in_class) (tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2904, __FUNCTION__, (FUNCTION_DECL)))->function_decl.built_in_class ) == BUILT_IN_NORMAL) | ||||||
2905 | { | ||||||
2906 | enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl); | ||||||
2907 | if (builtin_decl_explicit_p (fncode)) | ||||||
2908 | { | ||||||
2909 | /* A compatible prototype of these builtin functions | ||||||
2910 | is seen, assume the runtime implements it with | ||||||
2911 | the expected semantics. */ | ||||||
2912 | switch (fncode) | ||||||
2913 | { | ||||||
2914 | case BUILT_IN_STPCPY: | ||||||
2915 | set_builtin_decl_implicit_p (fncode, true); | ||||||
2916 | break; | ||||||
2917 | default: | ||||||
2918 | set_builtin_decl_declared_p (fncode, true); | ||||||
2919 | break; | ||||||
2920 | } | ||||||
2921 | } | ||||||
2922 | |||||||
2923 | copy_attributes_to_builtin (newdecl); | ||||||
2924 | } | ||||||
2925 | } | ||||||
2926 | if (new_defines_function) | ||||||
2927 | /* If defining a function declared with other language | ||||||
2928 | linkage, use the previously declared language linkage. */ | ||||||
2929 | SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2929, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2929, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2929, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); | ||||||
2930 | else if (types_match) | ||||||
2931 | { | ||||||
2932 | DECL_RESULT (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2932, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ) = DECL_RESULT (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2932, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ); | ||||||
2933 | /* Don't clear out the arguments if we're just redeclaring a | ||||||
2934 | function. */ | ||||||
2935 | if (DECL_ARGUMENTS (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2935, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments )) | ||||||
2936 | { | ||||||
2937 | /* If we removed contracts from previous definition, re-attach | ||||||
2938 | them. Otherwise, rewrite the contracts so they match the | ||||||
2939 | parameters of the new declaration. */ | ||||||
2940 | if (DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2940, __FUNCTION__))->decl_common.initial) | ||||||
2941 | && DECL_CONTRACTS (newdecl)(find_contract (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2941, __FUNCTION__))->decl_common.attributes))) | ||||||
2942 | && !DECL_CONTRACTS (olddecl)(find_contract (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2942, __FUNCTION__))->decl_common.attributes)))) | ||||||
2943 | copy_contract_attributes (olddecl, newdecl); | ||||||
2944 | else | ||||||
2945 | { | ||||||
2946 | /* Temporarily undo the re-contexting of parameters so we can | ||||||
2947 | actually remap parameters. The inliner won't replace | ||||||
2948 | parameters if we don't do this. */ | ||||||
2949 | tree args = DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2949, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); | ||||||
2950 | for (tree p = args; p; p = DECL_CHAIN (p)(((contains_struct_check (((contains_struct_check ((p), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2950, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2950, __FUNCTION__))->common.chain))) | ||||||
2951 | DECL_CONTEXT (p)((contains_struct_check ((p), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2951, __FUNCTION__))->decl_minimal.context) = newdecl; | ||||||
2952 | |||||||
2953 | /* Save new argument names for use in contracts parsing, | ||||||
2954 | unless we've already started parsing the body of olddecl | ||||||
2955 | (particular issues arise when newdecl is from a prior | ||||||
2956 | friend decl with no argument names, see | ||||||
2957 | modules/contracts-tpl-friend-1). */ | ||||||
2958 | if (tree contracts = DECL_CONTRACTS (olddecl)(find_contract (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2958, __FUNCTION__))->decl_common.attributes)))) | ||||||
2959 | remap_contracts (newdecl, olddecl, contracts, true); | ||||||
2960 | |||||||
2961 | /* And reverse this operation again. */ | ||||||
2962 | for (tree p = args; p; p = DECL_CHAIN (p)(((contains_struct_check (((contains_struct_check ((p), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2962, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2962, __FUNCTION__))->common.chain))) | ||||||
2963 | DECL_CONTEXT (p)((contains_struct_check ((p), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2963, __FUNCTION__))->decl_minimal.context) = olddecl; | ||||||
2964 | } | ||||||
2965 | |||||||
2966 | DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2966, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ) = DECL_ARGUMENTS (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2966, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); | ||||||
2967 | } | ||||||
2968 | } | ||||||
2969 | } | ||||||
2970 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) | ||||||
2971 | NAMESPACE_LEVEL (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2971, __FUNCTION__))->decl_common.lang_specific); if ((( enum tree_code) (newdecl)->base.code) != NAMESPACE_DECL || lt->u.base.selector != lds_ns) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2971, __FUNCTION__); <->u.ns; })->level) = NAMESPACE_LEVEL (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2971, __FUNCTION__))->decl_common.lang_specific); if ((( enum tree_code) (olddecl)->base.code) != NAMESPACE_DECL || lt->u.base.selector != lds_ns) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2971, __FUNCTION__); <->u.ns; })->level); | ||||||
2972 | |||||||
2973 | /* Now preserve various other info from the definition. */ | ||||||
2974 | TREE_ADDRESSABLE (newdecl)((newdecl)->base.addressable_flag) = TREE_ADDRESSABLE (olddecl)((olddecl)->base.addressable_flag); | ||||||
2975 | TREE_ASM_WRITTEN (newdecl)((newdecl)->base.asm_written_flag) = TREE_ASM_WRITTEN (olddecl)((olddecl)->base.asm_written_flag); | ||||||
2976 | DECL_COMMON (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2976, __FUNCTION__))->decl_with_vis.common_flag) = DECL_COMMON (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2976, __FUNCTION__))->decl_with_vis.common_flag); | ||||||
2977 | COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl)overwrite_decl_assembler_name (newdecl, ((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2977, __FUNCTION__))->decl_with_vis.assembler_name)); | ||||||
2978 | |||||||
2979 | /* Warn about conflicting visibility specifications. */ | ||||||
2980 | if (DECL_VISIBILITY_SPECIFIED (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2980, __FUNCTION__))->decl_with_vis.visibility_specified ) | ||||||
2981 | && DECL_VISIBILITY_SPECIFIED (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2981, __FUNCTION__))->decl_with_vis.visibility_specified ) | ||||||
2982 | && DECL_VISIBILITY (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2982, __FUNCTION__))->decl_with_vis.visibility) != DECL_VISIBILITY (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2982, __FUNCTION__))->decl_with_vis.visibility)) | ||||||
2983 | { | ||||||
2984 | auto_diagnostic_group d; | ||||||
2985 | if (warning_at (newdecl_loc, OPT_Wattributes, | ||||||
2986 | "%qD: visibility attribute ignored because it " | ||||||
2987 | "conflicts with previous declaration", newdecl)) | ||||||
2988 | inform (olddecl_loc, | ||||||
2989 | "previous declaration of %qD", olddecl); | ||||||
2990 | } | ||||||
2991 | /* Choose the declaration which specified visibility. */ | ||||||
2992 | if (DECL_VISIBILITY_SPECIFIED (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2992, __FUNCTION__))->decl_with_vis.visibility_specified )) | ||||||
2993 | { | ||||||
2994 | DECL_VISIBILITY (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2994, __FUNCTION__))->decl_with_vis.visibility) = DECL_VISIBILITY (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2994, __FUNCTION__))->decl_with_vis.visibility); | ||||||
2995 | DECL_VISIBILITY_SPECIFIED (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2995, __FUNCTION__))->decl_with_vis.visibility_specified ) = 1; | ||||||
2996 | } | ||||||
2997 | /* Init priority used to be merged from newdecl to olddecl by the memcpy, | ||||||
2998 | so keep this behavior. */ | ||||||
2999 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) && DECL_HAS_INIT_PRIORITY_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 2999, __FUNCTION__, (VAR_DECL)))->decl_with_vis.init_priority_p )) | ||||||
3000 | { | ||||||
3001 | SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl))(decl_init_priority_insert (olddecl, (decl_init_priority_lookup (newdecl)))); | ||||||
3002 | DECL_HAS_INIT_PRIORITY_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3002, __FUNCTION__, (VAR_DECL)))->decl_with_vis.init_priority_p ) = 1; | ||||||
3003 | } | ||||||
3004 | /* Likewise for DECL_ALIGN, DECL_USER_ALIGN and DECL_PACKED. */ | ||||||
3005 | if (DECL_ALIGN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3005, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3005, __FUNCTION__))->decl_common.align) - 1) : 0) > DECL_ALIGN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3005, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3005, __FUNCTION__))->decl_common.align) - 1) : 0)) | ||||||
3006 | { | ||||||
3007 | SET_DECL_ALIGN (newdecl, DECL_ALIGN (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3007, __FUNCTION__))->decl_common.align) = ffs_hwi ((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3007, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3007, __FUNCTION__))->decl_common.align) - 1) : 0))); | ||||||
3008 | DECL_USER_ALIGN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3008, __FUNCTION__))->base.u.bits.user_align) |= DECL_USER_ALIGN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3008, __FUNCTION__))->base.u.bits.user_align); | ||||||
3009 | } | ||||||
3010 | else if (DECL_ALIGN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3010, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3010, __FUNCTION__))->decl_common.align) - 1) : 0) == DECL_ALIGN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3010, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3010, __FUNCTION__))->decl_common.align) - 1) : 0) | ||||||
3011 | && DECL_USER_ALIGN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3011, __FUNCTION__))->base.u.bits.user_align) != DECL_USER_ALIGN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3011, __FUNCTION__))->base.u.bits.user_align)) | ||||||
3012 | DECL_USER_ALIGN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3012, __FUNCTION__))->base.u.bits.user_align) = 1; | ||||||
3013 | |||||||
3014 | DECL_USER_ALIGN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3014, __FUNCTION__))->base.u.bits.user_align) = DECL_USER_ALIGN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3014, __FUNCTION__))->base.u.bits.user_align); | ||||||
3015 | if (DECL_WARN_IF_NOT_ALIGN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3015, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3015, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0) | ||||||
3016 | > DECL_WARN_IF_NOT_ALIGN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3016, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3016, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0)) | ||||||
3017 | SET_DECL_WARN_IF_NOT_ALIGN (newdecl,(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3018, __FUNCTION__))->decl_common.warn_if_not_align) = ffs_hwi ((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3018, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3018, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0))) | ||||||
3018 | DECL_WARN_IF_NOT_ALIGN (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3018, __FUNCTION__))->decl_common.warn_if_not_align) = ffs_hwi ((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3018, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3018, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0))); | ||||||
3019 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FIELD_DECL) | ||||||
3020 | DECL_PACKED (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3020, __FUNCTION__, (FIELD_DECL)))->base.u.bits.packed_flag ) = DECL_PACKED (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3020, __FUNCTION__, (FIELD_DECL)))->base.u.bits.packed_flag ); | ||||||
3021 | |||||||
3022 | /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced | ||||||
3023 | with that from NEWDECL below. */ | ||||||
3024 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3024, __FUNCTION__))->decl_common.lang_specific)) | ||||||
3025 | { | ||||||
3026 | gcc_checking_assert (DECL_LANG_SPECIFIC (olddecl)((void)(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3026, __FUNCTION__))->decl_common.lang_specific) != ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3027, __FUNCTION__))->decl_common.lang_specific)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3027, __FUNCTION__), 0 : 0)) | ||||||
3027 | != DECL_LANG_SPECIFIC (newdecl))((void)(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3026, __FUNCTION__))->decl_common.lang_specific) != ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3027, __FUNCTION__))->decl_common.lang_specific)) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3027, __FUNCTION__), 0 : 0)); | ||||||
3028 | ggc_free (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3028, __FUNCTION__))->decl_common.lang_specific)); | ||||||
3029 | } | ||||||
3030 | |||||||
3031 | /* Merge the USED information. */ | ||||||
3032 | if (TREE_USED (olddecl)((olddecl)->base.used_flag)) | ||||||
3033 | TREE_USED (newdecl)((newdecl)->base.used_flag) = 1; | ||||||
3034 | else if (TREE_USED (newdecl)((newdecl)->base.used_flag)) | ||||||
3035 | TREE_USED (olddecl)((olddecl)->base.used_flag) = 1; | ||||||
3036 | |||||||
3037 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) | ||||||
3038 | { | ||||||
3039 | if (DECL_READ_P (olddecl)((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3039, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag)) | ||||||
3040 | DECL_READ_P (newdecl)((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3040, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag) = 1; | ||||||
3041 | else if (DECL_READ_P (newdecl)((tree_check2 ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3041, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag)) | ||||||
3042 | DECL_READ_P (olddecl)((tree_check2 ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3042, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag) = 1; | ||||||
3043 | } | ||||||
3044 | |||||||
3045 | if (DECL_PRESERVE_P (olddecl)(contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3045, __FUNCTION__))->decl_common.preserve_flag) | ||||||
3046 | DECL_PRESERVE_P (newdecl)(contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3046, __FUNCTION__))->decl_common.preserve_flag = 1; | ||||||
3047 | else if (DECL_PRESERVE_P (newdecl)(contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3047, __FUNCTION__))->decl_common.preserve_flag) | ||||||
3048 | DECL_PRESERVE_P (olddecl)(contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3048, __FUNCTION__))->decl_common.preserve_flag = 1; | ||||||
3049 | |||||||
3050 | /* Merge the DECL_FUNCTION_VERSIONED information. newdecl will be copied | ||||||
3051 | to olddecl and deleted. */ | ||||||
3052 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL | ||||||
3053 | && DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3053, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) | ||||||
3054 | { | ||||||
3055 | /* Set the flag for newdecl so that it gets copied to olddecl. */ | ||||||
3056 | DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3056, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) = 1; | ||||||
3057 | /* newdecl will be purged after copying to olddecl and is no longer | ||||||
3058 | a version. */ | ||||||
3059 | cgraph_node::delete_function_version_by_decl (newdecl); | ||||||
3060 | } | ||||||
3061 | |||||||
3062 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
3063 | { | ||||||
3064 | int function_size; | ||||||
3065 | struct symtab_node *snode = symtab_node::get (olddecl); | ||||||
3066 | |||||||
3067 | function_size = sizeof (struct tree_decl_common); | ||||||
3068 | |||||||
3069 | memcpy ((char *) olddecl + sizeof (struct tree_common), | ||||||
3070 | (char *) newdecl + sizeof (struct tree_common), | ||||||
3071 | function_size - sizeof (struct tree_common)); | ||||||
3072 | |||||||
3073 | memcpy ((char *) olddecl + sizeof (struct tree_decl_common), | ||||||
3074 | (char *) newdecl + sizeof (struct tree_decl_common), | ||||||
3075 | sizeof (struct tree_function_decl) - sizeof (struct tree_decl_common)); | ||||||
3076 | |||||||
3077 | /* Preserve symtab node mapping. */ | ||||||
3078 | olddecl->decl_with_vis.symtab_node = snode; | ||||||
3079 | |||||||
3080 | if (new_template_info) | ||||||
3081 | /* If newdecl is a template instantiation, it is possible that | ||||||
3082 | the following sequence of events has occurred: | ||||||
3083 | |||||||
3084 | o A friend function was declared in a class template. The | ||||||
3085 | class template was instantiated. | ||||||
3086 | |||||||
3087 | o The instantiation of the friend declaration was | ||||||
3088 | recorded on the instantiation list, and is newdecl. | ||||||
3089 | |||||||
3090 | o Later, however, instantiate_class_template called pushdecl | ||||||
3091 | on the newdecl to perform name injection. But, pushdecl in | ||||||
3092 | turn called duplicate_decls when it discovered that another | ||||||
3093 | declaration of a global function with the same name already | ||||||
3094 | existed. | ||||||
3095 | |||||||
3096 | o Here, in duplicate_decls, we decided to clobber newdecl. | ||||||
3097 | |||||||
3098 | If we're going to do that, we'd better make sure that | ||||||
3099 | olddecl, and not newdecl, is on the list of | ||||||
3100 | instantiations so that if we try to do the instantiation | ||||||
3101 | again we won't get the clobbered declaration. */ | ||||||
3102 | reregister_specialization (newdecl, | ||||||
3103 | new_template_info, | ||||||
3104 | olddecl); | ||||||
3105 | } | ||||||
3106 | else | ||||||
3107 | { | ||||||
3108 | size_t size = tree_code_size (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code)); | ||||||
3109 | |||||||
3110 | memcpy ((char *) olddecl + sizeof (struct tree_common), | ||||||
3111 | (char *) newdecl + sizeof (struct tree_common), | ||||||
3112 | sizeof (struct tree_decl_common) - sizeof (struct tree_common)); | ||||||
3113 | |||||||
3114 | switch (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code)) | ||||||
3115 | { | ||||||
3116 | case LABEL_DECL: | ||||||
3117 | case VAR_DECL: | ||||||
3118 | case RESULT_DECL: | ||||||
3119 | case PARM_DECL: | ||||||
3120 | case FIELD_DECL: | ||||||
3121 | case TYPE_DECL: | ||||||
3122 | case CONST_DECL: | ||||||
3123 | { | ||||||
3124 | struct symtab_node *snode = NULL__null; | ||||||
3125 | |||||||
3126 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) | ||||||
3127 | && (TREE_STATIC (olddecl)((olddecl)->base.static_flag) || TREE_PUBLIC (olddecl)((olddecl)->base.public_flag) | ||||||
3128 | || DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3128, __FUNCTION__))->decl_common.decl_flag_1))) | ||||||
3129 | snode = symtab_node::get (olddecl); | ||||||
3130 | memcpy ((char *) olddecl + sizeof (struct tree_decl_common), | ||||||
3131 | (char *) newdecl + sizeof (struct tree_decl_common), | ||||||
3132 | size - sizeof (struct tree_decl_common) | ||||||
3133 | + TREE_CODE_LENGTH (TREE_CODE (newdecl))tree_code_length_tmpl <0>::tree_code_length[(int) (((enum tree_code) (newdecl)->base.code))] * sizeof (char *)); | ||||||
3134 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) | ||||||
3135 | olddecl->decl_with_vis.symtab_node = snode; | ||||||
3136 | } | ||||||
3137 | break; | ||||||
3138 | default: | ||||||
3139 | memcpy ((char *) olddecl + sizeof (struct tree_decl_common), | ||||||
3140 | (char *) newdecl + sizeof (struct tree_decl_common), | ||||||
3141 | sizeof (struct tree_decl_non_common) - sizeof (struct tree_decl_common) | ||||||
3142 | + TREE_CODE_LENGTH (TREE_CODE (newdecl))tree_code_length_tmpl <0>::tree_code_length[(int) (((enum tree_code) (newdecl)->base.code))] * sizeof (char *)); | ||||||
3143 | break; | ||||||
3144 | } | ||||||
3145 | } | ||||||
3146 | |||||||
3147 | if (VAR_OR_FUNCTION_DECL_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL || (( enum tree_code) (newdecl)->base.code) == FUNCTION_DECL)) | ||||||
3148 | { | ||||||
3149 | if (DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3149, __FUNCTION__))->decl_common.decl_flag_1) | ||||||
3150 | || TREE_PUBLIC (olddecl)((olddecl)->base.public_flag) | ||||||
3151 | || TREE_STATIC (olddecl)((olddecl)->base.static_flag)) | ||||||
3152 | { | ||||||
3153 | /* Merge the section attribute. | ||||||
3154 | We want to issue an error if the sections conflict but that must be | ||||||
3155 | done later in decl_attributes since we are called before attributes | ||||||
3156 | are assigned. */ | ||||||
3157 | if (DECL_SECTION_NAME (newdecl)decl_section_name (newdecl) != NULL__null) | ||||||
3158 | set_decl_section_name (olddecl, newdecl); | ||||||
3159 | |||||||
3160 | if (DECL_ONE_ONLY (newdecl)(decl_comdat_group (newdecl) != (tree) __null && (((newdecl )->base.public_flag) || ((contains_struct_check ((newdecl) , (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3160, __FUNCTION__))->decl_common.decl_flag_1)))) | ||||||
3161 | { | ||||||
3162 | struct symtab_node *oldsym, *newsym; | ||||||
3163 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) | ||||||
3164 | oldsym = cgraph_node::get_create (olddecl); | ||||||
3165 | else | ||||||
3166 | oldsym = varpool_node::get_create (olddecl); | ||||||
3167 | newsym = symtab_node::get (newdecl); | ||||||
3168 | oldsym->set_comdat_group (newsym->get_comdat_group ()); | ||||||
3169 | } | ||||||
3170 | } | ||||||
3171 | |||||||
3172 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) | ||||||
3173 | && CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3173, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3173, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0))) | ||||||
3174 | { | ||||||
3175 | CP_DECL_THREAD_LOCAL_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3175, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3175, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)) = true; | ||||||
3176 | if (!processing_template_declscope_chain->x_processing_template_decl) | ||||||
3177 | set_decl_tls_model (olddecl, DECL_TLS_MODEL (newdecl)decl_tls_model (newdecl)); | ||||||
3178 | } | ||||||
3179 | } | ||||||
3180 | |||||||
3181 | DECL_UID (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3181, __FUNCTION__))->decl_minimal.uid) = olddecl_uid; | ||||||
3182 | |||||||
3183 | /* NEWDECL contains the merged attribute lists. | ||||||
3184 | Update OLDDECL to be the same. */ | ||||||
3185 | DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3185, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3185, __FUNCTION__))->decl_common.attributes); | ||||||
3186 | |||||||
3187 | /* If OLDDECL had its DECL_RTL instantiated, re-invoke make_decl_rtl | ||||||
3188 | so that encode_section_info has a chance to look at the new decl | ||||||
3189 | flags and attributes. */ | ||||||
3190 | if (DECL_RTL_SET_P (olddecl)(((tree_contains_struct[(((enum tree_code) (olddecl)->base .code))][(TS_DECL_WRTL)])) && (contains_struct_check ( (olddecl), (TS_DECL_WRTL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3190, __FUNCTION__))->decl_with_rtl.rtl != __null) | ||||||
3191 | && (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL | ||||||
3192 | || (VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) | ||||||
3193 | && TREE_STATIC (olddecl)((olddecl)->base.static_flag)))) | ||||||
3194 | make_decl_rtl (olddecl); | ||||||
3195 | |||||||
3196 | /* The NEWDECL will no longer be needed. Because every out-of-class | ||||||
3197 | declaration of a member results in a call to duplicate_decls, | ||||||
3198 | freeing these nodes represents in a significant savings. | ||||||
3199 | |||||||
3200 | Before releasing the node, be sore to remove function from symbol | ||||||
3201 | table that might have been inserted there to record comdat group. | ||||||
3202 | Be sure to however do not free DECL_STRUCT_FUNCTION because this | ||||||
3203 | structure is shared in between newdecl and oldecl. */ | ||||||
3204 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
3205 | DECL_STRUCT_FUNCTION (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3205, __FUNCTION__, (FUNCTION_DECL)))->function_decl.f) = NULL__null; | ||||||
3206 | if (VAR_OR_FUNCTION_DECL_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL || (( enum tree_code) (newdecl)->base.code) == FUNCTION_DECL)) | ||||||
3207 | { | ||||||
3208 | struct symtab_node *snode = symtab_node::get (newdecl); | ||||||
3209 | if (snode) | ||||||
3210 | snode->remove (); | ||||||
3211 | } | ||||||
3212 | |||||||
3213 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) | ||||||
3214 | { | ||||||
3215 | tree clone; | ||||||
3216 | FOR_EACH_CLONE (clone, olddecl)if (!(((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL && ((((contains_struct_check ((olddecl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_CTOR_IDENTIFIER]) || (((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_DTOR_IDENTIFIER])))) ; else for (clone = (((contains_struct_check (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->common.chain)); clone && ( ((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name) && ((!( (tree_not_check2 (((tree_check ((((contains_struct_check ((clone ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__, (IDENTIFIER_NODE)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)) & ((tree_not_check2 (((tree_check ((((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__, (IDENTIFIER_NODE)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) && !((((contains_struct_check ((clone) , (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_CTOR_IDENTIFIER]) || (((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_DTOR_IDENTIFIER]))); clone = (((contains_struct_check ( ((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3216, __FUNCTION__))->common.chain))) | ||||||
3217 | { | ||||||
3218 | DECL_ATTRIBUTES (clone)((contains_struct_check ((clone), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3218, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3218, __FUNCTION__))->decl_common.attributes); | ||||||
3219 | DECL_PRESERVE_P (clone)(contains_struct_check ((clone), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3219, __FUNCTION__))->decl_common.preserve_flag |= DECL_PRESERVE_P (olddecl)(contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3219, __FUNCTION__))->decl_common.preserve_flag; | ||||||
3220 | } | ||||||
3221 | } | ||||||
3222 | |||||||
3223 | /* Remove the associated constraints for newdecl, if any, before | ||||||
3224 | reclaiming memory. */ | ||||||
3225 | if (flag_conceptsglobal_options.x_flag_concepts) | ||||||
3226 | remove_constraints (newdecl); | ||||||
3227 | |||||||
3228 | ggc_free (newdecl); | ||||||
3229 | |||||||
3230 | return olddecl; | ||||||
3231 | } | ||||||
3232 | |||||||
3233 | /* Return zero if the declaration NEWDECL is valid | ||||||
3234 | when the declaration OLDDECL (assumed to be for the same name) | ||||||
3235 | has already been seen. | ||||||
3236 | Otherwise return an error message format string with a %s | ||||||
3237 | where the identifier should go. */ | ||||||
3238 | |||||||
3239 | static const char * | ||||||
3240 | redeclaration_error_message (tree newdecl, tree olddecl) | ||||||
3241 | { | ||||||
3242 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL) | ||||||
3243 | { | ||||||
3244 | /* Because C++ can put things into name space for free, | ||||||
3245 | constructs like "typedef struct foo { ... } foo" | ||||||
3246 | would look like an erroneous redeclaration. */ | ||||||
3247 | if (same_type_p (TREE_TYPE (newdecl), TREE_TYPE (olddecl))comptypes ((((contains_struct_check ((newdecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3247, __FUNCTION__))->typed.type)), (((contains_struct_check ((olddecl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3247, __FUNCTION__))->typed.type)), 0)) | ||||||
3248 | return NULL__null; | ||||||
3249 | else | ||||||
3250 | return G_("redefinition of %q#D")"redefinition of %q#D"; | ||||||
3251 | } | ||||||
3252 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) | ||||||
3253 | { | ||||||
3254 | /* If this is a pure function, its olddecl will actually be | ||||||
3255 | the original initialization to `0' (which we force to call | ||||||
3256 | abort()). Don't complain about redefinition in this case. */ | ||||||
3257 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3257, __FUNCTION__))->decl_common.lang_specific) && DECL_PURE_VIRTUAL_P (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3257, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3257, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3257, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3257, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3257, __FUNCTION__); <->u.fn; })->pure_virtual) | ||||||
3258 | && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3258, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null) | ||||||
3259 | return NULL__null; | ||||||
3260 | |||||||
3261 | /* If both functions come from different namespaces, this is not | ||||||
3262 | a redeclaration - this is a conflict with a used function. */ | ||||||
3263 | if (DECL_NAMESPACE_SCOPE_P (olddecl)(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3263, __FUNCTION__))->decl_common.lang_flag_0) && (((enum tree_code) (olddecl)->base.code) == CONST_DECL || ((enum tree_code) (olddecl)->base.code) == PARM_DECL || ( (enum tree_code) (olddecl)->base.code) == TYPE_DECL || ((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL)) && ((enum tree_code) ((!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3263, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3263, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3263, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == NAMESPACE_DECL) | ||||||
3264 | && DECL_CONTEXT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3264, __FUNCTION__))->decl_minimal.context) != DECL_CONTEXT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3264, __FUNCTION__))->decl_minimal.context) | ||||||
3265 | && ! decls_match (olddecl, newdecl)) | ||||||
3266 | return G_("%qD conflicts with used function")"%qD conflicts with used function"; | ||||||
3267 | |||||||
3268 | /* We'll complain about linkage mismatches in | ||||||
3269 | warn_extern_redeclared_static. */ | ||||||
3270 | |||||||
3271 | /* Defining the same name twice is no good. */ | ||||||
3272 | if (decl_defined_p (olddecl) | ||||||
3273 | && decl_defined_p (newdecl)) | ||||||
3274 | { | ||||||
3275 | if (DECL_NAME (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3275, __FUNCTION__))->decl_minimal.name) == NULL_TREE(tree) __null) | ||||||
3276 | return G_("%q#D not declared in class")"%q#D not declared in class"; | ||||||
3277 | else if (!GNU_INLINE_P (olddecl)(((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3277, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3277, __FUNCTION__))->decl_common.attributes))) | ||||||
3278 | || GNU_INLINE_P (newdecl)(((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3278, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3278, __FUNCTION__))->decl_common.attributes)))) | ||||||
3279 | return G_("redefinition of %q#D")"redefinition of %q#D"; | ||||||
3280 | } | ||||||
3281 | |||||||
3282 | if (DECL_DECLARED_INLINE_P (olddecl)((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3282, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3282, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag )) | ||||||
3283 | { | ||||||
3284 | bool olda = GNU_INLINE_P (olddecl)(((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3284, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3284, __FUNCTION__))->decl_common.attributes))); | ||||||
3285 | bool newa = GNU_INLINE_P (newdecl)(((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3285, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3285, __FUNCTION__))->decl_common.attributes))); | ||||||
3286 | |||||||
3287 | if (olda != newa) | ||||||
3288 | { | ||||||
3289 | if (newa) | ||||||
3290 | return G_("%q+D redeclared inline with ""%q+D redeclared inline with " "%<gnu_inline%> attribute" | ||||||
3291 | "%<gnu_inline%> attribute")"%q+D redeclared inline with " "%<gnu_inline%> attribute"; | ||||||
3292 | else | ||||||
3293 | return G_("%q+D redeclared inline without ""%q+D redeclared inline without " "%<gnu_inline%> attribute" | ||||||
3294 | "%<gnu_inline%> attribute")"%q+D redeclared inline without " "%<gnu_inline%> attribute"; | ||||||
3295 | } | ||||||
3296 | } | ||||||
3297 | |||||||
3298 | if (deduction_guide_p (olddecl) | ||||||
3299 | && deduction_guide_p (newdecl)) | ||||||
3300 | return G_("deduction guide %q+D redeclared")"deduction guide %q+D redeclared"; | ||||||
3301 | |||||||
3302 | /* [class.compare.default]: A definition of a comparison operator as | ||||||
3303 | defaulted that appears in a class shall be the first declaration of | ||||||
3304 | that function. */ | ||||||
3305 | special_function_kind sfk = special_function_p (olddecl); | ||||||
3306 | if (sfk == sfk_comparison && DECL_DEFAULTED_FN (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3306, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3306, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL || (((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3306, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3306, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3306, __FUNCTION__); <->u.fn; })->defaulted_p)) | ||||||
3307 | return G_("comparison operator %q+D defaulted after ""comparison operator %q+D defaulted after " "its first declaration" | ||||||
3308 | "its first declaration")"comparison operator %q+D defaulted after " "its first declaration"; | ||||||
3309 | |||||||
3310 | check_abi_tag_redeclaration | ||||||
3311 | (olddecl, lookup_attribute ("abi_tag", DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3311, __FUNCTION__))->decl_common.attributes)), | ||||||
3312 | lookup_attribute ("abi_tag", DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3312, __FUNCTION__))->decl_common.attributes))); | ||||||
3313 | |||||||
3314 | return NULL__null; | ||||||
3315 | } | ||||||
3316 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) | ||||||
3317 | { | ||||||
3318 | tree nt, ot; | ||||||
3319 | |||||||
3320 | if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3320, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == CONCEPT_DECL) | ||||||
3321 | return G_("redefinition of %q#D")"redefinition of %q#D"; | ||||||
3322 | |||||||
3323 | if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3323, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) != FUNCTION_DECL) | ||||||
3324 | return redeclaration_error_message (DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3324, __FUNCTION__, (TEMPLATE_DECL))))))))->result, | ||||||
3325 | DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3325, __FUNCTION__, (TEMPLATE_DECL))))))))->result); | ||||||
3326 | |||||||
3327 | if (DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3327, __FUNCTION__, (TEMPLATE_DECL))))))))->result == DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3327, __FUNCTION__, (TEMPLATE_DECL))))))))->result) | ||||||
3328 | return NULL__null; | ||||||
3329 | |||||||
3330 | nt = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3330, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
3331 | if (DECL_TEMPLATE_INFO (nt)(((contains_struct_check ((template_info_decl_check ((nt), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3331, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3331, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) | ||||||
3332 | nt = DECL_TEMPLATE_RESULT (template_for_substitution (nt))((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((template_for_substitution (nt)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3332, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
3333 | ot = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3333, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
3334 | if (DECL_TEMPLATE_INFO (ot)(((contains_struct_check ((template_info_decl_check ((ot), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3334, __FUNCTION__)), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3334, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) | ||||||
3335 | ot = DECL_TEMPLATE_RESULT (template_for_substitution (ot))((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((template_for_substitution (ot)), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3335, __FUNCTION__, (TEMPLATE_DECL))))))))->result; | ||||||
3336 | if (DECL_INITIAL (nt)((contains_struct_check ((nt), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3336, __FUNCTION__))->decl_common.initial) && DECL_INITIAL (ot)((contains_struct_check ((ot), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3336, __FUNCTION__))->decl_common.initial) | ||||||
3337 | && (!GNU_INLINE_P (ot)(((tree_check ((ot), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3337, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((ot), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3337, __FUNCTION__))->decl_common.attributes))) || GNU_INLINE_P (nt)(((tree_check ((nt), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3337, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((nt), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3337, __FUNCTION__))->decl_common.attributes))))) | ||||||
3338 | return G_("redefinition of %q#D")"redefinition of %q#D"; | ||||||
3339 | |||||||
3340 | if (DECL_DECLARED_INLINE_P (ot)((tree_check ((ot), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3340, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && DECL_DECLARED_INLINE_P (nt)((tree_check ((nt), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3340, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag )) | ||||||
3341 | { | ||||||
3342 | bool olda = GNU_INLINE_P (ot)(((tree_check ((ot), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3342, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((ot), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3342, __FUNCTION__))->decl_common.attributes))); | ||||||
3343 | bool newa = GNU_INLINE_P (nt)(((tree_check ((nt), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3343, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((nt), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3343, __FUNCTION__))->decl_common.attributes))); | ||||||
3344 | |||||||
3345 | if (olda != newa) | ||||||
3346 | { | ||||||
3347 | if (newa) | ||||||
3348 | return G_("%q+D redeclared inline with ""%q+D redeclared inline with " "%<gnu_inline%> attribute" | ||||||
3349 | "%<gnu_inline%> attribute")"%q+D redeclared inline with " "%<gnu_inline%> attribute"; | ||||||
3350 | else | ||||||
3351 | return G_("%q+D redeclared inline without ""%q+D redeclared inline without " "%<gnu_inline%> attribute" | ||||||
3352 | "%<gnu_inline%> attribute")"%q+D redeclared inline without " "%<gnu_inline%> attribute"; | ||||||
3353 | } | ||||||
3354 | } | ||||||
3355 | |||||||
3356 | if (deduction_guide_p (olddecl) | ||||||
3357 | && deduction_guide_p (newdecl)) | ||||||
3358 | return G_("deduction guide %q+D redeclared")"deduction guide %q+D redeclared"; | ||||||
3359 | |||||||
3360 | /* Core issue #226 (C++11): | ||||||
3361 | |||||||
3362 | If a friend function template declaration specifies a | ||||||
3363 | default template-argument, that declaration shall be a | ||||||
3364 | definition and shall be the only declaration of the | ||||||
3365 | function template in the translation unit. */ | ||||||
3366 | if ((cxx_dialect != cxx98) | ||||||
3367 | && TREE_CODE (ot)((enum tree_code) (ot)->base.code) == FUNCTION_DECL && DECL_UNIQUE_FRIEND_P (ot)(((contains_struct_check (((tree_check ((ot), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3367, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3367, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) | ||||||
3368 | && !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3368, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments, | ||||||
3369 | /*is_primary=*/true, | ||||||
3370 | /*is_partial=*/false, | ||||||
3371 | /*is_friend_decl=*/2)) | ||||||
3372 | return G_("redeclaration of friend %q#D ""redeclaration of friend %q#D " "may not have default template arguments" | ||||||
3373 | "may not have default template arguments")"redeclaration of friend %q#D " "may not have default template arguments"; | ||||||
3374 | |||||||
3375 | return NULL__null; | ||||||
3376 | } | ||||||
3377 | else if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) | ||||||
3378 | && (CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3378, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3378, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)) | ||||||
3379 | != CP_DECL_THREAD_LOCAL_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3379, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3379, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0))) | ||||||
3380 | && (! DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3380, __FUNCTION__))->decl_common.lang_specific) | ||||||
3381 | || ! CP_DECL_THREADPRIVATE_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3381, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3381, __FUNCTION__))->decl_common.lang_specific)->u.base .threadprivate_or_deleted_p) | ||||||
3382 | || CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3382, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3382, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)))) | ||||||
3383 | { | ||||||
3384 | /* Only variables can be thread-local, and all declarations must | ||||||
3385 | agree on this property. */ | ||||||
3386 | if (CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3386, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3386, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0))) | ||||||
3387 | return G_("thread-local declaration of %q#D follows ""thread-local declaration of %q#D follows " "non-thread-local declaration" | ||||||
3388 | "non-thread-local declaration")"thread-local declaration of %q#D follows " "non-thread-local declaration"; | ||||||
3389 | else | ||||||
3390 | return G_("non-thread-local declaration of %q#D follows ""non-thread-local declaration of %q#D follows " "thread-local declaration" | ||||||
3391 | "thread-local declaration")"non-thread-local declaration of %q#D follows " "thread-local declaration"; | ||||||
3392 | } | ||||||
3393 | else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl)(!(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3393, __FUNCTION__))->decl_common.lang_flag_0) && (((enum tree_code) (newdecl)->base.code) == CONST_DECL || ((enum tree_code) (newdecl)->base.code) == PARM_DECL || ( (enum tree_code) (newdecl)->base.code) == TYPE_DECL || ((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL)) && ((enum tree_code) ((!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3393, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3393, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3393, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == NAMESPACE_DECL)) | ||||||
3394 | { | ||||||
3395 | /* The objects have been declared at namespace scope. If either | ||||||
3396 | is a member of an anonymous union, then this is an invalid | ||||||
3397 | redeclaration. For example: | ||||||
3398 | |||||||
3399 | int i; | ||||||
3400 | union { int i; }; | ||||||
3401 | |||||||
3402 | is invalid. */ | ||||||
3403 | if ((VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) && DECL_ANON_UNION_VAR_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3403, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3403, __FUNCTION__))->decl_common.lang_flag_4))) | ||||||
3404 | || (VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) && DECL_ANON_UNION_VAR_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3404, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3404, __FUNCTION__))->decl_common.lang_flag_4)))) | ||||||
3405 | return G_("redeclaration of %q#D")"redeclaration of %q#D"; | ||||||
3406 | /* If at least one declaration is a reference, there is no | ||||||
3407 | conflict. For example: | ||||||
3408 | |||||||
3409 | int i = 3; | ||||||
3410 | extern int i; | ||||||
3411 | |||||||
3412 | is valid. */ | ||||||
3413 | if (DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3413, __FUNCTION__))->decl_common.decl_flag_1) || DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3413, __FUNCTION__))->decl_common.decl_flag_1)) | ||||||
3414 | return NULL__null; | ||||||
3415 | |||||||
3416 | /* Static data member declared outside a class definition | ||||||
3417 | if the variable is defined within the class with constexpr | ||||||
3418 | specifier is declaration rather than definition (and | ||||||
3419 | deprecated). */ | ||||||
3420 | if (cxx_dialect >= cxx17 | ||||||
3421 | && VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) | ||||||
3422 | && DECL_CLASS_SCOPE_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3422, __FUNCTION__))->decl_minimal.context) && ( tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3422, __FUNCTION__))->decl_minimal.context))->base.code ))] == tcc_type)) | ||||||
3423 | && DECL_DECLARED_CONSTEXPR_P (olddecl)((contains_struct_check (((tree_check2 (((((enum tree_code) ( olddecl)->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3423, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3423, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3423, __FUNCTION__))->decl_common.lang_flag_8) | ||||||
3424 | && !DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3424, __FUNCTION__))->decl_common.initial)) | ||||||
3425 | { | ||||||
3426 | DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3426, __FUNCTION__))->decl_common.decl_flag_1) = 1; | ||||||
3427 | /* For now, only warn with explicit -Wdeprecated. */ | ||||||
3428 | if (OPTION_SET_P (warn_deprecated)global_options_set.x_warn_deprecated) | ||||||
3429 | { | ||||||
3430 | auto_diagnostic_group d; | ||||||
3431 | if (warning_at (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3431, __FUNCTION__))->decl_minimal.locus), OPT_Wdeprecated, | ||||||
3432 | "redundant redeclaration of %<constexpr%> " | ||||||
3433 | "static data member %qD", newdecl)) | ||||||
3434 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3434, __FUNCTION__))->decl_minimal.locus), | ||||||
3435 | "previous declaration of %qD", olddecl); | ||||||
3436 | } | ||||||
3437 | return NULL__null; | ||||||
3438 | } | ||||||
3439 | |||||||
3440 | /* Reject two definitions. */ | ||||||
3441 | return G_("redefinition of %q#D")"redefinition of %q#D"; | ||||||
3442 | } | ||||||
3443 | else | ||||||
3444 | { | ||||||
3445 | /* Objects declared with block scope: */ | ||||||
3446 | /* Reject two definitions, and reject a definition | ||||||
3447 | together with an external reference. */ | ||||||
3448 | if (!(DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3448, __FUNCTION__))->decl_common.decl_flag_1) && DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3448, __FUNCTION__))->decl_common.decl_flag_1))) | ||||||
3449 | return G_("redeclaration of %q#D")"redeclaration of %q#D"; | ||||||
3450 | return NULL__null; | ||||||
3451 | } | ||||||
3452 | } | ||||||
3453 | |||||||
3454 | |||||||
3455 | /* Hash and equality functions for the named_label table. */ | ||||||
3456 | |||||||
3457 | hashval_t | ||||||
3458 | named_label_hash::hash (const value_type entry) | ||||||
3459 | { | ||||||
3460 | return IDENTIFIER_HASH_VALUE (entry->name)((tree_check ((entry->name), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3460, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ); | ||||||
3461 | } | ||||||
3462 | |||||||
3463 | bool | ||||||
3464 | named_label_hash::equal (const value_type entry, compare_type name) | ||||||
3465 | { | ||||||
3466 | return name == entry->name; | ||||||
3467 | } | ||||||
3468 | |||||||
3469 | /* Look for a label named ID in the current function. If one cannot | ||||||
3470 | be found, create one. Return the named_label_entry, or NULL on | ||||||
3471 | failure. */ | ||||||
3472 | |||||||
3473 | static named_label_entry * | ||||||
3474 | lookup_label_1 (tree id, bool making_local_p) | ||||||
3475 | { | ||||||
3476 | auto_cond_timevar tv (TV_NAME_LOOKUP); | ||||||
3477 | |||||||
3478 | /* You can't use labels at global scope. */ | ||||||
3479 | if (current_function_decl == NULL_TREE(tree) __null) | ||||||
3480 | { | ||||||
3481 | error ("label %qE referenced outside of any function", id); | ||||||
3482 | return NULL__null; | ||||||
3483 | } | ||||||
3484 | |||||||
3485 | if (!named_labels((cfun + 0)->language)->x_named_labels) | ||||||
3486 | named_labels((cfun + 0)->language)->x_named_labels = hash_table<named_label_hash>::create_ggc (13); | ||||||
3487 | |||||||
3488 | hashval_t hash = IDENTIFIER_HASH_VALUE (id)((tree_check ((id), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3488, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ); | ||||||
3489 | named_label_entry **slot | ||||||
3490 | = named_labels((cfun + 0)->language)->x_named_labels->find_slot_with_hash (id, hash, INSERT); | ||||||
3491 | named_label_entry *old = *slot; | ||||||
3492 | |||||||
3493 | if (old && old->label_decl) | ||||||
3494 | { | ||||||
3495 | if (!making_local_p) | ||||||
3496 | return old; | ||||||
3497 | |||||||
3498 | if (old->binding_level == current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))) | ||||||
3499 | { | ||||||
3500 | error ("local label %qE conflicts with existing label", id); | ||||||
3501 | inform (DECL_SOURCE_LOCATION (old->label_decl)((contains_struct_check ((old->label_decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3501, __FUNCTION__))->decl_minimal.locus), "previous label"); | ||||||
3502 | return NULL__null; | ||||||
3503 | } | ||||||
3504 | } | ||||||
3505 | |||||||
3506 | /* We are making a new decl, create or reuse the named_label_entry */ | ||||||
3507 | named_label_entry *ent = NULL__null; | ||||||
3508 | if (old && !old->label_decl) | ||||||
3509 | ent = old; | ||||||
3510 | else | ||||||
3511 | { | ||||||
3512 | ent = ggc_cleared_alloc<named_label_entry> (); | ||||||
3513 | ent->name = id; | ||||||
3514 | ent->outer = old; | ||||||
3515 | *slot = ent; | ||||||
3516 | } | ||||||
3517 | |||||||
3518 | /* Now create the LABEL_DECL. */ | ||||||
3519 | tree decl = build_decl (input_location, LABEL_DECL, id, void_type_nodeglobal_trees[TI_VOID_TYPE]); | ||||||
3520 | |||||||
3521 | DECL_CONTEXT (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3521, __FUNCTION__))->decl_minimal.context) = current_function_decl; | ||||||
3522 | SET_DECL_MODE (decl, VOIDmode)((contains_struct_check ((decl), (TS_DECL_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3522, __FUNCTION__))->decl_common.mode = (((void) 0, E_VOIDmode ))); | ||||||
3523 | if (making_local_p) | ||||||
3524 | { | ||||||
3525 | C_DECLARED_LABEL_FLAG (decl)((tree_not_check2 ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3525, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1) = true; | ||||||
3526 | DECL_CHAIN (decl)(((contains_struct_check (((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3526, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3526, __FUNCTION__))->common.chain)) = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names; | ||||||
3527 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names = decl; | ||||||
3528 | } | ||||||
3529 | |||||||
3530 | ent->label_decl = decl; | ||||||
3531 | |||||||
3532 | return ent; | ||||||
3533 | } | ||||||
3534 | |||||||
3535 | /* Wrapper for lookup_label_1. */ | ||||||
3536 | |||||||
3537 | tree | ||||||
3538 | lookup_label (tree id) | ||||||
3539 | { | ||||||
3540 | named_label_entry *ent = lookup_label_1 (id, false); | ||||||
3541 | return ent ? ent->label_decl : NULL_TREE(tree) __null; | ||||||
3542 | } | ||||||
3543 | |||||||
3544 | tree | ||||||
3545 | declare_local_label (tree id) | ||||||
3546 | { | ||||||
3547 | named_label_entry *ent = lookup_label_1 (id, true); | ||||||
3548 | return ent ? ent->label_decl : NULL_TREE(tree) __null; | ||||||
3549 | } | ||||||
3550 | |||||||
3551 | /* Returns nonzero if it is ill-formed to jump past the declaration of | ||||||
3552 | DECL. Returns 2 if it's also a real problem. */ | ||||||
3553 | |||||||
3554 | static int | ||||||
3555 | decl_jump_unsafe (tree decl) | ||||||
3556 | { | ||||||
3557 | /* [stmt.dcl]/3: A program that jumps from a point where a local variable | ||||||
3558 | with automatic storage duration is not in scope to a point where it is | ||||||
3559 | in scope is ill-formed unless the variable has scalar type, class type | ||||||
3560 | with a trivial default constructor and a trivial destructor, a | ||||||
3561 | cv-qualified version of one of these types, or an array of one of the | ||||||
3562 | preceding types and is declared without an initializer (8.5). */ | ||||||
3563 | tree type = TREE_TYPE (decl)((contains_struct_check ((decl), (TS_TYPED), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3563, __FUNCTION__))->typed.type); | ||||||
3564 | |||||||
3565 | if (!VAR_P (decl)(((enum tree_code) (decl)->base.code) == VAR_DECL) || TREE_STATIC (decl)((decl)->base.static_flag) | ||||||
3566 | || type == error_mark_nodeglobal_trees[TI_ERROR_MARK]) | ||||||
3567 | return 0; | ||||||
3568 | |||||||
3569 | if (DECL_NONTRIVIALLY_INITIALIZED_P (decl)(((tree_not_check2 (((tree_check ((decl), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3569, __FUNCTION__, (VAR_DECL)))), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3569, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_6)) | ||||||
3570 | || variably_modified_type_p (type, NULL_TREE(tree) __null)) | ||||||
3571 | return 2; | ||||||
3572 | |||||||
3573 | if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)(((tree_class_check ((type), (tcc_type), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3573, __FUNCTION__))->type_common.lang_flag_4))) | ||||||
3574 | return 1; | ||||||
3575 | |||||||
3576 | return 0; | ||||||
3577 | } | ||||||
3578 | |||||||
3579 | /* A subroutine of check_previous_goto_1 and check_goto to identify a branch | ||||||
3580 | to the user. */ | ||||||
3581 | |||||||
3582 | static bool | ||||||
3583 | identify_goto (tree decl, location_t loc, const location_t *locus, | ||||||
3584 | diagnostic_t diag_kind) | ||||||
3585 | { | ||||||
3586 | bool complained | ||||||
3587 | = emit_diagnostic (diag_kind, loc, 0, | ||||||
3588 | decl ? N_("jump to label %qD")"jump to label %qD" | ||||||
3589 | : N_("jump to case label")"jump to case label", decl); | ||||||
3590 | if (complained && locus) | ||||||
3591 | inform (*locus, " from here"); | ||||||
3592 | return complained; | ||||||
3593 | } | ||||||
3594 | |||||||
3595 | /* Check that a single previously seen jump to a newly defined label | ||||||
3596 | is OK. DECL is the LABEL_DECL or 0; LEVEL is the binding_level for | ||||||
3597 | the jump context; NAMES are the names in scope in LEVEL at the jump | ||||||
3598 | context; LOCUS is the source position of the jump or 0. Returns | ||||||
3599 | true if all is well. */ | ||||||
3600 | |||||||
3601 | static bool | ||||||
3602 | check_previous_goto_1 (tree decl, cp_binding_level* level, tree names, | ||||||
3603 | bool exited_omp, const location_t *locus) | ||||||
3604 | { | ||||||
3605 | cp_binding_level *b; | ||||||
3606 | bool complained = false; | ||||||
3607 | int identified = 0; | ||||||
3608 | bool saw_eh = false, saw_omp = false, saw_tm = false, saw_cxif = false; | ||||||
3609 | bool saw_ceif = false, saw_se = false; | ||||||
3610 | |||||||
3611 | if (exited_omp) | ||||||
3612 | { | ||||||
3613 | complained = identify_goto (decl, input_location, locus, DK_ERROR); | ||||||
3614 | if (complained) | ||||||
3615 | inform (input_location, " exits OpenMP structured block"); | ||||||
3616 | saw_omp = true; | ||||||
3617 | identified = 2; | ||||||
3618 | } | ||||||
3619 | |||||||
3620 | for (b = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); b ; b = b->level_chain) | ||||||
3621 | { | ||||||
3622 | tree new_decls, old_decls = (b == level ? names : NULL_TREE(tree) __null); | ||||||
3623 | |||||||
3624 | for (new_decls = b->names; new_decls != old_decls; | ||||||
3625 | new_decls = (DECL_P (new_decls)(tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code ) (new_decls)->base.code))] == tcc_declaration) ? DECL_CHAIN (new_decls)(((contains_struct_check (((contains_struct_check ((new_decls ), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3625, __FUNCTION__))), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3625, __FUNCTION__))->common.chain)) | ||||||
3626 | : TREE_CHAIN (new_decls)((contains_struct_check ((new_decls), (TS_COMMON), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3626, __FUNCTION__))->common.chain))) | ||||||
3627 | { | ||||||
3628 | int problem = decl_jump_unsafe (new_decls); | ||||||
3629 | if (! problem) | ||||||
3630 | continue; | ||||||
3631 | |||||||
3632 | if (!identified) | ||||||
3633 | { | ||||||
3634 | complained = identify_goto (decl, input_location, locus, | ||||||
3635 | problem > 1 | ||||||
3636 | ? DK_ERROR : DK_PERMERROR); | ||||||
3637 | identified = 1; | ||||||
3638 | } | ||||||
3639 | if (complained) | ||||||
3640 | { | ||||||
3641 | if (problem > 1) | ||||||
3642 | inform (DECL_SOURCE_LOCATION (new_decls)((contains_struct_check ((new_decls), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3642, __FUNCTION__))->decl_minimal.locus), | ||||||
3643 | " crosses initialization of %q#D", new_decls); | ||||||
3644 | else | ||||||
3645 | inform (DECL_SOURCE_LOCATION (new_decls)((contains_struct_check ((new_decls), (TS_DECL_MINIMAL), "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.cc" , 3645, __FUNCTION__))->decl_minimal.locus), | ||||||
3646 | " enters scope of %q#D, which has " | ||||||
3647 | "non-trivial destructor", new_decls); | ||||||
3648 | } | ||||||
3649 | } | ||||||
3650 | |||||||
3651 | if (b == level) | ||||||
3652 | break; | ||||||
3653 | |||||||
3654 | const char *inf = NULL__null; | ||||||
3655 | location_t loc = input_location; | ||||||
3656 | switch (b->kind) | ||||||
3657 | { | ||||||
3658 | case sk_try: | ||||||
3659 | if (!saw_eh) | ||||||
3660 | inf = G_(" enters %<try%> block")" enters %<try%> block"; | ||||||
3661 | saw_eh = true; | ||||||
3662 | break; | ||||||
3663 | |||||||
3664 | case sk_catch: | ||||||
3665 | if (!saw_eh) | ||||||
3666 | inf = G_(" enters %<catch%> block")" enters %<catch%> block"; | ||||||
3667 | saw_eh = true; | ||||||
3668 | break; | ||||||
3669 | |||||||
3670 | case sk_omp: | ||||||
3671 | if (!saw_omp) | ||||||
3672 | inf = G_(" enters OpenMP structured block")" enters OpenMP structured block"; | ||||||
3673 | saw_omp = true; | ||||||
3674 | break; | ||||||
3675 | |||||||
3676 | case sk_transaction: | ||||||
3677 | if (!saw_tm) | ||||||
3678 | inf = G_(" enters synchronized or atomic statement")" enters synchronized or atomic statement"; | ||||||
3679 | saw_tm = true; | ||||||
3680 | break; | ||||||
3681 | |||||||
3682 | case sk_stmt_expr: | ||||||
3683 | if (!saw_se) | ||||||
3684 | inf = G_(" enters statement expression")" enters statement expression"; | ||||||
3685 | saw_se = true; | ||||||
3686 | break; | ||||||
3687 | |||||||
3688 | case sk_block: | ||||||
3689 | if (!saw_cxif && level_for_constexpr_if (b->level_chain)) | ||||||
3690 | { | ||||||
3691 | inf = G_(" enters %<constexpr if%> statement")" enters %<constexpr if%> statement"; | ||||||
3692 | loc = EXPR_LOCATION (b->level_chain->this_entity)((((b->level_chain->this_entity)) && ((tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) ((b->level_chain ->this_entity))->base.code))]) >= tcc_reference && (tree_code_type_tmpl <0>::tree_code_type[(int) (((enum tree_code) ((b->level_chain->this_entity))->base.code ))]) <= tcc_expression)) ? (b->level_chain->this_entity )->exp.locus : ((location_t) 0)); | ||||||
3693 | saw_cxif = true; | ||||||
3694 | } | ||||||
3695 | else if (!saw_ceif && level_for |