File: | build/gcc/cp/decl.c |
Warning: | line 9822, column 4 Value stored to 'rqual' is never read |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* Process declarations and variables for -*- C++ -*- compiler. |
2 | Copyright (C) 1988-2021 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 "omp-general.h" |
57 | |
58 | /* Possible cases of bad specifiers type used by bad_specifiers. */ |
59 | enum bad_spec_place { |
60 | BSP_VAR, /* variable */ |
61 | BSP_PARM, /* parameter */ |
62 | BSP_TYPE, /* type */ |
63 | BSP_FIELD /* field */ |
64 | }; |
65 | |
66 | static const char *redeclaration_error_message (tree, tree); |
67 | |
68 | static int decl_jump_unsafe (tree); |
69 | static void require_complete_types_for_parms (tree); |
70 | static tree grok_reference_init (tree, tree, tree, int); |
71 | static tree grokvardecl (tree, tree, tree, const cp_decl_specifier_seq *, |
72 | int, int, int, bool, int, tree, location_t); |
73 | static void check_static_variable_definition (tree, tree); |
74 | static void record_unknown_type (tree, const char *); |
75 | static int member_function_or_else (tree, tree, enum overload_flags); |
76 | static tree local_variable_p_walkfn (tree *, int *, void *); |
77 | static const char *tag_name (enum tag_types); |
78 | static tree lookup_and_check_tag (enum tag_types, tree, TAG_how, bool); |
79 | static void maybe_deduce_size_from_array_init (tree, tree); |
80 | static void layout_var_decl (tree); |
81 | static tree check_initializer (tree, tree, int, vec<tree, va_gc> **); |
82 | static void make_rtl_for_nonlocal_decl (tree, tree, const char *); |
83 | static void copy_type_enum (tree , tree); |
84 | static void check_function_type (tree, tree); |
85 | static void finish_constructor_body (void); |
86 | static void begin_destructor_body (void); |
87 | static void finish_destructor_body (void); |
88 | static void record_key_method_defined (tree); |
89 | static tree create_array_type_for_decl (tree, tree, tree, location_t); |
90 | static tree get_atexit_node (void); |
91 | static tree get_dso_handle_node (void); |
92 | static tree start_cleanup_fn (void); |
93 | static void end_cleanup_fn (void); |
94 | static tree cp_make_fname_decl (location_t, tree, int); |
95 | static void initialize_predefined_identifiers (void); |
96 | static tree check_special_function_return_type |
97 | (special_function_kind, tree, tree, int, const location_t*); |
98 | static tree push_cp_library_fn (enum tree_code, tree, int); |
99 | static tree build_cp_library_fn (tree, enum tree_code, tree, int); |
100 | static void store_parm_decls (tree); |
101 | static void initialize_local_var (tree, tree); |
102 | static void expand_static_init (tree, tree); |
103 | static location_t smallest_type_location (const cp_decl_specifier_seq*); |
104 | |
105 | /* The following symbols are subsumed in the cp_global_trees array, and |
106 | listed here individually for documentation purposes. |
107 | |
108 | C++ extensions |
109 | tree wchar_decl_node; |
110 | |
111 | tree vtable_entry_type; |
112 | tree delta_type_node; |
113 | tree __t_desc_type_node; |
114 | |
115 | tree class_type_node; |
116 | tree unknown_type_node; |
117 | |
118 | Array type `vtable_entry_type[]' |
119 | |
120 | tree vtbl_type_node; |
121 | tree vtbl_ptr_type_node; |
122 | |
123 | Namespaces, |
124 | |
125 | tree std_node; |
126 | tree abi_node; |
127 | |
128 | A FUNCTION_DECL which can call `abort'. Not necessarily the |
129 | one that the user will declare, but sufficient to be called |
130 | by routines that want to abort the program. |
131 | |
132 | tree abort_fndecl; |
133 | |
134 | Used by RTTI |
135 | tree type_info_type_node, tinfo_decl_id, tinfo_decl_type; |
136 | tree tinfo_var_id; */ |
137 | |
138 | tree cp_global_trees[CPTI_MAX]; |
139 | |
140 | /* A list of objects which have constructors or destructors |
141 | which reside in namespace scope. The decl is stored in |
142 | the TREE_VALUE slot and the initializer is stored |
143 | in the TREE_PURPOSE slot. */ |
144 | tree static_aggregates; |
145 | |
146 | /* Like static_aggregates, but for thread_local variables. */ |
147 | tree tls_aggregates; |
148 | |
149 | /* A hash-map mapping from variable decls to the dynamic initializer for |
150 | the decl. This is currently only used by OpenMP. */ |
151 | decl_tree_map *dynamic_initializers; |
152 | |
153 | /* -- end of C++ */ |
154 | |
155 | /* A node for the integer constant 2. */ |
156 | |
157 | tree integer_two_node; |
158 | |
159 | /* vector of static decls. */ |
160 | vec<tree, va_gc> *static_decls; |
161 | |
162 | /* vector of keyed classes. */ |
163 | vec<tree, va_gc> *keyed_classes; |
164 | |
165 | /* Used only for jumps to as-yet undefined labels, since jumps to |
166 | defined labels can have their validity checked immediately. */ |
167 | |
168 | struct GTY((chain_next ("%h.next"))) named_label_use_entry { |
169 | struct named_label_use_entry *next; |
170 | /* The binding level to which this entry is *currently* attached. |
171 | This is initially the binding level in which the goto appeared, |
172 | but is modified as scopes are closed. */ |
173 | cp_binding_level *binding_level; |
174 | /* The head of the names list that was current when the goto appeared, |
175 | or the inner scope popped. These are the decls that will *not* be |
176 | skipped when jumping to the label. */ |
177 | tree names_in_scope; |
178 | /* The location of the goto, for error reporting. */ |
179 | location_t o_goto_locus; |
180 | /* True if an OpenMP structured block scope has been closed since |
181 | the goto appeared. This means that the branch from the label will |
182 | illegally exit an OpenMP scope. */ |
183 | bool in_omp_scope; |
184 | }; |
185 | |
186 | /* A list of all LABEL_DECLs in the function that have names. Here so |
187 | we can clear out their names' definitions at the end of the |
188 | function, and so we can check the validity of jumps to these labels. */ |
189 | |
190 | struct GTY((for_user)) named_label_entry { |
191 | |
192 | tree name; /* Name of decl. */ |
193 | |
194 | tree label_decl; /* LABEL_DECL, unless deleted local label. */ |
195 | |
196 | named_label_entry *outer; /* Outer shadowed chain. */ |
197 | |
198 | /* The binding level to which the label is *currently* attached. |
199 | This is initially set to the binding level in which the label |
200 | is defined, but is modified as scopes are closed. */ |
201 | cp_binding_level *binding_level; |
202 | |
203 | /* The head of the names list that was current when the label was |
204 | defined, or the inner scope popped. These are the decls that will |
205 | be skipped when jumping to the label. */ |
206 | tree names_in_scope; |
207 | |
208 | /* A vector of all decls from all binding levels that would be |
209 | crossed by a backward branch to the label. */ |
210 | vec<tree, va_gc> *bad_decls; |
211 | |
212 | /* A list of uses of the label, before the label is defined. */ |
213 | named_label_use_entry *uses; |
214 | |
215 | /* The following bits are set after the label is defined, and are |
216 | updated as scopes are popped. They indicate that a jump to the |
217 | label will illegally enter a scope of the given flavor. */ |
218 | bool in_try_scope; |
219 | bool in_catch_scope; |
220 | bool in_omp_scope; |
221 | bool in_transaction_scope; |
222 | bool in_constexpr_if; |
223 | }; |
224 | |
225 | #define named_labels((cfun + 0)->language)->x_named_labels cp_function_chain((cfun + 0)->language)->x_named_labels |
226 | |
227 | /* The number of function bodies which we are currently processing. |
228 | (Zero if we are at namespace scope, one inside the body of a |
229 | function, two inside the body of a function in a local class, etc.) */ |
230 | int function_depth; |
231 | |
232 | /* Whether the exception-specifier is part of a function type (i.e. C++17). */ |
233 | bool flag_noexcept_type; |
234 | |
235 | /* States indicating how grokdeclarator() should handle declspecs marked |
236 | with __attribute__((deprecated)). An object declared as |
237 | __attribute__((deprecated)) suppresses warnings of uses of other |
238 | deprecated items. */ |
239 | enum deprecated_states deprecated_state = DEPRECATED_NORMAL; |
240 | |
241 | |
242 | /* A list of VAR_DECLs whose type was incomplete at the time the |
243 | variable was declared. */ |
244 | |
245 | struct GTY(()) incomplete_var { |
246 | tree decl; |
247 | tree incomplete_type; |
248 | }; |
249 | |
250 | |
251 | static GTY(()) vec<incomplete_var, va_gc> *incomplete_vars; |
252 | |
253 | /* Returns the kind of template specialization we are currently |
254 | processing, given that it's declaration contained N_CLASS_SCOPES |
255 | explicit scope qualifications. */ |
256 | |
257 | tmpl_spec_kind |
258 | current_tmpl_spec_kind (int n_class_scopes) |
259 | { |
260 | int n_template_parm_scopes = 0; |
261 | int seen_specialization_p = 0; |
262 | int innermost_specialization_p = 0; |
263 | cp_binding_level *b; |
264 | |
265 | /* Scan through the template parameter scopes. */ |
266 | for (b = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
267 | b->kind == sk_template_parms; |
268 | b = b->level_chain) |
269 | { |
270 | /* If we see a specialization scope inside a parameter scope, |
271 | then something is wrong. That corresponds to a declaration |
272 | like: |
273 | |
274 | template <class T> template <> ... |
275 | |
276 | which is always invalid since [temp.expl.spec] forbids the |
277 | specialization of a class member template if the enclosing |
278 | class templates are not explicitly specialized as well. */ |
279 | if (b->explicit_spec_p) |
280 | { |
281 | if (n_template_parm_scopes == 0) |
282 | innermost_specialization_p = 1; |
283 | else |
284 | seen_specialization_p = 1; |
285 | } |
286 | else if (seen_specialization_p == 1) |
287 | return tsk_invalid_member_spec; |
288 | |
289 | ++n_template_parm_scopes; |
290 | } |
291 | |
292 | /* Handle explicit instantiations. */ |
293 | if (processing_explicit_instantiationscope_chain->x_processing_explicit_instantiation) |
294 | { |
295 | if (n_template_parm_scopes != 0) |
296 | /* We've seen a template parameter list during an explicit |
297 | instantiation. For example: |
298 | |
299 | template <class T> template void f(int); |
300 | |
301 | This is erroneous. */ |
302 | return tsk_invalid_expl_inst; |
303 | else |
304 | return tsk_expl_inst; |
305 | } |
306 | |
307 | if (n_template_parm_scopes < n_class_scopes) |
308 | /* We've not seen enough template headers to match all the |
309 | specialized classes present. For example: |
310 | |
311 | template <class T> void R<T>::S<T>::f(int); |
312 | |
313 | This is invalid; there needs to be one set of template |
314 | parameters for each class. */ |
315 | return tsk_insufficient_parms; |
316 | else if (n_template_parm_scopes == n_class_scopes) |
317 | /* We're processing a non-template declaration (even though it may |
318 | be a member of a template class.) For example: |
319 | |
320 | template <class T> void S<T>::f(int); |
321 | |
322 | The `class T' matches the `S<T>', leaving no template headers |
323 | corresponding to the `f'. */ |
324 | return tsk_none; |
325 | else if (n_template_parm_scopes > n_class_scopes + 1) |
326 | /* We've got too many template headers. For example: |
327 | |
328 | template <> template <class T> void f (T); |
329 | |
330 | There need to be more enclosing classes. */ |
331 | return tsk_excessive_parms; |
332 | else |
333 | /* This must be a template. It's of the form: |
334 | |
335 | template <class T> template <class U> void S<T>::f(U); |
336 | |
337 | This is a specialization if the innermost level was a |
338 | specialization; otherwise it's just a definition of the |
339 | template. */ |
340 | return innermost_specialization_p ? tsk_expl_spec : tsk_template; |
341 | } |
342 | |
343 | /* Exit the current scope. */ |
344 | |
345 | void |
346 | finish_scope (void) |
347 | { |
348 | poplevel (0, 0, 0); |
349 | } |
350 | |
351 | /* When a label goes out of scope, check to see if that label was used |
352 | in a valid manner, and issue any appropriate warnings or errors. */ |
353 | |
354 | static void |
355 | check_label_used (tree label) |
356 | { |
357 | if (!processing_template_declscope_chain->x_processing_template_decl) |
358 | { |
359 | if (DECL_INITIAL (label)((contains_struct_check ((label), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 359, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null) |
360 | { |
361 | location_t location; |
362 | |
363 | error ("label %q+D used but not defined", label); |
364 | location = input_location; |
365 | /* FIXME want (LOCATION_FILE (input_location), (line)0) */ |
366 | /* Avoid crashing later. */ |
367 | define_label (location, DECL_NAME (label)((contains_struct_check ((label), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 367, __FUNCTION__))->decl_minimal.name)); |
368 | } |
369 | else |
370 | warn_for_unused_label (label); |
371 | } |
372 | } |
373 | |
374 | /* Helper function to sort named label entries in a vector by DECL_UID. */ |
375 | |
376 | static int |
377 | sort_labels (const void *a, const void *b) |
378 | { |
379 | tree label1 = *(tree const *) a; |
380 | tree label2 = *(tree const *) b; |
381 | |
382 | /* DECL_UIDs can never be equal. */ |
383 | return DECL_UID (label1)((contains_struct_check ((label1), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 383, __FUNCTION__))->decl_minimal.uid) > DECL_UID (label2)((contains_struct_check ((label2), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 383, __FUNCTION__))->decl_minimal.uid) ? -1 : +1; |
384 | } |
385 | |
386 | /* At the end of a function, all labels declared within the function |
387 | go out of scope. BLOCK is the top-level block for the |
388 | function. */ |
389 | |
390 | static void |
391 | pop_labels (tree block) |
392 | { |
393 | if (!named_labels((cfun + 0)->language)->x_named_labels) |
394 | return; |
395 | |
396 | /* We need to add the labels to the block chain, so debug |
397 | information is emitted. But, we want the order to be stable so |
398 | need to sort them first. Otherwise the debug output could be |
399 | randomly ordered. I guess it's mostly stable, unless the hash |
400 | table implementation changes. */ |
401 | auto_vec<tree, 32> labels (named_labels((cfun + 0)->language)->x_named_labels->elements ()); |
402 | hash_table<named_label_hash>::iterator end (named_labels((cfun + 0)->language)->x_named_labels->end ()); |
403 | for (hash_table<named_label_hash>::iterator iter |
404 | (named_labels((cfun + 0)->language)->x_named_labels->begin ()); iter != end; ++iter) |
405 | { |
406 | named_label_entry *ent = *iter; |
407 | |
408 | gcc_checking_assert (!ent->outer)((void)(!(!ent->outer) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 408, __FUNCTION__), 0 : 0)); |
409 | if (ent->label_decl) |
410 | labels.quick_push (ent->label_decl); |
411 | ggc_free (ent); |
412 | } |
413 | named_labels((cfun + 0)->language)->x_named_labels = NULL__null; |
414 | labels.qsort (sort_labels)qsort (sort_labels); |
415 | |
416 | while (labels.length ()) |
417 | { |
418 | tree label = labels.pop (); |
419 | |
420 | DECL_CHAIN (label)(((contains_struct_check (((contains_struct_check ((label), ( TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 420, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 420, __FUNCTION__))->common.chain)) = BLOCK_VARS (block)((tree_check ((block), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 420, __FUNCTION__, (BLOCK)))->block.vars); |
421 | BLOCK_VARS (block)((tree_check ((block), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 421, __FUNCTION__, (BLOCK)))->block.vars) = label; |
422 | |
423 | check_label_used (label); |
424 | } |
425 | } |
426 | |
427 | /* At the end of a block with local labels, restore the outer definition. */ |
428 | |
429 | static void |
430 | pop_local_label (tree id, tree label) |
431 | { |
432 | check_label_used (label); |
433 | named_label_entry **slot = named_labels((cfun + 0)->language)->x_named_labels->find_slot_with_hash |
434 | (id, IDENTIFIER_HASH_VALUE (id)((tree_check ((id), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 434, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ), NO_INSERT); |
435 | named_label_entry *ent = *slot; |
436 | |
437 | if (ent->outer) |
438 | ent = ent->outer; |
439 | else |
440 | { |
441 | ent = ggc_cleared_alloc<named_label_entry> (); |
442 | ent->name = id; |
443 | } |
444 | *slot = ent; |
445 | } |
446 | |
447 | /* The following two routines are used to interface to Objective-C++. |
448 | The binding level is purposely treated as an opaque type. */ |
449 | |
450 | void * |
451 | objc_get_current_scope (void) |
452 | { |
453 | return current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
454 | } |
455 | |
456 | /* The following routine is used by the NeXT-style SJLJ exceptions; |
457 | variables get marked 'volatile' so as to not be clobbered by |
458 | _setjmp()/_longjmp() calls. All variables in the current scope, |
459 | as well as parent scopes up to (but not including) ENCLOSING_BLK |
460 | shall be thusly marked. */ |
461 | |
462 | void |
463 | objc_mark_locals_volatile (void *enclosing_blk) |
464 | { |
465 | cp_binding_level *scope; |
466 | |
467 | for (scope = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
468 | scope && scope != enclosing_blk; |
469 | scope = scope->level_chain) |
470 | { |
471 | tree decl; |
472 | |
473 | for (decl = scope->names; decl; decl = TREE_CHAIN (decl)((contains_struct_check ((decl), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 473, __FUNCTION__))->common.chain)) |
474 | objc_volatilize_decl (decl); |
475 | |
476 | /* Do not climb up past the current function. */ |
477 | if (scope->kind == sk_function_parms) |
478 | break; |
479 | } |
480 | } |
481 | |
482 | /* True if B is the level for the condition of a constexpr if. */ |
483 | |
484 | static bool |
485 | level_for_constexpr_if (cp_binding_level *b) |
486 | { |
487 | return (b->kind == sk_cond && b->this_entity |
488 | && TREE_CODE (b->this_entity)((enum tree_code) (b->this_entity)->base.code) == IF_STMT |
489 | && IF_STMT_CONSTEXPR_P (b->this_entity)((tree_not_check2 (((tree_check ((b->this_entity), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 489, __FUNCTION__, (IF_STMT)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 489, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)); |
490 | } |
491 | |
492 | /* Update data for defined and undefined labels when leaving a scope. */ |
493 | |
494 | int |
495 | poplevel_named_label_1 (named_label_entry **slot, cp_binding_level *bl) |
496 | { |
497 | named_label_entry *ent = *slot; |
498 | cp_binding_level *obl = bl->level_chain; |
499 | |
500 | if (ent->binding_level == bl) |
501 | { |
502 | tree decl; |
503 | |
504 | /* ENT->NAMES_IN_SCOPE may contain a mixture of DECLs and |
505 | TREE_LISTs representing OVERLOADs, so be careful. */ |
506 | for (decl = ent->names_in_scope; decl; decl = (DECL_P (decl)(tree_code_type[(int) (((enum tree_code) (decl)->base.code ))] == tcc_declaration) |
507 | ? DECL_CHAIN (decl)(((contains_struct_check (((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 507, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 507, __FUNCTION__))->common.chain)) |
508 | : TREE_CHAIN (decl)((contains_struct_check ((decl), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 508, __FUNCTION__))->common.chain))) |
509 | if (decl_jump_unsafe (decl)) |
510 | vec_safe_push (ent->bad_decls, decl); |
511 | |
512 | ent->binding_level = obl; |
513 | ent->names_in_scope = obl->names; |
514 | switch (bl->kind) |
515 | { |
516 | case sk_try: |
517 | ent->in_try_scope = true; |
518 | break; |
519 | case sk_catch: |
520 | ent->in_catch_scope = true; |
521 | break; |
522 | case sk_omp: |
523 | ent->in_omp_scope = true; |
524 | break; |
525 | case sk_transaction: |
526 | ent->in_transaction_scope = true; |
527 | break; |
528 | case sk_block: |
529 | if (level_for_constexpr_if (bl->level_chain)) |
530 | ent->in_constexpr_if = true; |
531 | break; |
532 | default: |
533 | break; |
534 | } |
535 | } |
536 | else if (ent->uses) |
537 | { |
538 | struct named_label_use_entry *use; |
539 | |
540 | for (use = ent->uses; use ; use = use->next) |
541 | if (use->binding_level == bl) |
542 | { |
543 | use->binding_level = obl; |
544 | use->names_in_scope = obl->names; |
545 | if (bl->kind == sk_omp) |
546 | use->in_omp_scope = true; |
547 | } |
548 | } |
549 | |
550 | return 1; |
551 | } |
552 | |
553 | /* Saved errorcount to avoid -Wunused-but-set-{parameter,variable} warnings |
554 | when errors were reported, except for -Werror-unused-but-set-*. */ |
555 | static int unused_but_set_errorcount; |
556 | |
557 | /* Exit a binding level. |
558 | Pop the level off, and restore the state of the identifier-decl mappings |
559 | that were in effect when this level was entered. |
560 | |
561 | If KEEP == 1, this level had explicit declarations, so |
562 | and create a "block" (a BLOCK node) for the level |
563 | to record its declarations and subblocks for symbol table output. |
564 | |
565 | If FUNCTIONBODY is nonzero, this level is the body of a function, |
566 | so create a block as if KEEP were set and also clear out all |
567 | label names. |
568 | |
569 | If REVERSE is nonzero, reverse the order of decls before putting |
570 | them into the BLOCK. */ |
571 | |
572 | tree |
573 | poplevel (int keep, int reverse, int functionbody) |
574 | { |
575 | tree link; |
576 | /* The chain of decls was accumulated in reverse order. |
577 | Put it into forward order, just for cleanliness. */ |
578 | tree decls; |
579 | tree subblocks; |
580 | tree block; |
581 | tree decl; |
582 | scope_kind kind; |
583 | |
584 | bool subtime = timevar_cond_start (TV_NAME_LOOKUP); |
585 | restart: |
586 | |
587 | block = NULL_TREE(tree) __null; |
588 | |
589 | 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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 590, __FUNCTION__), 0 : 0)) |
590 | && 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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 590, __FUNCTION__), 0 : 0)); |
591 | |
592 | if (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->kind == sk_cleanup) |
593 | functionbody = 0; |
594 | subblocks = functionbody >= 0 ? current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks : 0; |
595 | |
596 | 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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 596, __FUNCTION__), 0 : 0)); |
597 | |
598 | /* We used to use KEEP == 2 to indicate that the new block should go |
599 | at the beginning of the list of blocks at this binding level, |
600 | rather than the end. This hack is no longer used. */ |
601 | gcc_assert (keep == 0 || keep == 1)((void)(!(keep == 0 || keep == 1) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 601, __FUNCTION__), 0 : 0)); |
602 | |
603 | if (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->keep) |
604 | keep = 1; |
605 | |
606 | /* Any uses of undefined labels, and any defined labels, now operate |
607 | under constraints of next binding contour. */ |
608 | if (cfun(cfun + 0) && !functionbody && named_labels((cfun + 0)->language)->x_named_labels) |
609 | named_labels((cfun + 0)->language)->x_named_labels->traverse<cp_binding_level *, poplevel_named_label_1> |
610 | (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))); |
611 | |
612 | /* Get the decls in the order they were written. |
613 | Usually current_binding_level->names is in reverse order. |
614 | But parameter decls were previously put in forward order. */ |
615 | |
616 | decls = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names; |
617 | if (reverse) |
618 | { |
619 | decls = nreverse (decls); |
620 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names = decls; |
621 | } |
622 | |
623 | /* If there were any declarations or structure tags in that level, |
624 | or if this level is a function body, |
625 | create a BLOCK to record them for the life of this function. */ |
626 | block = NULL_TREE(tree) __null; |
627 | /* Avoid function body block if possible. */ |
628 | if (functionbody && subblocks && BLOCK_CHAIN (subblocks)((tree_check ((subblocks), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 628, __FUNCTION__, (BLOCK)))->block.chain) == NULL_TREE(tree) __null) |
629 | keep = 0; |
630 | else if (keep == 1 || functionbody) |
631 | block = make_node (BLOCK); |
632 | if (block != NULL_TREE(tree) __null) |
633 | { |
634 | BLOCK_VARS (block)((tree_check ((block), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 634, __FUNCTION__, (BLOCK)))->block.vars) = decls; |
635 | BLOCK_SUBBLOCKS (block)((tree_check ((block), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 635, __FUNCTION__, (BLOCK)))->block.subblocks) = subblocks; |
636 | } |
637 | |
638 | /* In each subblock, record that this is its superior. */ |
639 | if (keep >= 0) |
640 | for (link = subblocks; link; link = BLOCK_CHAIN (link)((tree_check ((link), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 640, __FUNCTION__, (BLOCK)))->block.chain)) |
641 | BLOCK_SUPERCONTEXT (link)((tree_check ((link), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 641, __FUNCTION__, (BLOCK)))->block.supercontext) = block; |
642 | |
643 | /* Before we remove the declarations first check for unused variables. */ |
644 | if ((warn_unused_variableglobal_options.x_warn_unused_variable || warn_unused_but_set_variableglobal_options.x_warn_unused_but_set_variable) |
645 | && current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->kind != sk_template_parms |
646 | && !processing_template_declscope_chain->x_processing_template_decl) |
647 | for (tree d = get_local_decls (); d; d = TREE_CHAIN (d)((contains_struct_check ((d), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 647, __FUNCTION__))->common.chain)) |
648 | { |
649 | /* There are cases where D itself is a TREE_LIST. See in |
650 | push_local_binding where the list of decls returned by |
651 | getdecls is built. */ |
652 | decl = TREE_CODE (d)((enum tree_code) (d)->base.code) == TREE_LIST ? TREE_VALUE (d)((tree_check ((d), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 652, __FUNCTION__, (TREE_LIST)))->list.value) : d; |
653 | |
654 | tree type = TREE_TYPE (decl)((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 654, __FUNCTION__))->typed.type); |
655 | if (VAR_P (decl)(((enum tree_code) (decl)->base.code) == VAR_DECL) |
656 | && (! TREE_USED (decl)((decl)->base.used_flag) || !DECL_READ_P (decl)((tree_check2 ((decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 656, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag)) |
657 | && ! DECL_IN_SYSTEM_HEADER (decl)(in_system_header_at (((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 657, __FUNCTION__))->decl_minimal.locus))) |
658 | /* For structured bindings, consider only real variables, not |
659 | subobjects. */ |
660 | && (DECL_DECOMPOSITION_P (decl)((((enum tree_code) (decl)->base.code) == VAR_DECL) && ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 660, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 660, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 660, __FUNCTION__))->decl_common.lang_specific); if (!(( (enum tree_code) (decl)->base.code) == VAR_DECL) || lt-> u.base.selector != lds_decomp) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 660, __FUNCTION__); <->u.decomp; })->base) |
661 | : (DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 661, __FUNCTION__))->decl_minimal.name) && !DECL_ARTIFICIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 661, __FUNCTION__))->decl_common.artificial_flag))) |
662 | && type != error_mark_nodeglobal_trees[TI_ERROR_MARK] |
663 | && (!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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 663, __FUNCTION__))->type_common.lang_flag_5)) |
664 | || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)(((tree_class_check ((type), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 664, __FUNCTION__))->type_common.lang_flag_4)) |
665 | || lookup_attribute ("warn_unused", |
666 | TYPE_ATTRIBUTES (TREE_TYPE (decl))((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 666, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 666, __FUNCTION__))->type_common.attributes)))) |
667 | { |
668 | if (! TREE_USED (decl)((decl)->base.used_flag)) |
669 | { |
670 | if (!DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 670, __FUNCTION__))->decl_minimal.name) && DECL_DECOMPOSITION_P (decl)((((enum tree_code) (decl)->base.code) == VAR_DECL) && ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 670, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 670, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false)) |
671 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 671, __FUNCTION__))->decl_minimal.locus), |
672 | OPT_Wunused_variable, |
673 | "unused structured binding declaration"); |
674 | else |
675 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 675, __FUNCTION__))->decl_minimal.locus), |
676 | OPT_Wunused_variable, "unused variable %qD", decl); |
677 | } |
678 | else if (DECL_CONTEXT (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 678, __FUNCTION__))->decl_minimal.context) == current_function_decl |
679 | // For -Wunused-but-set-variable leave references alone. |
680 | && !TYPE_REF_P (TREE_TYPE (decl))(((enum tree_code) (((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 680, __FUNCTION__))->typed.type))->base.code) == REFERENCE_TYPE ) |
681 | && errorcount(global_dc)->diagnostic_count[(int) (DK_ERROR)] == unused_but_set_errorcount) |
682 | { |
683 | if (!DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 683, __FUNCTION__))->decl_minimal.name) && DECL_DECOMPOSITION_P (decl)((((enum tree_code) (decl)->base.code) == VAR_DECL) && ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 683, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 683, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false)) |
684 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 684, __FUNCTION__))->decl_minimal.locus), |
685 | OPT_Wunused_but_set_variable, "structured " |
686 | "binding declaration set but not used"); |
687 | else |
688 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 688, __FUNCTION__))->decl_minimal.locus), |
689 | OPT_Wunused_but_set_variable, |
690 | "variable %qD set but not used", decl); |
691 | unused_but_set_errorcount = errorcount(global_dc)->diagnostic_count[(int) (DK_ERROR)]; |
692 | } |
693 | } |
694 | } |
695 | |
696 | /* Remove declarations for all the DECLs in this level. */ |
697 | for (link = decls; link; link = TREE_CHAIN (link)((contains_struct_check ((link), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 697, __FUNCTION__))->common.chain)) |
698 | { |
699 | tree name; |
700 | if (TREE_CODE (link)((enum tree_code) (link)->base.code) == TREE_LIST) |
701 | { |
702 | decl = TREE_VALUE (link)((tree_check ((link), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 702, __FUNCTION__, (TREE_LIST)))->list.value); |
703 | name = TREE_PURPOSE (link)((tree_check ((link), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 703, __FUNCTION__, (TREE_LIST)))->list.purpose); |
704 | gcc_checking_assert (name)((void)(!(name) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 704, __FUNCTION__), 0 : 0)); |
705 | } |
706 | else |
707 | { |
708 | decl = link; |
709 | name = DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 709, __FUNCTION__))->decl_minimal.name); |
710 | } |
711 | |
712 | /* Remove the binding. */ |
713 | if (TREE_CODE (decl)((enum tree_code) (decl)->base.code) == LABEL_DECL) |
714 | pop_local_label (name, decl); |
715 | else |
716 | pop_local_binding (name, decl); |
717 | } |
718 | |
719 | /* Restore the IDENTIFIER_TYPE_VALUEs. */ |
720 | for (link = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->type_shadowed; |
721 | link; link = TREE_CHAIN (link)((contains_struct_check ((link), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 721, __FUNCTION__))->common.chain)) |
722 | SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (link), TREE_VALUE (link))(((contains_struct_check ((((tree_check ((link), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 722, __FUNCTION__, (TREE_LIST)))->list.purpose)), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 722, __FUNCTION__))->typed.type) = (((tree_check ((link) , "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 722, __FUNCTION__, (TREE_LIST)))->list.value))); |
723 | |
724 | /* There may be OVERLOADs (wrapped in TREE_LISTs) on the BLOCK_VARs |
725 | list if a `using' declaration put them there. The debugging |
726 | back ends won't understand OVERLOAD, so we remove them here. |
727 | Because the BLOCK_VARS are (temporarily) shared with |
728 | CURRENT_BINDING_LEVEL->NAMES we must do this fixup after we have |
729 | popped all the bindings. Also remove undeduced 'auto' decls, |
730 | which LTO doesn't understand, and can't have been used by anything. */ |
731 | if (block) |
732 | { |
733 | tree* d; |
734 | |
735 | for (d = &BLOCK_VARS (block)((tree_check ((block), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 735, __FUNCTION__, (BLOCK)))->block.vars); *d; ) |
736 | { |
737 | if (TREE_CODE (*d)((enum tree_code) (*d)->base.code) == TREE_LIST |
738 | || (!processing_template_declscope_chain->x_processing_template_decl |
739 | && undeduced_auto_decl (*d))) |
740 | *d = TREE_CHAIN (*d)((contains_struct_check ((*d), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 740, __FUNCTION__))->common.chain); |
741 | else |
742 | d = &DECL_CHAIN (*d)(((contains_struct_check (((contains_struct_check ((*d), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 742, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 742, __FUNCTION__))->common.chain)); |
743 | } |
744 | } |
745 | |
746 | /* If the level being exited is the top level of a function, |
747 | check over all the labels. */ |
748 | if (functionbody) |
749 | { |
750 | if (block) |
751 | { |
752 | /* Since this is the top level block of a function, the vars are |
753 | the function's parameters. Don't leave them in the BLOCK |
754 | because they are found in the FUNCTION_DECL instead. */ |
755 | BLOCK_VARS (block)((tree_check ((block), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 755, __FUNCTION__, (BLOCK)))->block.vars) = 0; |
756 | pop_labels (block); |
757 | } |
758 | else |
759 | pop_labels (subblocks); |
760 | } |
761 | |
762 | kind = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->kind; |
763 | if (kind == sk_cleanup) |
764 | { |
765 | tree stmt; |
766 | |
767 | /* If this is a temporary binding created for a cleanup, then we'll |
768 | have pushed a statement list level. Pop that, create a new |
769 | BIND_EXPR for the block, and insert it into the stream. */ |
770 | 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); |
771 | stmt = c_build_bind_expr (input_location, block, stmt); |
772 | add_stmt (stmt); |
773 | } |
774 | |
775 | leave_scope (); |
776 | if (functionbody) |
777 | { |
778 | /* The current function is being defined, so its DECL_INITIAL |
779 | should be error_mark_node. */ |
780 | gcc_assert (DECL_INITIAL (current_function_decl) == error_mark_node)((void)(!(((contains_struct_check ((current_function_decl), ( TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 780, __FUNCTION__))->decl_common.initial) == global_trees [TI_ERROR_MARK]) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 780, __FUNCTION__), 0 : 0)); |
781 | DECL_INITIAL (current_function_decl)((contains_struct_check ((current_function_decl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 781, __FUNCTION__))->decl_common.initial) = block ? block : subblocks; |
782 | if (subblocks) |
783 | { |
784 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result : current_function_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result : current_function_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result)->base .code) == FUNCTION_DECL)) && (((tree_not_check2 (((tree_check ((((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.name)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (IDENTIFIER_NODE)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result : current_function_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((current_function_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (TEMPLATE_DECL))))))))->result)->base .code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__); <->u.fn; })->ovl_op_code) == OVL_OP_CALL_EXPR) && (((enum tree_code) ((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.name) && (tree_code_type [(int) (((enum tree_code) (((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.name))) && ((tree_check ((((((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.name) && (tree_code_type [(int) (((enum tree_code) (((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check (((!(! (((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((current_function_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((current_function_decl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__))->type_common.name)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 784, __FUNCTION__, (IDENTIFIER_NODE)))->base.protected_flag ))))) |
785 | { |
786 | if (BLOCK_SUBBLOCKS (subblocks)((tree_check ((subblocks), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 786, __FUNCTION__, (BLOCK)))->block.subblocks)) |
787 | BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks))((tree_not_check2 (((tree_check ((((tree_check ((subblocks), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 787, __FUNCTION__, (BLOCK)))->block.subblocks)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 787, __FUNCTION__, (BLOCK)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 787, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0) = 1; |
788 | } |
789 | else |
790 | BLOCK_OUTER_CURLY_BRACE_P (subblocks)((tree_not_check2 (((tree_check ((subblocks), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 790, __FUNCTION__, (BLOCK)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 790, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0) = 1; |
791 | } |
792 | } |
793 | else if (block) |
794 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks |
795 | = block_chainon (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks, block); |
796 | |
797 | /* If we did not make a block for the level just exited, |
798 | any blocks made for inner levels |
799 | (since they cannot be recorded as subblocks in that level) |
800 | must be carried forward so they will later become subblocks |
801 | of something else. */ |
802 | else if (subblocks) |
803 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks |
804 | = block_chainon (current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->blocks, subblocks); |
805 | |
806 | /* Each and every BLOCK node created here in `poplevel' is important |
807 | (e.g. for proper debugging information) so if we created one |
808 | earlier, mark it as "used". */ |
809 | if (block) |
810 | TREE_USED (block)((block)->base.used_flag) = 1; |
811 | |
812 | /* All temporary bindings created for cleanups are popped silently. */ |
813 | if (kind == sk_cleanup) |
814 | goto restart; |
815 | |
816 | timevar_cond_stop (TV_NAME_LOOKUP, subtime); |
817 | return block; |
818 | } |
819 | |
820 | /* Call wrapup_globals_declarations for the globals in NAMESPACE. */ |
821 | /* Diagnose odr-used extern inline variables without definitions |
822 | in the current TU. */ |
823 | |
824 | int |
825 | wrapup_namespace_globals () |
826 | { |
827 | if (vec<tree, va_gc> *statics = static_decls) |
828 | { |
829 | tree decl; |
830 | unsigned int i; |
831 | FOR_EACH_VEC_ELT (*statics, i, decl)for (i = 0; (*statics).iterate ((i), &(decl)); ++(i)) |
832 | { |
833 | if (warn_unused_functionglobal_options.x_warn_unused_function |
834 | && TREE_CODE (decl)((enum tree_code) (decl)->base.code) == FUNCTION_DECL |
835 | && DECL_INITIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 835, __FUNCTION__))->decl_common.initial) == 0 |
836 | && DECL_EXTERNAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 836, __FUNCTION__))->decl_common.decl_flag_1) |
837 | && !TREE_PUBLIC (decl)((decl)->base.public_flag) |
838 | && !DECL_ARTIFICIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 838, __FUNCTION__))->decl_common.artificial_flag) |
839 | && !DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION (decl)(((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 839, __FUNCTION__))->decl_common.lang_specific) && (((contains_struct_check ((template_info_decl_check ((decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 839, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 839, __FUNCTION__))->decl_common.lang_specific) ->u.min .template_info) && !(((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 839, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) |
840 | && !TREE_NO_WARNING (decl)((decl)->base.nowarning_flag)) |
841 | warning_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 841, __FUNCTION__))->decl_minimal.locus), |
842 | OPT_Wunused_function, |
843 | "%qF declared %<static%> but never defined", decl); |
844 | |
845 | if (VAR_P (decl)(((enum tree_code) (decl)->base.code) == VAR_DECL) |
846 | && DECL_EXTERNAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 846, __FUNCTION__))->decl_common.decl_flag_1) |
847 | && DECL_INLINE_VAR_P (decl)((((contains_struct_check (((tree_check ((decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__, (TEMPLATE_DECL))))))))->result : decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__))->decl_common.lang_flag_8) && (((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__))->decl_minimal.context) && (tree_code_type [(int) (((enum tree_code) (((contains_struct_check ((decl), ( TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 847, __FUNCTION__))->decl_minimal.context))->base.code ))] == tcc_type)))) |
848 | && DECL_ODR_USED (decl)(((contains_struct_check (((tree_check2 ((decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 848, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 848, __FUNCTION__))->decl_common.lang_specific) ->u.base .odr_used)) |
849 | error_at (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 849, __FUNCTION__))->decl_minimal.locus), |
850 | "odr-used inline variable %qD is not defined", decl); |
851 | } |
852 | |
853 | /* Clear out the list, so we don't rescan next time. */ |
854 | static_decls = NULL__null; |
855 | |
856 | /* Write out any globals that need to be output. */ |
857 | return wrapup_global_declarations (statics->address (), |
858 | statics->length ()); |
859 | } |
860 | return 0; |
861 | } |
862 | |
863 | /* In C++, you don't have to write `struct S' to refer to `S'; you |
864 | can just use `S'. We accomplish this by creating a TYPE_DECL as |
865 | if the user had written `typedef struct S S'. Create and return |
866 | the TYPE_DECL for TYPE. */ |
867 | |
868 | tree |
869 | create_implicit_typedef (tree name, tree type) |
870 | { |
871 | tree decl; |
872 | |
873 | decl = build_decl (input_location, TYPE_DECL, name, type); |
874 | DECL_ARTIFICIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 874, __FUNCTION__))->decl_common.artificial_flag) = 1; |
875 | /* There are other implicit type declarations, like the one *within* |
876 | a class that allows you to write `S::S'. We must distinguish |
877 | amongst these. */ |
878 | SET_DECL_IMPLICIT_TYPEDEF_P (decl)(((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 878, __FUNCTION__))->decl_common.lang_flag_2) = 1); |
879 | TYPE_NAME (type)((tree_class_check ((type), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 879, __FUNCTION__))->type_common.name) = decl; |
880 | TYPE_STUB_DECL (type)(((contains_struct_check (((tree_class_check ((type), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 880, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 880, __FUNCTION__))->common.chain)) = decl; |
881 | |
882 | return decl; |
883 | } |
884 | |
885 | /* Function-scope local entities that need discriminators. Each entry |
886 | is a {decl,name} pair. VAR_DECLs for anon unions get their name |
887 | smashed, so we cannot rely on DECL_NAME. */ |
888 | |
889 | static GTY((deletable)) vec<tree, va_gc> *local_entities; |
890 | |
891 | /* Determine the mangling discriminator of local DECL. There are |
892 | generally very few of these in any particular function. */ |
893 | |
894 | void |
895 | determine_local_discriminator (tree decl) |
896 | { |
897 | bool subtime = timevar_cond_start (TV_NAME_LOOKUP); |
898 | retrofit_lang_decl (decl); |
899 | tree ctx = DECL_CONTEXT (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 899, __FUNCTION__))->decl_minimal.context); |
900 | tree name = (TREE_CODE (decl)((enum tree_code) (decl)->base.code) == TYPE_DECL |
901 | && TYPE_UNNAMED_P (TREE_TYPE (decl))((((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name) && (tree_code_type [(int) (((enum tree_code) (((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name))) && ((tree_check ((((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name) && (tree_code_type [(int) (((enum tree_code) (((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__, (IDENTIFIER_NODE)))->base.private_flag )) && !((tree_check ((((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name) && (tree_code_type [(int) (((enum tree_code) (((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name))->base.code))] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((tree_class_check ((((contains_struct_check ((decl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.main_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__))->type_common.name)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 901, __FUNCTION__, (IDENTIFIER_NODE)))->base.protected_flag )) |
902 | ? NULL_TREE(tree) __null : DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 902, __FUNCTION__))->decl_minimal.name)); |
903 | size_t nelts = vec_safe_length (local_entities); |
904 | for (size_t i = 0; i < nelts; i += 2) |
905 | { |
906 | tree *pair = &(*local_entities)[i]; |
907 | tree d = pair[0]; |
908 | tree n = pair[1]; |
909 | gcc_checking_assert (d != decl)((void)(!(d != decl) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 909, __FUNCTION__), 0 : 0)); |
910 | if (name == n |
911 | && TREE_CODE (decl)((enum tree_code) (decl)->base.code) == TREE_CODE (d)((enum tree_code) (d)->base.code) |
912 | && ctx == DECL_CONTEXT (d)((contains_struct_check ((d), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 912, __FUNCTION__))->decl_minimal.context)) |
913 | { |
914 | tree disc = integer_one_nodeglobal_trees[TI_INTEGER_ONE]; |
915 | if (DECL_DISCRIMINATOR (d)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((d), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 915, __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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 915, __FUNCTION__); <->u.min; })->access)) |
916 | disc = build_int_cst (TREE_TYPE (disc)((contains_struct_check ((disc), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 916, __FUNCTION__))->typed.type), |
917 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 917, __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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 917, __FUNCTION__); <->u.min; })->access)), (0) , "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 917, __FUNCTION__))) + 1); |
918 | DECL_DISCRIMINATOR (decl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 918, __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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 918, __FUNCTION__); <->u.min; })->access) = disc; |
919 | /* Replace the saved decl. */ |
920 | pair[0] = decl; |
921 | decl = NULL_TREE(tree) __null; |
922 | break; |
923 | } |
924 | } |
925 | |
926 | if (decl) |
927 | { |
928 | vec_safe_reserve (local_entities, 2); |
929 | local_entities->quick_push (decl); |
930 | local_entities->quick_push (name); |
931 | } |
932 | |
933 | timevar_cond_stop (TV_NAME_LOOKUP, subtime); |
934 | } |
935 | |
936 | |
937 | |
938 | /* Returns true if functions FN1 and FN2 have equivalent trailing |
939 | requires clauses. */ |
940 | |
941 | static bool |
942 | function_requirements_equivalent_p (tree newfn, tree oldfn) |
943 | { |
944 | /* In the concepts TS, the combined constraints are compared. */ |
945 | if (cxx_dialect < cxx20) |
946 | { |
947 | tree ci1 = get_constraints (oldfn); |
948 | tree ci2 = get_constraints (newfn); |
949 | tree req1 = ci1 ? CI_ASSOCIATED_CONSTRAINTS (ci1)check_constraint_info (check_nonnull (ci1))->associated_constr : NULL_TREE(tree) __null; |
950 | tree req2 = ci2 ? CI_ASSOCIATED_CONSTRAINTS (ci2)check_constraint_info (check_nonnull (ci2))->associated_constr : NULL_TREE(tree) __null; |
951 | return cp_tree_equal (req1, req2); |
952 | } |
953 | |
954 | /* Compare only trailing requirements. */ |
955 | tree reqs1 = get_trailing_function_requirements (newfn); |
956 | tree reqs2 = get_trailing_function_requirements (oldfn); |
957 | if ((reqs1 != NULL_TREE(tree) __null) != (reqs2 != NULL_TREE(tree) __null)) |
958 | return false; |
959 | |
960 | /* Substitution is needed when friends are involved. */ |
961 | reqs1 = maybe_substitute_reqs_for (reqs1, newfn); |
962 | reqs2 = maybe_substitute_reqs_for (reqs2, oldfn); |
963 | |
964 | return cp_tree_equal (reqs1, reqs2); |
965 | } |
966 | |
967 | /* Subroutine of duplicate_decls: return truthvalue of whether |
968 | or not types of these decls match. |
969 | |
970 | For C++, we must compare the parameter list so that `int' can match |
971 | `int&' in a parameter position, but `int&' is not confused with |
972 | `const int&'. */ |
973 | |
974 | int |
975 | decls_match (tree newdecl, tree olddecl, bool record_versions /* = true */) |
976 | { |
977 | int types_match; |
978 | |
979 | if (newdecl == olddecl) |
980 | return 1; |
981 | |
982 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code)) |
983 | /* If the two DECLs are not even the same kind of thing, we're not |
984 | interested in their types. */ |
985 | return 0; |
986 | |
987 | gcc_assert (DECL_P (newdecl))((void)(!((tree_code_type[(int) (((enum tree_code) (newdecl)-> base.code))] == tcc_declaration)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 987, __FUNCTION__), 0 : 0)); |
988 | |
989 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
990 | { |
991 | /* Specializations of different templates are different functions |
992 | even if they have the same type. */ |
993 | tree t1 = (DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 993, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) |
994 | ? DECL_TI_TEMPLATE (newdecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 994, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 994, __FUNCTION__))->decl_common.lang_specific) ->u.min .template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 994, __FUNCTION__, (TEMPLATE_INFO))))->tmpl |
995 | : NULL_TREE(tree) __null); |
996 | tree t2 = (DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 996, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) |
997 | ? DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 997, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 997, __FUNCTION__))->decl_common.lang_specific) ->u.min .template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 997, __FUNCTION__, (TEMPLATE_INFO))))->tmpl |
998 | : NULL_TREE(tree) __null); |
999 | if (t1 != t2) |
1000 | return 0; |
1001 | |
1002 | if (CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1002, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1002, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1002, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) != CP_DECL_CONTEXT (olddecl)(!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1002, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1002, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1002, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) |
1003 | && ! (DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1003, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1003, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) |
1004 | && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1004, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1004, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c))) |
1005 | return 0; |
1006 | |
1007 | /* A new declaration doesn't match a built-in one unless it |
1008 | is also extern "C". */ |
1009 | if (DECL_IS_UNDECLARED_BUILTIN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1009, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1)) |
1010 | && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1010, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1010, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1010, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1010, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) |
1011 | return 0; |
1012 | |
1013 | tree f1 = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1013, __FUNCTION__))->typed.type); |
1014 | tree f2 = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1014, __FUNCTION__))->typed.type); |
1015 | if (TREE_CODE (f1)((enum tree_code) (f1)->base.code) != TREE_CODE (f2)((enum tree_code) (f2)->base.code)) |
1016 | return 0; |
1017 | |
1018 | /* A declaration with deduced return type should use its pre-deduction |
1019 | type for declaration matching. */ |
1020 | tree r2 = fndecl_declared_return_type (olddecl); |
1021 | tree r1 = fndecl_declared_return_type (newdecl); |
1022 | |
1023 | tree p1 = TYPE_ARG_TYPES (f1)((tree_check2 ((f1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1023, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); |
1024 | tree p2 = TYPE_ARG_TYPES (f2)((tree_check2 ((f2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1024, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); |
1025 | |
1026 | if (same_type_p (r1, r2)comptypes ((r1), (r2), 0)) |
1027 | { |
1028 | if (!prototype_p (f2) && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1028, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1028, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) |
1029 | && fndecl_built_in_p (olddecl)) |
1030 | { |
1031 | types_match = self_promoting_args_p (p1); |
1032 | if (p1 == void_list_nodeglobal_trees[TI_VOID_LIST_NODE]) |
1033 | TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1033, __FUNCTION__))->typed.type) = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1033, __FUNCTION__))->typed.type); |
1034 | } |
1035 | else |
1036 | types_match = |
1037 | compparms (p1, p2) |
1038 | && type_memfn_rqual (f1) == type_memfn_rqual (f2) |
1039 | && (TYPE_ATTRIBUTES (TREE_TYPE (newdecl))((tree_class_check ((((contains_struct_check ((newdecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1039, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1039, __FUNCTION__))->type_common.attributes) == NULL_TREE(tree) __null |
1040 | || comp_type_attributes (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1040, __FUNCTION__))->typed.type), |
1041 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1041, __FUNCTION__))->typed.type)) != 0); |
1042 | } |
1043 | else |
1044 | types_match = 0; |
1045 | |
1046 | /* Two function declarations match if either has a requires-clause |
1047 | then both have a requires-clause and their constraints-expressions |
1048 | are equivalent. */ |
1049 | if (types_match && flag_conceptsglobal_options.x_flag_concepts) |
1050 | types_match = function_requirements_equivalent_p (newdecl, olddecl); |
1051 | |
1052 | /* The decls dont match if they correspond to two different versions |
1053 | of the same function. Disallow extern "C" functions to be |
1054 | versions for now. */ |
1055 | if (types_match |
1056 | && !DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1056, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1056, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) |
1057 | && !DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1057, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1057, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) |
1058 | && record_versions |
1059 | && maybe_version_functions (newdecl, olddecl, |
1060 | (!DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1060, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) |
1061 | || !DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1061, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )))) |
1062 | return 0; |
1063 | } |
1064 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) |
1065 | { |
1066 | if (!template_heads_equivalent_p (newdecl, olddecl)) |
1067 | return 0; |
1068 | |
1069 | tree oldres = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1069, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1070 | tree newres = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1070, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1071 | |
1072 | if (TREE_CODE (newres)((enum tree_code) (newres)->base.code) != TREE_CODE (oldres)((enum tree_code) (oldres)->base.code)) |
1073 | return 0; |
1074 | |
1075 | /* Two template types match if they are the same. Otherwise, compare |
1076 | the underlying declarations. */ |
1077 | if (TREE_CODE (newres)((enum tree_code) (newres)->base.code) == TYPE_DECL) |
1078 | types_match = same_type_p (TREE_TYPE (newres), TREE_TYPE (oldres))comptypes ((((contains_struct_check ((newres), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1078, __FUNCTION__))->typed.type)), (((contains_struct_check ((oldres), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1078, __FUNCTION__))->typed.type)), 0); |
1079 | else |
1080 | types_match = decls_match (newres, oldres); |
1081 | } |
1082 | else |
1083 | { |
1084 | /* Need to check scope for variable declaration (VAR_DECL). |
1085 | For typedef (TYPE_DECL), scope is ignored. */ |
1086 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) |
1087 | && CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1087, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1087, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1087, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) != CP_DECL_CONTEXT (olddecl)(!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1087, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1087, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1087, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) |
1088 | /* [dcl.link] |
1089 | Two declarations for an object with C language linkage |
1090 | with the same name (ignoring the namespace that qualify |
1091 | it) that appear in different namespace scopes refer to |
1092 | the same object. */ |
1093 | && !(DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1093, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1093, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1093, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1093, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c))) |
1094 | return 0; |
1095 | |
1096 | if (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1096, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK]) |
1097 | types_match = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1097, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1098 | else if (TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1098, __FUNCTION__))->typed.type) == NULL_TREE(tree) __null) |
1099 | types_match = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1099, __FUNCTION__))->typed.type) == NULL_TREE(tree) __null; |
1100 | else if (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1100, __FUNCTION__))->typed.type) == NULL_TREE(tree) __null) |
1101 | types_match = 0; |
1102 | else |
1103 | types_match = comptypes (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1103, __FUNCTION__))->typed.type), |
1104 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1104, __FUNCTION__))->typed.type), |
1105 | COMPARE_REDECLARATION4); |
1106 | } |
1107 | |
1108 | return types_match; |
1109 | } |
1110 | |
1111 | /* NEWDECL and OLDDECL have identical signatures. If they are |
1112 | different versions adjust them and return true. |
1113 | If RECORD is set to true, record function versions. */ |
1114 | |
1115 | bool |
1116 | maybe_version_functions (tree newdecl, tree olddecl, bool record) |
1117 | { |
1118 | if (!targetm.target_option.function_versions (newdecl, olddecl)) |
1119 | return false; |
1120 | |
1121 | if (!DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1121, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) |
1122 | { |
1123 | DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1123, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) = 1; |
1124 | if (DECL_ASSEMBLER_NAME_SET_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1124, __FUNCTION__))->decl_with_vis.assembler_name) != ( tree) __null)) |
1125 | mangle_decl (olddecl); |
1126 | } |
1127 | |
1128 | if (!DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1128, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) |
1129 | { |
1130 | DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1130, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) = 1; |
1131 | if (DECL_ASSEMBLER_NAME_SET_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1131, __FUNCTION__))->decl_with_vis.assembler_name) != ( tree) __null)) |
1132 | mangle_decl (newdecl); |
1133 | } |
1134 | |
1135 | if (record) |
1136 | cgraph_node::record_function_versions (olddecl, newdecl); |
1137 | |
1138 | return true; |
1139 | } |
1140 | |
1141 | /* If NEWDECL is `static' and an `extern' was seen previously, |
1142 | warn about it. OLDDECL is the previous declaration. |
1143 | |
1144 | Note that this does not apply to the C++ case of declaring |
1145 | a variable `extern const' and then later `const'. |
1146 | |
1147 | Don't complain about built-in functions, since they are beyond |
1148 | the user's control. */ |
1149 | |
1150 | void |
1151 | warn_extern_redeclared_static (tree newdecl, tree olddecl) |
1152 | { |
1153 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL |
1154 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL |
1155 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == CONST_DECL |
1156 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) |
1157 | return; |
1158 | |
1159 | /* Don't get confused by static member functions; that's a different |
1160 | use of `static'. */ |
1161 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
1162 | && 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1162, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1162, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1162, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1162, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1162, __FUNCTION__); <->u.fn; })->static_function )) |
1163 | return; |
1164 | |
1165 | /* If the old declaration was `static', or the new one isn't, then |
1166 | everything is OK. */ |
1167 | if (DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1167, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1167, __FUNCTION__))->decl_common.lang_flag_6) || !DECL_THIS_STATIC (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1167, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1167, __FUNCTION__))->decl_common.lang_flag_6)) |
1168 | return; |
1169 | |
1170 | /* It's OK to declare a builtin function as `static'. */ |
1171 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL |
1172 | && DECL_ARTIFICIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1172, __FUNCTION__))->decl_common.artificial_flag)) |
1173 | return; |
1174 | |
1175 | auto_diagnostic_group d; |
1176 | if (permerror (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1176, __FUNCTION__))->decl_minimal.locus), |
1177 | "%qD was declared %<extern%> and later %<static%>", newdecl)) |
1178 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1178, __FUNCTION__))->decl_minimal.locus), |
1179 | "previous declaration of %qD", olddecl); |
1180 | } |
1181 | |
1182 | /* NEW_DECL is a redeclaration of OLD_DECL; both are functions or |
1183 | function templates. If their exception specifications do not |
1184 | match, issue a diagnostic. */ |
1185 | |
1186 | static void |
1187 | check_redeclaration_exception_specification (tree new_decl, |
1188 | tree old_decl) |
1189 | { |
1190 | tree new_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (new_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (new_decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1190, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1190, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1190, __FUNCTION__))->type_non_common.lang_1); |
1191 | tree old_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (old_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (old_decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1191, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1191, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1191, __FUNCTION__))->type_non_common.lang_1); |
1192 | |
1193 | /* Two default specs are equivalent, don't force evaluation. */ |
1194 | if (UNEVALUATED_NOEXCEPT_SPEC_P (new_exceptions)(((new_exceptions) && (((tree_check ((new_exceptions) , "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1194, __FUNCTION__, (TREE_LIST)))->list.purpose)) && (((enum tree_code) (((tree_check ((new_exceptions), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1194, __FUNCTION__, (TREE_LIST)))->list.purpose))->base .code) == DEFERRED_NOEXCEPT)) && (((struct tree_deferred_noexcept *)(tree_check ((((tree_check ((new_exceptions), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1194, __FUNCTION__, (TREE_LIST)))->list.purpose)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1194, __FUNCTION__, (DEFERRED_NOEXCEPT))))->pattern) == ( tree) __null) |
1195 | && UNEVALUATED_NOEXCEPT_SPEC_P (old_exceptions)(((old_exceptions) && (((tree_check ((old_exceptions) , "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1195, __FUNCTION__, (TREE_LIST)))->list.purpose)) && (((enum tree_code) (((tree_check ((old_exceptions), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1195, __FUNCTION__, (TREE_LIST)))->list.purpose))->base .code) == DEFERRED_NOEXCEPT)) && (((struct tree_deferred_noexcept *)(tree_check ((((tree_check ((old_exceptions), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1195, __FUNCTION__, (TREE_LIST)))->list.purpose)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1195, __FUNCTION__, (DEFERRED_NOEXCEPT))))->pattern) == ( tree) __null)) |
1196 | return; |
1197 | |
1198 | if (!type_dependent_expression_p (old_decl)) |
1199 | { |
1200 | maybe_instantiate_noexcept (new_decl); |
1201 | maybe_instantiate_noexcept (old_decl); |
1202 | } |
1203 | new_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (new_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (new_decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1203, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1203, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1203, __FUNCTION__))->type_non_common.lang_1); |
1204 | old_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (old_decl))((tree_class_check (((tree_check2 ((((contains_struct_check ( (old_decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1204, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1204, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1204, __FUNCTION__))->type_non_common.lang_1); |
1205 | |
1206 | /* [except.spec] |
1207 | |
1208 | If any declaration of a function has an exception-specification, |
1209 | all declarations, including the definition and an explicit |
1210 | specialization, of that function shall have an |
1211 | exception-specification with the same set of type-ids. */ |
1212 | if (! DECL_IS_UNDECLARED_BUILTIN (old_decl)(((contains_struct_check ((old_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1212, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1)) |
1213 | && !comp_except_specs (new_exceptions, old_exceptions, ce_normal)) |
1214 | { |
1215 | const char *const msg |
1216 | = G_("declaration of %qF has a different exception specifier")"declaration of %qF has a different exception specifier"; |
1217 | bool complained = true; |
1218 | location_t new_loc = DECL_SOURCE_LOCATION (new_decl)((contains_struct_check ((new_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1218, __FUNCTION__))->decl_minimal.locus); |
1219 | auto_diagnostic_group d; |
1220 | if (DECL_IN_SYSTEM_HEADER (old_decl)(in_system_header_at (((contains_struct_check ((old_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1220, __FUNCTION__))->decl_minimal.locus)))) |
1221 | complained = pedwarn (new_loc, OPT_Wsystem_headers, msg, new_decl); |
1222 | else if (!flag_exceptionsglobal_options.x_flag_exceptions) |
1223 | /* We used to silently permit mismatched eh specs with |
1224 | -fno-exceptions, so make them a pedwarn now. */ |
1225 | complained = pedwarn (new_loc, OPT_Wpedantic, msg, new_decl); |
1226 | else |
1227 | error_at (new_loc, msg, new_decl); |
1228 | if (complained) |
1229 | inform (DECL_SOURCE_LOCATION (old_decl)((contains_struct_check ((old_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1229, __FUNCTION__))->decl_minimal.locus), |
1230 | "from previous declaration %qF", old_decl); |
1231 | } |
1232 | } |
1233 | |
1234 | /* Return true if OLD_DECL and NEW_DECL agree on constexprness. |
1235 | Otherwise issue diagnostics. */ |
1236 | |
1237 | static bool |
1238 | validate_constexpr_redeclaration (tree old_decl, tree new_decl) |
1239 | { |
1240 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1240, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl ); |
1241 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1241, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl ); |
1242 | 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) |
1243 | || !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)) |
1244 | return true; |
1245 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1245, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1245, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1245, __FUNCTION__))->decl_common.lang_flag_8) |
1246 | == 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1246, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1246, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1246, __FUNCTION__))->decl_common.lang_flag_8)) |
1247 | { |
1248 | if (TREE_CODE (old_decl)((enum tree_code) (old_decl)->base.code) != FUNCTION_DECL) |
1249 | return true; |
1250 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1250, __FUNCTION__); <->u.fn; })->immediate_fn_p : false) |
1251 | == 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1251, __FUNCTION__); <->u.fn; })->immediate_fn_p : false)) |
1252 | return true; |
1253 | } |
1254 | if (TREE_CODE (old_decl)((enum tree_code) (old_decl)->base.code) == FUNCTION_DECL) |
1255 | { |
1256 | if (fndecl_built_in_p (old_decl)) |
1257 | { |
1258 | /* Hide a built-in declaration. */ |
1259 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1259, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1259, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1259, __FUNCTION__))->decl_common.lang_flag_8) |
1260 | = 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1260, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1260, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1260, __FUNCTION__))->decl_common.lang_flag_8); |
1261 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1261, __FUNCTION__); <->u.fn; })->immediate_fn_p : false)) |
1262 | SET_DECL_IMMEDIATE_FUNCTION_P (old_decl)(retrofit_lang_decl ((tree_check ((old_decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1262, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1262, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1262, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1262, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1262, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1262, __FUNCTION__); <->u.fn; })->immediate_fn_p = true); |
1263 | return true; |
1264 | } |
1265 | /* 7.1.5 [dcl.constexpr] |
1266 | Note: An explicit specialization can differ from the template |
1267 | declaration with respect to the constexpr specifier. */ |
1268 | if (! DECL_TEMPLATE_SPECIALIZATION (old_decl)((((contains_struct_check ((old_decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1268, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) |
1269 | && DECL_TEMPLATE_SPECIALIZATION (new_decl)((((contains_struct_check ((new_decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1269, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) |
1270 | return true; |
1271 | |
1272 | const char *kind = "constexpr"; |
1273 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __FUNCTION__, (TEMPLATE_DECL))))))))->result : old_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((old_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1273, __FUNCTION__); <->u.fn; })->immediate_fn_p : false) |
1274 | || 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __FUNCTION__, (TEMPLATE_DECL))))))))->result : new_decl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((new_decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1274, __FUNCTION__); <->u.fn; })->immediate_fn_p : false)) |
1275 | kind = "consteval"; |
1276 | error_at (DECL_SOURCE_LOCATION (new_decl)((contains_struct_check ((new_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1276, __FUNCTION__))->decl_minimal.locus), |
1277 | "redeclaration %qD differs in %qs " |
1278 | "from previous declaration", new_decl, |
1279 | kind); |
1280 | inform (DECL_SOURCE_LOCATION (old_decl)((contains_struct_check ((old_decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1280, __FUNCTION__))->decl_minimal.locus), |
1281 | "previous declaration %qD", old_decl); |
1282 | return false; |
1283 | } |
1284 | return true; |
1285 | } |
1286 | |
1287 | // If OLDDECL and NEWDECL are concept declarations with the same type |
1288 | // (i.e., and template parameters), but different requirements, |
1289 | // emit diagnostics and return true. Otherwise, return false. |
1290 | static inline bool |
1291 | check_concept_refinement (tree olddecl, tree newdecl) |
1292 | { |
1293 | if (!DECL_DECLARED_CONCEPT_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1293, __FUNCTION__))->decl_common.lang_specific)->u.base .concept_p) || !DECL_DECLARED_CONCEPT_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1293, __FUNCTION__))->decl_common.lang_specific)->u.base .concept_p)) |
1294 | return false; |
1295 | |
1296 | tree d1 = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1296, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1297 | tree d2 = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1297, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1298 | if (TREE_CODE (d1)((enum tree_code) (d1)->base.code) != TREE_CODE (d2)((enum tree_code) (d2)->base.code)) |
1299 | return false; |
1300 | |
1301 | tree t1 = TREE_TYPE (d1)((contains_struct_check ((d1), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1301, __FUNCTION__))->typed.type); |
1302 | tree t2 = TREE_TYPE (d2)((contains_struct_check ((d2), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1302, __FUNCTION__))->typed.type); |
1303 | if (TREE_CODE (d1)((enum tree_code) (d1)->base.code) == FUNCTION_DECL) |
1304 | { |
1305 | if (compparms (TYPE_ARG_TYPES (t1)((tree_check2 ((t1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1305, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), TYPE_ARG_TYPES (t2)((tree_check2 ((t2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1305, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)) |
1306 | && comp_template_parms (DECL_TEMPLATE_PARMS (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1306, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments, |
1307 | DECL_TEMPLATE_PARMS (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1307, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments) |
1308 | && !equivalently_constrained (olddecl, newdecl)) |
1309 | { |
1310 | error ("cannot specialize concept %q#D", olddecl); |
1311 | return true; |
1312 | } |
1313 | } |
1314 | return false; |
1315 | } |
1316 | |
1317 | /* DECL is a redeclaration of a function or function template. If |
1318 | it does have default arguments issue a diagnostic. Note: this |
1319 | function is used to enforce the requirements in C++11 8.3.6 about |
1320 | no default arguments in redeclarations. */ |
1321 | |
1322 | static void |
1323 | check_redeclaration_no_default_args (tree decl) |
1324 | { |
1325 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1325, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((decl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1325, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL))) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1325, __FUNCTION__), 0 : 0)); |
1326 | |
1327 | for (tree t = FUNCTION_FIRST_USER_PARMTYPE (decl)skip_artificial_parms_for ((decl), ((tree_check2 ((((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1327, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1327, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); |
1328 | t && t != void_list_nodeglobal_trees[TI_VOID_LIST_NODE]; t = TREE_CHAIN (t)((contains_struct_check ((t), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1328, __FUNCTION__))->common.chain)) |
1329 | if (TREE_PURPOSE (t)((tree_check ((t), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1329, __FUNCTION__, (TREE_LIST)))->list.purpose)) |
1330 | { |
1331 | permerror (DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1331, __FUNCTION__))->decl_minimal.locus), |
1332 | "redeclaration of %q#D may not have default " |
1333 | "arguments", decl); |
1334 | return; |
1335 | } |
1336 | } |
1337 | |
1338 | /* NEWDECL is a redeclaration of a function or function template OLDDECL, |
1339 | in any case represented as FUNCTION_DECLs (the DECL_TEMPLATE_RESULTs of |
1340 | the TEMPLATE_DECLs in case of function templates). This function is used |
1341 | to enforce the final part of C++17 11.3.6/4, about a single declaration: |
1342 | "If a friend declaration specifies a default argument expression, that |
1343 | declaration shall be a definition and shall be the only declaration of |
1344 | the function or function template in the translation unit." */ |
1345 | |
1346 | static void |
1347 | check_no_redeclaration_friend_default_args (tree olddecl, tree newdecl) |
1348 | { |
1349 | if (!DECL_UNIQUE_FRIEND_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1349, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1349, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) && !DECL_UNIQUE_FRIEND_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1349, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1349, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls)) |
1350 | return; |
1351 | |
1352 | for (tree t1 = FUNCTION_FIRST_USER_PARMTYPE (olddecl)skip_artificial_parms_for ((olddecl), ((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1352, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1352, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)), |
1353 | t2 = FUNCTION_FIRST_USER_PARMTYPE (newdecl)skip_artificial_parms_for ((newdecl), ((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1353, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1353, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); |
1354 | t1 && t1 != void_list_nodeglobal_trees[TI_VOID_LIST_NODE]; |
1355 | t1 = TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1355, __FUNCTION__))->common.chain), t2 = TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1355, __FUNCTION__))->common.chain)) |
1356 | if ((DECL_UNIQUE_FRIEND_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1356, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1356, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) && TREE_PURPOSE (t1)((tree_check ((t1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1356, __FUNCTION__, (TREE_LIST)))->list.purpose)) |
1357 | || (DECL_UNIQUE_FRIEND_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1357, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1357, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) && TREE_PURPOSE (t2)((tree_check ((t2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1357, __FUNCTION__, (TREE_LIST)))->list.purpose))) |
1358 | { |
1359 | auto_diagnostic_group d; |
1360 | if (permerror (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1360, __FUNCTION__))->decl_minimal.locus), |
1361 | "friend declaration of %q#D specifies default " |
1362 | "arguments and isn%'t the only declaration", newdecl)) |
1363 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1363, __FUNCTION__))->decl_minimal.locus), |
1364 | "previous declaration of %q#D", olddecl); |
1365 | return; |
1366 | } |
1367 | } |
1368 | |
1369 | /* Merge tree bits that correspond to attributes noreturn, nothrow, |
1370 | const, malloc, and pure from NEWDECL with those of OLDDECL. */ |
1371 | |
1372 | static void |
1373 | merge_attribute_bits (tree newdecl, tree olddecl) |
1374 | { |
1375 | TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag) |= TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag); |
1376 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) |= TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag); |
1377 | TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag) |= TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag); |
1378 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) |= TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag); |
1379 | TREE_READONLY (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1379, __FUNCTION__))->base.readonly_flag) |= TREE_READONLY (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1379, __FUNCTION__))->base.readonly_flag); |
1380 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1380, __FUNCTION__))->base.readonly_flag) |= TREE_READONLY (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1380, __FUNCTION__))->base.readonly_flag); |
1381 | DECL_IS_MALLOC (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1381, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ) |= DECL_IS_MALLOC (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1381, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ); |
1382 | DECL_IS_MALLOC (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1382, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ) |= DECL_IS_MALLOC (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1382, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ); |
1383 | DECL_PURE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1383, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ) |= DECL_PURE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1383, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ); |
1384 | DECL_PURE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1384, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ) |= DECL_PURE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1384, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ); |
1385 | DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1385, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) |= DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1385, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); |
1386 | DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1386, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) |= DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1386, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); |
1387 | } |
1388 | |
1389 | #define GNU_INLINE_P(fn)(((tree_check ((fn), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1389, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((fn), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1389, __FUNCTION__))->decl_common.attributes))) (DECL_DECLARED_INLINE_P (fn)((tree_check ((fn), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1389, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) \ |
1390 | && lookup_attribute ("gnu_inline", \ |
1391 | DECL_ATTRIBUTES (fn)((contains_struct_check ((fn), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1391, __FUNCTION__))->decl_common.attributes))) |
1392 | |
1393 | /* A subroutine of duplicate_decls. Emits a diagnostic when newdecl |
1394 | ambiguates olddecl. Returns true if an error occurs. */ |
1395 | |
1396 | static bool |
1397 | duplicate_function_template_decls (tree newdecl, tree olddecl) |
1398 | { |
1399 | |
1400 | tree newres = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1400, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1401 | tree oldres = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1401, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1402 | /* Function template declarations can be differentiated by parameter |
1403 | and return type. */ |
1404 | if (compparms (TYPE_ARG_TYPES (TREE_TYPE (oldres))((tree_check2 ((((contains_struct_check ((oldres), (TS_TYPED) , "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1404, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1404, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), |
1405 | TYPE_ARG_TYPES (TREE_TYPE (newres))((tree_check2 ((((contains_struct_check ((newres), (TS_TYPED) , "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1405, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1405, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)) |
1406 | && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),comptypes ((((contains_struct_check ((((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1406, __FUNCTION__))->typed.type)), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1406, __FUNCTION__))->typed.type)), (((contains_struct_check ((((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1407, __FUNCTION__))->typed.type)), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1407, __FUNCTION__))->typed.type)), 0) |
1407 | TREE_TYPE (TREE_TYPE (olddecl)))comptypes ((((contains_struct_check ((((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1406, __FUNCTION__))->typed.type)), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1406, __FUNCTION__))->typed.type)), (((contains_struct_check ((((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1407, __FUNCTION__))->typed.type)), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1407, __FUNCTION__))->typed.type)), 0)) |
1408 | { |
1409 | /* ... and also by their template-heads and requires-clauses. */ |
1410 | if (template_heads_equivalent_p (newdecl, olddecl) |
1411 | && function_requirements_equivalent_p (newres, oldres)) |
1412 | { |
1413 | error ("ambiguating new declaration %q+#D", newdecl); |
1414 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1414, __FUNCTION__))->decl_minimal.locus), |
1415 | "old declaration %q#D", olddecl); |
1416 | return true; |
1417 | } |
1418 | |
1419 | /* FIXME: The types are the same but the are differences |
1420 | in either the template heads or function requirements. |
1421 | We should be able to diagnose a set of common errors |
1422 | stemming from these declarations. For example: |
1423 | |
1424 | template<typename T> requires C void f(...); |
1425 | template<typename T> void f(...) requires C; |
1426 | |
1427 | These are functionally equivalent but not equivalent. */ |
1428 | } |
1429 | |
1430 | return false; |
1431 | } |
1432 | |
1433 | /* If NEWDECL is a redeclaration of OLDDECL, merge the declarations. |
1434 | If the redeclaration is invalid, a diagnostic is issued, and the |
1435 | error_mark_node is returned. Otherwise, OLDDECL is returned. |
1436 | |
1437 | If NEWDECL is not a redeclaration of OLDDECL, NULL_TREE is |
1438 | returned. |
1439 | |
1440 | HIDING is true if the new decl is being hidden. WAS_HIDDEN is true |
1441 | if the old decl was hidden. |
1442 | |
1443 | Hidden decls can be anticipated builtins, injected friends, or |
1444 | (coming soon) injected from a local-extern decl. */ |
1445 | |
1446 | tree |
1447 | duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) |
1448 | { |
1449 | unsigned olddecl_uid = DECL_UID (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1449, __FUNCTION__))->decl_minimal.uid); |
1450 | int types_match = 0; |
1451 | int new_defines_function = 0; |
1452 | tree new_template_info; |
1453 | location_t olddecl_loc = DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1453, __FUNCTION__))->decl_minimal.locus); |
1454 | location_t newdecl_loc = DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1454, __FUNCTION__))->decl_minimal.locus); |
1455 | |
1456 | if (newdecl == olddecl) |
1457 | return olddecl; |
1458 | |
1459 | types_match = decls_match (newdecl, olddecl); |
1460 | |
1461 | /* If either the type of the new decl or the type of the old decl is an |
1462 | error_mark_node, then that implies that we have already issued an |
1463 | error (earlier) for some bogus type specification, and in that case, |
1464 | it is rather pointless to harass the user with yet more error message |
1465 | about the same declaration, so just pretend the types match here. */ |
1466 | if (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1466, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK] |
1467 | || TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1467, __FUNCTION__))->typed.type) == error_mark_nodeglobal_trees[TI_ERROR_MARK]) |
1468 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1469 | |
1470 | /* Check for redeclaration and other discrepancies. */ |
1471 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL |
1472 | && DECL_IS_UNDECLARED_BUILTIN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1472, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1))) |
1473 | { |
1474 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != FUNCTION_DECL) |
1475 | { |
1476 | /* Avoid warnings redeclaring built-ins which have not been |
1477 | explicitly declared. */ |
1478 | if (was_hidden) |
1479 | { |
1480 | if (TREE_PUBLIC (newdecl)((newdecl)->base.public_flag) |
1481 | && CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1481, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1481, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1481, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) == global_namespacecp_global_trees[CPTI_GLOBAL]) |
1482 | warning_at (newdecl_loc, |
1483 | OPT_Wbuiltin_declaration_mismatch, |
1484 | "built-in function %qD declared as non-function", |
1485 | newdecl); |
1486 | return NULL_TREE(tree) __null; |
1487 | } |
1488 | |
1489 | /* If you declare a built-in or predefined function name as static, |
1490 | the old definition is overridden, but optionally warn this was a |
1491 | bad choice of name. */ |
1492 | if (! TREE_PUBLIC (newdecl)((newdecl)->base.public_flag)) |
1493 | { |
1494 | warning_at (newdecl_loc, |
1495 | OPT_Wshadow, |
1496 | fndecl_built_in_p (olddecl) |
1497 | ? G_("shadowing built-in function %q#D")"shadowing built-in function %q#D" |
1498 | : G_("shadowing library function %q#D")"shadowing library function %q#D", olddecl); |
1499 | /* Discard the old built-in function. */ |
1500 | return NULL_TREE(tree) __null; |
1501 | } |
1502 | /* If the built-in is not ansi, then programs can override |
1503 | it even globally without an error. */ |
1504 | else if (! fndecl_built_in_p (olddecl)) |
1505 | warning_at (newdecl_loc, 0, |
1506 | "library function %q#D redeclared as non-function %q#D", |
1507 | olddecl, newdecl); |
1508 | else |
1509 | error_at (newdecl_loc, |
1510 | "declaration of %q#D conflicts with built-in " |
1511 | "declaration %q#D", newdecl, olddecl); |
1512 | return NULL_TREE(tree) __null; |
1513 | } |
1514 | else if (!types_match) |
1515 | { |
1516 | /* Avoid warnings redeclaring built-ins which have not been |
1517 | explicitly declared. */ |
1518 | if (was_hidden) |
1519 | { |
1520 | tree t1, t2; |
1521 | |
1522 | /* A new declaration doesn't match a built-in one unless it |
1523 | is also extern "C". */ |
1524 | gcc_assert (DECL_IS_UNDECLARED_BUILTIN (olddecl))((void)(!((((contains_struct_check ((olddecl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1524, __FUNCTION__))->decl_minimal.locus) <= ((location_t ) 1))) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1524, __FUNCTION__), 0 : 0)); |
1525 | gcc_assert (DECL_EXTERN_C_P (olddecl))((void)(!(((((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1525, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1525, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1525, __FUNCTION__), 0 : 0)); |
1526 | if (!DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1526, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1526, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) |
1527 | return NULL_TREE(tree) __null; |
1528 | |
1529 | for (t1 = TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1529, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1529, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), |
1530 | t2 = TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1530, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1530, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); |
1531 | t1 || t2; |
1532 | t1 = TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1532, __FUNCTION__))->common.chain), t2 = TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1532, __FUNCTION__))->common.chain)) |
1533 | { |
1534 | if (!t1 || !t2) |
1535 | break; |
1536 | /* FILE, tm types are not known at the time |
1537 | we create the builtins. */ |
1538 | for (unsigned i = 0; |
1539 | i < sizeof (builtin_structptr_types) |
1540 | / sizeof (builtin_structptr_type); |
1541 | ++i) |
1542 | if (TREE_VALUE (t2)((tree_check ((t2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1542, __FUNCTION__, (TREE_LIST)))->list.value) == builtin_structptr_types[i].node) |
1543 | { |
1544 | tree t = TREE_VALUE (t1)((tree_check ((t1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1544, __FUNCTION__, (TREE_LIST)))->list.value); |
1545 | |
1546 | if (TYPE_PTR_P (t)(((enum tree_code) (t)->base.code) == POINTER_TYPE) |
1547 | && TYPE_IDENTIFIER (TREE_TYPE (t))(((tree_class_check ((((contains_struct_check ((t), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->type_common.name) && (tree_code_type [(int) (((enum tree_code) (((tree_class_check ((((contains_struct_check ((t), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->type_common.name))->base.code)) ] == tcc_declaration) ? ((contains_struct_check ((((tree_class_check ((((contains_struct_check ((t), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->type_common.name)), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->decl_minimal.name) : ((tree_class_check ((((contains_struct_check ((t), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1547, __FUNCTION__))->type_common.name)) |
1548 | == 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)) |
1549 | && compparms (TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1549, __FUNCTION__))->common.chain), TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1549, __FUNCTION__))->common.chain))) |
1550 | { |
1551 | tree oldargs = TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1551, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1551, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); |
1552 | |
1553 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1553, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1553, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values) |
1554 | = TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1554, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1554, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values); |
1555 | types_match = decls_match (newdecl, olddecl); |
1556 | if (types_match) |
1557 | return duplicate_decls (newdecl, olddecl, |
1558 | hiding, was_hidden); |
1559 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1559, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1559, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values) = oldargs; |
1560 | } |
1561 | goto next_arg; |
1562 | } |
1563 | |
1564 | if (! same_type_p (TREE_VALUE (t1), TREE_VALUE (t2))comptypes ((((tree_check ((t1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1564, __FUNCTION__, (TREE_LIST)))->list.value)), (((tree_check ((t2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1564, __FUNCTION__, (TREE_LIST)))->list.value)), 0)) |
1565 | break; |
1566 | next_arg:; |
1567 | } |
1568 | |
1569 | warning_at (newdecl_loc, |
1570 | OPT_Wbuiltin_declaration_mismatch, |
1571 | "declaration of %q#D conflicts with built-in " |
1572 | "declaration %q#D", newdecl, olddecl); |
1573 | } |
1574 | else if ((DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1574, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1574, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c) |
1575 | && DECL_EXTERN_C_P (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1575, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1575, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) |
1576 | || compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1576, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1576, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), |
1577 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1577, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1577, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values))) |
1578 | { |
1579 | /* Don't really override olddecl for __* prefixed builtins |
1580 | except for __[^b]*_chk, the compiler might be using those |
1581 | explicitly. */ |
1582 | if (fndecl_built_in_p (olddecl)) |
1583 | { |
1584 | tree id = DECL_NAME (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1584, __FUNCTION__))->decl_minimal.name); |
1585 | const char *name = IDENTIFIER_POINTER (id)((const char *) (tree_check ((id), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1585, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.str ); |
1586 | size_t len; |
1587 | |
1588 | if (name[0] == '_' |
1589 | && name[1] == '_' |
1590 | && (strncmp (name + 2, "builtin_", |
1591 | strlen ("builtin_")) == 0 |
1592 | || (len = strlen (name)) <= strlen ("___chk") |
1593 | || memcmp (name + len - strlen ("_chk"), |
1594 | "_chk", strlen ("_chk") + 1) != 0)) |
1595 | { |
1596 | if (DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1596, __FUNCTION__))->decl_common.initial)) |
1597 | { |
1598 | error_at (newdecl_loc, |
1599 | "definition of %q#D ambiguates built-in " |
1600 | "declaration %q#D", newdecl, olddecl); |
1601 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1602 | } |
1603 | auto_diagnostic_group d; |
1604 | if (permerror (newdecl_loc, |
1605 | "new declaration %q#D ambiguates built-in" |
1606 | " declaration %q#D", newdecl, olddecl) |
1607 | && flag_permissiveglobal_options.x_flag_permissive) |
1608 | inform (newdecl_loc, |
1609 | "ignoring the %q#D declaration", newdecl); |
1610 | return flag_permissiveglobal_options.x_flag_permissive ? olddecl : error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1611 | } |
1612 | } |
1613 | |
1614 | /* A near match; override the builtin. */ |
1615 | |
1616 | if (TREE_PUBLIC (newdecl)((newdecl)->base.public_flag)) |
1617 | warning_at (newdecl_loc, |
1618 | OPT_Wbuiltin_declaration_mismatch, |
1619 | "new declaration %q#D ambiguates built-in " |
1620 | "declaration %q#D", newdecl, olddecl); |
1621 | else |
1622 | warning (OPT_Wshadow, |
1623 | fndecl_built_in_p (olddecl) |
1624 | ? G_("shadowing built-in function %q#D")"shadowing built-in function %q#D" |
1625 | : G_("shadowing library function %q#D")"shadowing library function %q#D", olddecl); |
1626 | } |
1627 | else |
1628 | /* Discard the old built-in function. */ |
1629 | return NULL_TREE(tree) __null; |
1630 | |
1631 | /* Replace the old RTL to avoid problems with inlining. */ |
1632 | COPY_DECL_RTL (newdecl, olddecl)((contains_struct_check ((olddecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1632, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((newdecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1632, __FUNCTION__))->decl_with_rtl.rtl); |
1633 | } |
1634 | else |
1635 | { |
1636 | /* Even if the types match, prefer the new declarations type |
1637 | for built-ins which have not been explicitly declared, |
1638 | for exception lists, etc... */ |
1639 | tree type = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1639, __FUNCTION__))->typed.type); |
1640 | tree attribs = (*targetm.merge_type_attributes) |
1641 | (TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1641, __FUNCTION__))->typed.type), type); |
1642 | |
1643 | type = cp_build_type_attribute_variant (type, attribs); |
1644 | TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1644, __FUNCTION__))->typed.type) = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1644, __FUNCTION__))->typed.type) = type; |
1645 | } |
1646 | |
1647 | /* If a function is explicitly declared "throw ()", propagate that to |
1648 | the corresponding builtin. */ |
1649 | if (DECL_BUILT_IN_CLASS (olddecl)((built_in_class) (tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1649, __FUNCTION__, (FUNCTION_DECL)))->function_decl.built_in_class ) == BUILT_IN_NORMAL |
1650 | && was_hidden |
1651 | && TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag) |
1652 | && !TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag)) |
1653 | { |
1654 | enum built_in_function fncode = DECL_FUNCTION_CODE (olddecl); |
1655 | tree tmpdecl = builtin_decl_explicit (fncode); |
1656 | if (tmpdecl && tmpdecl != olddecl && types_match) |
1657 | TREE_NOTHROW (tmpdecl)((tmpdecl)->base.nothrow_flag) = 1; |
1658 | } |
1659 | |
1660 | /* Whether or not the builtin can throw exceptions has no |
1661 | bearing on this declarator. */ |
1662 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) = 0; |
1663 | |
1664 | if (DECL_THIS_STATIC (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1664, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1664, __FUNCTION__))->decl_common.lang_flag_6) && !DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1664, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1664, __FUNCTION__))->decl_common.lang_flag_6)) |
1665 | { |
1666 | /* If a builtin function is redeclared as `static', merge |
1667 | the declarations, but make the original one static. */ |
1668 | DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1668, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1668, __FUNCTION__))->decl_common.lang_flag_6) = 1; |
1669 | TREE_PUBLIC (olddecl)((olddecl)->base.public_flag) = 0; |
1670 | |
1671 | /* Make the old declaration consistent with the new one so |
1672 | that all remnants of the builtin-ness of this function |
1673 | will be banished. */ |
1674 | SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl))(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1674, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1674, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1674, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); |
1675 | COPY_DECL_RTL (newdecl, olddecl)((contains_struct_check ((olddecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1675, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((newdecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1675, __FUNCTION__))->decl_with_rtl.rtl); |
1676 | } |
1677 | } |
1678 | else if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) != TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code)) |
1679 | { |
1680 | /* C++ Standard, 3.3, clause 4: |
1681 | "[Note: a namespace name or a class template name must be unique |
1682 | in its declarative region (7.3.2, clause 14). ]" */ |
1683 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == NAMESPACE_DECL |
1684 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) |
1685 | /* Namespace conflicts with not namespace. */; |
1686 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1686, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1686, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == TYPE_DECL) |
1687 | || 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1687, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1687, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == TYPE_DECL)) |
1688 | /* Class template conflicts. */; |
1689 | else if ((TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL |
1690 | && DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1690, __FUNCTION__, (TEMPLATE_DECL))))))))->result |
1691 | && TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1691, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == VAR_DECL) |
1692 | || (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL |
1693 | && DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1693, __FUNCTION__, (TEMPLATE_DECL))))))))->result |
1694 | && TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1694, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == VAR_DECL)) |
1695 | /* Variable template conflicts. */; |
1696 | else if (concept_definition_p (olddecl) |
1697 | || concept_definition_p (newdecl)) |
1698 | /* Concept conflicts. */; |
1699 | else if ((TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
1700 | && 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1700, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1700, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) |
1701 | || (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL |
1702 | && 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1702, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1702, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL))) |
1703 | { |
1704 | /* One is a function and the other is a template |
1705 | function. */ |
1706 | if (!UDLIT_OPER_P (DECL_NAME (newdecl))(!strncmp (((const char *) (tree_check ((((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1706, __FUNCTION__))->decl_minimal.name)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1706, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.str ), "operator\"\"", sizeof ("operator\"\"") - 1))) |
1707 | return NULL_TREE(tree) __null; |
1708 | |
1709 | /* There can only be one! */ |
1710 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL |
1711 | && check_raw_literal_operator (olddecl)) |
1712 | error_at (newdecl_loc, |
1713 | "literal operator %q#D conflicts with" |
1714 | " raw literal operator", newdecl); |
1715 | else if (check_raw_literal_operator (newdecl)) |
1716 | error_at (newdecl_loc, |
1717 | "raw literal operator %q#D conflicts with" |
1718 | " literal operator template", newdecl); |
1719 | else |
1720 | return NULL_TREE(tree) __null; |
1721 | |
1722 | inform (olddecl_loc, "previous declaration %q#D", olddecl); |
1723 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1724 | } |
1725 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1725, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1725, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false)) |
1726 | || (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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1726, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1726, __FUNCTION__))->decl_common.lang_specific)->u.base .selector == lds_decomp : false))) |
1727 | /* A structured binding must be unique in its declarative region. */; |
1728 | else if (DECL_IMPLICIT_TYPEDEF_P (olddecl)(((enum tree_code) (olddecl)->base.code) == TYPE_DECL && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1728, __FUNCTION__))->decl_common.lang_flag_2)) |
1729 | || DECL_IMPLICIT_TYPEDEF_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TYPE_DECL && ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1729, __FUNCTION__))->decl_common.lang_flag_2))) |
1730 | /* One is an implicit typedef, that's ok. */ |
1731 | return NULL_TREE(tree) __null; |
1732 | |
1733 | error ("%q#D redeclared as different kind of entity", newdecl); |
1734 | inform (olddecl_loc, "previous declaration %q#D", olddecl); |
1735 | |
1736 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1737 | } |
1738 | else if (!types_match) |
1739 | { |
1740 | if (CP_DECL_CONTEXT (newdecl)(!(! (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1740, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1740, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1740, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]) != CP_DECL_CONTEXT (olddecl)(!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1740, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1740, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1740, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])) |
1741 | /* These are certainly not duplicate declarations; they're |
1742 | from different scopes. */ |
1743 | return NULL_TREE(tree) __null; |
1744 | |
1745 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) |
1746 | { |
1747 | tree oldres = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1747, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1748 | tree newres = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1748, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
1749 | |
1750 | /* The name of a class template may not be declared to refer to |
1751 | any other template, class, function, object, namespace, value, |
1752 | or type in the same scope. */ |
1753 | if (TREE_CODE (oldres)((enum tree_code) (oldres)->base.code) == TYPE_DECL |
1754 | || TREE_CODE (newres)((enum tree_code) (newres)->base.code) == TYPE_DECL) |
1755 | { |
1756 | error_at (newdecl_loc, |
1757 | "conflicting declaration of template %q#D", newdecl); |
1758 | inform (olddecl_loc, |
1759 | "previous declaration %q#D", olddecl); |
1760 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1761 | } |
1762 | |
1763 | else if (TREE_CODE (oldres)((enum tree_code) (oldres)->base.code) == FUNCTION_DECL |
1764 | && TREE_CODE (newres)((enum tree_code) (newres)->base.code) == FUNCTION_DECL) |
1765 | { |
1766 | if (duplicate_function_template_decls (newdecl, olddecl)) |
1767 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1768 | return NULL_TREE(tree) __null; |
1769 | } |
1770 | else if (check_concept_refinement (olddecl, newdecl)) |
1771 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1772 | return NULL_TREE(tree) __null; |
1773 | } |
1774 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
1775 | { |
1776 | if (DECL_EXTERN_C_P (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1776, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1776, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1776, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1776, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)) == lang_c)) |
1777 | { |
1778 | error_at (newdecl_loc, |
1779 | "conflicting declaration of C function %q#D", |
1780 | newdecl); |
1781 | inform (olddecl_loc, |
1782 | "previous declaration %q#D", olddecl); |
1783 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1784 | } |
1785 | /* For function versions, params and types match, but they |
1786 | are not ambiguous. */ |
1787 | else if ((!DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1787, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) |
1788 | && !DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1788, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) |
1789 | // The functions have the same parameter types. |
1790 | && compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl))((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1790, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1790, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values), |
1791 | TYPE_ARG_TYPES (TREE_TYPE (olddecl))((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1791, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1791, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)) |
1792 | // And the same constraints. |
1793 | && equivalently_constrained (newdecl, olddecl)) |
1794 | { |
1795 | error_at (newdecl_loc, |
1796 | "ambiguating new declaration of %q#D", newdecl); |
1797 | inform (olddecl_loc, |
1798 | "old declaration %q#D", olddecl); |
1799 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1800 | } |
1801 | else |
1802 | return NULL_TREE(tree) __null; |
1803 | } |
1804 | else |
1805 | { |
1806 | error_at (newdecl_loc, "conflicting declaration %q#D", newdecl); |
1807 | inform (olddecl_loc, |
1808 | "previous declaration as %q#D", olddecl); |
1809 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1810 | } |
1811 | } |
1812 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
1813 | && DECL_OMP_DECLARE_REDUCTION_P (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__)))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> (( ((tree_check (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__)))->base.code) == FUNCTION_DECL || (( (enum tree_code) ((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__)))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1813, __FUNCTION__); <->u.fn; })->omp_declare_reduction_p )) |
1814 | { |
1815 | /* OMP UDRs are never duplicates. */ |
1816 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__)))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> (( ((tree_check (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__)))->base.code) == FUNCTION_DECL || (( (enum tree_code) ((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__)))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__); <->u.fn; })->omp_declare_reduction_p )) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1816, __FUNCTION__), 0 : 0)); |
1817 | error_at (newdecl_loc, |
1818 | "redeclaration of %<pragma omp declare reduction%>"); |
1819 | inform (olddecl_loc, |
1820 | "previous %<pragma omp declare reduction%> declaration"); |
1821 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1822 | } |
1823 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
1824 | && ((DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1824, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) |
1825 | && (!DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1825, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1825, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) |
1826 | || (DECL_TI_TEMPLATE (newdecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1826, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1826, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1826, __FUNCTION__, (TEMPLATE_INFO))))->tmpl |
1827 | != DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1827, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1827, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1827, __FUNCTION__, (TEMPLATE_INFO))))->tmpl))) |
1828 | || (DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1828, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) |
1829 | && (!DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1829, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1829, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) |
1830 | || (DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1830, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1830, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1830, __FUNCTION__, (TEMPLATE_INFO))))->tmpl |
1831 | != DECL_TI_TEMPLATE (newdecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1831, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1831, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1831, __FUNCTION__, (TEMPLATE_INFO))))->tmpl))))) |
1832 | /* It's OK to have a template specialization and a non-template |
1833 | with the same type, or to have specializations of two |
1834 | different templates with the same type. Note that if one is a |
1835 | specialization, and the other is an instantiation of the same |
1836 | template, that we do not exit at this point. That situation |
1837 | can occur if we instantiate a template class, and then |
1838 | specialize one of its methods. This situation is valid, but |
1839 | the declarations must be merged in the usual way. */ |
1840 | return NULL_TREE(tree) __null; |
1841 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
1842 | && ((DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1842, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) |
1843 | && !DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1843, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) |
1844 | || (DECL_TEMPLATE_INSTANTIATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1844, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) |
1845 | && !DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1845, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)))) |
1846 | /* One of the declarations is a template instantiation, and the |
1847 | other is not a template at all. That's OK. */ |
1848 | return NULL_TREE(tree) __null; |
1849 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) |
1850 | { |
1851 | /* In [namespace.alias] we have: |
1852 | |
1853 | In a declarative region, a namespace-alias-definition can be |
1854 | used to redefine a namespace-alias declared in that declarative |
1855 | region to refer only to the namespace to which it already |
1856 | refers. |
1857 | |
1858 | Therefore, if we encounter a second alias directive for the same |
1859 | alias, we can just ignore the second directive. */ |
1860 | if (DECL_NAMESPACE_ALIAS (newdecl)((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1860, __FUNCTION__, (NAMESPACE_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1860, __FUNCTION__))->decl_common.abstract_origin) |
1861 | && (DECL_NAMESPACE_ALIAS (newdecl)((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1861, __FUNCTION__, (NAMESPACE_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1861, __FUNCTION__))->decl_common.abstract_origin) |
1862 | == DECL_NAMESPACE_ALIAS (olddecl)((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1862, __FUNCTION__, (NAMESPACE_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1862, __FUNCTION__))->decl_common.abstract_origin))) |
1863 | return olddecl; |
1864 | |
1865 | /* Leave it to update_binding to merge or report error. */ |
1866 | return NULL_TREE(tree) __null; |
1867 | } |
1868 | else |
1869 | { |
1870 | const char *errmsg = redeclaration_error_message (newdecl, olddecl); |
1871 | if (errmsg) |
1872 | { |
1873 | auto_diagnostic_group d; |
1874 | error_at (newdecl_loc, errmsg, newdecl); |
1875 | if (DECL_NAME (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1875, __FUNCTION__))->decl_minimal.name) != NULL_TREE(tree) __null) |
1876 | inform (olddecl_loc, |
1877 | (DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1877, __FUNCTION__))->decl_common.initial) && namespace_bindings_p ()) |
1878 | ? G_("%q#D previously defined here")"%q#D previously defined here" |
1879 | : G_("%q#D previously declared here")"%q#D previously declared here", olddecl); |
1880 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
1881 | } |
1882 | else if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL |
1883 | && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1883, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null |
1884 | && !prototype_p (TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1884, __FUNCTION__))->typed.type)) |
1885 | && prototype_p (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1885, __FUNCTION__))->typed.type))) |
1886 | { |
1887 | /* Prototype decl follows defn w/o prototype. */ |
1888 | auto_diagnostic_group d; |
1889 | if (warning_at (newdecl_loc, 0, |
1890 | "prototype specified for %q#D", newdecl)) |
1891 | inform (olddecl_loc, |
1892 | "previous non-prototype definition here"); |
1893 | } |
1894 | else if (VAR_OR_FUNCTION_DECL_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL || (( enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) |
1895 | && DECL_LANGUAGE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1895, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1895, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1895, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1895, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus))) |
1896 | { |
1897 | /* [dcl.link] |
1898 | If two declarations of the same function or object |
1899 | specify different linkage-specifications ..., the program |
1900 | is ill-formed.... Except for functions with C++ linkage, |
1901 | a function declaration without a linkage specification |
1902 | shall not precede the first linkage specification for |
1903 | that function. A function can be declared without a |
1904 | linkage specification after an explicit linkage |
1905 | specification has been seen; the linkage explicitly |
1906 | specified in the earlier declaration is not affected by |
1907 | such a function declaration. |
1908 | |
1909 | DR 563 raises the question why the restrictions on |
1910 | functions should not also apply to objects. Older |
1911 | versions of G++ silently ignore the linkage-specification |
1912 | for this example: |
1913 | |
1914 | namespace N { |
1915 | extern int i; |
1916 | extern "C" int i; |
1917 | } |
1918 | |
1919 | which is clearly wrong. Therefore, we now treat objects |
1920 | like functions. */ |
1921 | if (current_lang_depth () == 0) |
1922 | { |
1923 | /* There is no explicit linkage-specification, so we use |
1924 | the linkage from the previous declaration. */ |
1925 | retrofit_lang_decl (newdecl); |
1926 | SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1926, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1926, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1926, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); |
1927 | } |
1928 | else |
1929 | { |
1930 | auto_diagnostic_group d; |
1931 | error_at (newdecl_loc, |
1932 | "conflicting declaration of %q#D with %qL linkage", |
1933 | newdecl, DECL_LANGUAGE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1933, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1933, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus))); |
1934 | inform (olddecl_loc, |
1935 | "previous declaration with %qL linkage", |
1936 | DECL_LANGUAGE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1936, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1936, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus))); |
1937 | } |
1938 | } |
1939 | |
1940 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1940, __FUNCTION__))->decl_common.lang_specific) && DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1940, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) |
1941 | ; |
1942 | else if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) |
1943 | { |
1944 | /* Note: free functions, as TEMPLATE_DECLs, are handled below. */ |
1945 | if (DECL_FUNCTION_MEMBER_P (olddecl)((((enum tree_code) (((contains_struct_check ((olddecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1945, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1945, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1945, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1945, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1945, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1945, __FUNCTION__); <->u.fn; })->static_function )) |
1946 | && (/* grokfndecl passes member function templates too |
1947 | as FUNCTION_DECLs. */ |
1948 | DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1948, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1948, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) |
1949 | /* C++11 8.3.6/6. |
1950 | Default arguments for a member function of a class |
1951 | template shall be specified on the initial declaration |
1952 | of the member function within the class template. */ |
1953 | || CLASSTYPE_TEMPLATE_INFO (CP_DECL_CONTEXT (olddecl))(((tree_class_check (((tree_check3 (((!(! (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1953, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1953, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1953, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL])), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1953, __FUNCTION__, (RECORD_TYPE), (UNION_TYPE), (QUAL_UNION_TYPE )))), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1953, __FUNCTION__))->type_non_common.lang_1)))) |
1954 | check_redeclaration_no_default_args (newdecl); |
1955 | else |
1956 | { |
1957 | tree t1 = FUNCTION_FIRST_USER_PARMTYPE (olddecl)skip_artificial_parms_for ((olddecl), ((tree_check2 ((((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1957, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1957, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); |
1958 | tree t2 = FUNCTION_FIRST_USER_PARMTYPE (newdecl)skip_artificial_parms_for ((newdecl), ((tree_check2 ((((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1958, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1958, __FUNCTION__, (FUNCTION_TYPE), (METHOD_TYPE)))->type_non_common .values)); |
1959 | int i = 1; |
1960 | |
1961 | for (; t1 && t1 != void_list_nodeglobal_trees[TI_VOID_LIST_NODE]; |
1962 | t1 = TREE_CHAIN (t1)((contains_struct_check ((t1), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1962, __FUNCTION__))->common.chain), t2 = TREE_CHAIN (t2)((contains_struct_check ((t2), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1962, __FUNCTION__))->common.chain), i++) |
1963 | if (TREE_PURPOSE (t1)((tree_check ((t1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1963, __FUNCTION__, (TREE_LIST)))->list.purpose) && TREE_PURPOSE (t2)((tree_check ((t2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1963, __FUNCTION__, (TREE_LIST)))->list.purpose)) |
1964 | { |
1965 | if (simple_cst_equal (TREE_PURPOSE (t1)((tree_check ((t1), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1965, __FUNCTION__, (TREE_LIST)))->list.purpose), |
1966 | TREE_PURPOSE (t2)((tree_check ((t2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 1966, __FUNCTION__, (TREE_LIST)))->list.purpose)) == 1) |
1967 | { |
1968 | auto_diagnostic_group d; |
1969 | if (permerror (newdecl_loc, |
1970 | "default argument given for parameter " |
1971 | "%d of %q#D", i, newdecl)) |
1972 | inform (olddecl_loc, |
1973 | "previous specification in %q#D here", |
1974 | olddecl); |
1975 | } |
1976 | else |
1977 | { |
1978 | auto_diagnostic_group d; |
1979 | error_at (newdecl_loc, |
1980 | "default argument given for parameter %d " |
1981 | "of %q#D", i, newdecl); |
1982 | inform (olddecl_loc, |
1983 | "previous specification in %q#D here", |
1984 | olddecl); |
1985 | } |
1986 | } |
1987 | |
1988 | /* C++17 11.3.6/4: "If a friend declaration specifies a default |
1989 | argument expression, that declaration... shall be the only |
1990 | declaration of the function or function template in the |
1991 | translation unit." */ |
1992 | check_no_redeclaration_friend_default_args (olddecl, newdecl); |
1993 | } |
1994 | } |
1995 | } |
1996 | |
1997 | /* Do not merge an implicit typedef with an explicit one. In: |
1998 | |
1999 | class A; |
2000 | ... |
2001 | typedef class A A __attribute__ ((foo)); |
2002 | |
2003 | the attribute should apply only to the typedef. */ |
2004 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TYPE_DECL |
2005 | && (DECL_IMPLICIT_TYPEDEF_P (olddecl)(((enum tree_code) (olddecl)->base.code) == TYPE_DECL && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2005, __FUNCTION__))->decl_common.lang_flag_2)) |
2006 | || DECL_IMPLICIT_TYPEDEF_P (newdecl)(((enum tree_code) (newdecl)->base.code) == TYPE_DECL && ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2006, __FUNCTION__))->decl_common.lang_flag_2)))) |
2007 | return NULL_TREE(tree) __null; |
2008 | |
2009 | if (DECL_TEMPLATE_PARM_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2009, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2009, __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))) |
2010 | return NULL_TREE(tree) __null; |
2011 | |
2012 | if (!validate_constexpr_redeclaration (olddecl, newdecl)) |
2013 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
2014 | |
2015 | if (modules_p () |
2016 | && TREE_CODE (CP_DECL_CONTEXT (olddecl))((enum tree_code) ((!(! (((contains_struct_check ((olddecl), ( TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2016, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2016, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2016, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == NAMESPACE_DECL |
2017 | && TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) != NAMESPACE_DECL |
2018 | && !hiding) |
2019 | { |
2020 | if (DECL_ARTIFICIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2020, __FUNCTION__))->decl_common.artificial_flag)) |
2021 | { |
2022 | gcc_checking_assert (!(DECL_LANG_SPECIFIC (olddecl)((void)(!(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2022, __FUNCTION__))->decl_common.lang_specific) && (((contains_struct_check (((olddecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2023, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p))) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2023, __FUNCTION__), 0 : 0)) |
2023 | && DECL_MODULE_IMPORT_P (olddecl)))((void)(!(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2022, __FUNCTION__))->decl_common.lang_specific) && (((contains_struct_check (((olddecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2023, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p))) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2023, __FUNCTION__), 0 : 0)); |
2024 | if (!(global_purview_p () || not_module_p ())) |
2025 | error ("declaration %qD conflicts with builtin", newdecl); |
2026 | else |
2027 | DECL_MODULE_EXPORT_P (olddecl)((tree_not_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2027, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3) = DECL_MODULE_EXPORT_P (newdecl)((tree_not_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2027, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3); |
2028 | } |
2029 | else |
2030 | { |
2031 | if (!module_may_redeclare (olddecl)) |
2032 | { |
2033 | error ("declaration %qD conflicts with import", newdecl); |
2034 | inform (olddecl_loc, "import declared %q#D here", olddecl); |
2035 | |
2036 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
2037 | } |
2038 | |
2039 | if (DECL_MODULE_EXPORT_P (newdecl)((tree_not_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2039, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3) |
2040 | && !DECL_MODULE_EXPORT_P (olddecl)((tree_not_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2040, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_3)) |
2041 | { |
2042 | error ("conflicting exporting declaration %qD", newdecl); |
2043 | inform (olddecl_loc, "previous declaration %q#D here", olddecl); |
2044 | } |
2045 | } |
2046 | } |
2047 | |
2048 | /* We have committed to returning OLDDECL at this point. */ |
2049 | |
2050 | /* If new decl is `static' and an `extern' was seen previously, |
2051 | warn about it. */ |
2052 | warn_extern_redeclared_static (newdecl, olddecl); |
2053 | |
2054 | /* True to merge attributes between the declarations, false to |
2055 | set OLDDECL's attributes to those of NEWDECL (for template |
2056 | explicit specializations that specify their own attributes |
2057 | independent of those specified for the primary template). */ |
2058 | const bool merge_attr = (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != FUNCTION_DECL |
2059 | || !DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2059, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) |
2060 | || DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2060, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)); |
2061 | |
2062 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2063 | { |
2064 | if (merge_attr) |
2065 | { |
2066 | if (diagnose_mismatched_attributes (olddecl, newdecl)) |
2067 | inform (olddecl_loc, DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2067, __FUNCTION__))->decl_common.initial) |
2068 | ? G_("previous definition of %qD here")"previous definition of %qD here" |
2069 | : G_("previous declaration of %qD here")"previous declaration of %qD here", olddecl); |
2070 | |
2071 | /* [dcl.attr.noreturn]: The first declaration of a function shall |
2072 | specify the noreturn attribute if any declaration of that function |
2073 | specifies the noreturn attribute. */ |
2074 | tree a; |
2075 | if (TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag) |
2076 | && !TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) |
2077 | /* This applies to [[noreturn]] only, not its GNU variants. */ |
2078 | && (a = lookup_attribute ("noreturn", DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2078, __FUNCTION__))->decl_common.attributes))) |
2079 | && cxx11_attribute_p (a) |
2080 | && get_attribute_namespace (a) == NULL_TREE(tree) __null) |
2081 | { |
2082 | error_at (newdecl_loc, "function %qD declared %<[[noreturn]]%> " |
2083 | "but its first declaration was not", newdecl); |
2084 | inform (olddecl_loc, "previous declaration of %qD", olddecl); |
2085 | } |
2086 | } |
2087 | |
2088 | /* Now that functions must hold information normally held |
2089 | by field decls, there is extra work to do so that |
2090 | declaration information does not get destroyed during |
2091 | definition. */ |
2092 | if (DECL_VINDEX (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2092, __FUNCTION__, (FUNCTION_DECL)))->function_decl.vindex )) |
2093 | DECL_VINDEX (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2093, __FUNCTION__, (FUNCTION_DECL)))->function_decl.vindex ) = DECL_VINDEX (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2093, __FUNCTION__, (FUNCTION_DECL)))->function_decl.vindex ); |
2094 | if (DECL_CONTEXT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2094, __FUNCTION__))->decl_minimal.context)) |
2095 | DECL_CONTEXT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2095, __FUNCTION__))->decl_minimal.context) = DECL_CONTEXT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2095, __FUNCTION__))->decl_minimal.context); |
2096 | DECL_STATIC_CONSTRUCTOR (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2096, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_ctor_flag ) |= DECL_STATIC_CONSTRUCTOR (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2096, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_ctor_flag ); |
2097 | DECL_STATIC_DESTRUCTOR (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2097, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_dtor_flag ) |= DECL_STATIC_DESTRUCTOR (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2097, __FUNCTION__, (FUNCTION_DECL)))->function_decl.static_dtor_flag ); |
2098 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2098, __FUNCTION__); <->u.fn; })->pure_virtual); |
2099 | DECL_VIRTUAL_P (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2099, __FUNCTION__))->decl_common.virtual_flag) |= DECL_VIRTUAL_P (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2099, __FUNCTION__))->decl_common.virtual_flag); |
2100 | DECL_INVALID_OVERRIDER_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2100, __FUNCTION__))->decl_common.lang_flag_4)) |= DECL_INVALID_OVERRIDER_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2100, __FUNCTION__))->decl_common.lang_flag_4)); |
2101 | DECL_FINAL_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2101, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.final ) |= DECL_FINAL_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2101, __FUNCTION__, (FUNCTION_DECL)))->decl_with_vis.final ); |
2102 | DECL_OVERRIDE_P (newdecl)(((tree_not_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2102, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)) |= DECL_OVERRIDE_P (olddecl)(((tree_not_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2102, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)); |
2103 | DECL_THIS_STATIC (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2103, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2103, __FUNCTION__))->decl_common.lang_flag_6) |= DECL_THIS_STATIC (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2103, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2103, __FUNCTION__))->decl_common.lang_flag_6); |
2104 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2104, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2104, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2104, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2104, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2104, __FUNCTION__); <->u.fn; })->has_dependent_explicit_spec_p ) |
2105 | |= 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2105, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2105, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2105, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2105, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2105, __FUNCTION__); <->u.fn; })->has_dependent_explicit_spec_p ); |
2106 | if (DECL_OVERLOADED_OPERATOR_P (olddecl)(((tree_not_check2 (((tree_check ((((contains_struct_check (( olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2106, __FUNCTION__))->decl_minimal.name)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2106, __FUNCTION__, (IDENTIFIER_NODE)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2106, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2))) |
2107 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2107, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2107, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2107, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2107, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2107, __FUNCTION__); <->u.fn; })->ovl_op_code) |
2108 | = 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2108, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2108, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2108, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2108, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2108, __FUNCTION__); <->u.fn; })->ovl_op_code); |
2109 | new_defines_function = DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2109, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null; |
2110 | |
2111 | /* Optionally warn about more than one declaration for the same |
2112 | name, but don't warn about a function declaration followed by a |
2113 | definition. */ |
2114 | if (warn_redundant_declsglobal_options.x_warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2114, __FUNCTION__))->decl_common.artificial_flag) |
2115 | && !(new_defines_function && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2115, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null) |
2116 | /* Don't warn about extern decl followed by definition. */ |
2117 | && !(DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2117, __FUNCTION__))->decl_common.decl_flag_1) && ! DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2117, __FUNCTION__))->decl_common.decl_flag_1)) |
2118 | /* Don't warn if at least one is/was hidden. */ |
2119 | && !(hiding || was_hidden) |
2120 | /* Don't warn about declaration followed by specialization. */ |
2121 | && (! DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2121, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) |
2122 | || DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2122, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2))) |
2123 | { |
2124 | auto_diagnostic_group d; |
2125 | if (warning_at (newdecl_loc, |
2126 | OPT_Wredundant_decls, |
2127 | "redundant redeclaration of %qD in same scope", |
2128 | newdecl)) |
2129 | inform (olddecl_loc, |
2130 | "previous declaration of %qD", olddecl); |
2131 | } |
2132 | |
2133 | /* [dcl.fct.def.delete] A deleted definition of a function shall be the |
2134 | first declaration of the function or, for an explicit specialization |
2135 | of a function template, the first declaration of that |
2136 | specialization. */ |
2137 | if (!(DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2137, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) |
2138 | && DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2138, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2))) |
2139 | { |
2140 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2140, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2140, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2140, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2140, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2140, __FUNCTION__); <->u.fn; })->min.base.threadprivate_or_deleted_p )) |
2141 | { |
2142 | auto_diagnostic_group d; |
2143 | pedwarn (newdecl_loc, OPT_Wpedantic, |
2144 | "deleted definition of %qD is not first declaration", |
2145 | newdecl); |
2146 | inform (olddecl_loc, |
2147 | "previous declaration of %qD", olddecl); |
2148 | } |
2149 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2149, __FUNCTION__); <->u.fn; })->min.base.threadprivate_or_deleted_p ); |
2150 | } |
2151 | } |
2152 | |
2153 | /* Deal with C++: must preserve virtual function table size. */ |
2154 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TYPE_DECL) |
2155 | { |
2156 | tree newtype = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2156, __FUNCTION__))->typed.type); |
2157 | tree oldtype = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2157, __FUNCTION__))->typed.type); |
2158 | |
2159 | if (newtype != error_mark_nodeglobal_trees[TI_ERROR_MARK] && oldtype != error_mark_nodeglobal_trees[TI_ERROR_MARK] |
2160 | && TYPE_LANG_SPECIFIC (newtype)((tree_class_check ((newtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2160, __FUNCTION__))->type_with_lang_specific.lang_specific ) && TYPE_LANG_SPECIFIC (oldtype)((tree_class_check ((oldtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2160, __FUNCTION__))->type_with_lang_specific.lang_specific )) |
2161 | CLASSTYPE_FRIEND_CLASSES (newtype)((((tree_class_check ((newtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2161, __FUNCTION__))->type_with_lang_specific.lang_specific ))->friend_classes) |
2162 | = CLASSTYPE_FRIEND_CLASSES (oldtype)((((tree_class_check ((oldtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2162, __FUNCTION__))->type_with_lang_specific.lang_specific ))->friend_classes); |
2163 | |
2164 | DECL_ORIGINAL_TYPE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2164, __FUNCTION__, (TYPE_DECL)))->decl_non_common.result ) = DECL_ORIGINAL_TYPE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2164, __FUNCTION__, (TYPE_DECL)))->decl_non_common.result ); |
2165 | } |
2166 | |
2167 | /* Copy all the DECL_... slots specified in the new decl except for |
2168 | any that we copy here from the old type. */ |
2169 | if (merge_attr) |
2170 | DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2170, __FUNCTION__))->decl_common.attributes) |
2171 | = (*targetm.merge_decl_attributes) (olddecl, newdecl); |
2172 | else |
2173 | DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2173, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2173, __FUNCTION__))->decl_common.attributes); |
2174 | |
2175 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) |
2176 | { |
2177 | tree old_result = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2177, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
2178 | tree new_result = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2178, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
2179 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2179, __FUNCTION__))->typed.type) = TREE_TYPE (old_result)((contains_struct_check ((old_result), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2179, __FUNCTION__))->typed.type); |
2180 | |
2181 | /* The new decl should not already have gathered any |
2182 | specializations. */ |
2183 | gcc_assert (!DECL_TEMPLATE_SPECIALIZATIONS (newdecl))((void)(!(!((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2183, __FUNCTION__, (TEMPLATE_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2183, __FUNCTION__))->decl_common.size)) ? fancy_abort ( "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2183, __FUNCTION__), 0 : 0)); |
2184 | |
2185 | DECL_ATTRIBUTES (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2185, __FUNCTION__))->decl_common.attributes) |
2186 | = (*targetm.merge_decl_attributes) (old_result, new_result); |
2187 | |
2188 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2188, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2188, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) |
2189 | { |
2190 | if (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2190, __FUNCTION__))->decl_minimal.locus) |
2191 | != DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2191, __FUNCTION__))->decl_minimal.locus)) |
2192 | { |
2193 | /* Per C++11 8.3.6/4, default arguments cannot be added in |
2194 | later declarations of a function template. */ |
2195 | check_redeclaration_no_default_args (newdecl); |
2196 | /* C++17 11.3.6/4: "If a friend declaration specifies a default |
2197 | argument expression, that declaration... shall be the only |
2198 | declaration of the function or function template in the |
2199 | translation unit." */ |
2200 | check_no_redeclaration_friend_default_args |
2201 | (old_result, new_result); |
2202 | } |
2203 | if (!DECL_UNIQUE_FRIEND_P (old_result)(((contains_struct_check (((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2203, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2203, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls)) |
2204 | DECL_UNIQUE_FRIEND_P (new_result)(((contains_struct_check (((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2204, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2204, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) = false; |
2205 | |
2206 | check_default_args (newdecl); |
2207 | |
2208 | if (GNU_INLINE_P (old_result)(((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2208, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2208, __FUNCTION__))->decl_common.attributes))) != GNU_INLINE_P (new_result)(((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2208, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2208, __FUNCTION__))->decl_common.attributes))) |
2209 | && DECL_INITIAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2209, __FUNCTION__))->decl_common.initial)) |
2210 | { |
2211 | if (DECL_INITIAL (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2211, __FUNCTION__))->decl_common.initial)) |
2212 | DECL_UNINLINABLE (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2212, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = 1; |
2213 | else |
2214 | DECL_UNINLINABLE (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2214, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = DECL_UNINLINABLE (new_result)((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2214, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); |
2215 | DECL_EXTERNAL (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2215, __FUNCTION__))->decl_common.decl_flag_1) = DECL_EXTERNAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2215, __FUNCTION__))->decl_common.decl_flag_1); |
2216 | DECL_NOT_REALLY_EXTERN (old_result)(((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2216, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern) |
2217 | = DECL_NOT_REALLY_EXTERN (new_result)(((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2217, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern); |
2218 | DECL_INTERFACE_KNOWN (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2218, __FUNCTION__))->decl_common.lang_flag_5) |
2219 | = DECL_INTERFACE_KNOWN (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2219, __FUNCTION__))->decl_common.lang_flag_5); |
2220 | DECL_DECLARED_INLINE_P (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2220, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) |
2221 | = DECL_DECLARED_INLINE_P (new_result)((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2221, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); |
2222 | DECL_DISREGARD_INLINE_LIMITS (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2222, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) |
2223 | |= DECL_DISREGARD_INLINE_LIMITS (new_result)((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2223, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ); |
2224 | |
2225 | } |
2226 | else |
2227 | { |
2228 | DECL_DECLARED_INLINE_P (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2228, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) |
2229 | |= DECL_DECLARED_INLINE_P (new_result)((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2229, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); |
2230 | DECL_DISREGARD_INLINE_LIMITS (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2230, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) |
2231 | |= DECL_DISREGARD_INLINE_LIMITS (new_result)((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2231, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ); |
2232 | check_redeclaration_exception_specification (newdecl, olddecl); |
2233 | |
2234 | merge_attribute_bits (new_result, old_result); |
2235 | } |
2236 | } |
2237 | |
2238 | /* If the new declaration is a definition, update the file and |
2239 | line information on the declaration, and also make |
2240 | the old declaration the same definition. */ |
2241 | if (DECL_INITIAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2241, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null) |
2242 | { |
2243 | DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2243, __FUNCTION__))->decl_minimal.locus) |
2244 | = DECL_SOURCE_LOCATION (old_result)((contains_struct_check ((old_result), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2244, __FUNCTION__))->decl_minimal.locus) |
2245 | = DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2245, __FUNCTION__))->decl_minimal.locus); |
2246 | DECL_INITIAL (old_result)((contains_struct_check ((old_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2246, __FUNCTION__))->decl_common.initial) = DECL_INITIAL (new_result)((contains_struct_check ((new_result), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2246, __FUNCTION__))->decl_common.initial); |
2247 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2247, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2247, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) |
2248 | { |
2249 | tree parm; |
2250 | DECL_ARGUMENTS (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2250, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ) |
2251 | = DECL_ARGUMENTS (new_result)((tree_check ((new_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2251, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); |
2252 | for (parm = DECL_ARGUMENTS (old_result)((tree_check ((old_result), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2252, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); parm; |
2253 | parm = DECL_CHAIN (parm)(((contains_struct_check (((contains_struct_check ((parm), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2253, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2253, __FUNCTION__))->common.chain))) |
2254 | DECL_CONTEXT (parm)((contains_struct_check ((parm), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2254, __FUNCTION__))->decl_minimal.context) = old_result; |
2255 | } |
2256 | } |
2257 | |
2258 | DECL_MODULE_IMPORT_P (olddecl)(((contains_struct_check (((olddecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2258, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p) |
2259 | = DECL_MODULE_IMPORT_P (old_result)(((contains_struct_check (((old_result)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2259, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p) |
2260 | = DECL_MODULE_IMPORT_P (newdecl)(((contains_struct_check (((newdecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2260, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p); |
2261 | |
2262 | return olddecl; |
2263 | } |
2264 | |
2265 | if (types_match) |
2266 | { |
2267 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2268 | check_redeclaration_exception_specification (newdecl, olddecl); |
2269 | |
2270 | /* Automatically handles default parameters. */ |
2271 | tree oldtype = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2271, __FUNCTION__))->typed.type); |
2272 | tree newtype; |
2273 | |
2274 | /* For typedefs use the old type, as the new type's DECL_NAME points |
2275 | at newdecl, which will be ggc_freed. */ |
2276 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL) |
2277 | { |
2278 | /* But NEWTYPE might have an attribute, honor that. */ |
2279 | tree tem = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2279, __FUNCTION__))->typed.type); |
2280 | newtype = oldtype; |
2281 | |
2282 | if (TYPE_USER_ALIGN (tem)((tree_class_check ((tem), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2282, __FUNCTION__))->base.u.bits.user_align)) |
2283 | { |
2284 | if (TYPE_ALIGN (tem)((tree_class_check ((tem), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2284, __FUNCTION__))->type_common.align ? ((unsigned)1) << ((tem)->type_common.align - 1) : 0) > TYPE_ALIGN (newtype)((tree_class_check ((newtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2284, __FUNCTION__))->type_common.align ? ((unsigned)1) << ((newtype)->type_common.align - 1) : 0)) |
2285 | SET_TYPE_ALIGN (newtype, TYPE_ALIGN (tem))((tree_class_check ((newtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2285, __FUNCTION__))->type_common.align = ffs_hwi (((tree_class_check ((tem), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2285, __FUNCTION__))->type_common.align ? ((unsigned)1) << ((tem)->type_common.align - 1) : 0))); |
2286 | TYPE_USER_ALIGN (newtype)((tree_class_check ((newtype), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2286, __FUNCTION__))->base.u.bits.user_align) = true; |
2287 | } |
2288 | |
2289 | /* And remove the new type from the variants list. */ |
2290 | if (TYPE_NAME (TREE_TYPE (newdecl))((tree_class_check ((((contains_struct_check ((newdecl), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2290, __FUNCTION__))->typed.type)), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2290, __FUNCTION__))->type_common.name) == newdecl) |
2291 | { |
2292 | tree remove = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2292, __FUNCTION__))->typed.type); |
2293 | if (TYPE_MAIN_VARIANT (remove)((tree_class_check ((remove), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2293, __FUNCTION__))->type_common.main_variant) == remove) |
2294 | { |
2295 | gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE)((void)(!(((tree_class_check ((remove), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2295, __FUNCTION__))->type_common.next_variant) == (tree ) __null) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2295, __FUNCTION__), 0 : 0)); |
2296 | /* If remove is the main variant, no need to remove that |
2297 | from the list. One of the DECL_ORIGINAL_TYPE |
2298 | variants, e.g. created for aligned attribute, might still |
2299 | refer to the newdecl TYPE_DECL though, so remove that one |
2300 | in that case. */ |
2301 | if (tree orig = DECL_ORIGINAL_TYPE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2301, __FUNCTION__, (TYPE_DECL)))->decl_non_common.result )) |
2302 | if (orig != remove) |
2303 | for (tree t = TYPE_MAIN_VARIANT (orig)((tree_class_check ((orig), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2303, __FUNCTION__))->type_common.main_variant); t; |
2304 | t = TYPE_MAIN_VARIANT (t)((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2304, __FUNCTION__))->type_common.main_variant)) |
2305 | if (TYPE_NAME (TYPE_NEXT_VARIANT (t))((tree_class_check ((((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2305, __FUNCTION__))->type_common.next_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2305, __FUNCTION__))->type_common.name) == newdecl) |
2306 | { |
2307 | TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2307, __FUNCTION__))->type_common.next_variant) |
2308 | = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t))((tree_class_check ((((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2308, __FUNCTION__))->type_common.next_variant)), (tcc_type ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2308, __FUNCTION__))->type_common.next_variant); |
2309 | break; |
2310 | } |
2311 | } |
2312 | else |
2313 | for (tree t = TYPE_MAIN_VARIANT (remove)((tree_class_check ((remove), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2313, __FUNCTION__))->type_common.main_variant); ; |
2314 | t = TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2314, __FUNCTION__))->type_common.next_variant)) |
2315 | if (TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2315, __FUNCTION__))->type_common.next_variant) == remove) |
2316 | { |
2317 | TYPE_NEXT_VARIANT (t)((tree_class_check ((t), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2317, __FUNCTION__))->type_common.next_variant) = TYPE_NEXT_VARIANT (remove)((tree_class_check ((remove), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2317, __FUNCTION__))->type_common.next_variant); |
2318 | break; |
2319 | } |
2320 | } |
2321 | } |
2322 | else if (merge_attr) |
2323 | newtype = merge_types (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2323, __FUNCTION__))->typed.type), TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2323, __FUNCTION__))->typed.type)); |
2324 | else |
2325 | newtype = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2325, __FUNCTION__))->typed.type); |
2326 | |
2327 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) |
2328 | { |
2329 | DECL_THIS_EXTERN (newdecl)((contains_struct_check (((tree_check3 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2329, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2329, __FUNCTION__))->decl_common.lang_flag_2) |= DECL_THIS_EXTERN (olddecl)((contains_struct_check (((tree_check3 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2329, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL), (PARM_DECL )))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2329, __FUNCTION__))->decl_common.lang_flag_2); |
2330 | /* For already initialized vars, TREE_READONLY could have been |
2331 | cleared in cp_finish_decl, because the var needs runtime |
2332 | initialization or destruction. Make sure not to set |
2333 | TREE_READONLY on it again. */ |
2334 | if (DECL_INITIALIZED_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2334, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2334, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) |
2335 | && !DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2335, __FUNCTION__))->decl_common.decl_flag_1) |
2336 | && !TREE_READONLY (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2336, __FUNCTION__))->base.readonly_flag)) |
2337 | TREE_READONLY (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2337, __FUNCTION__))->base.readonly_flag) = 0; |
2338 | DECL_INITIALIZED_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2338, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2338, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) |= DECL_INITIALIZED_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2338, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2338, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)); |
2339 | DECL_NONTRIVIALLY_INITIALIZED_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2339, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2339, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_6)) |
2340 | |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2340, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2340, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_6)); |
2341 | if (DECL_DEPENDENT_INIT_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2341, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2341, __FUNCTION__))->decl_common.lang_specific) && ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2341, __FUNCTION__))->decl_common.lang_specific)->u.base .dependent_init_p)) |
2342 | SET_DECL_DEPENDENT_INIT_P (newdecl, true)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2342, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2342, __FUNCTION__))->decl_common.lang_specific)->u.base .dependent_init_p = (true)); |
2343 | DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2343, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2343, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)) |
2344 | |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2344, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2344, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)); |
2345 | 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2345, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2345, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2345, __FUNCTION__))->decl_common.lang_flag_8) |
2346 | |= 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2346, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2346, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2346, __FUNCTION__))->decl_common.lang_flag_8); |
2347 | DECL_DECLARED_CONSTINIT_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2347, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2347, __FUNCTION__))->decl_common.lang_flag_7)) |
2348 | |= DECL_DECLARED_CONSTINIT_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2348, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2348, __FUNCTION__))->decl_common.lang_flag_7)); |
2349 | |
2350 | /* Merge the threadprivate attribute from OLDDECL into NEWDECL. */ |
2351 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2351, __FUNCTION__))->decl_common.lang_specific) |
2352 | && CP_DECL_THREADPRIVATE_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2352, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2352, __FUNCTION__))->decl_common.lang_specific)->u.base .threadprivate_or_deleted_p)) |
2353 | { |
2354 | /* Allocate a LANG_SPECIFIC structure for NEWDECL, if needed. */ |
2355 | retrofit_lang_decl (newdecl); |
2356 | CP_DECL_THREADPRIVATE_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2356, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2356, __FUNCTION__))->decl_common.lang_specific)->u.base .threadprivate_or_deleted_p) = 1; |
2357 | } |
2358 | } |
2359 | |
2360 | /* An explicit specialization of a function template or of a member |
2361 | function of a class template can be declared transaction_safe |
2362 | independently of whether the corresponding template entity is declared |
2363 | transaction_safe. */ |
2364 | if (flag_tmglobal_options.x_flag_tm && TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
2365 | && DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2365, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) |
2366 | && DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2366, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2) |
2367 | && tx_safe_fn_type_p (newtype) |
2368 | && !tx_safe_fn_type_p (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2368, __FUNCTION__))->typed.type))) |
2369 | newtype = tx_unsafe_fn_variant (newtype); |
2370 | |
2371 | TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2371, __FUNCTION__))->typed.type) = TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2371, __FUNCTION__))->typed.type) = newtype; |
2372 | |
2373 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2374 | check_default_args (newdecl); |
2375 | |
2376 | /* Lay the type out, unless already done. */ |
2377 | if (! same_type_p (newtype, oldtype)comptypes ((newtype), (oldtype), 0) |
2378 | && TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2378, __FUNCTION__))->typed.type) != error_mark_nodeglobal_trees[TI_ERROR_MARK] |
2379 | && !(processing_template_declscope_chain->x_processing_template_decl && uses_template_parms (newdecl))) |
2380 | layout_type (TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2380, __FUNCTION__))->typed.type)); |
2381 | |
2382 | if ((VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) |
2383 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == PARM_DECL |
2384 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == RESULT_DECL |
2385 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FIELD_DECL |
2386 | || TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL) |
2387 | && !(processing_template_declscope_chain->x_processing_template_decl && uses_template_parms (newdecl))) |
2388 | layout_decl (newdecl, 0); |
2389 | |
2390 | /* Merge deprecatedness. */ |
2391 | if (TREE_DEPRECATED (newdecl)((newdecl)->base.deprecated_flag)) |
2392 | TREE_DEPRECATED (olddecl)((olddecl)->base.deprecated_flag) = 1; |
2393 | |
2394 | /* Preserve function specific target and optimization options */ |
2395 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2396 | { |
2397 | if (DECL_FUNCTION_SPECIFIC_TARGET (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2397, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target ) |
2398 | && !DECL_FUNCTION_SPECIFIC_TARGET (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2398, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target )) |
2399 | DECL_FUNCTION_SPECIFIC_TARGET (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2399, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target ) |
2400 | = DECL_FUNCTION_SPECIFIC_TARGET (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2400, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_target ); |
2401 | |
2402 | if (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2402, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization ) |
2403 | && !DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2403, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization )) |
2404 | DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2404, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization ) |
2405 | = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2405, __FUNCTION__, (FUNCTION_DECL)))->function_decl.function_specific_optimization ); |
2406 | |
2407 | if (!DECL_UNIQUE_FRIEND_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2407, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2407, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls)) |
2408 | DECL_UNIQUE_FRIEND_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2408, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2408, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) = false; |
2409 | } |
2410 | else |
2411 | { |
2412 | /* Merge the const type qualifier. */ |
2413 | if (TREE_READONLY (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2413, __FUNCTION__))->base.readonly_flag)) |
2414 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2414, __FUNCTION__))->base.readonly_flag) = 1; |
2415 | /* Merge the volatile type qualifier. */ |
2416 | if (TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag)) |
2417 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) = 1; |
2418 | } |
2419 | |
2420 | /* Merge the initialization information. */ |
2421 | if (DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2421, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null |
2422 | && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2422, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null) |
2423 | { |
2424 | DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2424, __FUNCTION__))->decl_common.initial) = DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2424, __FUNCTION__))->decl_common.initial); |
2425 | DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2425, __FUNCTION__))->decl_minimal.locus) = DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2425, __FUNCTION__))->decl_minimal.locus); |
2426 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2427 | { |
2428 | DECL_SAVED_TREE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2428, __FUNCTION__, (FUNCTION_DECL)))->function_decl.saved_tree ) = DECL_SAVED_TREE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2428, __FUNCTION__, (FUNCTION_DECL)))->function_decl.saved_tree ); |
2429 | DECL_STRUCT_FUNCTION (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2429, __FUNCTION__, (FUNCTION_DECL)))->function_decl.f) = DECL_STRUCT_FUNCTION (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2429, __FUNCTION__, (FUNCTION_DECL)))->function_decl.f); |
2430 | } |
2431 | } |
2432 | |
2433 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2434 | { |
2435 | DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2435, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_instrument_function_entry_exit ) |
2436 | |= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2436, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_instrument_function_entry_exit ); |
2437 | DECL_NO_LIMIT_STACK (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2437, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_limit_stack ) |= DECL_NO_LIMIT_STACK (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2437, __FUNCTION__, (FUNCTION_DECL)))->function_decl.no_limit_stack ); |
2438 | if (DECL_IS_OPERATOR_NEW_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2438, __FUNCTION__, (FUNCTION_DECL)))->function_decl.decl_type == OPERATOR_NEW)) |
2439 | DECL_SET_IS_OPERATOR_NEW (newdecl, true)set_function_decl_type ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2439, __FUNCTION__, (FUNCTION_DECL))), OPERATOR_NEW, true); |
2440 | DECL_LOOPING_CONST_OR_PURE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2440, __FUNCTION__, (FUNCTION_DECL)))->function_decl.looping_const_or_pure_flag ) |
2441 | |= DECL_LOOPING_CONST_OR_PURE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2441, __FUNCTION__, (FUNCTION_DECL)))->function_decl.looping_const_or_pure_flag ); |
2442 | DECL_IS_REPLACEABLE_OPERATOR (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2442, __FUNCTION__, (FUNCTION_DECL)))->function_decl.replaceable_operator ) |
2443 | |= DECL_IS_REPLACEABLE_OPERATOR (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2443, __FUNCTION__, (FUNCTION_DECL)))->function_decl.replaceable_operator ); |
2444 | |
2445 | if (merge_attr) |
2446 | merge_attribute_bits (newdecl, olddecl); |
2447 | else |
2448 | { |
2449 | /* Merge the noreturn bit. */ |
2450 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) = TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag); |
2451 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2451, __FUNCTION__))->base.readonly_flag) = TREE_READONLY (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2451, __FUNCTION__))->base.readonly_flag); |
2452 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) = TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag); |
2453 | DECL_IS_MALLOC (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2453, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ) = DECL_IS_MALLOC (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2453, __FUNCTION__, (FUNCTION_DECL)))->function_decl.malloc_flag ); |
2454 | DECL_PURE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2454, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ) = DECL_PURE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2454, __FUNCTION__, (FUNCTION_DECL)))->function_decl.pure_flag ); |
2455 | } |
2456 | /* Keep the old RTL. */ |
2457 | COPY_DECL_RTL (olddecl, newdecl)((contains_struct_check ((newdecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2457, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((olddecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2457, __FUNCTION__))->decl_with_rtl.rtl); |
2458 | } |
2459 | else if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) |
2460 | && (DECL_SIZE (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2460, __FUNCTION__))->decl_common.size) || !DECL_SIZE (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2460, __FUNCTION__))->decl_common.size))) |
2461 | { |
2462 | /* Keep the old RTL. We cannot keep the old RTL if the old |
2463 | declaration was for an incomplete object and the new |
2464 | declaration is not since many attributes of the RTL will |
2465 | change. */ |
2466 | COPY_DECL_RTL (olddecl, newdecl)((contains_struct_check ((newdecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2466, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((olddecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2466, __FUNCTION__))->decl_with_rtl.rtl); |
2467 | } |
2468 | } |
2469 | /* If cannot merge, then use the new type and qualifiers, |
2470 | and don't preserve the old rtl. */ |
2471 | else |
2472 | { |
2473 | /* Clean out any memory we had of the old declaration. */ |
2474 | tree oldstatic = value_member (olddecl, static_aggregates); |
2475 | if (oldstatic) |
2476 | TREE_VALUE (oldstatic)((tree_check ((oldstatic), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2476, __FUNCTION__, (TREE_LIST)))->list.value) = error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
2477 | |
2478 | TREE_TYPE (olddecl)((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2478, __FUNCTION__))->typed.type) = TREE_TYPE (newdecl)((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2478, __FUNCTION__))->typed.type); |
2479 | TREE_READONLY (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2479, __FUNCTION__))->base.readonly_flag) = TREE_READONLY (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2479, __FUNCTION__))->base.readonly_flag); |
2480 | TREE_THIS_VOLATILE (olddecl)((olddecl)->base.volatile_flag) = TREE_THIS_VOLATILE (newdecl)((newdecl)->base.volatile_flag); |
2481 | TREE_NOTHROW (olddecl)((olddecl)->base.nothrow_flag) = TREE_NOTHROW (newdecl)((newdecl)->base.nothrow_flag); |
2482 | TREE_SIDE_EFFECTS (olddecl)((non_type_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2482, __FUNCTION__))->base.side_effects_flag) = TREE_SIDE_EFFECTS (newdecl)((non_type_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2482, __FUNCTION__))->base.side_effects_flag); |
2483 | } |
2484 | |
2485 | /* Merge the storage class information. */ |
2486 | merge_weak (newdecl, olddecl); |
2487 | |
2488 | DECL_DEFER_OUTPUT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2488, __FUNCTION__))->decl_with_vis.defer_output) |= DECL_DEFER_OUTPUT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2488, __FUNCTION__))->decl_with_vis.defer_output); |
2489 | TREE_PUBLIC (newdecl)((newdecl)->base.public_flag) = TREE_PUBLIC (olddecl)((olddecl)->base.public_flag); |
2490 | TREE_STATIC (olddecl)((olddecl)->base.static_flag) = TREE_STATIC (newdecl)((newdecl)->base.static_flag) |= TREE_STATIC (olddecl)((olddecl)->base.static_flag); |
2491 | if (! DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2491, __FUNCTION__))->decl_common.decl_flag_1)) |
2492 | DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2492, __FUNCTION__))->decl_common.decl_flag_1) = 0; |
2493 | if (! DECL_COMDAT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2493, __FUNCTION__))->decl_with_vis.comdat_flag)) |
2494 | DECL_COMDAT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2494, __FUNCTION__))->decl_with_vis.comdat_flag) = 0; |
2495 | |
2496 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2496, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2496, __FUNCTION__))->decl_common.lang_flag_0)) |
2497 | { |
2498 | if (!DECL_LOCAL_DECL_P (olddecl)((contains_struct_check (((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2498, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2498, __FUNCTION__))->decl_common.lang_flag_0)) |
2499 | /* This can happen if olddecl was brought in from the |
2500 | enclosing namespace via a using-decl. The new decl is |
2501 | then not a block-scope extern at all. */ |
2502 | DECL_LOCAL_DECL_P (newdecl)((contains_struct_check (((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2502, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2502, __FUNCTION__))->decl_common.lang_flag_0) = false; |
2503 | else |
2504 | { |
2505 | retrofit_lang_decl (newdecl); |
2506 | DECL_LOCAL_DECL_ALIAS (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), newdecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__); <->u.min; })->access) = DECL_LOCAL_DECL_ALIAS (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((void)(!(((contains_struct_check (((tree_check2 ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_specific); if (!( (((enum tree_code) ((((void)(!(((contains_struct_check (((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == VAR_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == FUNCTION_DECL ) || ((enum tree_code) ((((void)(!(((contains_struct_check (( (tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == FIELD_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == CONST_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == TYPE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == TEMPLATE_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == USING_DECL || ((enum tree_code) ((((void)(!(((contains_struct_check ((( tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__))->decl_common.lang_flag_0)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__), 0 : 0)), olddecl))->base.code) == CONCEPT_DECL )) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2506, __FUNCTION__); <->u.min; })->access); |
2507 | } |
2508 | } |
2509 | |
2510 | new_template_info = NULL_TREE(tree) __null; |
2511 | if (DECL_LANG_SPECIFIC (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2511, __FUNCTION__))->decl_common.lang_specific) && DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2511, __FUNCTION__))->decl_common.lang_specific)) |
2512 | { |
2513 | bool new_redefines_gnu_inline = false; |
2514 | |
2515 | if (new_defines_function |
2516 | && ((DECL_INTERFACE_KNOWN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2516, __FUNCTION__))->decl_common.lang_flag_5) |
2517 | && TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) |
2518 | || (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == TEMPLATE_DECL |
2519 | && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2519, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) |
2520 | == FUNCTION_DECL)))) |
2521 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2521, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2521, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2521, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2521, __FUNCTION__))->decl_common.attributes))); |
2522 | |
2523 | if (!new_redefines_gnu_inline) |
2524 | { |
2525 | DECL_INTERFACE_KNOWN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2525, __FUNCTION__))->decl_common.lang_flag_5) |= DECL_INTERFACE_KNOWN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2525, __FUNCTION__))->decl_common.lang_flag_5); |
2526 | DECL_NOT_REALLY_EXTERN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2526, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern) |= DECL_NOT_REALLY_EXTERN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2526, __FUNCTION__))->decl_common.lang_specific)->u.base .not_really_extern); |
2527 | DECL_COMDAT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2527, __FUNCTION__))->decl_with_vis.comdat_flag) |= DECL_COMDAT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2527, __FUNCTION__))->decl_with_vis.comdat_flag); |
2528 | } |
2529 | |
2530 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) != TYPE_DECL) |
2531 | { |
2532 | DECL_TEMPLATE_INSTANTIATED (newdecl)((contains_struct_check (((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2532, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2532, __FUNCTION__))->decl_common.lang_flag_1) |
2533 | |= DECL_TEMPLATE_INSTANTIATED (olddecl)((contains_struct_check (((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2533, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2533, __FUNCTION__))->decl_common.lang_flag_1); |
2534 | DECL_ODR_USED (newdecl)(((contains_struct_check (((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2534, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2534, __FUNCTION__))->decl_common.lang_specific) ->u. base.odr_used) |= DECL_ODR_USED (olddecl)(((contains_struct_check (((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2534, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2534, __FUNCTION__))->decl_common.lang_specific) ->u. base.odr_used); |
2535 | |
2536 | /* If the OLDDECL is an instantiation and/or specialization, |
2537 | then the NEWDECL must be too. But, it may not yet be marked |
2538 | as such if the caller has created NEWDECL, but has not yet |
2539 | figured out that it is a redeclaration. */ |
2540 | if (!DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2540, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template)) |
2541 | DECL_USE_TEMPLATE (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2541, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) = DECL_USE_TEMPLATE (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2541, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template); |
2542 | |
2543 | DECL_INITIALIZED_IN_CLASS_P (newdecl)(((contains_struct_check (((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2543, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2543, __FUNCTION__))->decl_common.lang_specific) ->u. base.initialized_in_class) |
2544 | |= DECL_INITIALIZED_IN_CLASS_P (olddecl)(((contains_struct_check (((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2544, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2544, __FUNCTION__))->decl_common.lang_specific) ->u. base.initialized_in_class); |
2545 | } |
2546 | |
2547 | /* Don't really know how much of the language-specific |
2548 | values we should copy from old to new. */ |
2549 | DECL_IN_AGGR_P (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2549, __FUNCTION__))->decl_common.lang_flag_3)) = DECL_IN_AGGR_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2549, __FUNCTION__))->decl_common.lang_flag_3)); |
2550 | |
2551 | 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)) |
2552 | { |
2553 | DECL_ACCESS (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2553, __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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2553, __FUNCTION__); <->u.min; })->access) = DECL_ACCESS (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2553, __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 ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2553, __FUNCTION__); <->u.min; })->access); |
2554 | if (DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2554, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2554, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) |
2555 | { |
2556 | new_template_info = DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2556, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2556, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info); |
2557 | if (DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2557, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) |
2558 | && DECL_TEMPLATE_SPECIALIZATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2558, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) |
2559 | /* Remember the presence of explicit specialization args. */ |
2560 | TINFO_USED_TEMPLATE_ID (DECL_TEMPLATE_INFO (olddecl))(((tree_not_check2 (((tree_check (((((contains_struct_check ( (template_info_decl_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2560, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2560, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2560, __FUNCTION__, (TEMPLATE_INFO)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2560, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) |
2561 | = TINFO_USED_TEMPLATE_ID (new_template_info)(((tree_not_check2 (((tree_check ((new_template_info), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2561, __FUNCTION__, (TEMPLATE_INFO)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2561, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)); |
2562 | } |
2563 | DECL_TEMPLATE_INFO (newdecl)(((contains_struct_check ((template_info_decl_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2563, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2563, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info) = DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2563, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2563, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info); |
2564 | } |
2565 | |
2566 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2566, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2566, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL))) |
2567 | { |
2568 | /* Only functions have these fields. */ |
2569 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2569, __FUNCTION__); <->u.fn; })->nonconverting ); |
2570 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2570, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2570, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2570, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2570, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2570, __FUNCTION__); <->u.fn; })->befriending_classes ) |
2571 | = 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2571, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2571, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2571, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2571, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2571, __FUNCTION__); <->u.fn; })->befriending_classes ), |
2572 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2572, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2572, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2572, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2572, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2572, __FUNCTION__); <->u.fn; })->befriending_classes )); |
2573 | /* DECL_THUNKS is only valid for virtual functions, |
2574 | otherwise it is a DECL_FRIEND_CONTEXT. */ |
2575 | if (DECL_VIRTUAL_P (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2575, __FUNCTION__))->decl_common.virtual_flag)) |
2576 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__); <->u.fn; })->context = ((( (contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2576, __FUNCTION__); <->u.fn; })->context : (tree ) __null))); |
2577 | } |
2578 | else if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) |
2579 | { |
2580 | /* Only variables have this field. */ |
2581 | if (VAR_HAD_UNKNOWN_BOUND (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2581, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2581, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2581, __FUNCTION__))->decl_common.lang_specific)->u.base .unknown_bound_p : false)) |
2582 | SET_VAR_HAD_UNKNOWN_BOUND (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2582, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2582, __FUNCTION__))->decl_common.lang_specific)->u.base .unknown_bound_p = true); |
2583 | } |
2584 | } |
2585 | |
2586 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2587 | { |
2588 | tree parm; |
2589 | |
2590 | /* Merge parameter attributes. */ |
2591 | tree oldarg, newarg; |
2592 | for (oldarg = DECL_ARGUMENTS(olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2592, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ), newarg = DECL_ARGUMENTS(newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2592, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); |
2593 | oldarg && newarg; |
2594 | oldarg = DECL_CHAIN(oldarg)(((contains_struct_check (((contains_struct_check ((oldarg), ( TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2594, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2594, __FUNCTION__))->common.chain)), newarg = DECL_CHAIN(newarg)(((contains_struct_check (((contains_struct_check ((newarg), ( TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2594, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2594, __FUNCTION__))->common.chain))) |
2595 | { |
2596 | DECL_ATTRIBUTES (newarg)((contains_struct_check ((newarg), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2596, __FUNCTION__))->decl_common.attributes) |
2597 | = (*targetm.merge_decl_attributes) (oldarg, newarg); |
2598 | DECL_ATTRIBUTES (oldarg)((contains_struct_check ((oldarg), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2598, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (newarg)((contains_struct_check ((newarg), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2598, __FUNCTION__))->decl_common.attributes); |
2599 | } |
2600 | |
2601 | if (DECL_TEMPLATE_INSTANTIATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2601, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1) |
2602 | && !DECL_TEMPLATE_INSTANTIATION (newdecl)((((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2602, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) & 1)) |
2603 | { |
2604 | /* If newdecl is not a specialization, then it is not a |
2605 | template-related function at all. And that means that we |
2606 | should have exited above, returning 0. */ |
2607 | gcc_assert (DECL_TEMPLATE_SPECIALIZATION (newdecl))((void)(!(((((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2607, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) == 2)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2607, __FUNCTION__), 0 : 0)); |
2608 | |
2609 | if (DECL_ODR_USED (olddecl)(((contains_struct_check (((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2609, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2609, __FUNCTION__))->decl_common.lang_specific) ->u. base.odr_used)) |
2610 | /* From [temp.expl.spec]: |
2611 | |
2612 | If a template, a member template or the member of a class |
2613 | template is explicitly specialized then that |
2614 | specialization shall be declared before the first use of |
2615 | that specialization that would cause an implicit |
2616 | instantiation to take place, in every translation unit in |
2617 | which such a use occurs. */ |
2618 | error ("explicit specialization of %qD after first use", |
2619 | olddecl); |
2620 | |
2621 | SET_DECL_TEMPLATE_SPECIALIZATION (olddecl)((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2621, __FUNCTION__))->decl_common.lang_specific)->u.base .use_template) = 2); |
2622 | DECL_COMDAT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2622, __FUNCTION__))->decl_with_vis.comdat_flag) = (TREE_PUBLIC (newdecl)((newdecl)->base.public_flag) |
2623 | && DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2623, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag )); |
2624 | |
2625 | /* Don't propagate visibility from the template to the |
2626 | specialization here. We'll do that in determine_visibility if |
2627 | appropriate. */ |
2628 | DECL_VISIBILITY_SPECIFIED (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2628, __FUNCTION__))->decl_with_vis.visibility_specified ) = 0; |
2629 | |
2630 | /* [temp.expl.spec/14] We don't inline explicit specialization |
2631 | just because the primary template says so. */ |
2632 | gcc_assert (!merge_attr)((void)(!(!merge_attr) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2632, __FUNCTION__), 0 : 0)); |
2633 | |
2634 | DECL_DECLARED_INLINE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2634, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) |
2635 | = DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2635, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); |
2636 | |
2637 | DECL_DISREGARD_INLINE_LIMITS (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2637, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) |
2638 | = DECL_DISREGARD_INLINE_LIMITS (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2638, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ); |
2639 | |
2640 | DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2640, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2640, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ); |
2641 | } |
2642 | else if (new_defines_function && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2642, __FUNCTION__))->decl_common.initial)) |
2643 | { |
2644 | /* Never inline re-defined extern inline functions. |
2645 | FIXME: this could be better handled by keeping both |
2646 | function as separate declarations. */ |
2647 | DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2647, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = 1; |
2648 | } |
2649 | else |
2650 | { |
2651 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2651, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2651, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2651, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2651, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2651, __FUNCTION__); <->u.fn; })->pending_inline_p )) |
2652 | { |
2653 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2653, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2653, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2653, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2653, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2653, __FUNCTION__); <->u.fn; })->pending_inline_p ) = 1; |
2654 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2654, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2654, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2654, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2654, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2654, __FUNCTION__); <->u.fn; })->u.pending_inline_info ) |
2655 | = 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2655, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2655, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2655, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2655, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2655, __FUNCTION__); <->u.fn; })->u.pending_inline_info ); |
2656 | } |
2657 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2657, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2657, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2657, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2657, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2657, __FUNCTION__); <->u.fn; })->pending_inline_p )) |
2658 | ; |
2659 | else if (DECL_SAVED_AUTO_RETURN_TYPE (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL))))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL))))->base.code) == FUNCTION_DECL || (((enum tree_code) ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2659, __FUNCTION__); <->u.fn; }) ->u.saved_auto_return_type ) == NULL__null) |
2660 | DECL_SAVED_AUTO_RETURN_TYPE (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL))))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL))))->base.code) == FUNCTION_DECL || (((enum tree_code) ((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2660, __FUNCTION__); <->u.fn; }) ->u.saved_auto_return_type ) |
2661 | = DECL_SAVED_AUTO_RETURN_TYPE (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check (((((enum tree_code) ((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL ? ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (TEMPLATE_DECL))))))))->result : (tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL))))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__))->decl_common.lang_specific); if (!( ((enum tree_code) ((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL))))->base.code) == FUNCTION_DECL || (((enum tree_code) ((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL))))->base.code) == TEMPLATE_DECL && ((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (FUNCTION_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2661, __FUNCTION__); <->u.fn; }) ->u.saved_auto_return_type ); |
2662 | |
2663 | DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2663, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) |= DECL_DECLARED_INLINE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2663, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ); |
2664 | |
2665 | DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2665, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) = DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2665, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) |
2666 | = (DECL_UNINLINABLE (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2666, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable ) || DECL_UNINLINABLE (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2666, __FUNCTION__, (FUNCTION_DECL)))->function_decl.uninlinable )); |
2667 | |
2668 | DECL_DISREGARD_INLINE_LIMITS (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2668, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) |
2669 | = DECL_DISREGARD_INLINE_LIMITS (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2669, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) |
2670 | = (DECL_DISREGARD_INLINE_LIMITS (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2670, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits ) |
2671 | || DECL_DISREGARD_INLINE_LIMITS (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2671, __FUNCTION__, (FUNCTION_DECL)))->function_decl.disregard_inline_limits )); |
2672 | } |
2673 | |
2674 | /* Preserve abstractness on cloned [cd]tors. */ |
2675 | DECL_ABSTRACT_P (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2675, __FUNCTION__))->decl_common.abstract_flag) = DECL_ABSTRACT_P (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2675, __FUNCTION__))->decl_common.abstract_flag); |
2676 | |
2677 | /* Update newdecl's parms to point at olddecl. */ |
2678 | for (parm = DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2678, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); parm; |
2679 | parm = DECL_CHAIN (parm)(((contains_struct_check (((contains_struct_check ((parm), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2679, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2679, __FUNCTION__))->common.chain))) |
2680 | DECL_CONTEXT (parm)((contains_struct_check ((parm), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2680, __FUNCTION__))->decl_minimal.context) = olddecl; |
2681 | |
2682 | if (! types_match) |
2683 | { |
2684 | SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl))(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2684, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2684, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2684, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); |
2685 | COPY_DECL_ASSEMBLER_NAME (newdecl, olddecl)overwrite_decl_assembler_name (olddecl, ((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2685, __FUNCTION__))->decl_with_vis.assembler_name)); |
2686 | COPY_DECL_RTL (newdecl, olddecl)((contains_struct_check ((olddecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2686, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((newdecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2686, __FUNCTION__))->decl_with_rtl.rtl); |
2687 | } |
2688 | if (! types_match || new_defines_function) |
2689 | { |
2690 | /* These need to be copied so that the names are available. |
2691 | Note that if the types do match, we'll preserve inline |
2692 | info and other bits, but if not, we won't. */ |
2693 | DECL_ARGUMENTS (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2693, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ) = DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2693, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); |
2694 | DECL_RESULT (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2694, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ) = DECL_RESULT (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2694, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ); |
2695 | } |
2696 | /* If redeclaring a builtin function, it stays built in |
2697 | if newdecl is a gnu_inline definition, or if newdecl is just |
2698 | a declaration. */ |
2699 | if (fndecl_built_in_p (olddecl) |
2700 | && (new_defines_function ? GNU_INLINE_P (newdecl)(((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2700, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2700, __FUNCTION__))->decl_common.attributes))) : types_match)) |
2701 | { |
2702 | copy_decl_built_in_function (newdecl, olddecl); |
2703 | /* If we're keeping the built-in definition, keep the rtl, |
2704 | regardless of declaration matches. */ |
2705 | COPY_DECL_RTL (olddecl, newdecl)((contains_struct_check ((newdecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2705, __FUNCTION__))->decl_with_rtl.rtl = (contains_struct_check ((olddecl), (TS_DECL_WRTL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2705, __FUNCTION__))->decl_with_rtl.rtl); |
2706 | if (DECL_BUILT_IN_CLASS (newdecl)((built_in_class) (tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2706, __FUNCTION__, (FUNCTION_DECL)))->function_decl.built_in_class ) == BUILT_IN_NORMAL) |
2707 | { |
2708 | enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl); |
2709 | if (builtin_decl_explicit_p (fncode)) |
2710 | { |
2711 | /* A compatible prototype of these builtin functions |
2712 | is seen, assume the runtime implements it with |
2713 | the expected semantics. */ |
2714 | switch (fncode) |
2715 | { |
2716 | case BUILT_IN_STPCPY: |
2717 | set_builtin_decl_implicit_p (fncode, true); |
2718 | break; |
2719 | default: |
2720 | set_builtin_decl_declared_p (fncode, true); |
2721 | break; |
2722 | } |
2723 | } |
2724 | |
2725 | copy_attributes_to_builtin (newdecl); |
2726 | } |
2727 | } |
2728 | if (new_defines_function) |
2729 | /* If defining a function declared with other language |
2730 | linkage, use the previously declared language linkage. */ |
2731 | SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2731, __FUNCTION__))->decl_common.lang_specific)->u.base .language = ((((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2731, __FUNCTION__))->decl_common.lang_specific) ? ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2731, __FUNCTION__))->decl_common.lang_specific)->u.base .language : (((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL ? lang_c : lang_cplusplus)))); |
2732 | else if (types_match) |
2733 | { |
2734 | DECL_RESULT (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2734, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ) = DECL_RESULT (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2734, __FUNCTION__, (FUNCTION_DECL)))->decl_non_common.result ); |
2735 | /* Don't clear out the arguments if we're just redeclaring a |
2736 | function. */ |
2737 | if (DECL_ARGUMENTS (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2737, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments )) |
2738 | DECL_ARGUMENTS (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2738, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ) = DECL_ARGUMENTS (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2738, __FUNCTION__, (FUNCTION_DECL)))->function_decl.arguments ); |
2739 | } |
2740 | } |
2741 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == NAMESPACE_DECL) |
2742 | NAMESPACE_LEVEL (newdecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2742, __FUNCTION__))->decl_common.lang_specific); if ((( enum tree_code) (newdecl)->base.code) != NAMESPACE_DECL || lt->u.base.selector != lds_ns) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2742, __FUNCTION__); <->u.ns; })->level) = NAMESPACE_LEVEL (olddecl)(__extension__ ({ struct lang_decl *lt = ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2742, __FUNCTION__))->decl_common.lang_specific); if ((( enum tree_code) (olddecl)->base.code) != NAMESPACE_DECL || lt->u.base.selector != lds_ns) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2742, __FUNCTION__); <->u.ns; })->level); |
2743 | |
2744 | /* Now preserve various other info from the definition. */ |
2745 | TREE_ADDRESSABLE (newdecl)((newdecl)->base.addressable_flag) = TREE_ADDRESSABLE (olddecl)((olddecl)->base.addressable_flag); |
2746 | TREE_ASM_WRITTEN (newdecl)((newdecl)->base.asm_written_flag) = TREE_ASM_WRITTEN (olddecl)((olddecl)->base.asm_written_flag); |
2747 | DECL_COMMON (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2747, __FUNCTION__))->decl_with_vis.common_flag) = DECL_COMMON (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2747, __FUNCTION__))->decl_with_vis.common_flag); |
2748 | COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl)overwrite_decl_assembler_name (newdecl, ((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2748, __FUNCTION__))->decl_with_vis.assembler_name)); |
2749 | |
2750 | /* Warn about conflicting visibility specifications. */ |
2751 | if (DECL_VISIBILITY_SPECIFIED (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2751, __FUNCTION__))->decl_with_vis.visibility_specified ) |
2752 | && DECL_VISIBILITY_SPECIFIED (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2752, __FUNCTION__))->decl_with_vis.visibility_specified ) |
2753 | && DECL_VISIBILITY (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2753, __FUNCTION__))->decl_with_vis.visibility) != DECL_VISIBILITY (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2753, __FUNCTION__))->decl_with_vis.visibility)) |
2754 | { |
2755 | auto_diagnostic_group d; |
2756 | if (warning_at (newdecl_loc, OPT_Wattributes, |
2757 | "%qD: visibility attribute ignored because it " |
2758 | "conflicts with previous declaration", newdecl)) |
2759 | inform (olddecl_loc, |
2760 | "previous declaration of %qD", olddecl); |
2761 | } |
2762 | /* Choose the declaration which specified visibility. */ |
2763 | if (DECL_VISIBILITY_SPECIFIED (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2763, __FUNCTION__))->decl_with_vis.visibility_specified )) |
2764 | { |
2765 | DECL_VISIBILITY (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2765, __FUNCTION__))->decl_with_vis.visibility) = DECL_VISIBILITY (olddecl)((contains_struct_check ((olddecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2765, __FUNCTION__))->decl_with_vis.visibility); |
2766 | DECL_VISIBILITY_SPECIFIED (newdecl)((contains_struct_check ((newdecl), (TS_DECL_WITH_VIS), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2766, __FUNCTION__))->decl_with_vis.visibility_specified ) = 1; |
2767 | } |
2768 | /* Init priority used to be merged from newdecl to olddecl by the memcpy, |
2769 | so keep this behavior. */ |
2770 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) && DECL_HAS_INIT_PRIORITY_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2770, __FUNCTION__, (VAR_DECL)))->decl_with_vis.init_priority_p )) |
2771 | { |
2772 | SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl))(decl_init_priority_insert (olddecl, (decl_init_priority_lookup (newdecl)))); |
2773 | DECL_HAS_INIT_PRIORITY_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2773, __FUNCTION__, (VAR_DECL)))->decl_with_vis.init_priority_p ) = 1; |
2774 | } |
2775 | /* Likewise for DECL_ALIGN, DECL_USER_ALIGN and DECL_PACKED. */ |
2776 | if (DECL_ALIGN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2776, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2776, __FUNCTION__))->decl_common.align) - 1) : 0) > DECL_ALIGN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2776, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2776, __FUNCTION__))->decl_common.align) - 1) : 0)) |
2777 | { |
2778 | SET_DECL_ALIGN (newdecl, DECL_ALIGN (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2778, __FUNCTION__))->decl_common.align) = ffs_hwi ((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2778, __FUNCTION__))->decl_common.align) ? ((unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2778, __FUNCTION__))->decl_common.align) - 1) : 0))); |
2779 | DECL_USER_ALIGN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2779, __FUNCTION__))->base.u.bits.user_align) |= DECL_USER_ALIGN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2779, __FUNCTION__))->base.u.bits.user_align); |
2780 | } |
2781 | DECL_USER_ALIGN (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2781, __FUNCTION__))->base.u.bits.user_align) = DECL_USER_ALIGN (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2781, __FUNCTION__))->base.u.bits.user_align); |
2782 | if (DECL_WARN_IF_NOT_ALIGN (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2782, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2782, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0) |
2783 | > DECL_WARN_IF_NOT_ALIGN (newdecl)(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2783, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((newdecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2783, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0)) |
2784 | SET_DECL_WARN_IF_NOT_ALIGN (newdecl,(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2785, __FUNCTION__))->decl_common.warn_if_not_align) = ffs_hwi ((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2785, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2785, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0))) |
2785 | DECL_WARN_IF_NOT_ALIGN (olddecl))(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2785, __FUNCTION__))->decl_common.warn_if_not_align) = ffs_hwi ((((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2785, __FUNCTION__))->decl_common.warn_if_not_align) ? ( (unsigned)1) << (((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2785, __FUNCTION__))->decl_common.warn_if_not_align) - 1 ) : 0))); |
2786 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FIELD_DECL) |
2787 | DECL_PACKED (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2787, __FUNCTION__, (FIELD_DECL)))->base.u.bits.packed_flag ) = DECL_PACKED (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2787, __FUNCTION__, (FIELD_DECL)))->base.u.bits.packed_flag ); |
2788 | |
2789 | /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced |
2790 | with that from NEWDECL below. */ |
2791 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2791, __FUNCTION__))->decl_common.lang_specific)) |
2792 | { |
2793 | gcc_checking_assert (DECL_LANG_SPECIFIC (olddecl)((void)(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2793, __FUNCTION__))->decl_common.lang_specific) != ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2794, __FUNCTION__))->decl_common.lang_specific)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2794, __FUNCTION__), 0 : 0)) |
2794 | != DECL_LANG_SPECIFIC (newdecl))((void)(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2793, __FUNCTION__))->decl_common.lang_specific) != ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2794, __FUNCTION__))->decl_common.lang_specific)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2794, __FUNCTION__), 0 : 0)); |
2795 | ggc_free (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2795, __FUNCTION__))->decl_common.lang_specific)); |
2796 | } |
2797 | |
2798 | /* Merge the USED information. */ |
2799 | if (TREE_USED (olddecl)((olddecl)->base.used_flag)) |
2800 | TREE_USED (newdecl)((newdecl)->base.used_flag) = 1; |
2801 | else if (TREE_USED (newdecl)((newdecl)->base.used_flag)) |
2802 | TREE_USED (olddecl)((olddecl)->base.used_flag) = 1; |
2803 | |
2804 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) |
2805 | { |
2806 | if (DECL_READ_P (olddecl)((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2806, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag)) |
2807 | DECL_READ_P (newdecl)((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2807, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag) = 1; |
2808 | else if (DECL_READ_P (newdecl)((tree_check2 ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2808, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag)) |
2809 | DECL_READ_P (olddecl)((tree_check2 ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2809, __FUNCTION__, (VAR_DECL), (PARM_DECL)))->decl_common .decl_read_flag) = 1; |
2810 | } |
2811 | |
2812 | if (DECL_PRESERVE_P (olddecl)(contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2812, __FUNCTION__))->decl_common.preserve_flag) |
2813 | DECL_PRESERVE_P (newdecl)(contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2813, __FUNCTION__))->decl_common.preserve_flag = 1; |
2814 | else if (DECL_PRESERVE_P (newdecl)(contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2814, __FUNCTION__))->decl_common.preserve_flag) |
2815 | DECL_PRESERVE_P (olddecl)(contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2815, __FUNCTION__))->decl_common.preserve_flag = 1; |
2816 | |
2817 | /* Merge the DECL_FUNCTION_VERSIONED information. newdecl will be copied |
2818 | to olddecl and deleted. */ |
2819 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL |
2820 | && DECL_FUNCTION_VERSIONED (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2820, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function )) |
2821 | { |
2822 | /* Set the flag for newdecl so that it gets copied to olddecl. */ |
2823 | DECL_FUNCTION_VERSIONED (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2823, __FUNCTION__, (FUNCTION_DECL)))->function_decl.versioned_function ) = 1; |
2824 | /* newdecl will be purged after copying to olddecl and is no longer |
2825 | a version. */ |
2826 | cgraph_node::delete_function_version_by_decl (newdecl); |
2827 | } |
2828 | |
2829 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2830 | { |
2831 | int function_size; |
2832 | struct symtab_node *snode = symtab_node::get (olddecl); |
2833 | |
2834 | function_size = sizeof (struct tree_decl_common); |
2835 | |
2836 | memcpy ((char *) olddecl + sizeof (struct tree_common), |
2837 | (char *) newdecl + sizeof (struct tree_common), |
2838 | function_size - sizeof (struct tree_common)); |
2839 | |
2840 | memcpy ((char *) olddecl + sizeof (struct tree_decl_common), |
2841 | (char *) newdecl + sizeof (struct tree_decl_common), |
2842 | sizeof (struct tree_function_decl) - sizeof (struct tree_decl_common)); |
2843 | |
2844 | /* Preserve symtab node mapping. */ |
2845 | olddecl->decl_with_vis.symtab_node = snode; |
2846 | |
2847 | if (new_template_info) |
2848 | /* If newdecl is a template instantiation, it is possible that |
2849 | the following sequence of events has occurred: |
2850 | |
2851 | o A friend function was declared in a class template. The |
2852 | class template was instantiated. |
2853 | |
2854 | o The instantiation of the friend declaration was |
2855 | recorded on the instantiation list, and is newdecl. |
2856 | |
2857 | o Later, however, instantiate_class_template called pushdecl |
2858 | on the newdecl to perform name injection. But, pushdecl in |
2859 | turn called duplicate_decls when it discovered that another |
2860 | declaration of a global function with the same name already |
2861 | existed. |
2862 | |
2863 | o Here, in duplicate_decls, we decided to clobber newdecl. |
2864 | |
2865 | If we're going to do that, we'd better make sure that |
2866 | olddecl, and not newdecl, is on the list of |
2867 | instantiations so that if we try to do the instantiation |
2868 | again we won't get the clobbered declaration. */ |
2869 | reregister_specialization (newdecl, |
2870 | new_template_info, |
2871 | olddecl); |
2872 | } |
2873 | else |
2874 | { |
2875 | size_t size = tree_code_size (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code)); |
2876 | |
2877 | memcpy ((char *) olddecl + sizeof (struct tree_common), |
2878 | (char *) newdecl + sizeof (struct tree_common), |
2879 | sizeof (struct tree_decl_common) - sizeof (struct tree_common)); |
2880 | |
2881 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2881, __FUNCTION__))->decl_common.lang_specific) && DECL_TEMPLATE_INFO (olddecl)(((contains_struct_check ((template_info_decl_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2881, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2881, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) |
2882 | { |
2883 | /* Repropagate the module information to the template. */ |
2884 | tree tmpl = DECL_TI_TEMPLATE (olddecl)((struct tree_template_info*)(tree_check (((((contains_struct_check ((template_info_decl_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2884, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2884, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2884, __FUNCTION__, (TEMPLATE_INFO))))->tmpl; |
2885 | |
2886 | if (DECL_TEMPLATE_RESULT (tmpl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((tmpl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2886, __FUNCTION__, (TEMPLATE_DECL))))))))->result == olddecl) |
2887 | { |
2888 | DECL_MODULE_PURVIEW_P (tmpl)(((contains_struct_check (((tmpl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2888, __FUNCTION__))->decl_common.lang_specific)->u.base .module_purview_p) = DECL_MODULE_PURVIEW_P (olddecl)(((contains_struct_check (((olddecl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2888, __FUNCTION__))->decl_common.lang_specific)->u.base .module_purview_p); |
2889 | gcc_checking_assert (!DECL_MODULE_IMPORT_P (olddecl))((void)(!(!(((contains_struct_check (((olddecl)), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2889, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p)) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2889, __FUNCTION__), 0 : 0)); |
2890 | DECL_MODULE_IMPORT_P (tmpl)(((contains_struct_check (((tmpl)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2890, __FUNCTION__))->decl_common.lang_specific)->u.base .module_import_p) = false; |
2891 | } |
2892 | } |
2893 | |
2894 | switch (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code)) |
2895 | { |
2896 | case LABEL_DECL: |
2897 | case VAR_DECL: |
2898 | case RESULT_DECL: |
2899 | case PARM_DECL: |
2900 | case FIELD_DECL: |
2901 | case TYPE_DECL: |
2902 | case CONST_DECL: |
2903 | { |
2904 | struct symtab_node *snode = NULL__null; |
2905 | |
2906 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) |
2907 | && (TREE_STATIC (olddecl)((olddecl)->base.static_flag) || TREE_PUBLIC (olddecl)((olddecl)->base.public_flag) |
2908 | || DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2908, __FUNCTION__))->decl_common.decl_flag_1))) |
2909 | snode = symtab_node::get (olddecl); |
2910 | memcpy ((char *) olddecl + sizeof (struct tree_decl_common), |
2911 | (char *) newdecl + sizeof (struct tree_decl_common), |
2912 | size - sizeof (struct tree_decl_common) |
2913 | + TREE_CODE_LENGTH (TREE_CODE (newdecl))tree_code_length[(int) (((enum tree_code) (newdecl)->base. code))] * sizeof (char *)); |
2914 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL)) |
2915 | olddecl->decl_with_vis.symtab_node = snode; |
2916 | } |
2917 | break; |
2918 | default: |
2919 | memcpy ((char *) olddecl + sizeof (struct tree_decl_common), |
2920 | (char *) newdecl + sizeof (struct tree_decl_common), |
2921 | sizeof (struct tree_decl_non_common) - sizeof (struct tree_decl_common) |
2922 | + TREE_CODE_LENGTH (TREE_CODE (newdecl))tree_code_length[(int) (((enum tree_code) (newdecl)->base. code))] * sizeof (char *)); |
2923 | break; |
2924 | } |
2925 | } |
2926 | |
2927 | if (VAR_OR_FUNCTION_DECL_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL || (( enum tree_code) (newdecl)->base.code) == FUNCTION_DECL)) |
2928 | { |
2929 | if (DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2929, __FUNCTION__))->decl_common.decl_flag_1) |
2930 | || TREE_PUBLIC (olddecl)((olddecl)->base.public_flag) |
2931 | || TREE_STATIC (olddecl)((olddecl)->base.static_flag)) |
2932 | { |
2933 | /* Merge the section attribute. |
2934 | We want to issue an error if the sections conflict but that must be |
2935 | done later in decl_attributes since we are called before attributes |
2936 | are assigned. */ |
2937 | if (DECL_SECTION_NAME (newdecl)decl_section_name (newdecl) != NULL__null) |
2938 | set_decl_section_name (olddecl, newdecl); |
2939 | |
2940 | if (DECL_ONE_ONLY (newdecl)(decl_comdat_group (newdecl) != (tree) __null && (((newdecl )->base.public_flag) || ((contains_struct_check ((newdecl) , (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2940, __FUNCTION__))->decl_common.decl_flag_1)))) |
2941 | { |
2942 | struct symtab_node *oldsym, *newsym; |
2943 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) |
2944 | oldsym = cgraph_node::get_create (olddecl); |
2945 | else |
2946 | oldsym = varpool_node::get_create (olddecl); |
2947 | newsym = symtab_node::get (newdecl); |
2948 | oldsym->set_comdat_group (newsym->get_comdat_group ()); |
2949 | } |
2950 | } |
2951 | |
2952 | if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) |
2953 | && CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2953, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2953, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0))) |
2954 | { |
2955 | CP_DECL_THREAD_LOCAL_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2955, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2955, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)) = true; |
2956 | if (!processing_template_declscope_chain->x_processing_template_decl) |
2957 | set_decl_tls_model (olddecl, DECL_TLS_MODEL (newdecl)decl_tls_model (newdecl)); |
2958 | } |
2959 | } |
2960 | |
2961 | DECL_UID (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2961, __FUNCTION__))->decl_minimal.uid) = olddecl_uid; |
2962 | |
2963 | /* NEWDECL contains the merged attribute lists. |
2964 | Update OLDDECL to be the same. */ |
2965 | DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2965, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2965, __FUNCTION__))->decl_common.attributes); |
2966 | |
2967 | /* If OLDDECL had its DECL_RTL instantiated, re-invoke make_decl_rtl |
2968 | so that encode_section_info has a chance to look at the new decl |
2969 | flags and attributes. */ |
2970 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2970, __FUNCTION__))->decl_with_rtl.rtl != __null) |
2971 | && (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL |
2972 | || (VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) |
2973 | && TREE_STATIC (olddecl)((olddecl)->base.static_flag)))) |
2974 | make_decl_rtl (olddecl); |
2975 | |
2976 | /* The NEWDECL will no longer be needed. Because every out-of-class |
2977 | declaration of a member results in a call to duplicate_decls, |
2978 | freeing these nodes represents in a significant savings. |
2979 | |
2980 | Before releasing the node, be sore to remove function from symbol |
2981 | table that might have been inserted there to record comdat group. |
2982 | Be sure to however do not free DECL_STRUCT_FUNCTION because this |
2983 | structure is shared in between newdecl and oldecl. */ |
2984 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
2985 | DECL_STRUCT_FUNCTION (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2985, __FUNCTION__, (FUNCTION_DECL)))->function_decl.f) = NULL__null; |
2986 | if (VAR_OR_FUNCTION_DECL_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL || (( enum tree_code) (newdecl)->base.code) == FUNCTION_DECL)) |
2987 | { |
2988 | struct symtab_node *snode = symtab_node::get (newdecl); |
2989 | if (snode) |
2990 | snode->remove (); |
2991 | } |
2992 | |
2993 | if (TREE_CODE (olddecl)((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL) |
2994 | { |
2995 | tree clone; |
2996 | FOR_EACH_CLONE (clone, olddecl)if (!(((enum tree_code) (olddecl)->base.code) == FUNCTION_DECL && ((((contains_struct_check ((olddecl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_CTOR_IDENTIFIER]) || (((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_DTOR_IDENTIFIER])))) ; else for (clone = (((contains_struct_check (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->common.chain)); clone && ( ((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name) && ((!( (tree_not_check2 (((tree_check ((((contains_struct_check ((clone ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__, (IDENTIFIER_NODE)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2)) & ((tree_not_check2 (((tree_check ((((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__, (IDENTIFIER_NODE)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1)) && !((((contains_struct_check ((clone) , (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_CTOR_IDENTIFIER]) || (((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->decl_minimal.name) == cp_global_trees [CPTI_DTOR_IDENTIFIER]))); clone = (((contains_struct_check ( ((contains_struct_check ((clone), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2996, __FUNCTION__))->common.chain))) |
2997 | { |
2998 | DECL_ATTRIBUTES (clone)((contains_struct_check ((clone), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2998, __FUNCTION__))->decl_common.attributes) = DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2998, __FUNCTION__))->decl_common.attributes); |
2999 | DECL_PRESERVE_P (clone)(contains_struct_check ((clone), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2999, __FUNCTION__))->decl_common.preserve_flag |= DECL_PRESERVE_P (olddecl)(contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 2999, __FUNCTION__))->decl_common.preserve_flag; |
3000 | } |
3001 | } |
3002 | |
3003 | /* Remove the associated constraints for newdecl, if any, before |
3004 | reclaiming memory. */ |
3005 | if (flag_conceptsglobal_options.x_flag_concepts) |
3006 | remove_constraints (newdecl); |
3007 | |
3008 | ggc_free (newdecl); |
3009 | |
3010 | return olddecl; |
3011 | } |
3012 | |
3013 | /* Return zero if the declaration NEWDECL is valid |
3014 | when the declaration OLDDECL (assumed to be for the same name) |
3015 | has already been seen. |
3016 | Otherwise return an error message format string with a %s |
3017 | where the identifier should go. */ |
3018 | |
3019 | static const char * |
3020 | redeclaration_error_message (tree newdecl, tree olddecl) |
3021 | { |
3022 | if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TYPE_DECL) |
3023 | { |
3024 | /* Because C++ can put things into name space for free, |
3025 | constructs like "typedef struct foo { ... } foo" |
3026 | would look like an erroneous redeclaration. */ |
3027 | if (same_type_p (TREE_TYPE (newdecl), TREE_TYPE (olddecl))comptypes ((((contains_struct_check ((newdecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3027, __FUNCTION__))->typed.type)), (((contains_struct_check ((olddecl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3027, __FUNCTION__))->typed.type)), 0)) |
3028 | return NULL__null; |
3029 | else |
3030 | return G_("redefinition of %q#D")"redefinition of %q#D"; |
3031 | } |
3032 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == FUNCTION_DECL) |
3033 | { |
3034 | /* If this is a pure function, its olddecl will actually be |
3035 | the original initialization to `0' (which we force to call |
3036 | abort()). Don't complain about redefinition in this case. */ |
3037 | if (DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3037, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3037, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3037, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3037, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((olddecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3037, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3037, __FUNCTION__); <->u.fn; })->pure_virtual) |
3038 | && DECL_INITIAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3038, __FUNCTION__))->decl_common.initial) == NULL_TREE(tree) __null) |
3039 | return NULL__null; |
3040 | |
3041 | /* If both functions come from different namespaces, this is not |
3042 | a redeclaration - this is a conflict with a used function. */ |
3043 | if (DECL_NAMESPACE_SCOPE_P (olddecl)(!(((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3043, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3043, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3043, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((olddecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3043, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == NAMESPACE_DECL) |
3044 | && DECL_CONTEXT (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3044, __FUNCTION__))->decl_minimal.context) != DECL_CONTEXT (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3044, __FUNCTION__))->decl_minimal.context) |
3045 | && ! decls_match (olddecl, newdecl)) |
3046 | return G_("%qD conflicts with used function")"%qD conflicts with used function"; |
3047 | |
3048 | /* We'll complain about linkage mismatches in |
3049 | warn_extern_redeclared_static. */ |
3050 | |
3051 | /* Defining the same name twice is no good. */ |
3052 | if (decl_defined_p (olddecl) |
3053 | && decl_defined_p (newdecl)) |
3054 | { |
3055 | if (DECL_NAME (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3055, __FUNCTION__))->decl_minimal.name) == NULL_TREE(tree) __null) |
3056 | return G_("%q#D not declared in class")"%q#D not declared in class"; |
3057 | else if (!GNU_INLINE_P (olddecl)(((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3057, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3057, __FUNCTION__))->decl_common.attributes))) |
3058 | || GNU_INLINE_P (newdecl)(((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3058, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3058, __FUNCTION__))->decl_common.attributes)))) |
3059 | return G_("redefinition of %q#D")"redefinition of %q#D"; |
3060 | } |
3061 | |
3062 | if (DECL_DECLARED_INLINE_P (olddecl)((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3062, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && DECL_DECLARED_INLINE_P (newdecl)((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3062, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag )) |
3063 | { |
3064 | bool olda = GNU_INLINE_P (olddecl)(((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3064, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3064, __FUNCTION__))->decl_common.attributes))); |
3065 | bool newa = GNU_INLINE_P (newdecl)(((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3065, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3065, __FUNCTION__))->decl_common.attributes))); |
3066 | |
3067 | if (olda != newa) |
3068 | { |
3069 | if (newa) |
3070 | return G_("%q+D redeclared inline with ""%q+D redeclared inline with " "%<gnu_inline%> attribute" |
3071 | "%<gnu_inline%> attribute")"%q+D redeclared inline with " "%<gnu_inline%> attribute"; |
3072 | else |
3073 | return G_("%q+D redeclared inline without ""%q+D redeclared inline without " "%<gnu_inline%> attribute" |
3074 | "%<gnu_inline%> attribute")"%q+D redeclared inline without " "%<gnu_inline%> attribute"; |
3075 | } |
3076 | } |
3077 | |
3078 | if (deduction_guide_p (olddecl) |
3079 | && deduction_guide_p (newdecl)) |
3080 | return G_("deduction guide %q+D redeclared")"deduction guide %q+D redeclared"; |
3081 | |
3082 | /* [class.compare.default]: A definition of a comparison operator as |
3083 | defaulted that appears in a class shall be the first declaration of |
3084 | that function. */ |
3085 | special_function_kind sfk = special_function_p (olddecl); |
3086 | 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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3086, __FUNCTION__, (TEMPLATE_DECL))))))))->result : newdecl )), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3086, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3086, __FUNCTION__, (TEMPLATE_DECL))))))))->result != (tree ) __null && ((enum tree_code) (((struct tree_template_decl *)(const_cast<union tree_node *> ((((tree_check ((newdecl ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3086, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == FUNCTION_DECL)) || lt->u.base.selector != lds_fn ) lang_check_failed ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3086, __FUNCTION__); <->u.fn; })->defaulted_p)) |
3087 | return G_("comparison operator %q+D defaulted after ""comparison operator %q+D defaulted after " "its first declaration" |
3088 | "its first declaration")"comparison operator %q+D defaulted after " "its first declaration"; |
3089 | |
3090 | check_abi_tag_redeclaration |
3091 | (olddecl, lookup_attribute ("abi_tag", DECL_ATTRIBUTES (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3091, __FUNCTION__))->decl_common.attributes)), |
3092 | lookup_attribute ("abi_tag", DECL_ATTRIBUTES (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3092, __FUNCTION__))->decl_common.attributes))); |
3093 | |
3094 | return NULL__null; |
3095 | } |
3096 | else if (TREE_CODE (newdecl)((enum tree_code) (newdecl)->base.code) == TEMPLATE_DECL) |
3097 | { |
3098 | tree nt, ot; |
3099 | |
3100 | if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3100, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) == CONCEPT_DECL) |
3101 | return G_("redefinition of %q#D")"redefinition of %q#D"; |
3102 | |
3103 | if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))((enum tree_code) (((struct tree_template_decl *)(const_cast< union tree_node *> ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3103, __FUNCTION__, (TEMPLATE_DECL))))))))->result)-> base.code) != FUNCTION_DECL) |
3104 | return redeclaration_error_message (DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3104, __FUNCTION__, (TEMPLATE_DECL))))))))->result, |
3105 | DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3105, __FUNCTION__, (TEMPLATE_DECL))))))))->result); |
3106 | |
3107 | if (DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3107, __FUNCTION__, (TEMPLATE_DECL))))))))->result == DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3107, __FUNCTION__, (TEMPLATE_DECL))))))))->result) |
3108 | return NULL__null; |
3109 | |
3110 | nt = DECL_TEMPLATE_RESULT (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3110, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
3111 | if (DECL_TEMPLATE_INFO (nt)(((contains_struct_check ((template_info_decl_check ((nt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3111, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3111, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) |
3112 | nt = DECL_TEMPLATE_RESULT (template_for_substitution (nt))((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((template_for_substitution (nt)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3112, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
3113 | ot = DECL_TEMPLATE_RESULT (olddecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3113, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
3114 | if (DECL_TEMPLATE_INFO (ot)(((contains_struct_check ((template_info_decl_check ((ot), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3114, __FUNCTION__)), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3114, __FUNCTION__))->decl_common.lang_specific) ->u. min.template_info)) |
3115 | ot = DECL_TEMPLATE_RESULT (template_for_substitution (ot))((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((template_for_substitution (ot)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3115, __FUNCTION__, (TEMPLATE_DECL))))))))->result; |
3116 | if (DECL_INITIAL (nt)((contains_struct_check ((nt), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3116, __FUNCTION__))->decl_common.initial) && DECL_INITIAL (ot)((contains_struct_check ((ot), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3116, __FUNCTION__))->decl_common.initial) |
3117 | && (!GNU_INLINE_P (ot)(((tree_check ((ot), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3117, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((ot), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3117, __FUNCTION__))->decl_common.attributes))) || GNU_INLINE_P (nt)(((tree_check ((nt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3117, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((nt), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3117, __FUNCTION__))->decl_common.attributes))))) |
3118 | return G_("redefinition of %q#D")"redefinition of %q#D"; |
3119 | |
3120 | if (DECL_DECLARED_INLINE_P (ot)((tree_check ((ot), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3120, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && DECL_DECLARED_INLINE_P (nt)((tree_check ((nt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3120, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag )) |
3121 | { |
3122 | bool olda = GNU_INLINE_P (ot)(((tree_check ((ot), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3122, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((ot), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3122, __FUNCTION__))->decl_common.attributes))); |
3123 | bool newa = GNU_INLINE_P (nt)(((tree_check ((nt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3123, __FUNCTION__, (FUNCTION_DECL)))->function_decl.declared_inline_flag ) && lookup_attribute ("gnu_inline", ((contains_struct_check ((nt), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3123, __FUNCTION__))->decl_common.attributes))); |
3124 | |
3125 | if (olda != newa) |
3126 | { |
3127 | if (newa) |
3128 | return G_("%q+D redeclared inline with ""%q+D redeclared inline with " "%<gnu_inline%> attribute" |
3129 | "%<gnu_inline%> attribute")"%q+D redeclared inline with " "%<gnu_inline%> attribute"; |
3130 | else |
3131 | return G_("%q+D redeclared inline without ""%q+D redeclared inline without " "%<gnu_inline%> attribute" |
3132 | "%<gnu_inline%> attribute")"%q+D redeclared inline without " "%<gnu_inline%> attribute"; |
3133 | } |
3134 | } |
3135 | |
3136 | if (deduction_guide_p (olddecl) |
3137 | && deduction_guide_p (newdecl)) |
3138 | return G_("deduction guide %q+D redeclared")"deduction guide %q+D redeclared"; |
3139 | |
3140 | /* Core issue #226 (C++11): |
3141 | |
3142 | If a friend function template declaration specifies a |
3143 | default template-argument, that declaration shall be a |
3144 | definition and shall be the only declaration of the |
3145 | function template in the translation unit. */ |
3146 | if ((cxx_dialect != cxx98) |
3147 | && TREE_CODE (ot)((enum tree_code) (ot)->base.code) == FUNCTION_DECL && DECL_UNIQUE_FRIEND_P (ot)(((contains_struct_check (((tree_check ((ot), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3147, __FUNCTION__, (FUNCTION_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3147, __FUNCTION__))->decl_common.lang_specific) ->u. base.friend_or_tls) |
3148 | && !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl)((struct tree_template_decl *)(const_cast<union tree_node * > ((((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3148, __FUNCTION__, (TEMPLATE_DECL))))))))->arguments, |
3149 | /*is_primary=*/true, |
3150 | /*is_partial=*/false, |
3151 | /*is_friend_decl=*/2)) |
3152 | return G_("redeclaration of friend %q#D ""redeclaration of friend %q#D " "may not have default template arguments" |
3153 | "may not have default template arguments")"redeclaration of friend %q#D " "may not have default template arguments"; |
3154 | |
3155 | return NULL__null; |
3156 | } |
3157 | else if (VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) |
3158 | && (CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3158, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3158, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)) |
3159 | != CP_DECL_THREAD_LOCAL_P (olddecl)(((tree_not_check2 (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3159, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3159, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0))) |
3160 | && (! DECL_LANG_SPECIFIC (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3160, __FUNCTION__))->decl_common.lang_specific) |
3161 | || ! CP_DECL_THREADPRIVATE_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3161, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3161, __FUNCTION__))->decl_common.lang_specific)->u.base .threadprivate_or_deleted_p) |
3162 | || CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3162, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3162, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0)))) |
3163 | { |
3164 | /* Only variables can be thread-local, and all declarations must |
3165 | agree on this property. */ |
3166 | if (CP_DECL_THREAD_LOCAL_P (newdecl)(((tree_not_check2 (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3166, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3166, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0))) |
3167 | return G_("thread-local declaration of %q#D follows ""thread-local declaration of %q#D follows " "non-thread-local declaration" |
3168 | "non-thread-local declaration")"thread-local declaration of %q#D follows " "non-thread-local declaration"; |
3169 | else |
3170 | return G_("non-thread-local declaration of %q#D follows ""non-thread-local declaration of %q#D follows " "thread-local declaration" |
3171 | "thread-local declaration")"non-thread-local declaration of %q#D follows " "thread-local declaration"; |
3172 | } |
3173 | else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl)(!(((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3173, __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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3173, __FUNCTION__))->decl_minimal.context)) || ((enum tree_code ) (((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3173, __FUNCTION__))->decl_minimal.context))->base.code ) == TRANSLATION_UNIT_DECL) ? ((contains_struct_check ((newdecl ), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3173, __FUNCTION__))->decl_minimal.context) : cp_global_trees [CPTI_GLOBAL]))->base.code) == NAMESPACE_DECL)) |
3174 | { |
3175 | /* The objects have been declared at namespace scope. If either |
3176 | is a member of an anonymous union, then this is an invalid |
3177 | redeclaration. For example: |
3178 | |
3179 | int i; |
3180 | union { int i; }; |
3181 | |
3182 | is invalid. */ |
3183 | if ((VAR_P (newdecl)(((enum tree_code) (newdecl)->base.code) == VAR_DECL) && DECL_ANON_UNION_VAR_P (newdecl)(((contains_struct_check (((tree_check ((newdecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3183, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3183, __FUNCTION__))->decl_common.lang_flag_4))) |
3184 | || (VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) && DECL_ANON_UNION_VAR_P (olddecl)(((contains_struct_check (((tree_check ((olddecl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3184, __FUNCTION__, (VAR_DECL)))), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3184, __FUNCTION__))->decl_common.lang_flag_4)))) |
3185 | return G_("redeclaration of %q#D")"redeclaration of %q#D"; |
3186 | /* If at least one declaration is a reference, there is no |
3187 | conflict. For example: |
3188 | |
3189 | int i = 3; |
3190 | extern int i; |
3191 | |
3192 | is valid. */ |
3193 | if (DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3193, __FUNCTION__))->decl_common.decl_flag_1) || DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3193, __FUNCTION__))->decl_common.decl_flag_1)) |
3194 | return NULL__null; |
3195 | |
3196 | /* Static data member declared outside a class definition |
3197 | if the variable is defined within the class with constexpr |
3198 | specifier is declaration rather than definition (and |
3199 | deprecated). */ |
3200 | if (cxx_dialect >= cxx17 |
3201 | && VAR_P (olddecl)(((enum tree_code) (olddecl)->base.code) == VAR_DECL) |
3202 | && DECL_CLASS_SCOPE_P (olddecl)(((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3202, __FUNCTION__))->decl_minimal.context) && ( tree_code_type[(int) (((enum tree_code) (((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3202, __FUNCTION__))->decl_minimal.context))->base.code ))] == tcc_type)) |
3203 | && 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 ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3203, __FUNCTION__, (TEMPLATE_DECL))))))))->result : olddecl )), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3203, __FUNCTION__, (VAR_DECL), (FUNCTION_DECL)))), (TS_DECL_COMMON ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3203, __FUNCTION__))->decl_common.lang_flag_8) |
3204 | && !DECL_INITIAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3204, __FUNCTION__))->decl_common.initial)) |
3205 | { |
3206 | DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3206, __FUNCTION__))->decl_common.decl_flag_1) = 1; |
3207 | /* For now, only warn with explicit -Wdeprecated. */ |
3208 | if (global_options_set.x_warn_deprecated) |
3209 | { |
3210 | auto_diagnostic_group d; |
3211 | if (warning_at (DECL_SOURCE_LOCATION (newdecl)((contains_struct_check ((newdecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3211, __FUNCTION__))->decl_minimal.locus), OPT_Wdeprecated, |
3212 | "redundant redeclaration of %<constexpr%> " |
3213 | "static data member %qD", newdecl)) |
3214 | inform (DECL_SOURCE_LOCATION (olddecl)((contains_struct_check ((olddecl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3214, __FUNCTION__))->decl_minimal.locus), |
3215 | "previous declaration of %qD", olddecl); |
3216 | } |
3217 | return NULL__null; |
3218 | } |
3219 | |
3220 | /* Reject two definitions. */ |
3221 | return G_("redefinition of %q#D")"redefinition of %q#D"; |
3222 | } |
3223 | else |
3224 | { |
3225 | /* Objects declared with block scope: */ |
3226 | /* Reject two definitions, and reject a definition |
3227 | together with an external reference. */ |
3228 | if (!(DECL_EXTERNAL (newdecl)((contains_struct_check ((newdecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3228, __FUNCTION__))->decl_common.decl_flag_1) && DECL_EXTERNAL (olddecl)((contains_struct_check ((olddecl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3228, __FUNCTION__))->decl_common.decl_flag_1))) |
3229 | return G_("redeclaration of %q#D")"redeclaration of %q#D"; |
3230 | return NULL__null; |
3231 | } |
3232 | } |
3233 | |
3234 | |
3235 | /* Hash and equality functions for the named_label table. */ |
3236 | |
3237 | hashval_t |
3238 | named_label_hash::hash (const value_type entry) |
3239 | { |
3240 | return IDENTIFIER_HASH_VALUE (entry->name)((tree_check ((entry->name), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3240, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ); |
3241 | } |
3242 | |
3243 | bool |
3244 | named_label_hash::equal (const value_type entry, compare_type name) |
3245 | { |
3246 | return name == entry->name; |
3247 | } |
3248 | |
3249 | /* Look for a label named ID in the current function. If one cannot |
3250 | be found, create one. Return the named_label_entry, or NULL on |
3251 | failure. */ |
3252 | |
3253 | static named_label_entry * |
3254 | lookup_label_1 (tree id, bool making_local_p) |
3255 | { |
3256 | /* You can't use labels at global scope. */ |
3257 | if (current_function_decl == NULL_TREE(tree) __null) |
3258 | { |
3259 | error ("label %qE referenced outside of any function", id); |
3260 | return NULL__null; |
3261 | } |
3262 | |
3263 | if (!named_labels((cfun + 0)->language)->x_named_labels) |
3264 | named_labels((cfun + 0)->language)->x_named_labels = hash_table<named_label_hash>::create_ggc (13); |
3265 | |
3266 | hashval_t hash = IDENTIFIER_HASH_VALUE (id)((tree_check ((id), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3266, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ); |
3267 | named_label_entry **slot |
3268 | = named_labels((cfun + 0)->language)->x_named_labels->find_slot_with_hash (id, hash, INSERT); |
3269 | named_label_entry *old = *slot; |
3270 | |
3271 | if (old && old->label_decl) |
3272 | { |
3273 | if (!making_local_p) |
3274 | return old; |
3275 | |
3276 | if (old->binding_level == current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))) |
3277 | { |
3278 | error ("local label %qE conflicts with existing label", id); |
3279 | inform (DECL_SOURCE_LOCATION (old->label_decl)((contains_struct_check ((old->label_decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3279, __FUNCTION__))->decl_minimal.locus), "previous label"); |
3280 | return NULL__null; |
3281 | } |
3282 | } |
3283 | |
3284 | /* We are making a new decl, create or reuse the named_label_entry */ |
3285 | named_label_entry *ent = NULL__null; |
3286 | if (old && !old->label_decl) |
3287 | ent = old; |
3288 | else |
3289 | { |
3290 | ent = ggc_cleared_alloc<named_label_entry> (); |
3291 | ent->name = id; |
3292 | ent->outer = old; |
3293 | *slot = ent; |
3294 | } |
3295 | |
3296 | /* Now create the LABEL_DECL. */ |
3297 | tree decl = build_decl (input_location, LABEL_DECL, id, void_type_nodeglobal_trees[TI_VOID_TYPE]); |
3298 | |
3299 | DECL_CONTEXT (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3299, __FUNCTION__))->decl_minimal.context) = current_function_decl; |
3300 | SET_DECL_MODE (decl, VOIDmode)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3300, __FUNCTION__))->decl_common.mode = (((void) 0, E_VOIDmode ))); |
3301 | if (making_local_p) |
3302 | { |
3303 | C_DECLARED_LABEL_FLAG (decl)((tree_not_check2 ((decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3303, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_1) = true; |
3304 | DECL_CHAIN (decl)(((contains_struct_check (((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3304, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3304, __FUNCTION__))->common.chain)) = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names; |
3305 | current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names = decl; |
3306 | } |
3307 | |
3308 | ent->label_decl = decl; |
3309 | |
3310 | return ent; |
3311 | } |
3312 | |
3313 | /* Wrapper for lookup_label_1. */ |
3314 | |
3315 | tree |
3316 | lookup_label (tree id) |
3317 | { |
3318 | bool subtime = timevar_cond_start (TV_NAME_LOOKUP); |
3319 | named_label_entry *ent = lookup_label_1 (id, false); |
3320 | timevar_cond_stop (TV_NAME_LOOKUP, subtime); |
3321 | return ent ? ent->label_decl : NULL_TREE(tree) __null; |
3322 | } |
3323 | |
3324 | tree |
3325 | declare_local_label (tree id) |
3326 | { |
3327 | bool subtime = timevar_cond_start (TV_NAME_LOOKUP); |
3328 | named_label_entry *ent = lookup_label_1 (id, true); |
3329 | timevar_cond_stop (TV_NAME_LOOKUP, subtime); |
3330 | return ent ? ent->label_decl : NULL_TREE(tree) __null; |
3331 | } |
3332 | |
3333 | /* Returns nonzero if it is ill-formed to jump past the declaration of |
3334 | DECL. Returns 2 if it's also a real problem. */ |
3335 | |
3336 | static int |
3337 | decl_jump_unsafe (tree decl) |
3338 | { |
3339 | /* [stmt.dcl]/3: A program that jumps from a point where a local variable |
3340 | with automatic storage duration is not in scope to a point where it is |
3341 | in scope is ill-formed unless the variable has scalar type, class type |
3342 | with a trivial default constructor and a trivial destructor, a |
3343 | cv-qualified version of one of these types, or an array of one of the |
3344 | preceding types and is declared without an initializer (8.5). */ |
3345 | tree type = TREE_TYPE (decl)((contains_struct_check ((decl), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3345, __FUNCTION__))->typed.type); |
3346 | |
3347 | if (!VAR_P (decl)(((enum tree_code) (decl)->base.code) == VAR_DECL) || TREE_STATIC (decl)((decl)->base.static_flag) |
3348 | || type == error_mark_nodeglobal_trees[TI_ERROR_MARK]) |
3349 | return 0; |
3350 | |
3351 | if (DECL_NONTRIVIALLY_INITIALIZED_P (decl)(((tree_not_check2 (((tree_check ((decl), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3351, __FUNCTION__, (VAR_DECL)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3351, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_6)) |
3352 | || variably_modified_type_p (type, NULL_TREE(tree) __null)) |
3353 | return 2; |
3354 | |
3355 | if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)(((tree_class_check ((type), (tcc_type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3355, __FUNCTION__))->type_common.lang_flag_4))) |
3356 | return 1; |
3357 | |
3358 | return 0; |
3359 | } |
3360 | |
3361 | /* A subroutine of check_previous_goto_1 and check_goto to identify a branch |
3362 | to the user. */ |
3363 | |
3364 | static bool |
3365 | identify_goto (tree decl, location_t loc, const location_t *locus, |
3366 | diagnostic_t diag_kind) |
3367 | { |
3368 | bool complained |
3369 | = emit_diagnostic (diag_kind, loc, 0, |
3370 | decl ? N_("jump to label %qD")"jump to label %qD" |
3371 | : N_("jump to case label")"jump to case label", decl); |
3372 | if (complained && locus) |
3373 | inform (*locus, " from here"); |
3374 | return complained; |
3375 | } |
3376 | |
3377 | /* Check that a single previously seen jump to a newly defined label |
3378 | is OK. DECL is the LABEL_DECL or 0; LEVEL is the binding_level for |
3379 | the jump context; NAMES are the names in scope in LEVEL at the jump |
3380 | context; LOCUS is the source position of the jump or 0. Returns |
3381 | true if all is well. */ |
3382 | |
3383 | static bool |
3384 | check_previous_goto_1 (tree decl, cp_binding_level* level, tree names, |
3385 | bool exited_omp, const location_t *locus) |
3386 | { |
3387 | cp_binding_level *b; |
3388 | bool complained = false; |
3389 | int identified = 0; |
3390 | bool saw_eh = false, saw_omp = false, saw_tm = false, saw_cxif = false; |
3391 | |
3392 | if (exited_omp) |
3393 | { |
3394 | complained = identify_goto (decl, input_location, locus, DK_ERROR); |
3395 | if (complained) |
3396 | inform (input_location, " exits OpenMP structured block"); |
3397 | saw_omp = true; |
3398 | identified = 2; |
3399 | } |
3400 | |
3401 | 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) |
3402 | { |
3403 | tree new_decls, old_decls = (b == level ? names : NULL_TREE(tree) __null); |
3404 | |
3405 | for (new_decls = b->names; new_decls != old_decls; |
3406 | new_decls = (DECL_P (new_decls)(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), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3406, __FUNCTION__))), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3406, __FUNCTION__))->common.chain)) |
3407 | : TREE_CHAIN (new_decls)((contains_struct_check ((new_decls), (TS_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3407, __FUNCTION__))->common.chain))) |
3408 | { |
3409 | int problem = decl_jump_unsafe (new_decls); |
3410 | if (! problem) |
3411 | continue; |
3412 | |
3413 | if (!identified) |
3414 | { |
3415 | complained = identify_goto (decl, input_location, locus, |
3416 | problem > 1 |
3417 | ? DK_ERROR : DK_PERMERROR); |
3418 | identified = 1; |
3419 | } |
3420 | if (complained) |
3421 | { |
3422 | if (problem > 1) |
3423 | inform (DECL_SOURCE_LOCATION (new_decls)((contains_struct_check ((new_decls), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3423, __FUNCTION__))->decl_minimal.locus), |
3424 | " crosses initialization of %q#D", new_decls); |
3425 | else |
3426 | inform (DECL_SOURCE_LOCATION (new_decls)((contains_struct_check ((new_decls), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3426, __FUNCTION__))->decl_minimal.locus), |
3427 | " enters scope of %q#D, which has " |
3428 | "non-trivial destructor", new_decls); |
3429 | } |
3430 | } |
3431 | |
3432 | if (b == level) |
3433 | break; |
3434 | |
3435 | const char *inf = NULL__null; |
3436 | location_t loc = input_location; |
3437 | switch (b->kind) |
3438 | { |
3439 | case sk_try: |
3440 | if (!saw_eh) |
3441 | inf = G_(" enters %<try%> block")" enters %<try%> block"; |
3442 | saw_eh = true; |
3443 | break; |
3444 | |
3445 | case sk_catch: |
3446 | if (!saw_eh) |
3447 | inf = G_(" enters %<catch%> block")" enters %<catch%> block"; |
3448 | saw_eh = true; |
3449 | break; |
3450 | |
3451 | case sk_omp: |
3452 | if (!saw_omp) |
3453 | inf = G_(" enters OpenMP structured block")" enters OpenMP structured block"; |
3454 | saw_omp = true; |
3455 | break; |
3456 | |
3457 | case sk_transaction: |
3458 | if (!saw_tm) |
3459 | inf = G_(" enters synchronized or atomic statement")" enters synchronized or atomic statement"; |
3460 | saw_tm = true; |
3461 | break; |
3462 | |
3463 | case sk_block: |
3464 | if (!saw_cxif && level_for_constexpr_if (b->level_chain)) |
3465 | { |
3466 | inf = G_(" enters %<constexpr if%> statement")" enters %<constexpr if%> statement"; |
3467 | loc = EXPR_LOCATION (b->level_chain->this_entity)((((b->level_chain->this_entity)) && ((tree_code_type [(int) (((enum tree_code) ((b->level_chain->this_entity ))->base.code))]) >= tcc_reference && (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)); |
3468 | saw_cxif = true; |
3469 | } |
3470 | break; |
3471 | |
3472 | default: |
3473 | break; |
3474 | } |
3475 | |
3476 | if (inf) |
3477 | { |
3478 | if (identified < 2) |
3479 | complained = identify_goto (decl, input_location, locus, DK_ERROR); |
3480 | identified = 2; |
3481 | if (complained) |
3482 | inform (loc, inf); |
3483 | } |
3484 | } |
3485 | |
3486 | return !identified; |
3487 | } |
3488 | |
3489 | static void |
3490 | check_previous_goto (tree decl, struct named_label_use_entry *use) |
3491 | { |
3492 | check_previous_goto_1 (decl, use->binding_level, |
3493 | use->names_in_scope, use->in_omp_scope, |
3494 | &use->o_goto_locus); |
3495 | } |
3496 | |
3497 | static bool |
3498 | check_switch_goto (cp_binding_level* level) |
3499 | { |
3500 | return check_previous_goto_1 (NULL_TREE(tree) __null, level, level->names, false, NULL__null); |
3501 | } |
3502 | |
3503 | /* Check that a new jump to a label DECL is OK. Called by |
3504 | finish_goto_stmt. */ |
3505 | |
3506 | void |
3507 | check_goto (tree decl) |
3508 | { |
3509 | /* We can't know where a computed goto is jumping. |
3510 | So we assume that it's OK. */ |
3511 | if (TREE_CODE (decl)((enum tree_code) (decl)->base.code) != LABEL_DECL) |
3512 | return; |
3513 | |
3514 | /* We didn't record any information about this label when we created it, |
3515 | and there's not much point since it's trivial to analyze as a return. */ |
3516 | if (decl == cdtor_label((cfun + 0)->language)->x_cdtor_label) |
3517 | return; |
3518 | |
3519 | hashval_t hash = IDENTIFIER_HASH_VALUE (DECL_NAME (decl))((tree_check ((((contains_struct_check ((decl), (TS_DECL_MINIMAL ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3519, __FUNCTION__))->decl_minimal.name)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3519, __FUNCTION__, (IDENTIFIER_NODE)))->identifier.id.hash_value ); |
3520 | named_label_entry **slot |
3521 | = named_labels((cfun + 0)->language)->x_named_labels->find_slot_with_hash (DECL_NAME (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3521, __FUNCTION__))->decl_minimal.name), hash, NO_INSERT); |
3522 | named_label_entry *ent = *slot; |
3523 | |
3524 | /* If the label hasn't been defined yet, defer checking. */ |
3525 | if (! DECL_INITIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3525, __FUNCTION__))->decl_common.initial)) |
3526 | { |
3527 | /* Don't bother creating another use if the last goto had the |
3528 | same data, and will therefore create the same set of errors. */ |
3529 | if (ent->uses |
3530 | && ent->uses->names_in_scope == current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names) |
3531 | return; |
3532 | |
3533 | named_label_use_entry *new_use |
3534 | = ggc_alloc<named_label_use_entry> (); |
3535 | new_use->binding_level = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
3536 | new_use->names_in_scope = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names; |
3537 | new_use->o_goto_locus = input_location; |
3538 | new_use->in_omp_scope = false; |
3539 | |
3540 | new_use->next = ent->uses; |
3541 | ent->uses = new_use; |
3542 | return; |
3543 | } |
3544 | |
3545 | bool saw_catch = false, complained = false; |
3546 | int identified = 0; |
3547 | tree bad; |
3548 | unsigned ix; |
3549 | |
3550 | if (ent->in_try_scope || ent->in_catch_scope || ent->in_transaction_scope |
3551 | || ent->in_constexpr_if |
3552 | || ent->in_omp_scope || !vec_safe_is_empty (ent->bad_decls)) |
3553 | { |
3554 | diagnostic_t diag_kind = DK_PERMERROR; |
3555 | if (ent->in_try_scope || ent->in_catch_scope || ent->in_constexpr_if |
3556 | || ent->in_transaction_scope || ent->in_omp_scope) |
3557 | diag_kind = DK_ERROR; |
3558 | complained = identify_goto (decl, DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3558, __FUNCTION__))->decl_minimal.locus), |
3559 | &input_location, diag_kind); |
3560 | identified = 1 + (diag_kind == DK_ERROR); |
3561 | } |
3562 | |
3563 | FOR_EACH_VEC_SAFE_ELT (ent->bad_decls, ix, bad)for (ix = 0; vec_safe_iterate ((ent->bad_decls), (ix), & (bad)); ++(ix)) |
3564 | { |
3565 | int u = decl_jump_unsafe (bad); |
3566 | |
3567 | if (u > 1 && DECL_ARTIFICIAL (bad)((contains_struct_check ((bad), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3567, __FUNCTION__))->decl_common.artificial_flag)) |
3568 | { |
3569 | /* Can't skip init of __exception_info. */ |
3570 | if (identified == 1) |
3571 | { |
3572 | complained = identify_goto (decl, DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3572, __FUNCTION__))->decl_minimal.locus), |
3573 | &input_location, DK_ERROR); |
3574 | identified = 2; |
3575 | } |
3576 | if (complained) |
3577 | inform (DECL_SOURCE_LOCATION (bad)((contains_struct_check ((bad), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3577, __FUNCTION__))->decl_minimal.locus), " enters %<catch%> block"); |
3578 | saw_catch = true; |
3579 | } |
3580 | else if (complained) |
3581 | { |
3582 | if (u > 1) |
3583 | inform (DECL_SOURCE_LOCATION (bad)((contains_struct_check ((bad), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3583, __FUNCTION__))->decl_minimal.locus), |
3584 | " skips initialization of %q#D", bad); |
3585 | else |
3586 | inform (DECL_SOURCE_LOCATION (bad)((contains_struct_check ((bad), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3586, __FUNCTION__))->decl_minimal.locus), |
3587 | " enters scope of %q#D which has " |
3588 | "non-trivial destructor", bad); |
3589 | } |
3590 | } |
3591 | |
3592 | if (complained) |
3593 | { |
3594 | if (ent->in_try_scope) |
3595 | inform (input_location, " enters %<try%> block"); |
3596 | else if (ent->in_catch_scope && !saw_catch) |
3597 | inform (input_location, " enters %<catch%> block"); |
3598 | else if (ent->in_transaction_scope) |
3599 | inform (input_location, " enters synchronized or atomic statement"); |
3600 | else if (ent->in_constexpr_if) |
3601 | inform (input_location, " enters %<constexpr if%> statement"); |
3602 | } |
3603 | |
3604 | if (ent->in_omp_scope) |
3605 | { |
3606 | if (complained) |
3607 | inform (input_location, " enters OpenMP structured block"); |
3608 | } |
3609 | else if (flag_openmpglobal_options.x_flag_openmp) |
3610 | for (cp_binding_level *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) |
3611 | { |
3612 | if (b == ent->binding_level) |
3613 | break; |
3614 | if (b->kind == sk_omp) |
3615 | { |
3616 | if (identified < 2) |
3617 | { |
3618 | complained = identify_goto (decl, |
3619 | DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3619, __FUNCTION__))->decl_minimal.locus), |
3620 | &input_location, DK_ERROR); |
3621 | identified = 2; |
3622 | } |
3623 | if (complained) |
3624 | inform (input_location, " exits OpenMP structured block"); |
3625 | break; |
3626 | } |
3627 | } |
3628 | } |
3629 | |
3630 | /* Check that a return is ok wrt OpenMP structured blocks. |
3631 | Called by finish_return_stmt. Returns true if all is well. */ |
3632 | |
3633 | bool |
3634 | check_omp_return (void) |
3635 | { |
3636 | for (cp_binding_level *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) |
3637 | if (b->kind == sk_omp) |
3638 | { |
3639 | error ("invalid exit from OpenMP structured block"); |
3640 | return false; |
3641 | } |
3642 | else if (b->kind == sk_function_parms) |
3643 | break; |
3644 | return true; |
3645 | } |
3646 | |
3647 | /* Define a label, specifying the location in the source file. |
3648 | Return the LABEL_DECL node for the label. */ |
3649 | |
3650 | static tree |
3651 | define_label_1 (location_t location, tree name) |
3652 | { |
3653 | /* After labels, make any new cleanups in the function go into their |
3654 | own new (temporary) binding contour. */ |
3655 | for (cp_binding_level *p = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
3656 | p->kind != sk_function_parms; |
3657 | p = p->level_chain) |
3658 | p->more_cleanups_ok = 0; |
3659 | |
3660 | named_label_entry *ent = lookup_label_1 (name, false); |
3661 | tree decl = ent->label_decl; |
3662 | |
3663 | if (DECL_INITIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3663, __FUNCTION__))->decl_common.initial) != NULL_TREE(tree) __null) |
3664 | { |
3665 | error ("duplicate label %qD", decl); |
3666 | return error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
3667 | } |
3668 | else |
3669 | { |
3670 | /* Mark label as having been defined. */ |
3671 | DECL_INITIAL (decl)((contains_struct_check ((decl), (TS_DECL_COMMON), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3671, __FUNCTION__))->decl_common.initial) = error_mark_nodeglobal_trees[TI_ERROR_MARK]; |
3672 | /* Say where in the source. */ |
3673 | DECL_SOURCE_LOCATION (decl)((contains_struct_check ((decl), (TS_DECL_MINIMAL), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3673, __FUNCTION__))->decl_minimal.locus) = location; |
3674 | |
3675 | ent->binding_level = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
3676 | ent->names_in_scope = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings))->names; |
3677 | |
3678 | for (named_label_use_entry *use = ent->uses; use; use = use->next) |
3679 | check_previous_goto (decl, use); |
3680 | ent->uses = NULL__null; |
3681 | } |
3682 | |
3683 | return decl; |
3684 | } |
3685 | |
3686 | /* Wrapper for define_label_1. */ |
3687 | |
3688 | tree |
3689 | define_label (location_t location, tree name) |
3690 | { |
3691 | bool running = timevar_cond_start (TV_NAME_LOOKUP); |
3692 | tree ret = define_label_1 (location, name); |
3693 | timevar_cond_stop (TV_NAME_LOOKUP, running); |
3694 | return ret; |
3695 | } |
3696 | |
3697 | |
3698 | struct cp_switch |
3699 | { |
3700 | cp_binding_level *level; |
3701 | struct cp_switch *next; |
3702 | /* The SWITCH_STMT being built. */ |
3703 | tree switch_stmt; |
3704 | /* A splay-tree mapping the low element of a case range to the high |
3705 | element, or NULL_TREE if there is no high element. Used to |
3706 | determine whether or not a new case label duplicates an old case |
3707 | label. We need a tree, rather than simply a hash table, because |
3708 | of the GNU case range extension. */ |
3709 | splay_tree cases; |
3710 | /* Remember whether a default: case label has been seen. */ |
3711 | bool has_default_p; |
3712 | /* Remember whether a BREAK_STMT has been seen in this SWITCH_STMT. */ |
3713 | bool break_stmt_seen_p; |
3714 | /* Set if inside of {FOR,DO,WHILE}_BODY nested inside of a switch, |
3715 | where BREAK_STMT doesn't belong to the SWITCH_STMT. */ |
3716 | bool in_loop_body_p; |
3717 | }; |
3718 | |
3719 | /* A stack of the currently active switch statements. The innermost |
3720 | switch statement is on the top of the stack. There is no need to |
3721 | mark the stack for garbage collection because it is only active |
3722 | during the processing of the body of a function, and we never |
3723 | collect at that point. */ |
3724 | |
3725 | static struct cp_switch *switch_stack; |
3726 | |
3727 | /* Called right after a switch-statement condition is parsed. |
3728 | SWITCH_STMT is the switch statement being parsed. */ |
3729 | |
3730 | void |
3731 | push_switch (tree switch_stmt) |
3732 | { |
3733 | struct cp_switch *p = XNEW (struct cp_switch)((struct cp_switch *) xmalloc (sizeof (struct cp_switch))); |
3734 | p->level = current_binding_level(*((cfun + 0) && ((cfun + 0)->language) && ((cfun + 0)->language)->bindings ? &((cfun + 0)-> language)->bindings : &scope_chain->bindings)); |
3735 | p->next = switch_stack; |
3736 | p->switch_stmt = switch_stmt; |
3737 | p->cases = splay_tree_new (case_compare, NULL__null, NULL__null); |
3738 | p->has_default_p = false; |
3739 | p->break_stmt_seen_p = false; |
3740 | p->in_loop_body_p = false; |
3741 | switch_stack = p; |
3742 | } |
3743 | |
3744 | void |
3745 | pop_switch (void) |
3746 | { |
3747 | struct cp_switch *cs = switch_stack; |
3748 | |
3749 | /* Emit warnings as needed. */ |
3750 | location_t switch_location = cp_expr_loc_or_input_loc (cs->switch_stmt); |
3751 | tree cond = SWITCH_STMT_COND (cs->switch_stmt)(*((const_cast<tree*> (tree_operand_check (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3751, __FUNCTION__, (SWITCH_STMT)))), (0), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3751, __FUNCTION__))))); |
3752 | const bool bool_cond_p |
3753 | = (SWITCH_STMT_TYPE (cs->switch_stmt)(*((const_cast<tree*> (tree_operand_check (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3753, __FUNCTION__, (SWITCH_STMT)))), (2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3753, __FUNCTION__))))) |
3754 | && TREE_CODE (SWITCH_STMT_TYPE (cs->switch_stmt))((enum tree_code) ((*((const_cast<tree*> (tree_operand_check (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3754, __FUNCTION__, (SWITCH_STMT)))), (2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3754, __FUNCTION__))))))->base.code) == BOOLEAN_TYPE); |
3755 | if (!processing_template_declscope_chain->x_processing_template_decl) |
3756 | c_do_switch_warnings (cs->cases, switch_location, |
3757 | SWITCH_STMT_TYPE (cs->switch_stmt)(*((const_cast<tree*> (tree_operand_check (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3757, __FUNCTION__, (SWITCH_STMT)))), (2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3757, __FUNCTION__))))), cond, |
3758 | bool_cond_p); |
3759 | |
3760 | /* For the benefit of block_may_fallthru remember if the switch body |
3761 | case labels cover all possible values and if there are break; stmts. */ |
3762 | if (cs->has_default_p |
3763 | || (!processing_template_declscope_chain->x_processing_template_decl |
3764 | && c_switch_covers_all_cases_p (cs->cases, |
3765 | SWITCH_STMT_TYPE (cs->switch_stmt)(*((const_cast<tree*> (tree_operand_check (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3765, __FUNCTION__, (SWITCH_STMT)))), (2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3765, __FUNCTION__)))))))) |
3766 | SWITCH_STMT_ALL_CASES_P (cs->switch_stmt)((tree_not_check2 (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3766, __FUNCTION__, (SWITCH_STMT)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3766, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_0) = 1; |
3767 | if (!cs->break_stmt_seen_p) |
3768 | SWITCH_STMT_NO_BREAK_P (cs->switch_stmt)((tree_not_check2 (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3768, __FUNCTION__, (SWITCH_STMT)))), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3768, __FUNCTION__, (TREE_VEC), (SSA_NAME)))->base.u.bits .lang_flag_2) = 1; |
3769 | /* Now that we're done with the switch warnings, set the switch type |
3770 | to the type of the condition if the index type was of scoped enum type. |
3771 | (Such types don't participate in the integer promotions.) We do this |
3772 | because of bit-fields whose declared type is a scoped enum type: |
3773 | gimplification will use the lowered index type, but convert the |
3774 | case values to SWITCH_STMT_TYPE, which would have been the declared type |
3775 | and verify_gimple_switch doesn't accept that. */ |
3776 | if (is_bitfield_expr_with_lowered_type (cond)) |
3777 | SWITCH_STMT_TYPE (cs->switch_stmt)(*((const_cast<tree*> (tree_operand_check (((tree_check ((cs->switch_stmt), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3777, __FUNCTION__, (SWITCH_STMT)))), (2), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3777, __FUNCTION__))))) = TREE_TYPE (cond)((contains_struct_check ((cond), (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3777, __FUNCTION__))->typed.type); |
3778 | gcc_assert (!cs->in_loop_body_p)((void)(!(!cs->in_loop_body_p) ? fancy_abort ("/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3778, __FUNCTION__), 0 : 0)); |
3779 | splay_tree_delete (cs->cases); |
3780 | switch_stack = switch_stack->next; |
3781 | free (cs); |
3782 | } |
3783 | |
3784 | /* Note that a BREAK_STMT is about to be added. If it is inside of |
3785 | a SWITCH_STMT and not inside of a loop body inside of it, note |
3786 | in switch_stack we've seen a BREAK_STMT. */ |
3787 | |
3788 | void |
3789 | note_break_stmt (void) |
3790 | { |
3791 | if (switch_stack && !switch_stack->in_loop_body_p) |
3792 | switch_stack->break_stmt_seen_p = true; |
3793 | } |
3794 | |
3795 | /* Note the start of processing of an iteration statement's body. |
3796 | The note_break_stmt function will do nothing while processing it. |
3797 | Return a flag that should be passed to note_iteration_stmt_body_end. */ |
3798 | |
3799 | bool |
3800 | note_iteration_stmt_body_start (void) |
3801 | { |
3802 | if (!switch_stack) |
3803 | return false; |
3804 | bool ret = switch_stack->in_loop_body_p; |
3805 | switch_stack->in_loop_body_p = true; |
3806 | return ret; |
3807 | } |
3808 | |
3809 | /* Note the end of processing of an iteration statement's body. */ |
3810 | |
3811 | void |
3812 | note_iteration_stmt_body_end (bool prev) |
3813 | { |
3814 | if (switch_stack) |
3815 | switch_stack->in_loop_body_p = prev; |
3816 | } |
3817 | |
3818 | /* Convert a case constant VALUE in a switch to the type TYPE of the switch |
3819 | condition. Note that if TYPE and VALUE are already integral we don't |
3820 | really do the conversion because the language-independent |
3821 | warning/optimization code will work better that way. */ |
3822 | |
3823 | static tree |
3824 | case_conversion (tree type, tree value) |
3825 | { |
3826 | if (value == NULL_TREE(tree) __null) |
3827 | return value; |
3828 | |
3829 | value = mark_rvalue_use (value); |
3830 | |
3831 | if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)((((enum tree_code) (type)->base.code) == ENUMERAL_TYPE && !((tree_check ((type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3831, __FUNCTION__, (ENUMERAL_TYPE)))->base.static_flag) ) || (((enum tree_code) (type)->base.code) == BOOLEAN_TYPE || ((enum tree_code) (type)->base.code) == INTEGER_TYPE))) |
3832 | type = type_promotes_to (type); |
3833 | |
3834 | tree ovalue = value; |
3835 | /* The constant-expression VALUE shall be a converted constant expression |
3836 | of the adjusted type of the switch condition, which doesn't allow |
3837 | narrowing conversions. */ |
3838 | value = build_converted_constant_expr (type, value, tf_warning_or_error); |
3839 | |
3840 | if (cxx_dialect >= cxx11 |
3841 | && (SCOPED_ENUM_P (type)(((enum tree_code) (type)->base.code) == ENUMERAL_TYPE && ((tree_check ((type), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3841, __FUNCTION__, (ENUMERAL_TYPE)))->base.static_flag) ) |
3842 | || !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (ovalue))((((enum tree_code) (((contains_struct_check ((ovalue), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3842, __FUNCTION__))->typed.type))->base.code) == ENUMERAL_TYPE && !((tree_check ((((contains_struct_check ((ovalue) , (TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3842, __FUNCTION__))->typed.type)), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3842, __FUNCTION__, (ENUMERAL_TYPE)))->base.static_flag) ) || (((enum tree_code) (((contains_struct_check ((ovalue), ( TS_TYPED), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3842, __FUNCTION__))->typed.type))->base.code) == BOOLEAN_TYPE || ((enum tree_code) (((contains_struct_check ((ovalue), (TS_TYPED ), "/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c" , 3842, __FUNCTION__))->typed.type))->base.code) == INTEGER_TYPE )))) |
3843 | /* Use the converted value. */; |
3844 | else |