Bug Summary

File:build/gcc/cp/decl.c
Warning:line 13902, column 6
Value stored to 'consteval_p' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name decl.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=cplusplus -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -analyzer-config-compatibility-mode=true -mrelocation-model static -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir /usr/lib64/clang/11.0.0 -D IN_GCC_FRONTEND -D IN_GCC -D HAVE_CONFIG_H -I . -I cp -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../include -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libcpp/include -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libcody -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libdecnumber -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libdecnumber/bid -I ../libdecnumber -I /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libbacktrace -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/10/../../../../include/c++/10 -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/10/../../../../include/c++/10/x86_64-suse-linux -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/10/../../../../include/c++/10/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/11.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-narrowing -Wwrite-strings -Wno-error=format-diag -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fdeprecated-macro -fdebug-compilation-dir /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/objdir/gcc -ferror-limit 19 -fno-rtti -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-output=plist-html -analyzer-config silence-checkers=core.NullDereference -faddrsig -o /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/objdir/clang-static-analyzer/2021-01-16-135054-17580-1/report-iLQTPB.plist -x c++ /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/cp/decl.c
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
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 3, or (at your option)
10any later version.
11
12GCC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along 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. */
59enum bad_spec_place {
60 BSP_VAR, /* variable */
61 BSP_PARM, /* parameter */
62 BSP_TYPE, /* type */
63 BSP_FIELD /* field */
64};
65
66static const char *redeclaration_error_message (tree, tree);
67
68static int decl_jump_unsafe (tree);
69static void require_complete_types_for_parms (tree);
70static tree grok_reference_init (tree, tree, tree, int);
71static tree grokvardecl (tree, tree, tree, const cp_decl_specifier_seq *,
72 int, int, int, bool, int, tree, location_t);
73static void check_static_variable_definition (tree, tree);
74static void record_unknown_type (tree, const char *);
75static int member_function_or_else (tree, tree, enum overload_flags);
76static tree local_variable_p_walkfn (tree *, int *, void *);
77static const char *tag_name (enum tag_types);
78static tree lookup_and_check_tag (enum tag_types, tree, TAG_how, bool);
79static void maybe_deduce_size_from_array_init (tree, tree);
80static void layout_var_decl (tree);
81static tree check_initializer (tree, tree, int, vec<tree, va_gc> **);
82static void make_rtl_for_nonlocal_decl (tree, tree, const char *);
83static void copy_type_enum (tree , tree);
84static void check_function_type (tree, tree);
85static void finish_constructor_body (void);
86static void begin_destructor_body (void);
87static void finish_destructor_body (void);
88static void record_key_method_defined (tree);
89static tree create_array_type_for_decl (tree, tree, tree, location_t);
90static tree get_atexit_node (void);
91static tree get_dso_handle_node (void);
92static tree start_cleanup_fn (void);
93static void end_cleanup_fn (void);
94static tree cp_make_fname_decl (location_t, tree, int);
95static void initialize_predefined_identifiers (void);
96static tree check_special_function_return_type
97 (special_function_kind, tree, tree, int, const location_t*);
98static tree push_cp_library_fn (enum tree_code, tree, int);
99static tree build_cp_library_fn (tree, enum tree_code, tree, int);
100static void store_parm_decls (tree);
101static void initialize_local_var (tree, tree);
102static void expand_static_init (tree, tree);
103static 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
138tree 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. */
144tree static_aggregates;
145
146/* Like static_aggregates, but for thread_local variables. */
147tree 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. */
151decl_tree_map *dynamic_initializers;
152
153/* -- end of C++ */
154
155/* A node for the integer constant 2. */
156
157tree integer_two_node;
158
159/* vector of static decls. */
160vec<tree, va_gc> *static_decls;
161
162/* vector of keyed classes. */
163vec<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
168struct 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
190struct 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.) */
230int function_depth;
231
232/* Whether the exception-specifier is part of a function type (i.e. C++17). */
233bool 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. */
239enum 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
245struct GTY(()) incomplete_var {
246 tree decl;
247 tree incomplete_type;
248};
249
250
251static 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
257tmpl_spec_kind
258current_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
345void
346finish_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
354static void
355check_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
376static int
377sort_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
390static void
391pop_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
429static void
430pop_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
450void *
451objc_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
462void
463objc_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
484static bool
485level_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
494int
495poplevel_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-*. */
555static 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
572tree
573poplevel (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__); &lt->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__); &lt->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
824int
825wrapup_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
868tree
869create_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
889static 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
894void
895determine_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__); &lt->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__); &lt->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__); &lt->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
941static bool
942function_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
974int
975decls_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
1115bool
1116maybe_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
1150void
1151warn_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__); &lt->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
1186static void
1187check_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
1237static bool
1238validate_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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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.
1290static inline bool
1291check_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
1322static void
1323check_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
1346static void
1347check_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
1372static void
1373merge_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
1396static bool
1397duplicate_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
1446tree
1447duplicate_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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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__); &lt->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
3019static const char *
3020redeclaration_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__); &lt->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__); &lt->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
3237hashval_t
3238named_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
3243bool
3244named_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
3253static named_label_entry *
3254lookup_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
3315tree
3316lookup_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
3324tree
3325declare_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
3336static int
3337decl_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
3364static bool
3365identify_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
3383static bool
3384check_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
3489static void
3490check_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
3497static bool
3498check_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
3506void
3507check_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
3633bool
3634check_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
3650static tree
3651define_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
3688tree
3689define_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
3698struct 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
3725static 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
3730void
3731push_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
3744void
3745pop_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
3788void
3789note_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
3799bool
3800note_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
3811void
3812note_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
3823static tree
3824case_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