]> gcc.gnu.org Git - gcc.git/blob - gcc/cp/decl.c
move TS_STATEMENT_LIST to be a substructure of TS_TYPED
[gcc.git] / gcc / cp / decl.c
1 /* Process declarations and variables for C++ compiler.
2 Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
4 Free Software Foundation, Inc.
5 Contributed by Michael Tiemann (tiemann@cygnus.com)
6
7 This file is part of GCC.
8
9 GCC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
13
14 GCC is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with GCC; see the file COPYING3. If not see
21 <http://www.gnu.org/licenses/>. */
22
23
24 /* Process declarations and symbol lookup for C++ front end.
25 Also constructs types; the standard scalar types at initialization,
26 and structure, union, array and enum types when they are declared. */
27
28 /* ??? not all decl nodes are given the most useful possible
29 line numbers. For example, the CONST_DECLs for enum values. */
30
31 #include "config.h"
32 #include "system.h"
33 #include "coretypes.h"
34 #include "tm.h"
35 #include "tree.h"
36 #include "flags.h"
37 #include "cp-tree.h"
38 #include "tree-iterator.h"
39 #include "tree-inline.h"
40 #include "decl.h"
41 #include "intl.h"
42 #include "output.h"
43 #include "toplev.h"
44 #include "hashtab.h"
45 #include "tm_p.h"
46 #include "target.h"
47 #include "c-family/c-common.h"
48 #include "c-family/c-objc.h"
49 #include "c-family/c-pragma.h"
50 #include "diagnostic.h"
51 #include "intl.h"
52 #include "debug.h"
53 #include "timevar.h"
54 #include "pointer-set.h"
55 #include "splay-tree.h"
56 #include "plugin.h"
57
58 /* Possible cases of bad specifiers type used by bad_specifiers. */
59 enum bad_spec_place {
60 BSP_VAR, /* variable */
61 BSP_PARM, /* parameter */
62 BSP_TYPE, /* type */
63 BSP_FIELD /* field */
64 };
65
66 static tree grokparms (tree parmlist, tree *);
67 static const char *redeclaration_error_message (tree, tree);
68
69 static int decl_jump_unsafe (tree);
70 static void require_complete_types_for_parms (tree);
71 static int ambi_op_p (enum tree_code);
72 static int unary_op_p (enum tree_code);
73 static void push_local_name (tree);
74 static tree grok_reference_init (tree, tree, tree, tree *);
75 static tree grokvardecl (tree, tree, const cp_decl_specifier_seq *,
76 int, int, tree);
77 static int check_static_variable_definition (tree, tree);
78 static void record_unknown_type (tree, const char *);
79 static tree builtin_function_1 (tree, tree, bool);
80 static tree build_library_fn_1 (tree, enum tree_code, tree);
81 static int member_function_or_else (tree, tree, enum overload_flags);
82 static void bad_specifiers (tree, enum bad_spec_place, int, int, int, int,
83 int);
84 static void check_for_uninitialized_const_var (tree);
85 static hashval_t typename_hash (const void *);
86 static int typename_compare (const void *, const void *);
87 static tree local_variable_p_walkfn (tree *, int *, void *);
88 static tree record_builtin_java_type (const char *, int);
89 static const char *tag_name (enum tag_types);
90 static tree lookup_and_check_tag (enum tag_types, tree, tag_scope, bool);
91 static int walk_namespaces_r (tree, walk_namespaces_fn, void *);
92 static void maybe_deduce_size_from_array_init (tree, tree);
93 static void layout_var_decl (tree);
94 static tree check_initializer (tree, tree, int, tree *);
95 static void make_rtl_for_nonlocal_decl (tree, tree, const char *);
96 static void save_function_data (tree);
97 static void copy_type_enum (tree , tree);
98 static void check_function_type (tree, tree);
99 static void finish_constructor_body (void);
100 static void begin_destructor_body (void);
101 static void finish_destructor_body (void);
102 static void record_key_method_defined (tree);
103 static tree create_array_type_for_decl (tree, tree, tree);
104 static tree get_atexit_node (void);
105 static tree get_dso_handle_node (void);
106 static tree start_cleanup_fn (void);
107 static void end_cleanup_fn (void);
108 static tree cp_make_fname_decl (location_t, tree, int);
109 static void initialize_predefined_identifiers (void);
110 static tree check_special_function_return_type
111 (special_function_kind, tree, tree);
112 static tree push_cp_library_fn (enum tree_code, tree);
113 static tree build_cp_library_fn (tree, enum tree_code, tree);
114 static void store_parm_decls (tree);
115 static void initialize_local_var (tree, tree);
116 static void expand_static_init (tree, tree);
117
118 /* The following symbols are subsumed in the cp_global_trees array, and
119 listed here individually for documentation purposes.
120
121 C++ extensions
122 tree wchar_decl_node;
123
124 tree vtable_entry_type;
125 tree delta_type_node;
126 tree __t_desc_type_node;
127
128 tree class_type_node;
129 tree unknown_type_node;
130
131 Array type `vtable_entry_type[]'
132
133 tree vtbl_type_node;
134 tree vtbl_ptr_type_node;
135
136 Namespaces,
137
138 tree std_node;
139 tree abi_node;
140
141 A FUNCTION_DECL which can call `abort'. Not necessarily the
142 one that the user will declare, but sufficient to be called
143 by routines that want to abort the program.
144
145 tree abort_fndecl;
146
147 The FUNCTION_DECL for the default `::operator delete'.
148
149 tree global_delete_fndecl;
150
151 Used by RTTI
152 tree type_info_type_node, tinfo_decl_id, tinfo_decl_type;
153 tree tinfo_var_id; */
154
155 tree cp_global_trees[CPTI_MAX];
156
157 /* Indicates that there is a type value in some namespace, although
158 that is not necessarily in scope at the moment. */
159
160 tree global_type_node;
161
162 /* The node that holds the "name" of the global scope. */
163 tree global_scope_name;
164
165 #define local_names cp_function_chain->x_local_names
166
167 /* A list of objects which have constructors or destructors
168 which reside in the global scope. The decl is stored in
169 the TREE_VALUE slot and the initializer is stored
170 in the TREE_PURPOSE slot. */
171 tree static_aggregates;
172
173 /* -- end of C++ */
174
175 /* A node for the integer constant 2. */
176
177 tree integer_two_node;
178
179 /* Used only for jumps to as-yet undefined labels, since jumps to
180 defined labels can have their validity checked immediately. */
181
182 struct GTY((chain_next ("%h.next"))) named_label_use_entry {
183 struct named_label_use_entry *next;
184 /* The binding level to which this entry is *currently* attached.
185 This is initially the binding level in which the goto appeared,
186 but is modified as scopes are closed. */
187 struct cp_binding_level *binding_level;
188 /* The head of the names list that was current when the goto appeared,
189 or the inner scope popped. These are the decls that will *not* be
190 skipped when jumping to the label. */
191 tree names_in_scope;
192 /* The location of the goto, for error reporting. */
193 location_t o_goto_locus;
194 /* True if an OpenMP structured block scope has been closed since
195 the goto appeared. This means that the branch from the label will
196 illegally exit an OpenMP scope. */
197 bool in_omp_scope;
198 };
199
200 /* A list of all LABEL_DECLs in the function that have names. Here so
201 we can clear out their names' definitions at the end of the
202 function, and so we can check the validity of jumps to these labels. */
203
204 struct GTY(()) named_label_entry {
205 /* The decl itself. */
206 tree label_decl;
207
208 /* The binding level to which the label is *currently* attached.
209 This is initially set to the binding level in which the label
210 is defined, but is modified as scopes are closed. */
211 struct cp_binding_level *binding_level;
212 /* The head of the names list that was current when the label was
213 defined, or the inner scope popped. These are the decls that will
214 be skipped when jumping to the label. */
215 tree names_in_scope;
216 /* A vector of all decls from all binding levels that would be
217 crossed by a backward branch to the label. */
218 VEC(tree,gc) *bad_decls;
219
220 /* A list of uses of the label, before the label is defined. */
221 struct named_label_use_entry *uses;
222
223 /* The following bits are set after the label is defined, and are
224 updated as scopes are popped. They indicate that a backward jump
225 to the label will illegally enter a scope of the given flavor. */
226 bool in_try_scope;
227 bool in_catch_scope;
228 bool in_omp_scope;
229 };
230
231 #define named_labels cp_function_chain->x_named_labels
232 \f
233 /* The number of function bodies which we are currently processing.
234 (Zero if we are at namespace scope, one inside the body of a
235 function, two inside the body of a function in a local class, etc.) */
236 int function_depth;
237
238 /* To avoid unwanted recursion, finish_function defers all mark_used calls
239 encountered during its execution until it finishes. */
240 bool defer_mark_used_calls;
241 VEC(tree, gc) *deferred_mark_used_calls;
242
243 /* States indicating how grokdeclarator() should handle declspecs marked
244 with __attribute__((deprecated)). An object declared as
245 __attribute__((deprecated)) suppresses warnings of uses of other
246 deprecated items. */
247 enum deprecated_states deprecated_state = DEPRECATED_NORMAL;
248
249 \f
250 /* A list of VAR_DECLs whose type was incomplete at the time the
251 variable was declared. */
252
253 typedef struct GTY(()) incomplete_var_d {
254 tree decl;
255 tree incomplete_type;
256 } incomplete_var;
257
258 DEF_VEC_O(incomplete_var);
259 DEF_VEC_ALLOC_O(incomplete_var,gc);
260
261 static GTY(()) VEC(incomplete_var,gc) *incomplete_vars;
262 \f
263 /* Returns the kind of template specialization we are currently
264 processing, given that it's declaration contained N_CLASS_SCOPES
265 explicit scope qualifications. */
266
267 tmpl_spec_kind
268 current_tmpl_spec_kind (int n_class_scopes)
269 {
270 int n_template_parm_scopes = 0;
271 int seen_specialization_p = 0;
272 int innermost_specialization_p = 0;
273 struct cp_binding_level *b;
274
275 /* Scan through the template parameter scopes. */
276 for (b = current_binding_level;
277 b->kind == sk_template_parms;
278 b = b->level_chain)
279 {
280 /* If we see a specialization scope inside a parameter scope,
281 then something is wrong. That corresponds to a declaration
282 like:
283
284 template <class T> template <> ...
285
286 which is always invalid since [temp.expl.spec] forbids the
287 specialization of a class member template if the enclosing
288 class templates are not explicitly specialized as well. */
289 if (b->explicit_spec_p)
290 {
291 if (n_template_parm_scopes == 0)
292 innermost_specialization_p = 1;
293 else
294 seen_specialization_p = 1;
295 }
296 else if (seen_specialization_p == 1)
297 return tsk_invalid_member_spec;
298
299 ++n_template_parm_scopes;
300 }
301
302 /* Handle explicit instantiations. */
303 if (processing_explicit_instantiation)
304 {
305 if (n_template_parm_scopes != 0)
306 /* We've seen a template parameter list during an explicit
307 instantiation. For example:
308
309 template <class T> template void f(int);
310
311 This is erroneous. */
312 return tsk_invalid_expl_inst;
313 else
314 return tsk_expl_inst;
315 }
316
317 if (n_template_parm_scopes < n_class_scopes)
318 /* We've not seen enough template headers to match all the
319 specialized classes present. For example:
320
321 template <class T> void R<T>::S<T>::f(int);
322
323 This is invalid; there needs to be one set of template
324 parameters for each class. */
325 return tsk_insufficient_parms;
326 else if (n_template_parm_scopes == n_class_scopes)
327 /* We're processing a non-template declaration (even though it may
328 be a member of a template class.) For example:
329
330 template <class T> void S<T>::f(int);
331
332 The `class T' matches the `S<T>', leaving no template headers
333 corresponding to the `f'. */
334 return tsk_none;
335 else if (n_template_parm_scopes > n_class_scopes + 1)
336 /* We've got too many template headers. For example:
337
338 template <> template <class T> void f (T);
339
340 There need to be more enclosing classes. */
341 return tsk_excessive_parms;
342 else
343 /* This must be a template. It's of the form:
344
345 template <class T> template <class U> void S<T>::f(U);
346
347 This is a specialization if the innermost level was a
348 specialization; otherwise it's just a definition of the
349 template. */
350 return innermost_specialization_p ? tsk_expl_spec : tsk_template;
351 }
352
353 /* Exit the current scope. */
354
355 void
356 finish_scope (void)
357 {
358 poplevel (0, 0, 0);
359 }
360
361 /* When a label goes out of scope, check to see if that label was used
362 in a valid manner, and issue any appropriate warnings or errors. */
363
364 static void
365 pop_label (tree label, tree old_value)
366 {
367 if (!processing_template_decl)
368 {
369 if (DECL_INITIAL (label) == NULL_TREE)
370 {
371 location_t location;
372
373 error ("label %q+D used but not defined", label);
374 location = input_location; /* FIXME want (input_filename, (line)0) */
375 /* Avoid crashing later. */
376 define_label (location, DECL_NAME (label));
377 }
378 else
379 warn_for_unused_label (label);
380 }
381
382 SET_IDENTIFIER_LABEL_VALUE (DECL_NAME (label), old_value);
383 }
384
385 /* At the end of a function, all labels declared within the function
386 go out of scope. BLOCK is the top-level block for the
387 function. */
388
389 static int
390 pop_labels_1 (void **slot, void *data)
391 {
392 struct named_label_entry *ent = (struct named_label_entry *) *slot;
393 tree block = (tree) data;
394
395 pop_label (ent->label_decl, NULL_TREE);
396
397 /* Put the labels into the "variables" of the top-level block,
398 so debugger can see them. */
399 DECL_CHAIN (ent->label_decl) = BLOCK_VARS (block);
400 BLOCK_VARS (block) = ent->label_decl;
401
402 htab_clear_slot (named_labels, slot);
403
404 return 1;
405 }
406
407 static void
408 pop_labels (tree block)
409 {
410 if (named_labels)
411 {
412 htab_traverse (named_labels, pop_labels_1, block);
413 named_labels = NULL;
414 }
415 }
416
417 /* At the end of a block with local labels, restore the outer definition. */
418
419 static void
420 pop_local_label (tree label, tree old_value)
421 {
422 struct named_label_entry dummy;
423 void **slot;
424
425 pop_label (label, old_value);
426
427 dummy.label_decl = label;
428 slot = htab_find_slot (named_labels, &dummy, NO_INSERT);
429 htab_clear_slot (named_labels, slot);
430 }
431
432 /* The following two routines are used to interface to Objective-C++.
433 The binding level is purposely treated as an opaque type. */
434
435 void *
436 objc_get_current_scope (void)
437 {
438 return current_binding_level;
439 }
440
441 /* The following routine is used by the NeXT-style SJLJ exceptions;
442 variables get marked 'volatile' so as to not be clobbered by
443 _setjmp()/_longjmp() calls. All variables in the current scope,
444 as well as parent scopes up to (but not including) ENCLOSING_BLK
445 shall be thusly marked. */
446
447 void
448 objc_mark_locals_volatile (void *enclosing_blk)
449 {
450 struct cp_binding_level *scope;
451
452 for (scope = current_binding_level;
453 scope && scope != enclosing_blk;
454 scope = scope->level_chain)
455 {
456 tree decl;
457
458 for (decl = scope->names; decl; decl = TREE_CHAIN (decl))
459 objc_volatilize_decl (decl);
460
461 /* Do not climb up past the current function. */
462 if (scope->kind == sk_function_parms)
463 break;
464 }
465 }
466
467 /* Update data for defined and undefined labels when leaving a scope. */
468
469 static int
470 poplevel_named_label_1 (void **slot, void *data)
471 {
472 struct named_label_entry *ent = (struct named_label_entry *) *slot;
473 struct cp_binding_level *bl = (struct cp_binding_level *) data;
474 struct cp_binding_level *obl = bl->level_chain;
475
476 if (ent->binding_level == bl)
477 {
478 tree decl;
479
480 /* ENT->NAMES_IN_SCOPE may contain a mixture of DECLs and
481 TREE_LISTs representing OVERLOADs, so be careful. */
482 for (decl = ent->names_in_scope; decl; decl = (DECL_P (decl)
483 ? DECL_CHAIN (decl)
484 : TREE_CHAIN (decl)))
485 if (decl_jump_unsafe (decl))
486 VEC_safe_push (tree, gc, ent->bad_decls, decl);
487
488 ent->binding_level = obl;
489 ent->names_in_scope = obl->names;
490 switch (bl->kind)
491 {
492 case sk_try:
493 ent->in_try_scope = true;
494 break;
495 case sk_catch:
496 ent->in_catch_scope = true;
497 break;
498 case sk_omp:
499 ent->in_omp_scope = true;
500 break;
501 default:
502 break;
503 }
504 }
505 else if (ent->uses)
506 {
507 struct named_label_use_entry *use;
508
509 for (use = ent->uses; use ; use = use->next)
510 if (use->binding_level == bl)
511 {
512 use->binding_level = obl;
513 use->names_in_scope = obl->names;
514 if (bl->kind == sk_omp)
515 use->in_omp_scope = true;
516 }
517 }
518
519 return 1;
520 }
521
522 /* Saved errorcount to avoid -Wunused-but-set-{parameter,variable} warnings
523 when errors were reported, except for -Werror-unused-but-set-*. */
524 static int unused_but_set_errorcount;
525
526 /* Exit a binding level.
527 Pop the level off, and restore the state of the identifier-decl mappings
528 that were in effect when this level was entered.
529
530 If KEEP == 1, this level had explicit declarations, so
531 and create a "block" (a BLOCK node) for the level
532 to record its declarations and subblocks for symbol table output.
533
534 If FUNCTIONBODY is nonzero, this level is the body of a function,
535 so create a block as if KEEP were set and also clear out all
536 label names.
537
538 If REVERSE is nonzero, reverse the order of decls before putting
539 them into the BLOCK. */
540
541 tree
542 poplevel (int keep, int reverse, int functionbody)
543 {
544 tree link;
545 /* The chain of decls was accumulated in reverse order.
546 Put it into forward order, just for cleanliness. */
547 tree decls;
548 tree subblocks;
549 tree block;
550 tree decl;
551 int leaving_for_scope;
552 scope_kind kind;
553 unsigned ix;
554 cp_label_binding *label_bind;
555
556 timevar_start (TV_NAME_LOOKUP);
557 restart:
558
559 block = NULL_TREE;
560
561 gcc_assert (current_binding_level->kind != sk_class);
562
563 if (current_binding_level->kind == sk_cleanup)
564 functionbody = 0;
565 subblocks = functionbody >= 0 ? current_binding_level->blocks : 0;
566
567 gcc_assert (!VEC_length(cp_class_binding,
568 current_binding_level->class_shadowed));
569
570 /* We used to use KEEP == 2 to indicate that the new block should go
571 at the beginning of the list of blocks at this binding level,
572 rather than the end. This hack is no longer used. */
573 gcc_assert (keep == 0 || keep == 1);
574
575 if (current_binding_level->keep)
576 keep = 1;
577
578 /* Any uses of undefined labels, and any defined labels, now operate
579 under constraints of next binding contour. */
580 if (cfun && !functionbody && named_labels)
581 htab_traverse (named_labels, poplevel_named_label_1,
582 current_binding_level);
583
584 /* Get the decls in the order they were written.
585 Usually current_binding_level->names is in reverse order.
586 But parameter decls were previously put in forward order. */
587
588 if (reverse)
589 current_binding_level->names
590 = decls = nreverse (current_binding_level->names);
591 else
592 decls = current_binding_level->names;
593
594 /* If there were any declarations or structure tags in that level,
595 or if this level is a function body,
596 create a BLOCK to record them for the life of this function. */
597 block = NULL_TREE;
598 if (keep == 1 || functionbody)
599 block = make_node (BLOCK);
600 if (block != NULL_TREE)
601 {
602 BLOCK_VARS (block) = decls;
603 BLOCK_SUBBLOCKS (block) = subblocks;
604 }
605
606 /* In each subblock, record that this is its superior. */
607 if (keep >= 0)
608 for (link = subblocks; link; link = BLOCK_CHAIN (link))
609 BLOCK_SUPERCONTEXT (link) = block;
610
611 /* We still support the old for-scope rules, whereby the variables
612 in a for-init statement were in scope after the for-statement
613 ended. We only use the new rules if flag_new_for_scope is
614 nonzero. */
615 leaving_for_scope
616 = current_binding_level->kind == sk_for && flag_new_for_scope == 1;
617
618 /* Before we remove the declarations first check for unused variables. */
619 if ((warn_unused_variable || warn_unused_but_set_variable)
620 && !processing_template_decl)
621 for (decl = getdecls (); decl; decl = TREE_CHAIN (decl))
622 if (TREE_CODE (decl) == VAR_DECL
623 && (! TREE_USED (decl) || !DECL_READ_P (decl))
624 && ! DECL_IN_SYSTEM_HEADER (decl)
625 && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl))
626 {
627 if (! TREE_USED (decl))
628 warning (OPT_Wunused_variable, "unused variable %q+D", decl);
629 else if (DECL_CONTEXT (decl) == current_function_decl
630 && TREE_TYPE (decl) != error_mark_node
631 && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE
632 && errorcount == unused_but_set_errorcount
633 && (!CLASS_TYPE_P (TREE_TYPE (decl))
634 || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
635 {
636 warning (OPT_Wunused_but_set_variable,
637 "variable %q+D set but not used", decl);
638 unused_but_set_errorcount = errorcount;
639 }
640 }
641
642 /* Remove declarations for all the DECLs in this level. */
643 for (link = decls; link; link = TREE_CHAIN (link))
644 {
645 if (leaving_for_scope && TREE_CODE (link) == VAR_DECL
646 && DECL_NAME (link))
647 {
648 tree name = DECL_NAME (link);
649 cxx_binding *ob;
650 tree ns_binding;
651
652 ob = outer_binding (name,
653 IDENTIFIER_BINDING (name),
654 /*class_p=*/true);
655 if (!ob)
656 ns_binding = IDENTIFIER_NAMESPACE_VALUE (name);
657 else
658 ns_binding = NULL_TREE;
659
660 if (ob && ob->scope == current_binding_level->level_chain)
661 /* We have something like:
662
663 int i;
664 for (int i; ;);
665
666 and we are leaving the `for' scope. There's no reason to
667 keep the binding of the inner `i' in this case. */
668 pop_binding (name, link);
669 else if ((ob && (TREE_CODE (ob->value) == TYPE_DECL))
670 || (ns_binding && TREE_CODE (ns_binding) == TYPE_DECL))
671 /* Here, we have something like:
672
673 typedef int I;
674
675 void f () {
676 for (int I; ;);
677 }
678
679 We must pop the for-scope binding so we know what's a
680 type and what isn't. */
681 pop_binding (name, link);
682 else
683 {
684 /* Mark this VAR_DECL as dead so that we can tell we left it
685 there only for backward compatibility. */
686 DECL_DEAD_FOR_LOCAL (link) = 1;
687
688 /* Keep track of what should have happened when we
689 popped the binding. */
690 if (ob && ob->value)
691 {
692 SET_DECL_SHADOWED_FOR_VAR (link, ob->value);
693 DECL_HAS_SHADOWED_FOR_VAR_P (link) = 1;
694 }
695
696 /* Add it to the list of dead variables in the next
697 outermost binding to that we can remove these when we
698 leave that binding. */
699 VEC_safe_push (tree, gc,
700 current_binding_level->level_chain->dead_vars_from_for,
701 link);
702
703 /* Although we don't pop the cxx_binding, we do clear
704 its SCOPE since the scope is going away now. */
705 IDENTIFIER_BINDING (name)->scope
706 = current_binding_level->level_chain;
707 }
708 }
709 else
710 {
711 tree name;
712
713 /* Remove the binding. */
714 decl = link;
715
716 if (TREE_CODE (decl) == TREE_LIST)
717 decl = TREE_VALUE (decl);
718 name = decl;
719
720 if (TREE_CODE (name) == OVERLOAD)
721 name = OVL_FUNCTION (name);
722
723 gcc_assert (DECL_P (name));
724 pop_binding (DECL_NAME (name), decl);
725 }
726 }
727
728 /* Remove declarations for any `for' variables from inner scopes
729 that we kept around. */
730 FOR_EACH_VEC_ELT_REVERSE (tree, current_binding_level->dead_vars_from_for,
731 ix, decl)
732 pop_binding (DECL_NAME (decl), decl);
733
734 /* Restore the IDENTIFIER_TYPE_VALUEs. */
735 for (link = current_binding_level->type_shadowed;
736 link; link = TREE_CHAIN (link))
737 SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (link), TREE_VALUE (link));
738
739 /* Restore the IDENTIFIER_LABEL_VALUEs for local labels. */
740 FOR_EACH_VEC_ELT_REVERSE (cp_label_binding,
741 current_binding_level->shadowed_labels,
742 ix, label_bind)
743 pop_local_label (label_bind->label, label_bind->prev_value);
744
745 /* There may be OVERLOADs (wrapped in TREE_LISTs) on the BLOCK_VARs
746 list if a `using' declaration put them there. The debugging
747 back ends won't understand OVERLOAD, so we remove them here.
748 Because the BLOCK_VARS are (temporarily) shared with
749 CURRENT_BINDING_LEVEL->NAMES we must do this fixup after we have
750 popped all the bindings. */
751 if (block)
752 {
753 tree* d;
754
755 for (d = &BLOCK_VARS (block); *d; )
756 {
757 if (TREE_CODE (*d) == TREE_LIST)
758 *d = TREE_CHAIN (*d);
759 else
760 d = &DECL_CHAIN (*d);
761 }
762 }
763
764 /* If the level being exited is the top level of a function,
765 check over all the labels. */
766 if (functionbody)
767 {
768 /* Since this is the top level block of a function, the vars are
769 the function's parameters. Don't leave them in the BLOCK
770 because they are found in the FUNCTION_DECL instead. */
771 BLOCK_VARS (block) = 0;
772 pop_labels (block);
773 }
774
775 kind = current_binding_level->kind;
776 if (kind == sk_cleanup)
777 {
778 tree stmt;
779
780 /* If this is a temporary binding created for a cleanup, then we'll
781 have pushed a statement list level. Pop that, create a new
782 BIND_EXPR for the block, and insert it into the stream. */
783 stmt = pop_stmt_list (current_binding_level->statement_list);
784 stmt = c_build_bind_expr (input_location, block, stmt);
785 add_stmt (stmt);
786 }
787
788 leave_scope ();
789 if (functionbody)
790 {
791 /* The current function is being defined, so its DECL_INITIAL
792 should be error_mark_node. */
793 gcc_assert (DECL_INITIAL (current_function_decl) == error_mark_node);
794 DECL_INITIAL (current_function_decl) = block;
795 }
796 else if (block)
797 current_binding_level->blocks
798 = block_chainon (current_binding_level->blocks, block);
799
800 /* If we did not make a block for the level just exited,
801 any blocks made for inner levels
802 (since they cannot be recorded as subblocks in that level)
803 must be carried forward so they will later become subblocks
804 of something else. */
805 else if (subblocks)
806 current_binding_level->blocks
807 = block_chainon (current_binding_level->blocks, subblocks);
808
809 /* Each and every BLOCK node created here in `poplevel' is important
810 (e.g. for proper debugging information) so if we created one
811 earlier, mark it as "used". */
812 if (block)
813 TREE_USED (block) = 1;
814
815 /* All temporary bindings created for cleanups are popped silently. */
816 if (kind == sk_cleanup)
817 goto restart;
818
819 timevar_stop (TV_NAME_LOOKUP);
820 return block;
821 }
822
823 /* Walk all the namespaces contained NAMESPACE, including NAMESPACE
824 itself, calling F for each. The DATA is passed to F as well. */
825
826 static int
827 walk_namespaces_r (tree name_space, walk_namespaces_fn f, void* data)
828 {
829 int result = 0;
830 tree current = NAMESPACE_LEVEL (name_space)->namespaces;
831
832 result |= (*f) (name_space, data);
833
834 for (; current; current = DECL_CHAIN (current))
835 result |= walk_namespaces_r (current, f, data);
836
837 return result;
838 }
839
840 /* Walk all the namespaces, calling F for each. The DATA is passed to
841 F as well. */
842
843 int
844 walk_namespaces (walk_namespaces_fn f, void* data)
845 {
846 return walk_namespaces_r (global_namespace, f, data);
847 }
848
849 /* Call wrapup_globals_declarations for the globals in NAMESPACE. If
850 DATA is non-NULL, this is the last time we will call
851 wrapup_global_declarations for this NAMESPACE. */
852
853 int
854 wrapup_globals_for_namespace (tree name_space, void* data)
855 {
856 struct cp_binding_level *level = NAMESPACE_LEVEL (name_space);
857 VEC(tree,gc) *statics = level->static_decls;
858 tree *vec = VEC_address (tree, statics);
859 int len = VEC_length (tree, statics);
860 int last_time = (data != 0);
861
862 if (last_time)
863 {
864 check_global_declarations (vec, len);
865 emit_debug_global_declarations (vec, len);
866 return 0;
867 }
868
869 /* Write out any globals that need to be output. */
870 return wrapup_global_declarations (vec, len);
871 }
872
873 \f
874 /* In C++, you don't have to write `struct S' to refer to `S'; you
875 can just use `S'. We accomplish this by creating a TYPE_DECL as
876 if the user had written `typedef struct S S'. Create and return
877 the TYPE_DECL for TYPE. */
878
879 tree
880 create_implicit_typedef (tree name, tree type)
881 {
882 tree decl;
883
884 decl = build_decl (input_location, TYPE_DECL, name, type);
885 DECL_ARTIFICIAL (decl) = 1;
886 /* There are other implicit type declarations, like the one *within*
887 a class that allows you to write `S::S'. We must distinguish
888 amongst these. */
889 SET_DECL_IMPLICIT_TYPEDEF_P (decl);
890 TYPE_NAME (type) = decl;
891 TYPE_STUB_DECL (type) = decl;
892
893 return decl;
894 }
895
896 /* Remember a local name for name-mangling purposes. */
897
898 static void
899 push_local_name (tree decl)
900 {
901 size_t i, nelts;
902 tree t, name;
903
904 timevar_start (TV_NAME_LOOKUP);
905
906 name = DECL_NAME (decl);
907
908 nelts = VEC_length (tree, local_names);
909 for (i = 0; i < nelts; i++)
910 {
911 t = VEC_index (tree, local_names, i);
912 if (DECL_NAME (t) == name)
913 {
914 if (!DECL_LANG_SPECIFIC (decl))
915 retrofit_lang_decl (decl);
916 DECL_LANG_SPECIFIC (decl)->u.base.u2sel = 1;
917 if (DECL_LANG_SPECIFIC (t))
918 DECL_DISCRIMINATOR (decl) = DECL_DISCRIMINATOR (t) + 1;
919 else
920 DECL_DISCRIMINATOR (decl) = 1;
921
922 VEC_replace (tree, local_names, i, decl);
923 timevar_stop (TV_NAME_LOOKUP);
924 return;
925 }
926 }
927
928 VEC_safe_push (tree, gc, local_names, decl);
929 timevar_stop (TV_NAME_LOOKUP);
930 }
931 \f
932 /* Subroutine of duplicate_decls: return truthvalue of whether
933 or not types of these decls match.
934
935 For C++, we must compare the parameter list so that `int' can match
936 `int&' in a parameter position, but `int&' is not confused with
937 `const int&'. */
938
939 int
940 decls_match (tree newdecl, tree olddecl)
941 {
942 int types_match;
943
944 if (newdecl == olddecl)
945 return 1;
946
947 if (TREE_CODE (newdecl) != TREE_CODE (olddecl))
948 /* If the two DECLs are not even the same kind of thing, we're not
949 interested in their types. */
950 return 0;
951
952 if (TREE_CODE (newdecl) == FUNCTION_DECL)
953 {
954 tree f1 = TREE_TYPE (newdecl);
955 tree f2 = TREE_TYPE (olddecl);
956 tree p1 = TYPE_ARG_TYPES (f1);
957 tree p2 = TYPE_ARG_TYPES (f2);
958
959 /* Specializations of different templates are different functions
960 even if they have the same type. */
961 tree t1 = (DECL_USE_TEMPLATE (newdecl)
962 ? DECL_TI_TEMPLATE (newdecl)
963 : NULL_TREE);
964 tree t2 = (DECL_USE_TEMPLATE (olddecl)
965 ? DECL_TI_TEMPLATE (olddecl)
966 : NULL_TREE);
967 if (t1 != t2)
968 return 0;
969
970 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl)
971 && ! (DECL_EXTERN_C_P (newdecl)
972 && DECL_EXTERN_C_P (olddecl)))
973 return 0;
974
975 #ifdef NO_IMPLICIT_EXTERN_C
976 /* A new declaration doesn't match a built-in one unless it
977 is also extern "C". */
978 if (DECL_IS_BUILTIN (olddecl)
979 && DECL_EXTERN_C_P (olddecl) && !DECL_EXTERN_C_P (newdecl))
980 return 0;
981 #endif
982
983 if (TREE_CODE (f1) != TREE_CODE (f2))
984 return 0;
985
986 if (same_type_p (TREE_TYPE (f1), TREE_TYPE (f2)))
987 {
988 if (!prototype_p (f2) && DECL_EXTERN_C_P (olddecl)
989 && (DECL_BUILT_IN (olddecl)
990 #ifndef NO_IMPLICIT_EXTERN_C
991 || (DECL_IN_SYSTEM_HEADER (newdecl) && !DECL_CLASS_SCOPE_P (newdecl))
992 || (DECL_IN_SYSTEM_HEADER (olddecl) && !DECL_CLASS_SCOPE_P (olddecl))
993 #endif
994 ))
995 {
996 types_match = self_promoting_args_p (p1);
997 if (p1 == void_list_node)
998 TREE_TYPE (newdecl) = TREE_TYPE (olddecl);
999 }
1000 #ifndef NO_IMPLICIT_EXTERN_C
1001 else if (!prototype_p (f1)
1002 && (DECL_EXTERN_C_P (olddecl)
1003 && DECL_IN_SYSTEM_HEADER (olddecl)
1004 && !DECL_CLASS_SCOPE_P (olddecl))
1005 && (DECL_EXTERN_C_P (newdecl)
1006 && DECL_IN_SYSTEM_HEADER (newdecl)
1007 && !DECL_CLASS_SCOPE_P (newdecl)))
1008 {
1009 types_match = self_promoting_args_p (p2);
1010 TREE_TYPE (newdecl) = TREE_TYPE (olddecl);
1011 }
1012 #endif
1013 else
1014 types_match =
1015 compparms (p1, p2)
1016 && (TYPE_ATTRIBUTES (TREE_TYPE (newdecl)) == NULL_TREE
1017 || comp_type_attributes (TREE_TYPE (newdecl),
1018 TREE_TYPE (olddecl)) != 0);
1019 }
1020 else
1021 types_match = 0;
1022 }
1023 else if (TREE_CODE (newdecl) == TEMPLATE_DECL)
1024 {
1025 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl))
1026 != TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)))
1027 return 0;
1028
1029 if (!comp_template_parms (DECL_TEMPLATE_PARMS (newdecl),
1030 DECL_TEMPLATE_PARMS (olddecl)))
1031 return 0;
1032
1033 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL)
1034 types_match = same_type_p (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl)),
1035 TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl)));
1036 else
1037 types_match = decls_match (DECL_TEMPLATE_RESULT (olddecl),
1038 DECL_TEMPLATE_RESULT (newdecl));
1039 }
1040 else
1041 {
1042 /* Need to check scope for variable declaration (VAR_DECL).
1043 For typedef (TYPE_DECL), scope is ignored. */
1044 if (TREE_CODE (newdecl) == VAR_DECL
1045 && CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl)
1046 /* [dcl.link]
1047 Two declarations for an object with C language linkage
1048 with the same name (ignoring the namespace that qualify
1049 it) that appear in different namespace scopes refer to
1050 the same object. */
1051 && !(DECL_EXTERN_C_P (olddecl) && DECL_EXTERN_C_P (newdecl)))
1052 return 0;
1053
1054 if (TREE_TYPE (newdecl) == error_mark_node)
1055 types_match = TREE_TYPE (olddecl) == error_mark_node;
1056 else if (TREE_TYPE (olddecl) == NULL_TREE)
1057 types_match = TREE_TYPE (newdecl) == NULL_TREE;
1058 else if (TREE_TYPE (newdecl) == NULL_TREE)
1059 types_match = 0;
1060 else
1061 types_match = comptypes (TREE_TYPE (newdecl),
1062 TREE_TYPE (olddecl),
1063 COMPARE_REDECLARATION);
1064 }
1065
1066 return types_match;
1067 }
1068
1069 /* If NEWDECL is `static' and an `extern' was seen previously,
1070 warn about it. OLDDECL is the previous declaration.
1071
1072 Note that this does not apply to the C++ case of declaring
1073 a variable `extern const' and then later `const'.
1074
1075 Don't complain about built-in functions, since they are beyond
1076 the user's control. */
1077
1078 void
1079 warn_extern_redeclared_static (tree newdecl, tree olddecl)
1080 {
1081 if (TREE_CODE (newdecl) == TYPE_DECL
1082 || TREE_CODE (newdecl) == TEMPLATE_DECL
1083 || TREE_CODE (newdecl) == CONST_DECL
1084 || TREE_CODE (newdecl) == NAMESPACE_DECL)
1085 return;
1086
1087 /* Don't get confused by static member functions; that's a different
1088 use of `static'. */
1089 if (TREE_CODE (newdecl) == FUNCTION_DECL
1090 && DECL_STATIC_FUNCTION_P (newdecl))
1091 return;
1092
1093 /* If the old declaration was `static', or the new one isn't, then
1094 everything is OK. */
1095 if (DECL_THIS_STATIC (olddecl) || !DECL_THIS_STATIC (newdecl))
1096 return;
1097
1098 /* It's OK to declare a builtin function as `static'. */
1099 if (TREE_CODE (olddecl) == FUNCTION_DECL
1100 && DECL_ARTIFICIAL (olddecl))
1101 return;
1102
1103 permerror (input_location, "%qD was declared %<extern%> and later %<static%>", newdecl);
1104 permerror (input_location, "previous declaration of %q+D", olddecl);
1105 }
1106
1107 /* NEW_DECL is a redeclaration of OLD_DECL; both are functions or
1108 function templates. If their exception specifications do not
1109 match, issue a diagnostic. */
1110
1111 static void
1112 check_redeclaration_exception_specification (tree new_decl,
1113 tree old_decl)
1114 {
1115 tree new_type;
1116 tree old_type;
1117 tree new_exceptions;
1118 tree old_exceptions;
1119
1120 new_type = TREE_TYPE (new_decl);
1121 new_exceptions = TYPE_RAISES_EXCEPTIONS (new_type);
1122 old_type = TREE_TYPE (old_decl);
1123 old_exceptions = TYPE_RAISES_EXCEPTIONS (old_type);
1124
1125 /* [except.spec]
1126
1127 If any declaration of a function has an exception-specification,
1128 all declarations, including the definition and an explicit
1129 specialization, of that function shall have an
1130 exception-specification with the same set of type-ids. */
1131 if ((pedantic || ! DECL_IN_SYSTEM_HEADER (old_decl))
1132 && ! DECL_IS_BUILTIN (old_decl)
1133 && flag_exceptions
1134 && !comp_except_specs (new_exceptions, old_exceptions, ce_normal))
1135 {
1136 error ("declaration of %qF has a different exception specifier",
1137 new_decl);
1138 error ("from previous declaration %q+F", old_decl);
1139 }
1140 }
1141
1142 /* Return true if OLD_DECL and NEW_DECL agree on constexprness.
1143 Otherwise issue diagnostics. */
1144
1145 static bool
1146 validate_constexpr_redeclaration (tree old_decl, tree new_decl)
1147 {
1148 old_decl = STRIP_TEMPLATE (old_decl);
1149 new_decl = STRIP_TEMPLATE (new_decl);
1150 if (!VAR_OR_FUNCTION_DECL_P (old_decl)
1151 || !VAR_OR_FUNCTION_DECL_P (new_decl))
1152 return true;
1153 if (DECL_DECLARED_CONSTEXPR_P (old_decl)
1154 == DECL_DECLARED_CONSTEXPR_P (new_decl))
1155 return true;
1156 if (TREE_CODE (old_decl) == FUNCTION_DECL && DECL_BUILT_IN (old_decl))
1157 {
1158 /* Hide a built-in declaration. */
1159 DECL_DECLARED_CONSTEXPR_P (old_decl)
1160 = DECL_DECLARED_CONSTEXPR_P (new_decl);
1161 return true;
1162 }
1163 error ("redeclaration %qD differs in %<constexpr%>", new_decl);
1164 error ("from previous declaration %q+D", old_decl);
1165 return false;
1166 }
1167
1168 #define GNU_INLINE_P(fn) (DECL_DECLARED_INLINE_P (fn) \
1169 && lookup_attribute ("gnu_inline", \
1170 DECL_ATTRIBUTES (fn)))
1171
1172 /* If NEWDECL is a redeclaration of OLDDECL, merge the declarations.
1173 If the redeclaration is invalid, a diagnostic is issued, and the
1174 error_mark_node is returned. Otherwise, OLDDECL is returned.
1175
1176 If NEWDECL is not a redeclaration of OLDDECL, NULL_TREE is
1177 returned.
1178
1179 NEWDECL_IS_FRIEND is true if NEWDECL was declared as a friend. */
1180
1181 tree
1182 duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
1183 {
1184 unsigned olddecl_uid = DECL_UID (olddecl);
1185 int olddecl_friend = 0, types_match = 0, hidden_friend = 0;
1186 int new_defines_function = 0;
1187 tree new_template_info;
1188
1189 if (newdecl == olddecl)
1190 return olddecl;
1191
1192 types_match = decls_match (newdecl, olddecl);
1193
1194 /* If either the type of the new decl or the type of the old decl is an
1195 error_mark_node, then that implies that we have already issued an
1196 error (earlier) for some bogus type specification, and in that case,
1197 it is rather pointless to harass the user with yet more error message
1198 about the same declaration, so just pretend the types match here. */
1199 if (TREE_TYPE (newdecl) == error_mark_node
1200 || TREE_TYPE (olddecl) == error_mark_node)
1201 return error_mark_node;
1202
1203 if (DECL_P (olddecl)
1204 && TREE_CODE (newdecl) == FUNCTION_DECL
1205 && TREE_CODE (olddecl) == FUNCTION_DECL
1206 && (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl)))
1207 {
1208 if (DECL_DECLARED_INLINE_P (newdecl)
1209 && DECL_UNINLINABLE (newdecl)
1210 && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl)))
1211 /* Already warned elsewhere. */;
1212 else if (DECL_DECLARED_INLINE_P (olddecl)
1213 && DECL_UNINLINABLE (olddecl)
1214 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl)))
1215 /* Already warned. */;
1216 else if (DECL_DECLARED_INLINE_P (newdecl)
1217 && DECL_UNINLINABLE (olddecl)
1218 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl)))
1219 {
1220 warning (OPT_Wattributes, "function %q+D redeclared as inline",
1221 newdecl);
1222 warning (OPT_Wattributes, "previous declaration of %q+D "
1223 "with attribute noinline", olddecl);
1224 }
1225 else if (DECL_DECLARED_INLINE_P (olddecl)
1226 && DECL_UNINLINABLE (newdecl)
1227 && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl)))
1228 {
1229 warning (OPT_Wattributes, "function %q+D redeclared with "
1230 "attribute noinline", newdecl);
1231 warning (OPT_Wattributes, "previous declaration of %q+D was inline",
1232 olddecl);
1233 }
1234 }
1235
1236 /* Check for redeclaration and other discrepancies. */
1237 if (TREE_CODE (olddecl) == FUNCTION_DECL
1238 && DECL_ARTIFICIAL (olddecl))
1239 {
1240 gcc_assert (!DECL_HIDDEN_FRIEND_P (olddecl));
1241 if (TREE_CODE (newdecl) != FUNCTION_DECL)
1242 {
1243 /* Avoid warnings redeclaring built-ins which have not been
1244 explicitly declared. */
1245 if (DECL_ANTICIPATED (olddecl))
1246 return NULL_TREE;
1247
1248 /* If you declare a built-in or predefined function name as static,
1249 the old definition is overridden, but optionally warn this was a
1250 bad choice of name. */
1251 if (! TREE_PUBLIC (newdecl))
1252 {
1253 warning (OPT_Wshadow,
1254 DECL_BUILT_IN (olddecl)
1255 ? G_("shadowing built-in function %q#D")
1256 : G_("shadowing library function %q#D"), olddecl);
1257 /* Discard the old built-in function. */
1258 return NULL_TREE;
1259 }
1260 /* If the built-in is not ansi, then programs can override
1261 it even globally without an error. */
1262 else if (! DECL_BUILT_IN (olddecl))
1263 warning (0, "library function %q#D redeclared as non-function %q#D",
1264 olddecl, newdecl);
1265 else
1266 {
1267 error ("declaration of %q#D", newdecl);
1268 error ("conflicts with built-in declaration %q#D",
1269 olddecl);
1270 }
1271 return NULL_TREE;
1272 }
1273 else if (!types_match)
1274 {
1275 /* Avoid warnings redeclaring built-ins which have not been
1276 explicitly declared. */
1277 if (DECL_ANTICIPATED (olddecl))
1278 {
1279 /* Deal with fileptr_type_node. FILE type is not known
1280 at the time we create the builtins. */
1281 tree t1, t2;
1282
1283 for (t1 = TYPE_ARG_TYPES (TREE_TYPE (newdecl)),
1284 t2 = TYPE_ARG_TYPES (TREE_TYPE (olddecl));
1285 t1 || t2;
1286 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2))
1287 if (!t1 || !t2)
1288 break;
1289 else if (TREE_VALUE (t2) == fileptr_type_node)
1290 {
1291 tree t = TREE_VALUE (t1);
1292
1293 if (TREE_CODE (t) == POINTER_TYPE
1294 && TYPE_NAME (TREE_TYPE (t))
1295 && DECL_NAME (TYPE_NAME (TREE_TYPE (t)))
1296 == get_identifier ("FILE")
1297 && compparms (TREE_CHAIN (t1), TREE_CHAIN (t2)))
1298 {
1299 tree oldargs = TYPE_ARG_TYPES (TREE_TYPE (olddecl));
1300
1301 TYPE_ARG_TYPES (TREE_TYPE (olddecl))
1302 = TYPE_ARG_TYPES (TREE_TYPE (newdecl));
1303 types_match = decls_match (newdecl, olddecl);
1304 if (types_match)
1305 return duplicate_decls (newdecl, olddecl,
1306 newdecl_is_friend);
1307 TYPE_ARG_TYPES (TREE_TYPE (olddecl)) = oldargs;
1308 }
1309 }
1310 else if (! same_type_p (TREE_VALUE (t1), TREE_VALUE (t2)))
1311 break;
1312 }
1313 else if ((DECL_EXTERN_C_P (newdecl)
1314 && DECL_EXTERN_C_P (olddecl))
1315 || compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)),
1316 TYPE_ARG_TYPES (TREE_TYPE (olddecl))))
1317 {
1318 /* A near match; override the builtin. */
1319
1320 if (TREE_PUBLIC (newdecl))
1321 {
1322 warning (0, "new declaration %q#D", newdecl);
1323 warning (0, "ambiguates built-in declaration %q#D",
1324 olddecl);
1325 }
1326 else
1327 warning (OPT_Wshadow,
1328 DECL_BUILT_IN (olddecl)
1329 ? G_("shadowing built-in function %q#D")
1330 : G_("shadowing library function %q#D"), olddecl);
1331 }
1332 else
1333 /* Discard the old built-in function. */
1334 return NULL_TREE;
1335
1336 /* Replace the old RTL to avoid problems with inlining. */
1337 COPY_DECL_RTL (newdecl, olddecl);
1338 }
1339 /* Even if the types match, prefer the new declarations type for
1340 built-ins which have not been explicitly declared, for
1341 exception lists, etc... */
1342 else if (DECL_IS_BUILTIN (olddecl))
1343 {
1344 tree type = TREE_TYPE (newdecl);
1345 tree attribs = (*targetm.merge_type_attributes)
1346 (TREE_TYPE (olddecl), type);
1347
1348 type = cp_build_type_attribute_variant (type, attribs);
1349 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = type;
1350 }
1351
1352 /* If a function is explicitly declared "throw ()", propagate that to
1353 the corresponding builtin. */
1354 if (DECL_BUILT_IN_CLASS (olddecl) == BUILT_IN_NORMAL
1355 && DECL_ANTICIPATED (olddecl)
1356 && TREE_NOTHROW (newdecl)
1357 && !TREE_NOTHROW (olddecl)
1358 && built_in_decls [DECL_FUNCTION_CODE (olddecl)] != NULL_TREE
1359 && built_in_decls [DECL_FUNCTION_CODE (olddecl)] != olddecl
1360 && types_match)
1361 TREE_NOTHROW (built_in_decls [DECL_FUNCTION_CODE (olddecl)]) = 1;
1362
1363 /* Whether or not the builtin can throw exceptions has no
1364 bearing on this declarator. */
1365 TREE_NOTHROW (olddecl) = 0;
1366
1367 if (DECL_THIS_STATIC (newdecl) && !DECL_THIS_STATIC (olddecl))
1368 {
1369 /* If a builtin function is redeclared as `static', merge
1370 the declarations, but make the original one static. */
1371 DECL_THIS_STATIC (olddecl) = 1;
1372 TREE_PUBLIC (olddecl) = 0;
1373
1374 /* Make the old declaration consistent with the new one so
1375 that all remnants of the builtin-ness of this function
1376 will be banished. */
1377 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl));
1378 COPY_DECL_RTL (newdecl, olddecl);
1379 }
1380 }
1381 else if (TREE_CODE (olddecl) != TREE_CODE (newdecl))
1382 {
1383 /* C++ Standard, 3.3, clause 4:
1384 "[Note: a namespace name or a class template name must be unique
1385 in its declarative region (7.3.2, clause 14). ]" */
1386 if (TREE_CODE (olddecl) != NAMESPACE_DECL
1387 && TREE_CODE (newdecl) != NAMESPACE_DECL
1388 && (TREE_CODE (olddecl) != TEMPLATE_DECL
1389 || TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) != TYPE_DECL)
1390 && (TREE_CODE (newdecl) != TEMPLATE_DECL
1391 || TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != TYPE_DECL))
1392 {
1393 if ((TREE_CODE (olddecl) == TYPE_DECL && DECL_ARTIFICIAL (olddecl)
1394 && TREE_CODE (newdecl) != TYPE_DECL)
1395 || (TREE_CODE (newdecl) == TYPE_DECL && DECL_ARTIFICIAL (newdecl)
1396 && TREE_CODE (olddecl) != TYPE_DECL))
1397 {
1398 /* We do nothing special here, because C++ does such nasty
1399 things with TYPE_DECLs. Instead, just let the TYPE_DECL
1400 get shadowed, and know that if we need to find a TYPE_DECL
1401 for a given name, we can look in the IDENTIFIER_TYPE_VALUE
1402 slot of the identifier. */
1403 return NULL_TREE;
1404 }
1405
1406 if ((TREE_CODE (newdecl) == FUNCTION_DECL
1407 && DECL_FUNCTION_TEMPLATE_P (olddecl))
1408 || (TREE_CODE (olddecl) == FUNCTION_DECL
1409 && DECL_FUNCTION_TEMPLATE_P (newdecl)))
1410 return NULL_TREE;
1411 }
1412
1413 error ("%q#D redeclared as different kind of symbol", newdecl);
1414 if (TREE_CODE (olddecl) == TREE_LIST)
1415 olddecl = TREE_VALUE (olddecl);
1416 error ("previous declaration of %q+#D", olddecl);
1417
1418 return error_mark_node;
1419 }
1420 else if (!types_match)
1421 {
1422 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl))
1423 /* These are certainly not duplicate declarations; they're
1424 from different scopes. */
1425 return NULL_TREE;
1426
1427 if (TREE_CODE (newdecl) == TEMPLATE_DECL)
1428 {
1429 /* The name of a class template may not be declared to refer to
1430 any other template, class, function, object, namespace, value,
1431 or type in the same scope. */
1432 if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == TYPE_DECL
1433 || TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL)
1434 {
1435 error ("declaration of template %q#D", newdecl);
1436 error ("conflicts with previous declaration %q+#D", olddecl);
1437 }
1438 else if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL
1439 && TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL
1440 && compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))),
1441 TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl))))
1442 && comp_template_parms (DECL_TEMPLATE_PARMS (newdecl),
1443 DECL_TEMPLATE_PARMS (olddecl))
1444 /* Template functions can be disambiguated by
1445 return type. */
1446 && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),
1447 TREE_TYPE (TREE_TYPE (olddecl))))
1448 {
1449 error ("new declaration %q#D", newdecl);
1450 error ("ambiguates old declaration %q+#D", olddecl);
1451 }
1452 return NULL_TREE;
1453 }
1454 if (TREE_CODE (newdecl) == FUNCTION_DECL)
1455 {
1456 if (DECL_EXTERN_C_P (newdecl) && DECL_EXTERN_C_P (olddecl))
1457 {
1458 error ("declaration of C function %q#D conflicts with",
1459 newdecl);
1460 error ("previous declaration %q+#D here", olddecl);
1461 return NULL_TREE;
1462 }
1463 else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)),
1464 TYPE_ARG_TYPES (TREE_TYPE (olddecl))))
1465 {
1466 error ("new declaration %q#D", newdecl);
1467 error ("ambiguates old declaration %q+#D", olddecl);
1468 return error_mark_node;
1469 }
1470 else
1471 return NULL_TREE;
1472 }
1473 else
1474 {
1475 error ("conflicting declaration %q#D", newdecl);
1476 error ("%q+D has a previous declaration as %q#D", olddecl, olddecl);
1477 return error_mark_node;
1478 }
1479 }
1480 else if (TREE_CODE (newdecl) == FUNCTION_DECL
1481 && ((DECL_TEMPLATE_SPECIALIZATION (olddecl)
1482 && (!DECL_TEMPLATE_INFO (newdecl)
1483 || (DECL_TI_TEMPLATE (newdecl)
1484 != DECL_TI_TEMPLATE (olddecl))))
1485 || (DECL_TEMPLATE_SPECIALIZATION (newdecl)
1486 && (!DECL_TEMPLATE_INFO (olddecl)
1487 || (DECL_TI_TEMPLATE (olddecl)
1488 != DECL_TI_TEMPLATE (newdecl))))))
1489 /* It's OK to have a template specialization and a non-template
1490 with the same type, or to have specializations of two
1491 different templates with the same type. Note that if one is a
1492 specialization, and the other is an instantiation of the same
1493 template, that we do not exit at this point. That situation
1494 can occur if we instantiate a template class, and then
1495 specialize one of its methods. This situation is valid, but
1496 the declarations must be merged in the usual way. */
1497 return NULL_TREE;
1498 else if (TREE_CODE (newdecl) == FUNCTION_DECL
1499 && ((DECL_TEMPLATE_INSTANTIATION (olddecl)
1500 && !DECL_USE_TEMPLATE (newdecl))
1501 || (DECL_TEMPLATE_INSTANTIATION (newdecl)
1502 && !DECL_USE_TEMPLATE (olddecl))))
1503 /* One of the declarations is a template instantiation, and the
1504 other is not a template at all. That's OK. */
1505 return NULL_TREE;
1506 else if (TREE_CODE (newdecl) == NAMESPACE_DECL)
1507 {
1508 /* In [namespace.alias] we have:
1509
1510 In a declarative region, a namespace-alias-definition can be
1511 used to redefine a namespace-alias declared in that declarative
1512 region to refer only to the namespace to which it already
1513 refers.
1514
1515 Therefore, if we encounter a second alias directive for the same
1516 alias, we can just ignore the second directive. */
1517 if (DECL_NAMESPACE_ALIAS (newdecl)
1518 && (DECL_NAMESPACE_ALIAS (newdecl)
1519 == DECL_NAMESPACE_ALIAS (olddecl)))
1520 return olddecl;
1521 /* [namespace.alias]
1522
1523 A namespace-name or namespace-alias shall not be declared as
1524 the name of any other entity in the same declarative region.
1525 A namespace-name defined at global scope shall not be
1526 declared as the name of any other entity in any global scope
1527 of the program. */
1528 error ("declaration of namespace %qD conflicts with", newdecl);
1529 error ("previous declaration of namespace %q+D here", olddecl);
1530 return error_mark_node;
1531 }
1532 else
1533 {
1534 const char *errmsg = redeclaration_error_message (newdecl, olddecl);
1535 if (errmsg)
1536 {
1537 error_at (DECL_SOURCE_LOCATION (newdecl), errmsg, newdecl);
1538 if (DECL_NAME (olddecl) != NULL_TREE)
1539 error ((DECL_INITIAL (olddecl) && namespace_bindings_p ())
1540 ? "%q+#D previously defined here"
1541 : "%q+#D previously declared here", olddecl);
1542 return error_mark_node;
1543 }
1544 else if (TREE_CODE (olddecl) == FUNCTION_DECL
1545 && DECL_INITIAL (olddecl) != NULL_TREE
1546 && !prototype_p (TREE_TYPE (olddecl))
1547 && prototype_p (TREE_TYPE (newdecl)))
1548 {
1549 /* Prototype decl follows defn w/o prototype. */
1550 warning_at (input_location, 0, "prototype for %q+#D", newdecl);
1551 warning_at (DECL_SOURCE_LOCATION (olddecl), 0,
1552 "follows non-prototype definition here");
1553 }
1554 else if ((TREE_CODE (olddecl) == FUNCTION_DECL
1555 || TREE_CODE (olddecl) == VAR_DECL)
1556 && DECL_LANGUAGE (newdecl) != DECL_LANGUAGE (olddecl))
1557 {
1558 /* [dcl.link]
1559 If two declarations of the same function or object
1560 specify different linkage-specifications ..., the program
1561 is ill-formed.... Except for functions with C++ linkage,
1562 a function declaration without a linkage specification
1563 shall not precede the first linkage specification for
1564 that function. A function can be declared without a
1565 linkage specification after an explicit linkage
1566 specification has been seen; the linkage explicitly
1567 specified in the earlier declaration is not affected by
1568 such a function declaration.
1569
1570 DR 563 raises the question why the restrictions on
1571 functions should not also apply to objects. Older
1572 versions of G++ silently ignore the linkage-specification
1573 for this example:
1574
1575 namespace N {
1576 extern int i;
1577 extern "C" int i;
1578 }
1579
1580 which is clearly wrong. Therefore, we now treat objects
1581 like functions. */
1582 if (current_lang_depth () == 0)
1583 {
1584 /* There is no explicit linkage-specification, so we use
1585 the linkage from the previous declaration. */
1586 if (!DECL_LANG_SPECIFIC (newdecl))
1587 retrofit_lang_decl (newdecl);
1588 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
1589 }
1590 else
1591 {
1592 error ("previous declaration of %q+#D with %qL linkage",
1593 olddecl, DECL_LANGUAGE (olddecl));
1594 error ("conflicts with new declaration with %qL linkage",
1595 DECL_LANGUAGE (newdecl));
1596 }
1597 }
1598
1599 if (DECL_LANG_SPECIFIC (olddecl) && DECL_USE_TEMPLATE (olddecl))
1600 ;
1601 else if (TREE_CODE (olddecl) == FUNCTION_DECL)
1602 {
1603 tree t1 = TYPE_ARG_TYPES (TREE_TYPE (olddecl));
1604 tree t2 = TYPE_ARG_TYPES (TREE_TYPE (newdecl));
1605 int i = 1;
1606
1607 if (TREE_CODE (TREE_TYPE (newdecl)) == METHOD_TYPE)
1608 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2);
1609
1610 for (; t1 && t1 != void_list_node;
1611 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2), i++)
1612 if (TREE_PURPOSE (t1) && TREE_PURPOSE (t2))
1613 {
1614 if (1 == simple_cst_equal (TREE_PURPOSE (t1),
1615 TREE_PURPOSE (t2)))
1616 {
1617 permerror (input_location, "default argument given for parameter %d of %q#D",
1618 i, newdecl);
1619 permerror (input_location, "after previous specification in %q+#D", olddecl);
1620 }
1621 else
1622 {
1623 error ("default argument given for parameter %d of %q#D",
1624 i, newdecl);
1625 error ("after previous specification in %q+#D",
1626 olddecl);
1627 }
1628 }
1629 }
1630 }
1631
1632 /* Do not merge an implicit typedef with an explicit one. In:
1633
1634 class A;
1635 ...
1636 typedef class A A __attribute__ ((foo));
1637
1638 the attribute should apply only to the typedef. */
1639 if (TREE_CODE (olddecl) == TYPE_DECL
1640 && (DECL_IMPLICIT_TYPEDEF_P (olddecl)
1641 || DECL_IMPLICIT_TYPEDEF_P (newdecl)))
1642 return NULL_TREE;
1643
1644 /* If new decl is `static' and an `extern' was seen previously,
1645 warn about it. */
1646 warn_extern_redeclared_static (newdecl, olddecl);
1647
1648 if (!validate_constexpr_redeclaration (olddecl, newdecl))
1649 return error_mark_node;
1650
1651 /* We have committed to returning 1 at this point. */
1652 if (TREE_CODE (newdecl) == FUNCTION_DECL)
1653 {
1654 /* Now that functions must hold information normally held
1655 by field decls, there is extra work to do so that
1656 declaration information does not get destroyed during
1657 definition. */
1658 if (DECL_VINDEX (olddecl))
1659 DECL_VINDEX (newdecl) = DECL_VINDEX (olddecl);
1660 if (DECL_CONTEXT (olddecl))
1661 DECL_CONTEXT (newdecl) = DECL_CONTEXT (olddecl);
1662 DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl);
1663 DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl);
1664 DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl);
1665 DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl);
1666 DECL_INVALID_OVERRIDER_P (newdecl) |= DECL_INVALID_OVERRIDER_P (olddecl);
1667 DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl);
1668 if (DECL_OVERLOADED_OPERATOR_P (olddecl) != ERROR_MARK)
1669 SET_OVERLOADED_OPERATOR_CODE
1670 (newdecl, DECL_OVERLOADED_OPERATOR_P (olddecl));
1671 new_defines_function = DECL_INITIAL (newdecl) != NULL_TREE;
1672
1673 /* Optionally warn about more than one declaration for the same
1674 name, but don't warn about a function declaration followed by a
1675 definition. */
1676 if (warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl)
1677 && !(new_defines_function && DECL_INITIAL (olddecl) == NULL_TREE)
1678 /* Don't warn about extern decl followed by definition. */
1679 && !(DECL_EXTERNAL (olddecl) && ! DECL_EXTERNAL (newdecl))
1680 /* Don't warn about friends, let add_friend take care of it. */
1681 && ! (newdecl_is_friend || DECL_FRIEND_P (olddecl)))
1682 {
1683 warning (OPT_Wredundant_decls, "redundant redeclaration of %qD in same scope", newdecl);
1684 warning (OPT_Wredundant_decls, "previous declaration of %q+D", olddecl);
1685 }
1686
1687 if (DECL_DELETED_FN (newdecl))
1688 {
1689 error ("deleted definition of %qD", newdecl);
1690 error ("after previous declaration %q+D", olddecl);
1691 }
1692 DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl);
1693 }
1694
1695 /* Deal with C++: must preserve virtual function table size. */
1696 if (TREE_CODE (olddecl) == TYPE_DECL)
1697 {
1698 tree newtype = TREE_TYPE (newdecl);
1699 tree oldtype = TREE_TYPE (olddecl);
1700
1701 if (newtype != error_mark_node && oldtype != error_mark_node
1702 && TYPE_LANG_SPECIFIC (newtype) && TYPE_LANG_SPECIFIC (oldtype))
1703 CLASSTYPE_FRIEND_CLASSES (newtype)
1704 = CLASSTYPE_FRIEND_CLASSES (oldtype);
1705
1706 DECL_ORIGINAL_TYPE (newdecl) = DECL_ORIGINAL_TYPE (olddecl);
1707 }
1708
1709 /* Copy all the DECL_... slots specified in the new decl
1710 except for any that we copy here from the old type. */
1711 DECL_ATTRIBUTES (newdecl)
1712 = (*targetm.merge_decl_attributes) (olddecl, newdecl);
1713
1714 if (TREE_CODE (newdecl) == TEMPLATE_DECL)
1715 {
1716 tree old_result;
1717 tree new_result;
1718 old_result = DECL_TEMPLATE_RESULT (olddecl);
1719 new_result = DECL_TEMPLATE_RESULT (newdecl);
1720 TREE_TYPE (olddecl) = TREE_TYPE (old_result);
1721 DECL_TEMPLATE_SPECIALIZATIONS (olddecl)
1722 = chainon (DECL_TEMPLATE_SPECIALIZATIONS (olddecl),
1723 DECL_TEMPLATE_SPECIALIZATIONS (newdecl));
1724
1725 DECL_ATTRIBUTES (old_result)
1726 = (*targetm.merge_decl_attributes) (old_result, new_result);
1727
1728 if (DECL_FUNCTION_TEMPLATE_P (newdecl))
1729 {
1730 if (GNU_INLINE_P (old_result) != GNU_INLINE_P (new_result)
1731 && DECL_INITIAL (new_result))
1732 {
1733 if (DECL_INITIAL (old_result))
1734 DECL_UNINLINABLE (old_result) = 1;
1735 else
1736 DECL_UNINLINABLE (old_result) = DECL_UNINLINABLE (new_result);
1737 DECL_EXTERNAL (old_result) = DECL_EXTERNAL (new_result);
1738 DECL_NOT_REALLY_EXTERN (old_result)
1739 = DECL_NOT_REALLY_EXTERN (new_result);
1740 DECL_INTERFACE_KNOWN (old_result)
1741 = DECL_INTERFACE_KNOWN (new_result);
1742 DECL_DECLARED_INLINE_P (old_result)
1743 = DECL_DECLARED_INLINE_P (new_result);
1744 DECL_DISREGARD_INLINE_LIMITS (old_result)
1745 |= DECL_DISREGARD_INLINE_LIMITS (new_result);
1746
1747 }
1748 else
1749 {
1750 DECL_DECLARED_INLINE_P (old_result)
1751 |= DECL_DECLARED_INLINE_P (new_result);
1752 DECL_DISREGARD_INLINE_LIMITS (old_result)
1753 |= DECL_DISREGARD_INLINE_LIMITS (new_result);
1754 check_redeclaration_exception_specification (newdecl, olddecl);
1755 }
1756 }
1757
1758 /* If the new declaration is a definition, update the file and
1759 line information on the declaration, and also make
1760 the old declaration the same definition. */
1761 if (DECL_INITIAL (new_result) != NULL_TREE)
1762 {
1763 DECL_SOURCE_LOCATION (olddecl)
1764 = DECL_SOURCE_LOCATION (old_result)
1765 = DECL_SOURCE_LOCATION (newdecl);
1766 DECL_INITIAL (old_result) = DECL_INITIAL (new_result);
1767 if (DECL_FUNCTION_TEMPLATE_P (newdecl))
1768 {
1769 tree parm;
1770 DECL_ARGUMENTS (old_result)
1771 = DECL_ARGUMENTS (new_result);
1772 for (parm = DECL_ARGUMENTS (old_result); parm;
1773 parm = DECL_CHAIN (parm))
1774 DECL_CONTEXT (parm) = old_result;
1775 }
1776 }
1777
1778 return olddecl;
1779 }
1780
1781 if (types_match)
1782 {
1783 /* Automatically handles default parameters. */
1784 tree oldtype = TREE_TYPE (olddecl);
1785 tree newtype;
1786
1787 /* Merge the data types specified in the two decls. */
1788 newtype = merge_types (TREE_TYPE (newdecl), TREE_TYPE (olddecl));
1789
1790 /* If merge_types produces a non-typedef type, just use the old type. */
1791 if (TREE_CODE (newdecl) == TYPE_DECL
1792 && newtype == DECL_ORIGINAL_TYPE (newdecl))
1793 newtype = oldtype;
1794
1795 if (TREE_CODE (newdecl) == VAR_DECL)
1796 {
1797 DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl);
1798 DECL_INITIALIZED_P (newdecl) |= DECL_INITIALIZED_P (olddecl);
1799 DECL_NONTRIVIALLY_INITIALIZED_P (newdecl)
1800 |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl);
1801 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (newdecl)
1802 |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl);
1803
1804 /* Merge the threadprivate attribute from OLDDECL into NEWDECL. */
1805 if (DECL_LANG_SPECIFIC (olddecl)
1806 && CP_DECL_THREADPRIVATE_P (olddecl))
1807 {
1808 /* Allocate a LANG_SPECIFIC structure for NEWDECL, if needed. */
1809 if (!DECL_LANG_SPECIFIC (newdecl))
1810 retrofit_lang_decl (newdecl);
1811
1812 DECL_TLS_MODEL (newdecl) = DECL_TLS_MODEL (olddecl);
1813 CP_DECL_THREADPRIVATE_P (newdecl) = 1;
1814 }
1815 }
1816
1817 /* Do this after calling `merge_types' so that default
1818 parameters don't confuse us. */
1819 else if (TREE_CODE (newdecl) == FUNCTION_DECL)
1820 check_redeclaration_exception_specification (newdecl, olddecl);
1821 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = newtype;
1822
1823 if (TREE_CODE (newdecl) == FUNCTION_DECL)
1824 check_default_args (newdecl);
1825
1826 /* Lay the type out, unless already done. */
1827 if (! same_type_p (newtype, oldtype)
1828 && TREE_TYPE (newdecl) != error_mark_node
1829 && !(processing_template_decl && uses_template_parms (newdecl)))
1830 layout_type (TREE_TYPE (newdecl));
1831
1832 if ((TREE_CODE (newdecl) == VAR_DECL
1833 || TREE_CODE (newdecl) == PARM_DECL
1834 || TREE_CODE (newdecl) == RESULT_DECL
1835 || TREE_CODE (newdecl) == FIELD_DECL
1836 || TREE_CODE (newdecl) == TYPE_DECL)
1837 && !(processing_template_decl && uses_template_parms (newdecl)))
1838 layout_decl (newdecl, 0);
1839
1840 /* Merge the type qualifiers. */
1841 if (TREE_READONLY (newdecl))
1842 TREE_READONLY (olddecl) = 1;
1843 if (TREE_THIS_VOLATILE (newdecl))
1844 TREE_THIS_VOLATILE (olddecl) = 1;
1845 if (TREE_NOTHROW (newdecl))
1846 TREE_NOTHROW (olddecl) = 1;
1847
1848 /* Merge deprecatedness. */
1849 if (TREE_DEPRECATED (newdecl))
1850 TREE_DEPRECATED (olddecl) = 1;
1851
1852 /* Preserve function specific target and optimization options */
1853 if (TREE_CODE (newdecl) == FUNCTION_DECL)
1854 {
1855 if (DECL_FUNCTION_SPECIFIC_TARGET (olddecl)
1856 && !DECL_FUNCTION_SPECIFIC_TARGET (newdecl))
1857 DECL_FUNCTION_SPECIFIC_TARGET (newdecl)
1858 = DECL_FUNCTION_SPECIFIC_TARGET (olddecl);
1859
1860 if (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl)
1861 && !DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl))
1862 DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)
1863 = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl);
1864 }
1865
1866 /* Merge the initialization information. */
1867 if (DECL_INITIAL (newdecl) == NULL_TREE
1868 && DECL_INITIAL (olddecl) != NULL_TREE)
1869 {
1870 DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
1871 DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
1872 if (TREE_CODE (newdecl) == FUNCTION_DECL)
1873 {
1874 DECL_SAVED_TREE (newdecl) = DECL_SAVED_TREE (olddecl);
1875 DECL_STRUCT_FUNCTION (newdecl) = DECL_STRUCT_FUNCTION (olddecl);
1876 }
1877 }
1878
1879 /* Merge the section attribute.
1880 We want to issue an error if the sections conflict but that must be
1881 done later in decl_attributes since we are called before attributes
1882 are assigned. */
1883 if (DECL_SECTION_NAME (newdecl) == NULL_TREE)
1884 DECL_SECTION_NAME (newdecl) = DECL_SECTION_NAME (olddecl);
1885
1886 if (TREE_CODE (newdecl) == FUNCTION_DECL)
1887 {
1888 DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (newdecl)
1889 |= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl);
1890 DECL_NO_LIMIT_STACK (newdecl) |= DECL_NO_LIMIT_STACK (olddecl);
1891 TREE_THIS_VOLATILE (newdecl) |= TREE_THIS_VOLATILE (olddecl);
1892 TREE_NOTHROW (newdecl) |= TREE_NOTHROW (olddecl);
1893 DECL_IS_MALLOC (newdecl) |= DECL_IS_MALLOC (olddecl);
1894 DECL_IS_OPERATOR_NEW (newdecl) |= DECL_IS_OPERATOR_NEW (olddecl);
1895 DECL_PURE_P (newdecl) |= DECL_PURE_P (olddecl);
1896 TREE_READONLY (newdecl) |= TREE_READONLY (olddecl);
1897 DECL_LOOPING_CONST_OR_PURE_P (newdecl)
1898 |= DECL_LOOPING_CONST_OR_PURE_P (olddecl);
1899 /* Keep the old RTL. */
1900 COPY_DECL_RTL (olddecl, newdecl);
1901 }
1902 else if (TREE_CODE (newdecl) == VAR_DECL
1903 && (DECL_SIZE (olddecl) || !DECL_SIZE (newdecl)))
1904 {
1905 /* Keep the old RTL. We cannot keep the old RTL if the old
1906 declaration was for an incomplete object and the new
1907 declaration is not since many attributes of the RTL will
1908 change. */
1909 COPY_DECL_RTL (olddecl, newdecl);
1910 }
1911 }
1912 /* If cannot merge, then use the new type and qualifiers,
1913 and don't preserve the old rtl. */
1914 else
1915 {
1916 /* Clean out any memory we had of the old declaration. */
1917 tree oldstatic = value_member (olddecl, static_aggregates);
1918 if (oldstatic)
1919 TREE_VALUE (oldstatic) = error_mark_node;
1920
1921 TREE_TYPE (olddecl) = TREE_TYPE (newdecl);
1922 TREE_READONLY (olddecl) = TREE_READONLY (newdecl);
1923 TREE_THIS_VOLATILE (olddecl) = TREE_THIS_VOLATILE (newdecl);
1924 TREE_SIDE_EFFECTS (olddecl) = TREE_SIDE_EFFECTS (newdecl);
1925 }
1926
1927 /* Merge the storage class information. */
1928 merge_weak (newdecl, olddecl);
1929
1930 if (DECL_ONE_ONLY (olddecl))
1931 DECL_COMDAT_GROUP (newdecl) = DECL_COMDAT_GROUP (olddecl);
1932
1933 DECL_DEFER_OUTPUT (newdecl) |= DECL_DEFER_OUTPUT (olddecl);
1934 TREE_PUBLIC (newdecl) = TREE_PUBLIC (olddecl);
1935 TREE_STATIC (olddecl) = TREE_STATIC (newdecl) |= TREE_STATIC (olddecl);
1936 if (! DECL_EXTERNAL (olddecl))
1937 DECL_EXTERNAL (newdecl) = 0;
1938
1939 new_template_info = NULL_TREE;
1940 if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl))
1941 {
1942 bool new_redefines_gnu_inline = false;
1943
1944 if (new_defines_function
1945 && ((DECL_INTERFACE_KNOWN (olddecl)
1946 && TREE_CODE (olddecl) == FUNCTION_DECL)
1947 || (TREE_CODE (olddecl) == TEMPLATE_DECL
1948 && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))
1949 == FUNCTION_DECL))))
1950 {
1951 tree fn = olddecl;
1952
1953 if (TREE_CODE (fn) == TEMPLATE_DECL)
1954 fn = DECL_TEMPLATE_RESULT (olddecl);
1955
1956 new_redefines_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn);
1957 }
1958
1959 if (!new_redefines_gnu_inline)
1960 {
1961 DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl);
1962 DECL_NOT_REALLY_EXTERN (newdecl) |= DECL_NOT_REALLY_EXTERN (olddecl);
1963 DECL_COMDAT (newdecl) |= DECL_COMDAT (olddecl);
1964 }
1965 DECL_TEMPLATE_INSTANTIATED (newdecl)
1966 |= DECL_TEMPLATE_INSTANTIATED (olddecl);
1967 DECL_ODR_USED (newdecl) |= DECL_ODR_USED (olddecl);
1968
1969 /* If the OLDDECL is an instantiation and/or specialization,
1970 then the NEWDECL must be too. But, it may not yet be marked
1971 as such if the caller has created NEWDECL, but has not yet
1972 figured out that it is a redeclaration. */
1973 if (!DECL_USE_TEMPLATE (newdecl))
1974 DECL_USE_TEMPLATE (newdecl) = DECL_USE_TEMPLATE (olddecl);
1975
1976 /* Don't really know how much of the language-specific
1977 values we should copy from old to new. */
1978 DECL_IN_AGGR_P (newdecl) = DECL_IN_AGGR_P (olddecl);
1979 DECL_REPO_AVAILABLE_P (newdecl) = DECL_REPO_AVAILABLE_P (olddecl);
1980 DECL_INITIALIZED_IN_CLASS_P (newdecl)
1981 |= DECL_INITIALIZED_IN_CLASS_P (olddecl);
1982
1983 if (LANG_DECL_HAS_MIN (newdecl))
1984 {
1985 DECL_LANG_SPECIFIC (newdecl)->u.min.u2 =
1986 DECL_LANG_SPECIFIC (olddecl)->u.min.u2;
1987 if (DECL_TEMPLATE_INFO (newdecl))
1988 new_template_info = DECL_TEMPLATE_INFO (newdecl);
1989 DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl);
1990 }
1991 /* Only functions have these fields. */
1992 if (TREE_CODE (newdecl) == FUNCTION_DECL
1993 || DECL_FUNCTION_TEMPLATE_P (newdecl))
1994 {
1995 DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl);
1996 olddecl_friend = DECL_FRIEND_P (olddecl);
1997 hidden_friend = (DECL_ANTICIPATED (olddecl)
1998 && DECL_HIDDEN_FRIEND_P (olddecl)
1999 && newdecl_is_friend);
2000 DECL_BEFRIENDING_CLASSES (newdecl)
2001 = chainon (DECL_BEFRIENDING_CLASSES (newdecl),
2002 DECL_BEFRIENDING_CLASSES (olddecl));
2003 /* DECL_THUNKS is only valid for virtual functions,
2004 otherwise it is a DECL_FRIEND_CONTEXT. */
2005 if (DECL_VIRTUAL_P (newdecl))
2006 DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl);
2007 }
2008 /* Only variables have this field. */
2009 else if (TREE_CODE (newdecl) == VAR_DECL
2010 && VAR_HAD_UNKNOWN_BOUND (olddecl))
2011 SET_VAR_HAD_UNKNOWN_BOUND (newdecl);
2012 }
2013
2014 if (TREE_CODE (newdecl) == FUNCTION_DECL)
2015 {
2016 tree parm;
2017
2018 /* Merge parameter attributes. */
2019 tree oldarg, newarg;
2020 for (oldarg = DECL_ARGUMENTS(olddecl),
2021 newarg = DECL_ARGUMENTS(newdecl);
2022 oldarg && newarg;
2023 oldarg = DECL_CHAIN(oldarg), newarg = DECL_CHAIN(newarg)) {
2024 DECL_ATTRIBUTES (newarg)
2025 = (*targetm.merge_decl_attributes) (oldarg, newarg);
2026 DECL_ATTRIBUTES (oldarg) = DECL_ATTRIBUTES (newarg);
2027 }
2028
2029 if (DECL_TEMPLATE_INSTANTIATION (olddecl)
2030 && !DECL_TEMPLATE_INSTANTIATION (newdecl))
2031 {
2032 /* If newdecl is not a specialization, then it is not a
2033 template-related function at all. And that means that we
2034 should have exited above, returning 0. */
2035 gcc_assert (DECL_TEMPLATE_SPECIALIZATION (newdecl));
2036
2037 if (DECL_ODR_USED (olddecl))
2038 /* From [temp.expl.spec]:
2039
2040 If a template, a member template or the member of a class
2041 template is explicitly specialized then that
2042 specialization shall be declared before the first use of
2043 that specialization that would cause an implicit
2044 instantiation to take place, in every translation unit in
2045 which such a use occurs. */
2046 error ("explicit specialization of %qD after first use",
2047 olddecl);
2048
2049 SET_DECL_TEMPLATE_SPECIALIZATION (olddecl);
2050
2051 /* Don't propagate visibility from the template to the
2052 specialization here. We'll do that in determine_visibility if
2053 appropriate. */
2054 DECL_VISIBILITY_SPECIFIED (olddecl) = 0;
2055
2056 /* [temp.expl.spec/14] We don't inline explicit specialization
2057 just because the primary template says so. */
2058
2059 /* But still keep DECL_DISREGARD_INLINE_LIMITS in sync with
2060 the always_inline attribute. */
2061 if (DECL_DISREGARD_INLINE_LIMITS (olddecl)
2062 && !DECL_DISREGARD_INLINE_LIMITS (newdecl))
2063 {
2064 if (DECL_DECLARED_INLINE_P (newdecl))
2065 DECL_DISREGARD_INLINE_LIMITS (newdecl) = true;
2066 else
2067 DECL_ATTRIBUTES (newdecl)
2068 = remove_attribute ("always_inline",
2069 DECL_ATTRIBUTES (newdecl));
2070 }
2071 }
2072 else if (new_defines_function && DECL_INITIAL (olddecl))
2073 {
2074 /* Never inline re-defined extern inline functions.
2075 FIXME: this could be better handled by keeping both
2076 function as separate declarations. */
2077 DECL_UNINLINABLE (newdecl) = 1;
2078 }
2079 else
2080 {
2081 if (DECL_PENDING_INLINE_INFO (newdecl) == 0)
2082 DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl);
2083
2084 DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl);
2085
2086 DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl)
2087 = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl));
2088
2089 DECL_DISREGARD_INLINE_LIMITS (newdecl)
2090 = DECL_DISREGARD_INLINE_LIMITS (olddecl)
2091 = (DECL_DISREGARD_INLINE_LIMITS (newdecl)
2092 || DECL_DISREGARD_INLINE_LIMITS (olddecl));
2093 }
2094
2095 /* Preserve abstractness on cloned [cd]tors. */
2096 DECL_ABSTRACT (newdecl) = DECL_ABSTRACT (olddecl);
2097
2098 /* Update newdecl's parms to point at olddecl. */
2099 for (parm = DECL_ARGUMENTS (newdecl); parm;
2100 parm = DECL_CHAIN (parm))
2101 DECL_CONTEXT (parm) = olddecl;
2102
2103 if (! types_match)
2104 {
2105 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl));
2106 COPY_DECL_ASSEMBLER_NAME (newdecl, olddecl);
2107 COPY_DECL_RTL (newdecl, olddecl);
2108 }
2109 if (! types_match || new_defines_function)
2110 {
2111 /* These need to be copied so that the names are available.
2112 Note that if the types do match, we'll preserve inline
2113 info and other bits, but if not, we won't. */
2114 DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
2115 DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
2116 }
2117 if (new_defines_function)
2118 /* If defining a function declared with other language
2119 linkage, use the previously declared language linkage. */
2120 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
2121 else if (types_match)
2122 {
2123 /* If redeclaring a builtin function, and not a definition,
2124 it stays built in. */
2125 if (DECL_BUILT_IN (olddecl))
2126 {
2127 DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
2128 DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
2129 /* If we're keeping the built-in definition, keep the rtl,
2130 regardless of declaration matches. */
2131 COPY_DECL_RTL (olddecl, newdecl);
2132 }
2133
2134 DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
2135 /* Don't clear out the arguments if we're just redeclaring a
2136 function. */
2137 if (DECL_ARGUMENTS (olddecl))
2138 DECL_ARGUMENTS (newdecl) = DECL_ARGUMENTS (olddecl);
2139 }
2140 }
2141 else if (TREE_CODE (newdecl) == NAMESPACE_DECL)
2142 NAMESPACE_LEVEL (newdecl) = NAMESPACE_LEVEL (olddecl);
2143
2144 /* Now preserve various other info from the definition. */
2145 TREE_ADDRESSABLE (newdecl) = TREE_ADDRESSABLE (olddecl);
2146 TREE_ASM_WRITTEN (newdecl) = TREE_ASM_WRITTEN (olddecl);
2147 DECL_COMMON (newdecl) = DECL_COMMON (olddecl);
2148 COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl);
2149
2150 /* Warn about conflicting visibility specifications. */
2151 if (DECL_VISIBILITY_SPECIFIED (olddecl)
2152 && DECL_VISIBILITY_SPECIFIED (newdecl)
2153 && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl))
2154 {
2155 warning_at (input_location, OPT_Wattributes,
2156 "%q+D: visibility attribute ignored because it", newdecl);
2157 warning_at (DECL_SOURCE_LOCATION (olddecl), OPT_Wattributes,
2158 "conflicts with previous declaration here");
2159 }
2160 /* Choose the declaration which specified visibility. */
2161 if (DECL_VISIBILITY_SPECIFIED (olddecl))
2162 {
2163 DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl);
2164 DECL_VISIBILITY_SPECIFIED (newdecl) = 1;
2165 }
2166 /* Init priority used to be merged from newdecl to olddecl by the memcpy,
2167 so keep this behavior. */
2168 if (TREE_CODE (newdecl) == VAR_DECL && DECL_HAS_INIT_PRIORITY_P (newdecl))
2169 {
2170 SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl));
2171 DECL_HAS_INIT_PRIORITY_P (olddecl) = 1;
2172 }
2173 /* Likewise for DECL_USER_ALIGN and DECL_PACKED. */
2174 DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl);
2175 if (TREE_CODE (newdecl) == FIELD_DECL)
2176 DECL_PACKED (olddecl) = DECL_PACKED (newdecl);
2177
2178 /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced
2179 with that from NEWDECL below. */
2180 if (DECL_LANG_SPECIFIC (olddecl))
2181 {
2182 gcc_assert (DECL_LANG_SPECIFIC (olddecl)
2183 != DECL_LANG_SPECIFIC (newdecl));
2184 ggc_free (DECL_LANG_SPECIFIC (olddecl));
2185 }
2186
2187 /* Merge the USED information. */
2188 if (TREE_USED (olddecl))
2189 TREE_USED (newdecl) = 1;
2190 else if (TREE_USED (newdecl))
2191 TREE_USED (olddecl) = 1;
2192 if (TREE_CODE (newdecl) == VAR_DECL)
2193 {
2194 if (DECL_READ_P (olddecl))
2195 DECL_READ_P (newdecl) = 1;
2196 else if (DECL_READ_P (newdecl))
2197 DECL_READ_P (olddecl) = 1;
2198 }
2199 if (DECL_PRESERVE_P (olddecl))
2200 DECL_PRESERVE_P (newdecl) = 1;
2201 else if (DECL_PRESERVE_P (newdecl))
2202 DECL_PRESERVE_P (olddecl) = 1;
2203
2204 if (TREE_CODE (newdecl) == FUNCTION_DECL)
2205 {
2206 int function_size;
2207
2208 function_size = sizeof (struct tree_decl_common);
2209
2210 memcpy ((char *) olddecl + sizeof (struct tree_common),
2211 (char *) newdecl + sizeof (struct tree_common),
2212 function_size - sizeof (struct tree_common));
2213
2214 memcpy ((char *) olddecl + sizeof (struct tree_decl_common),
2215 (char *) newdecl + sizeof (struct tree_decl_common),
2216 sizeof (struct tree_function_decl) - sizeof (struct tree_decl_common));
2217 if (new_template_info)
2218 /* If newdecl is a template instantiation, it is possible that
2219 the following sequence of events has occurred:
2220
2221 o A friend function was declared in a class template. The
2222 class template was instantiated.
2223
2224 o The instantiation of the friend declaration was
2225 recorded on the instantiation list, and is newdecl.
2226
2227 o Later, however, instantiate_class_template called pushdecl
2228 on the newdecl to perform name injection. But, pushdecl in
2229 turn called duplicate_decls when it discovered that another
2230 declaration of a global function with the same name already
2231 existed.
2232
2233 o Here, in duplicate_decls, we decided to clobber newdecl.
2234
2235 If we're going to do that, we'd better make sure that
2236 olddecl, and not newdecl, is on the list of
2237 instantiations so that if we try to do the instantiation
2238 again we won't get the clobbered declaration. */
2239 reregister_specialization (newdecl,
2240 new_template_info,
2241 olddecl);
2242 }
2243 else
2244 {
2245 size_t size = tree_code_size (TREE_CODE (olddecl));
2246 memcpy ((char *) olddecl + sizeof (struct tree_common),
2247 (char *) newdecl + sizeof (struct tree_common),
2248 sizeof (struct tree_decl_common) - sizeof (struct tree_common));
2249 switch (TREE_CODE (olddecl))
2250 {
2251 case LABEL_DECL:
2252 case VAR_DECL:
2253 case RESULT_DECL:
2254 case PARM_DECL:
2255 case FIELD_DECL:
2256 case TYPE_DECL:
2257 case CONST_DECL:
2258 {
2259 memcpy ((char *) olddecl + sizeof (struct tree_decl_common),
2260 (char *) newdecl + sizeof (struct tree_decl_common),
2261 size - sizeof (struct tree_decl_common)
2262 + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *));
2263 }
2264 break;
2265 default:
2266 memcpy ((char *) olddecl + sizeof (struct tree_decl_common),
2267 (char *) newdecl + sizeof (struct tree_decl_common),
2268 sizeof (struct tree_decl_non_common) - sizeof (struct tree_decl_common)
2269 + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *));
2270 break;
2271 }
2272 }
2273 DECL_UID (olddecl) = olddecl_uid;
2274 if (olddecl_friend)
2275 DECL_FRIEND_P (olddecl) = 1;
2276 if (hidden_friend)
2277 {
2278 DECL_ANTICIPATED (olddecl) = 1;
2279 DECL_HIDDEN_FRIEND_P (olddecl) = 1;
2280 }
2281
2282 /* NEWDECL contains the merged attribute lists.
2283 Update OLDDECL to be the same. */
2284 DECL_ATTRIBUTES (olddecl) = DECL_ATTRIBUTES (newdecl);
2285
2286 /* If OLDDECL had its DECL_RTL instantiated, re-invoke make_decl_rtl
2287 so that encode_section_info has a chance to look at the new decl
2288 flags and attributes. */
2289 if (DECL_RTL_SET_P (olddecl)
2290 && (TREE_CODE (olddecl) == FUNCTION_DECL
2291 || (TREE_CODE (olddecl) == VAR_DECL
2292 && TREE_STATIC (olddecl))))
2293 make_decl_rtl (olddecl);
2294
2295 /* The NEWDECL will no longer be needed. Because every out-of-class
2296 declaration of a member results in a call to duplicate_decls,
2297 freeing these nodes represents in a significant savings. */
2298 ggc_free (newdecl);
2299
2300 return olddecl;
2301 }
2302 \f
2303 /* Return zero if the declaration NEWDECL is valid
2304 when the declaration OLDDECL (assumed to be for the same name)
2305 has already been seen.
2306 Otherwise return an error message format string with a %s
2307 where the identifier should go. */
2308
2309 static const char *
2310 redeclaration_error_message (tree newdecl, tree olddecl)
2311 {
2312 if (TREE_CODE (newdecl) == TYPE_DECL)
2313 {
2314 /* Because C++ can put things into name space for free,
2315 constructs like "typedef struct foo { ... } foo"
2316 would look like an erroneous redeclaration. */
2317 if (same_type_p (TREE_TYPE (newdecl), TREE_TYPE (olddecl)))
2318 return NULL;
2319 else
2320 return G_("redefinition of %q#D");
2321 }
2322 else if (TREE_CODE (newdecl) == FUNCTION_DECL)
2323 {
2324 /* If this is a pure function, its olddecl will actually be
2325 the original initialization to `0' (which we force to call
2326 abort()). Don't complain about redefinition in this case. */
2327 if (DECL_LANG_SPECIFIC (olddecl) && DECL_PURE_VIRTUAL_P (olddecl)
2328 && DECL_INITIAL (olddecl) == NULL_TREE)
2329 return NULL;
2330
2331 /* If both functions come from different namespaces, this is not
2332 a redeclaration - this is a conflict with a used function. */
2333 if (DECL_NAMESPACE_SCOPE_P (olddecl)
2334 && DECL_CONTEXT (olddecl) != DECL_CONTEXT (newdecl)
2335 && ! decls_match (olddecl, newdecl))
2336 return G_("%qD conflicts with used function");
2337
2338 /* We'll complain about linkage mismatches in
2339 warn_extern_redeclared_static. */
2340
2341 /* Defining the same name twice is no good. */
2342 if (DECL_INITIAL (olddecl) != NULL_TREE
2343 && DECL_INITIAL (newdecl) != NULL_TREE)
2344 {
2345 if (DECL_NAME (olddecl) == NULL_TREE)
2346 return G_("%q#D not declared in class");
2347 else if (!GNU_INLINE_P (olddecl)
2348 || GNU_INLINE_P (newdecl))
2349 return G_("redefinition of %q#D");
2350 }
2351
2352 if (DECL_DECLARED_INLINE_P (olddecl) && DECL_DECLARED_INLINE_P (newdecl))
2353 {
2354 bool olda = GNU_INLINE_P (olddecl);
2355 bool newa = GNU_INLINE_P (newdecl);
2356
2357 if (olda != newa)
2358 {
2359 if (newa)
2360 return G_("%q+D redeclared inline with "
2361 "%<gnu_inline%> attribute");
2362 else
2363 return G_("%q+D redeclared inline without "
2364 "%<gnu_inline%> attribute");
2365 }
2366 }
2367
2368 return NULL;
2369 }
2370 else if (TREE_CODE (newdecl) == TEMPLATE_DECL)
2371 {
2372 tree nt, ot;
2373
2374 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL)
2375 {
2376 if (COMPLETE_TYPE_P (TREE_TYPE (newdecl))
2377 && COMPLETE_TYPE_P (TREE_TYPE (olddecl)))
2378 return G_("redefinition of %q#D");
2379 return NULL;
2380 }
2381
2382 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != FUNCTION_DECL
2383 || (DECL_TEMPLATE_RESULT (newdecl)
2384 == DECL_TEMPLATE_RESULT (olddecl)))
2385 return NULL;
2386
2387 nt = DECL_TEMPLATE_RESULT (newdecl);
2388 if (DECL_TEMPLATE_INFO (nt))
2389 nt = DECL_TEMPLATE_RESULT (template_for_substitution (nt));
2390 ot = DECL_TEMPLATE_RESULT (olddecl);
2391 if (DECL_TEMPLATE_INFO (ot))
2392 ot = DECL_TEMPLATE_RESULT (template_for_substitution (ot));
2393 if (DECL_INITIAL (nt) && DECL_INITIAL (ot)
2394 && (!GNU_INLINE_P (ot) || GNU_INLINE_P (nt)))
2395 return G_("redefinition of %q#D");
2396
2397 if (DECL_DECLARED_INLINE_P (ot) && DECL_DECLARED_INLINE_P (nt))
2398 {
2399 bool olda = GNU_INLINE_P (ot);
2400 bool newa = GNU_INLINE_P (nt);
2401
2402 if (olda != newa)
2403 {
2404 if (newa)
2405 return G_("%q+D redeclared inline with "
2406 "%<gnu_inline%> attribute");
2407 else
2408 return G_("%q+D redeclared inline without "
2409 "%<gnu_inline%> attribute");
2410 }
2411 }
2412
2413 /* Core issue #226 (C++0x):
2414
2415 If a friend function template declaration specifies a
2416 default template-argument, that declaration shall be a
2417 definition and shall be the only declaration of the
2418 function template in the translation unit. */
2419 if ((cxx_dialect != cxx98)
2420 && TREE_CODE (ot) == FUNCTION_DECL && DECL_FRIEND_P (ot)
2421 && !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl),
2422 /*is_primary=*/1, /*is_partial=*/0,
2423 /*is_friend_decl=*/2))
2424 return G_("redeclaration of friend %q#D "
2425 "may not have default template arguments");
2426
2427 return NULL;
2428 }
2429 else if (TREE_CODE (newdecl) == VAR_DECL
2430 && DECL_THREAD_LOCAL_P (newdecl) != DECL_THREAD_LOCAL_P (olddecl)
2431 && (! DECL_LANG_SPECIFIC (olddecl)
2432 || ! CP_DECL_THREADPRIVATE_P (olddecl)
2433 || DECL_THREAD_LOCAL_P (newdecl)))
2434 {
2435 /* Only variables can be thread-local, and all declarations must
2436 agree on this property. */
2437 if (DECL_THREAD_LOCAL_P (newdecl))
2438 return G_("thread-local declaration of %q#D follows "
2439 "non-thread-local declaration");
2440 else
2441 return G_("non-thread-local declaration of %q#D follows "
2442 "thread-local declaration");
2443 }
2444 else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl))
2445 {
2446 /* The objects have been declared at namespace scope. If either
2447 is a member of an anonymous union, then this is an invalid
2448 redeclaration. For example:
2449
2450 int i;
2451 union { int i; };
2452
2453 is invalid. */
2454 if ((TREE_CODE (newdecl) == VAR_DECL && DECL_ANON_UNION_VAR_P (newdecl))
2455 || (TREE_CODE (olddecl) == VAR_DECL && DECL_ANON_UNION_VAR_P (olddecl)))
2456 return G_("redeclaration of %q#D");
2457 /* If at least one declaration is a reference, there is no
2458 conflict. For example:
2459
2460 int i = 3;
2461 extern int i;
2462
2463 is valid. */
2464 if (DECL_EXTERNAL (newdecl) || DECL_EXTERNAL (olddecl))
2465 return NULL;
2466 /* Reject two definitions. */
2467 return G_("redefinition of %q#D");
2468 }
2469 else
2470 {
2471 /* Objects declared with block scope: */
2472 /* Reject two definitions, and reject a definition
2473 together with an external reference. */
2474 if (!(DECL_EXTERNAL (newdecl) && DECL_EXTERNAL (olddecl)))
2475 return G_("redeclaration of %q#D");
2476 return NULL;
2477 }
2478 }
2479 \f
2480 /* Hash and equality functions for the named_label table. */
2481
2482 static hashval_t
2483 named_label_entry_hash (const void *data)
2484 {
2485 const struct named_label_entry *ent = (const struct named_label_entry *) data;
2486 return DECL_UID (ent->label_decl);
2487 }
2488
2489 static int
2490 named_label_entry_eq (const void *a, const void *b)
2491 {
2492 const struct named_label_entry *ent_a = (const struct named_label_entry *) a;
2493 const struct named_label_entry *ent_b = (const struct named_label_entry *) b;
2494 return ent_a->label_decl == ent_b->label_decl;
2495 }
2496
2497 /* Create a new label, named ID. */
2498
2499 static tree
2500 make_label_decl (tree id, int local_p)
2501 {
2502 struct named_label_entry *ent;
2503 void **slot;
2504 tree decl;
2505
2506 decl = build_decl (input_location, LABEL_DECL, id, void_type_node);
2507
2508 DECL_CONTEXT (decl) = current_function_decl;
2509 DECL_MODE (decl) = VOIDmode;
2510 C_DECLARED_LABEL_FLAG (decl) = local_p;
2511
2512 /* Say where one reference is to the label, for the sake of the
2513 error if it is not defined. */
2514 DECL_SOURCE_LOCATION (decl) = input_location;
2515
2516 /* Record the fact that this identifier is bound to this label. */
2517 SET_IDENTIFIER_LABEL_VALUE (id, decl);
2518
2519 /* Create the label htab for the function on demand. */
2520 if (!named_labels)
2521 named_labels = htab_create_ggc (13, named_label_entry_hash,
2522 named_label_entry_eq, NULL);
2523
2524 /* Record this label on the list of labels used in this function.
2525 We do this before calling make_label_decl so that we get the
2526 IDENTIFIER_LABEL_VALUE before the new label is declared. */
2527 ent = ggc_alloc_cleared_named_label_entry ();
2528 ent->label_decl = decl;
2529
2530 slot = htab_find_slot (named_labels, ent, INSERT);
2531 gcc_assert (*slot == NULL);
2532 *slot = ent;
2533
2534 return decl;
2535 }
2536
2537 /* Look for a label named ID in the current function. If one cannot
2538 be found, create one. (We keep track of used, but undefined,
2539 labels, and complain about them at the end of a function.) */
2540
2541 static tree
2542 lookup_label_1 (tree id)
2543 {
2544 tree decl;
2545
2546 /* You can't use labels at global scope. */
2547 if (current_function_decl == NULL_TREE)
2548 {
2549 error ("label %qE referenced outside of any function", id);
2550 return NULL_TREE;
2551 }
2552
2553 /* See if we've already got this label. */
2554 decl = IDENTIFIER_LABEL_VALUE (id);
2555 if (decl != NULL_TREE && DECL_CONTEXT (decl) == current_function_decl)
2556 return decl;
2557
2558 decl = make_label_decl (id, /*local_p=*/0);
2559 return decl;
2560 }
2561
2562 /* Wrapper for lookup_label_1. */
2563
2564 tree
2565 lookup_label (tree id)
2566 {
2567 tree ret;
2568 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
2569 ret = lookup_label_1 (id);
2570 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
2571 return ret;
2572 }
2573
2574 /* Declare a local label named ID. */
2575
2576 tree
2577 declare_local_label (tree id)
2578 {
2579 tree decl;
2580 cp_label_binding *bind;
2581
2582 /* Add a new entry to the SHADOWED_LABELS list so that when we leave
2583 this scope we can restore the old value of IDENTIFIER_TYPE_VALUE. */
2584 bind = VEC_safe_push (cp_label_binding, gc,
2585 current_binding_level->shadowed_labels, NULL);
2586 bind->prev_value = IDENTIFIER_LABEL_VALUE (id);
2587
2588 decl = make_label_decl (id, /*local_p=*/1);
2589 bind->label = decl;
2590
2591 return decl;
2592 }
2593
2594 /* Returns nonzero if it is ill-formed to jump past the declaration of
2595 DECL. Returns 2 if it's also a real problem. */
2596
2597 static int
2598 decl_jump_unsafe (tree decl)
2599 {
2600 /* [stmt.dcl]/3: A program that jumps from a point where a local variable
2601 with automatic storage duration is not in scope to a point where it is
2602 in scope is ill-formed unless the variable has scalar type, class type
2603 with a trivial default constructor and a trivial destructor, a
2604 cv-qualified version of one of these types, or an array of one of the
2605 preceding types and is declared without an initializer (8.5). */
2606 tree type = TREE_TYPE (decl);
2607
2608 if (TREE_CODE (decl) != VAR_DECL || TREE_STATIC (decl)
2609 || type == error_mark_node)
2610 return 0;
2611
2612 type = strip_array_types (type);
2613
2614 if (type_has_nontrivial_default_init (TREE_TYPE (decl))
2615 || DECL_NONTRIVIALLY_INITIALIZED_P (decl))
2616 return 2;
2617
2618 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
2619 return 1;
2620
2621 return 0;
2622 }
2623
2624 /* A subroutine of check_previous_goto_1 to identify a branch to the user. */
2625
2626 static void
2627 identify_goto (tree decl, const location_t *locus)
2628 {
2629 if (decl)
2630 permerror (input_location, "jump to label %qD", decl);
2631 else
2632 permerror (input_location, "jump to case label");
2633 if (locus)
2634 permerror (*locus, " from here");
2635 }
2636
2637 /* Check that a single previously seen jump to a newly defined label
2638 is OK. DECL is the LABEL_DECL or 0; LEVEL is the binding_level for
2639 the jump context; NAMES are the names in scope in LEVEL at the jump
2640 context; LOCUS is the source position of the jump or 0. Returns
2641 true if all is well. */
2642
2643 static bool
2644 check_previous_goto_1 (tree decl, struct cp_binding_level* level, tree names,
2645 bool exited_omp, const location_t *locus)
2646 {
2647 struct cp_binding_level *b;
2648 bool identified = false, saw_eh = false, saw_omp = false;
2649
2650 if (exited_omp)
2651 {
2652 identify_goto (decl, locus);
2653 error (" exits OpenMP structured block");
2654 identified = saw_omp = true;
2655 }
2656
2657 for (b = current_binding_level; b ; b = b->level_chain)
2658 {
2659 tree new_decls, old_decls = (b == level ? names : NULL_TREE);
2660
2661 for (new_decls = b->names; new_decls != old_decls;
2662 new_decls = DECL_CHAIN (new_decls))
2663 {
2664 int problem = decl_jump_unsafe (new_decls);
2665 if (! problem)
2666 continue;
2667
2668 if (!identified)
2669 {
2670 identify_goto (decl, locus);
2671 identified = true;
2672 }
2673 if (problem > 1)
2674 error (" crosses initialization of %q+#D", new_decls);
2675 else
2676 permerror (input_location, " enters scope of %q+#D which has "
2677 "non-trivial destructor", new_decls);
2678 }
2679
2680 if (b == level)
2681 break;
2682 if ((b->kind == sk_try || b->kind == sk_catch) && !saw_eh)
2683 {
2684 if (!identified)
2685 {
2686 identify_goto (decl, locus);
2687 identified = true;
2688 }
2689 if (b->kind == sk_try)
2690 error (" enters try block");
2691 else
2692 error (" enters catch block");
2693 saw_eh = true;
2694 }
2695 if (b->kind == sk_omp && !saw_omp)
2696 {
2697 if (!identified)
2698 {
2699 identify_goto (decl, locus);
2700 identified = true;
2701 }
2702 error (" enters OpenMP structured block");
2703 saw_omp = true;
2704 }
2705 }
2706
2707 return !identified;
2708 }
2709
2710 static void
2711 check_previous_goto (tree decl, struct named_label_use_entry *use)
2712 {
2713 check_previous_goto_1 (decl, use->binding_level,
2714 use->names_in_scope, use->in_omp_scope,
2715 &use->o_goto_locus);
2716 }
2717
2718 static bool
2719 check_switch_goto (struct cp_binding_level* level)
2720 {
2721 return check_previous_goto_1 (NULL_TREE, level, level->names, false, NULL);
2722 }
2723
2724 /* Check that a new jump to a label DECL is OK. Called by
2725 finish_goto_stmt. */
2726
2727 void
2728 check_goto (tree decl)
2729 {
2730 struct named_label_entry *ent, dummy;
2731 bool saw_catch = false, identified = false;
2732 tree bad;
2733 unsigned ix;
2734
2735 /* We can't know where a computed goto is jumping.
2736 So we assume that it's OK. */
2737 if (TREE_CODE (decl) != LABEL_DECL)
2738 return;
2739
2740 /* We didn't record any information about this label when we created it,
2741 and there's not much point since it's trivial to analyze as a return. */
2742 if (decl == cdtor_label)
2743 return;
2744
2745 dummy.label_decl = decl;
2746 ent = (struct named_label_entry *) htab_find (named_labels, &dummy);
2747 gcc_assert (ent != NULL);
2748
2749 /* If the label hasn't been defined yet, defer checking. */
2750 if (! DECL_INITIAL (decl))
2751 {
2752 struct named_label_use_entry *new_use;
2753
2754 /* Don't bother creating another use if the last goto had the
2755 same data, and will therefore create the same set of errors. */
2756 if (ent->uses
2757 && ent->uses->names_in_scope == current_binding_level->names)
2758 return;
2759
2760 new_use = ggc_alloc_named_label_use_entry ();
2761 new_use->binding_level = current_binding_level;
2762 new_use->names_in_scope = current_binding_level->names;
2763 new_use->o_goto_locus = input_location;
2764 new_use->in_omp_scope = false;
2765
2766 new_use->next = ent->uses;
2767 ent->uses = new_use;
2768 return;
2769 }
2770
2771 if (ent->in_try_scope || ent->in_catch_scope
2772 || ent->in_omp_scope || !VEC_empty (tree, ent->bad_decls))
2773 {
2774 permerror (input_location, "jump to label %q+D", decl);
2775 permerror (input_location, " from here");
2776 identified = true;
2777 }
2778
2779 FOR_EACH_VEC_ELT (tree, ent->bad_decls, ix, bad)
2780 {
2781 int u = decl_jump_unsafe (bad);
2782
2783 if (u > 1 && DECL_ARTIFICIAL (bad))
2784 {
2785 /* Can't skip init of __exception_info. */
2786 error_at (DECL_SOURCE_LOCATION (bad), " enters catch block");
2787 saw_catch = true;
2788 }
2789 else if (u > 1)
2790 error (" skips initialization of %q+#D", bad);
2791 else
2792 permerror (input_location, " enters scope of %q+#D which has "
2793 "non-trivial destructor", bad);
2794 }
2795
2796 if (ent->in_try_scope)
2797 error (" enters try block");
2798 else if (ent->in_catch_scope && !saw_catch)
2799 error (" enters catch block");
2800
2801 if (ent->in_omp_scope)
2802 error (" enters OpenMP structured block");
2803 else if (flag_openmp)
2804 {
2805 struct cp_binding_level *b;
2806 for (b = current_binding_level; b ; b = b->level_chain)
2807 {
2808 if (b == ent->binding_level)
2809 break;
2810 if (b->kind == sk_omp)
2811 {
2812 if (!identified)
2813 {
2814 permerror (input_location, "jump to label %q+D", decl);
2815 permerror (input_location, " from here");
2816 identified = true;
2817 }
2818 error (" exits OpenMP structured block");
2819 break;
2820 }
2821 }
2822 }
2823 }
2824
2825 /* Check that a return is ok wrt OpenMP structured blocks.
2826 Called by finish_return_stmt. Returns true if all is well. */
2827
2828 bool
2829 check_omp_return (void)
2830 {
2831 struct cp_binding_level *b;
2832 for (b = current_binding_level; b ; b = b->level_chain)
2833 if (b->kind == sk_omp)
2834 {
2835 error ("invalid exit from OpenMP structured block");
2836 return false;
2837 }
2838 else if (b->kind == sk_function_parms)
2839 break;
2840 return true;
2841 }
2842
2843 /* Define a label, specifying the location in the source file.
2844 Return the LABEL_DECL node for the label. */
2845
2846 static tree
2847 define_label_1 (location_t location, tree name)
2848 {
2849 struct named_label_entry *ent, dummy;
2850 struct cp_binding_level *p;
2851 tree decl;
2852
2853 decl = lookup_label (name);
2854
2855 dummy.label_decl = decl;
2856 ent = (struct named_label_entry *) htab_find (named_labels, &dummy);
2857 gcc_assert (ent != NULL);
2858
2859 /* After labels, make any new cleanups in the function go into their
2860 own new (temporary) binding contour. */
2861 for (p = current_binding_level;
2862 p->kind != sk_function_parms;
2863 p = p->level_chain)
2864 p->more_cleanups_ok = 0;
2865
2866 if (name == get_identifier ("wchar_t"))
2867 permerror (input_location, "label named wchar_t");
2868
2869 if (DECL_INITIAL (decl) != NULL_TREE)
2870 {
2871 error ("duplicate label %qD", decl);
2872 return error_mark_node;
2873 }
2874 else
2875 {
2876 struct named_label_use_entry *use;
2877
2878 /* Mark label as having been defined. */
2879 DECL_INITIAL (decl) = error_mark_node;
2880 /* Say where in the source. */
2881 DECL_SOURCE_LOCATION (decl) = location;
2882
2883 ent->binding_level = current_binding_level;
2884 ent->names_in_scope = current_binding_level->names;
2885
2886 for (use = ent->uses; use ; use = use->next)
2887 check_previous_goto (decl, use);
2888 ent->uses = NULL;
2889 }
2890
2891 return decl;
2892 }
2893
2894 /* Wrapper for define_label_1. */
2895
2896 tree
2897 define_label (location_t location, tree name)
2898 {
2899 tree ret;
2900 timevar_start (TV_NAME_LOOKUP);
2901 ret = define_label_1 (location, name);
2902 timevar_stop (TV_NAME_LOOKUP);
2903 return ret;
2904 }
2905
2906
2907 struct cp_switch
2908 {
2909 struct cp_binding_level *level;
2910 struct cp_switch *next;
2911 /* The SWITCH_STMT being built. */
2912 tree switch_stmt;
2913 /* A splay-tree mapping the low element of a case range to the high
2914 element, or NULL_TREE if there is no high element. Used to
2915 determine whether or not a new case label duplicates an old case
2916 label. We need a tree, rather than simply a hash table, because
2917 of the GNU case range extension. */
2918 splay_tree cases;
2919 };
2920
2921 /* A stack of the currently active switch statements. The innermost
2922 switch statement is on the top of the stack. There is no need to
2923 mark the stack for garbage collection because it is only active
2924 during the processing of the body of a function, and we never
2925 collect at that point. */
2926
2927 static struct cp_switch *switch_stack;
2928
2929 /* Called right after a switch-statement condition is parsed.
2930 SWITCH_STMT is the switch statement being parsed. */
2931
2932 void
2933 push_switch (tree switch_stmt)
2934 {
2935 struct cp_switch *p = XNEW (struct cp_switch);
2936 p->level = current_binding_level;
2937 p->next = switch_stack;
2938 p->switch_stmt = switch_stmt;
2939 p->cases = splay_tree_new (case_compare, NULL, NULL);
2940 switch_stack = p;
2941 }
2942
2943 void
2944 pop_switch (void)
2945 {
2946 struct cp_switch *cs = switch_stack;
2947 location_t switch_location;
2948
2949 /* Emit warnings as needed. */
2950 switch_location = EXPR_LOC_OR_HERE (cs->switch_stmt);
2951 if (!processing_template_decl)
2952 c_do_switch_warnings (cs->cases, switch_location,
2953 SWITCH_STMT_TYPE (cs->switch_stmt),
2954 SWITCH_STMT_COND (cs->switch_stmt));
2955
2956 splay_tree_delete (cs->cases);
2957 switch_stack = switch_stack->next;
2958 free (cs);
2959 }
2960
2961 /* Convert a case constant VALUE in a switch to the type TYPE of the switch
2962 condition. Note that if TYPE and VALUE are already integral we don't
2963 really do the conversion because the language-independent
2964 warning/optimization code will work better that way. */
2965
2966 static tree
2967 case_conversion (tree type, tree value)
2968 {
2969 if (value == NULL_TREE)
2970 return value;
2971
2972 if (cxx_dialect >= cxx0x
2973 && (SCOPED_ENUM_P (type)
2974 || !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (value))))
2975 {
2976 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
2977 type = type_promotes_to (type);
2978 value = perform_implicit_conversion (type, value, tf_warning_or_error);
2979 }
2980 return cxx_constant_value (value);
2981 }
2982
2983 /* Note that we've seen a definition of a case label, and complain if this
2984 is a bad place for one. */
2985
2986 tree
2987 finish_case_label (location_t loc, tree low_value, tree high_value)
2988 {
2989 tree cond, r;
2990 struct cp_binding_level *p;
2991 tree type;
2992
2993 if (processing_template_decl)
2994 {
2995 tree label;
2996
2997 /* For templates, just add the case label; we'll do semantic
2998 analysis at instantiation-time. */
2999 label = build_decl (loc, LABEL_DECL, NULL_TREE, NULL_TREE);
3000 return add_stmt (build_case_label (low_value, high_value, label));
3001 }
3002
3003 /* Find the condition on which this switch statement depends. */
3004 cond = SWITCH_STMT_COND (switch_stack->switch_stmt);
3005 if (cond && TREE_CODE (cond) == TREE_LIST)
3006 cond = TREE_VALUE (cond);
3007
3008 if (!check_switch_goto (switch_stack->level))
3009 return error_mark_node;
3010
3011 type = SWITCH_STMT_TYPE (switch_stack->switch_stmt);
3012
3013 low_value = case_conversion (type, low_value);
3014 high_value = case_conversion (type, high_value);
3015
3016 r = c_add_case_label (loc, switch_stack->cases, cond, type,
3017 low_value, high_value);
3018
3019 /* After labels, make any new cleanups in the function go into their
3020 own new (temporary) binding contour. */
3021 for (p = current_binding_level;
3022 p->kind != sk_function_parms;
3023 p = p->level_chain)
3024 p->more_cleanups_ok = 0;
3025
3026 return r;
3027 }
3028 \f
3029 /* Hash a TYPENAME_TYPE. K is really of type `tree'. */
3030
3031 static hashval_t
3032 typename_hash (const void* k)
3033 {
3034 hashval_t hash;
3035 const_tree const t = (const_tree) k;
3036
3037 hash = (htab_hash_pointer (TYPE_CONTEXT (t))
3038 ^ htab_hash_pointer (DECL_NAME (TYPE_NAME (t))));
3039
3040 return hash;
3041 }
3042
3043 typedef struct typename_info {
3044 tree scope;
3045 tree name;
3046 tree template_id;
3047 bool enum_p;
3048 bool class_p;
3049 } typename_info;
3050
3051 /* Compare two TYPENAME_TYPEs. K1 is really of type `tree', K2 is
3052 really of type `typename_info*' */
3053
3054 static int
3055 typename_compare (const void * k1, const void * k2)
3056 {
3057 const_tree const t1 = (const_tree) k1;
3058 const typename_info *const t2 = (const typename_info *) k2;
3059
3060 return (DECL_NAME (TYPE_NAME (t1)) == t2->name
3061 && TYPE_CONTEXT (t1) == t2->scope
3062 && TYPENAME_TYPE_FULLNAME (t1) == t2->template_id
3063 && TYPENAME_IS_ENUM_P (t1) == t2->enum_p
3064 && TYPENAME_IS_CLASS_P (t1) == t2->class_p);
3065 }
3066
3067 /* Build a TYPENAME_TYPE. If the type is `typename T::t', CONTEXT is
3068 the type of `T', NAME is the IDENTIFIER_NODE for `t'.
3069
3070 Returns the new TYPENAME_TYPE. */
3071
3072 static GTY ((param_is (union tree_node))) htab_t typename_htab;
3073
3074 static tree
3075 build_typename_type (tree context, tree name, tree fullname,
3076 enum tag_types tag_type)
3077 {
3078 tree t;
3079 tree d;
3080 typename_info ti;
3081 void **e;
3082 hashval_t hash;
3083
3084 if (typename_htab == NULL)
3085 typename_htab = htab_create_ggc (61, &typename_hash,
3086 &typename_compare, NULL);
3087
3088 ti.scope = FROB_CONTEXT (context);
3089 ti.name = name;
3090 ti.template_id = fullname;
3091 ti.enum_p = tag_type == enum_type;
3092 ti.class_p = (tag_type == class_type
3093 || tag_type == record_type
3094 || tag_type == union_type);
3095 hash = (htab_hash_pointer (ti.scope)
3096 ^ htab_hash_pointer (ti.name));
3097
3098 /* See if we already have this type. */
3099 e = htab_find_slot_with_hash (typename_htab, &ti, hash, INSERT);
3100 if (*e)
3101 t = (tree) *e;
3102 else
3103 {
3104 /* Build the TYPENAME_TYPE. */
3105 t = cxx_make_type (TYPENAME_TYPE);
3106 TYPE_CONTEXT (t) = ti.scope;
3107 TYPENAME_TYPE_FULLNAME (t) = ti.template_id;
3108 TYPENAME_IS_ENUM_P (t) = ti.enum_p;
3109 TYPENAME_IS_CLASS_P (t) = ti.class_p;
3110
3111 /* Build the corresponding TYPE_DECL. */
3112 d = build_decl (input_location, TYPE_DECL, name, t);
3113 TYPE_NAME (TREE_TYPE (d)) = d;
3114 TYPE_STUB_DECL (TREE_TYPE (d)) = d;
3115 DECL_CONTEXT (d) = FROB_CONTEXT (context);
3116 DECL_ARTIFICIAL (d) = 1;
3117
3118 /* Store it in the hash table. */
3119 *e = t;
3120
3121 /* TYPENAME_TYPEs must always be compared structurally, because
3122 they may or may not resolve down to another type depending on
3123 the currently open classes. */
3124 SET_TYPE_STRUCTURAL_EQUALITY (t);
3125 }
3126
3127 return t;
3128 }
3129
3130 /* Resolve `typename CONTEXT::NAME'. TAG_TYPE indicates the tag
3131 provided to name the type. Returns an appropriate type, unless an
3132 error occurs, in which case error_mark_node is returned. If we
3133 locate a non-artificial TYPE_DECL and TF_KEEP_TYPE_DECL is set, we
3134 return that, rather than the _TYPE it corresponds to, in other
3135 cases we look through the type decl. If TF_ERROR is set, complain
3136 about errors, otherwise be quiet. */
3137
3138 tree
3139 make_typename_type (tree context, tree name, enum tag_types tag_type,
3140 tsubst_flags_t complain)
3141 {
3142 tree fullname;
3143 tree t;
3144 bool want_template;
3145
3146 if (name == error_mark_node
3147 || context == NULL_TREE
3148 || context == error_mark_node)
3149 return error_mark_node;
3150
3151 if (TYPE_P (name))
3152 {
3153 if (!(TYPE_LANG_SPECIFIC (name)
3154 && (CLASSTYPE_IS_TEMPLATE (name)
3155 || CLASSTYPE_USE_TEMPLATE (name))))
3156 name = TYPE_IDENTIFIER (name);
3157 else
3158 /* Create a TEMPLATE_ID_EXPR for the type. */
3159 name = build_nt (TEMPLATE_ID_EXPR,
3160 CLASSTYPE_TI_TEMPLATE (name),
3161 CLASSTYPE_TI_ARGS (name));
3162 }
3163 else if (TREE_CODE (name) == TYPE_DECL)
3164 name = DECL_NAME (name);
3165
3166 fullname = name;
3167
3168 if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
3169 {
3170 name = TREE_OPERAND (name, 0);
3171 if (TREE_CODE (name) == TEMPLATE_DECL)
3172 name = TREE_OPERAND (fullname, 0) = DECL_NAME (name);
3173 else if (TREE_CODE (name) == OVERLOAD)
3174 {
3175 error ("%qD is not a type", name);
3176 return error_mark_node;
3177 }
3178 }
3179 if (TREE_CODE (name) == TEMPLATE_DECL)
3180 {
3181 error ("%qD used without template parameters", name);
3182 return error_mark_node;
3183 }
3184 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
3185 gcc_assert (TYPE_P (context));
3186
3187 if (!MAYBE_CLASS_TYPE_P (context))
3188 {
3189 if (complain & tf_error)
3190 error ("%q#T is not a class", context);
3191 return error_mark_node;
3192 }
3193
3194 /* When the CONTEXT is a dependent type, NAME could refer to a
3195 dependent base class of CONTEXT. But look inside it anyway
3196 if CONTEXT is a currently open scope, in case it refers to a
3197 member of the current instantiation or a non-dependent base;
3198 lookup will stop when we hit a dependent base. */
3199 if (!dependent_scope_p (context))
3200 /* We should only set WANT_TYPE when we're a nested typename type.
3201 Then we can give better diagnostics if we find a non-type. */
3202 t = lookup_field (context, name, 2, /*want_type=*/true);
3203 else
3204 t = NULL_TREE;
3205
3206 if ((!t || TREE_CODE (t) == TREE_LIST) && dependent_type_p (context))
3207 return build_typename_type (context, name, fullname, tag_type);
3208
3209 want_template = TREE_CODE (fullname) == TEMPLATE_ID_EXPR;
3210
3211 if (!t)
3212 {
3213 if (complain & tf_error)
3214 error (want_template ? "no class template named %q#T in %q#T"
3215 : "no type named %q#T in %q#T", name, context);
3216 return error_mark_node;
3217 }
3218
3219 /* Pull out the template from an injected-class-name (or multiple). */
3220 if (want_template)
3221 t = maybe_get_template_decl_from_type_decl (t);
3222
3223 if (TREE_CODE (t) == TREE_LIST)
3224 {
3225 if (complain & tf_error)
3226 {
3227 error ("lookup of %qT in %qT is ambiguous", name, context);
3228 print_candidates (t);
3229 }
3230 return error_mark_node;
3231 }
3232
3233 if (want_template && !DECL_CLASS_TEMPLATE_P (t))
3234 {
3235 if (complain & tf_error)
3236 error ("%<typename %T::%D%> names %q#T, which is not a class template",
3237 context, name, t);
3238 return error_mark_node;
3239 }
3240 if (!want_template && TREE_CODE (t) != TYPE_DECL)
3241 {
3242 if (complain & tf_error)
3243 error ("%<typename %T::%D%> names %q#T, which is not a type",
3244 context, name, t);
3245 return error_mark_node;
3246 }
3247
3248 if (complain & tf_error)
3249 perform_or_defer_access_check (TYPE_BINFO (context), t, t);
3250
3251 /* If we are currently parsing a template and if T is a typedef accessed
3252 through CONTEXT then we need to remember and check access of T at
3253 template instantiation time. */
3254 add_typedef_to_current_template_for_access_check (t, context, input_location);
3255
3256 if (want_template)
3257 return lookup_template_class (t, TREE_OPERAND (fullname, 1),
3258 NULL_TREE, context,
3259 /*entering_scope=*/0,
3260 tf_warning_or_error | tf_user);
3261
3262 if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl))
3263 t = TREE_TYPE (t);
3264
3265 return t;
3266 }
3267
3268 /* Resolve `CONTEXT::template NAME'. Returns a TEMPLATE_DECL if the name
3269 can be resolved or an UNBOUND_CLASS_TEMPLATE, unless an error occurs,
3270 in which case error_mark_node is returned.
3271
3272 If PARM_LIST is non-NULL, also make sure that the template parameter
3273 list of TEMPLATE_DECL matches.
3274
3275 If COMPLAIN zero, don't complain about any errors that occur. */
3276
3277 tree
3278 make_unbound_class_template (tree context, tree name, tree parm_list,
3279 tsubst_flags_t complain)
3280 {
3281 tree t;
3282 tree d;
3283
3284 if (TYPE_P (name))
3285 name = TYPE_IDENTIFIER (name);
3286 else if (DECL_P (name))
3287 name = DECL_NAME (name);
3288 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
3289
3290 if (!dependent_type_p (context)
3291 || currently_open_class (context))
3292 {
3293 tree tmpl = NULL_TREE;
3294
3295 if (MAYBE_CLASS_TYPE_P (context))
3296 tmpl = lookup_field (context, name, 0, false);
3297
3298 if (tmpl && TREE_CODE (tmpl) == TYPE_DECL)
3299 tmpl = maybe_get_template_decl_from_type_decl (tmpl);
3300
3301 if (!tmpl || !DECL_CLASS_TEMPLATE_P (tmpl))
3302 {
3303 if (complain & tf_error)
3304 error ("no class template named %q#T in %q#T", name, context);
3305 return error_mark_node;
3306 }
3307
3308 if (parm_list
3309 && !comp_template_parms (DECL_TEMPLATE_PARMS (tmpl), parm_list))
3310 {
3311 if (complain & tf_error)
3312 {
3313 error ("template parameters do not match template");
3314 error ("%q+D declared here", tmpl);
3315 }
3316 return error_mark_node;
3317 }
3318
3319 if (complain & tf_error)
3320 perform_or_defer_access_check (TYPE_BINFO (context), tmpl, tmpl);
3321
3322 return tmpl;
3323 }
3324
3325 /* Build the UNBOUND_CLASS_TEMPLATE. */
3326 t = cxx_make_type (UNBOUND_CLASS_TEMPLATE);
3327 TYPE_CONTEXT (t) = FROB_CONTEXT (context);
3328 TREE_TYPE (t) = NULL_TREE;
3329 SET_TYPE_STRUCTURAL_EQUALITY (t);
3330
3331 /* Build the corresponding TEMPLATE_DECL. */
3332 d = build_decl (input_location, TEMPLATE_DECL, name, t);
3333 TYPE_NAME (TREE_TYPE (d)) = d;
3334 TYPE_STUB_DECL (TREE_TYPE (d)) = d;
3335 DECL_CONTEXT (d) = FROB_CONTEXT (context);
3336 DECL_ARTIFICIAL (d) = 1;
3337 DECL_TEMPLATE_PARMS (d) = parm_list;
3338
3339 return t;
3340 }
3341
3342 \f
3343
3344 /* Push the declarations of builtin types into the namespace.
3345 RID_INDEX is the index of the builtin type in the array
3346 RID_POINTERS. NAME is the name used when looking up the builtin
3347 type. TYPE is the _TYPE node for the builtin type. */
3348
3349 void
3350 record_builtin_type (enum rid rid_index,
3351 const char* name,
3352 tree type)
3353 {
3354 tree rname = NULL_TREE, tname = NULL_TREE;
3355 tree tdecl = NULL_TREE;
3356
3357 if ((int) rid_index < (int) RID_MAX)
3358 rname = ridpointers[(int) rid_index];
3359 if (name)
3360 tname = get_identifier (name);
3361
3362 /* The calls to SET_IDENTIFIER_GLOBAL_VALUE below should be
3363 eliminated. Built-in types should not be looked up name; their
3364 names are keywords that the parser can recognize. However, there
3365 is code in c-common.c that uses identifier_global_value to look
3366 up built-in types by name. */
3367 if (tname)
3368 {
3369 tdecl = build_decl (BUILTINS_LOCATION, TYPE_DECL, tname, type);
3370 DECL_ARTIFICIAL (tdecl) = 1;
3371 SET_IDENTIFIER_GLOBAL_VALUE (tname, tdecl);
3372 }
3373 if (rname)
3374 {
3375 if (!tdecl)
3376 {
3377 tdecl = build_decl (BUILTINS_LOCATION, TYPE_DECL, rname, type);
3378 DECL_ARTIFICIAL (tdecl) = 1;
3379 }
3380 SET_IDENTIFIER_GLOBAL_VALUE (rname, tdecl);
3381 }
3382
3383 if (!TYPE_NAME (type))
3384 TYPE_NAME (type) = tdecl;
3385
3386 if (tdecl)
3387 debug_hooks->type_decl (tdecl, 0);
3388 }
3389
3390 /* Record one of the standard Java types.
3391 * Declare it as having the given NAME.
3392 * If SIZE > 0, it is the size of one of the integral types;
3393 * otherwise it is the negative of the size of one of the other types. */
3394
3395 static tree
3396 record_builtin_java_type (const char* name, int size)
3397 {
3398 tree type, decl;
3399 if (size > 0)
3400 {
3401 type = build_nonstandard_integer_type (size, 0);
3402 type = build_distinct_type_copy (type);
3403 }
3404 else if (size > -32)
3405 {
3406 tree stype;
3407 /* "__java_char" or ""__java_boolean". */
3408 type = build_nonstandard_integer_type (-size, 1);
3409 type = build_distinct_type_copy (type);
3410 /* Get the signed type cached and attached to the unsigned type,
3411 so it doesn't get garbage-collected at "random" times,
3412 causing potential codegen differences out of different UIDs
3413 and different alias set numbers. */
3414 stype = build_nonstandard_integer_type (-size, 0);
3415 stype = build_distinct_type_copy (stype);
3416 TREE_CHAIN (type) = stype;
3417 /*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/
3418 }
3419 else
3420 { /* "__java_float" or ""__java_double". */
3421 type = make_node (REAL_TYPE);
3422 TYPE_PRECISION (type) = - size;
3423 layout_type (type);
3424 }
3425 record_builtin_type (RID_MAX, name, type);
3426 decl = TYPE_NAME (type);
3427
3428 /* Suppress generate debug symbol entries for these types,
3429 since for normal C++ they are just clutter.
3430 However, push_lang_context undoes this if extern "Java" is seen. */
3431 DECL_IGNORED_P (decl) = 1;
3432
3433 TYPE_FOR_JAVA (type) = 1;
3434 return type;
3435 }
3436
3437 /* Push a type into the namespace so that the back ends ignore it. */
3438
3439 static void
3440 record_unknown_type (tree type, const char* name)
3441 {
3442 tree decl = pushdecl (build_decl (UNKNOWN_LOCATION,
3443 TYPE_DECL, get_identifier (name), type));
3444 /* Make sure the "unknown type" typedecl gets ignored for debug info. */
3445 DECL_IGNORED_P (decl) = 1;
3446 TYPE_DECL_SUPPRESS_DEBUG (decl) = 1;
3447 TYPE_SIZE (type) = TYPE_SIZE (void_type_node);
3448 TYPE_ALIGN (type) = 1;
3449 TYPE_USER_ALIGN (type) = 0;
3450 SET_TYPE_MODE (type, TYPE_MODE (void_type_node));
3451 }
3452
3453 /* A string for which we should create an IDENTIFIER_NODE at
3454 startup. */
3455
3456 typedef struct predefined_identifier
3457 {
3458 /* The name of the identifier. */
3459 const char *const name;
3460 /* The place where the IDENTIFIER_NODE should be stored. */
3461 tree *const node;
3462 /* Nonzero if this is the name of a constructor or destructor. */
3463 const int ctor_or_dtor_p;
3464 } predefined_identifier;
3465
3466 /* Create all the predefined identifiers. */
3467
3468 static void
3469 initialize_predefined_identifiers (void)
3470 {
3471 const predefined_identifier *pid;
3472
3473 /* A table of identifiers to create at startup. */
3474 static const predefined_identifier predefined_identifiers[] = {
3475 { "C++", &lang_name_cplusplus, 0 },
3476 { "C", &lang_name_c, 0 },
3477 { "Java", &lang_name_java, 0 },
3478 /* Some of these names have a trailing space so that it is
3479 impossible for them to conflict with names written by users. */
3480 { "__ct ", &ctor_identifier, 1 },
3481 { "__base_ctor ", &base_ctor_identifier, 1 },
3482 { "__comp_ctor ", &complete_ctor_identifier, 1 },
3483 { "__dt ", &dtor_identifier, 1 },
3484 { "__comp_dtor ", &complete_dtor_identifier, 1 },
3485 { "__base_dtor ", &base_dtor_identifier, 1 },
3486 { "__deleting_dtor ", &deleting_dtor_identifier, 1 },
3487 { IN_CHARGE_NAME, &in_charge_identifier, 0 },
3488 { "nelts", &nelts_identifier, 0 },
3489 { THIS_NAME, &this_identifier, 0 },
3490 { VTABLE_DELTA_NAME, &delta_identifier, 0 },
3491 { VTABLE_PFN_NAME, &pfn_identifier, 0 },
3492 { "_vptr", &vptr_identifier, 0 },
3493 { "__vtt_parm", &vtt_parm_identifier, 0 },
3494 { "::", &global_scope_name, 0 },
3495 { "std", &std_identifier, 0 },
3496 { NULL, NULL, 0 }
3497 };
3498
3499 for (pid = predefined_identifiers; pid->name; ++pid)
3500 {
3501 *pid->node = get_identifier (pid->name);
3502 if (pid->ctor_or_dtor_p)
3503 IDENTIFIER_CTOR_OR_DTOR_P (*pid->node) = 1;
3504 }
3505 }
3506
3507 /* Create the predefined scalar types of C,
3508 and some nodes representing standard constants (0, 1, (void *)0).
3509 Initialize the global binding level.
3510 Make definitions for built-in primitive functions. */
3511
3512 void
3513 cxx_init_decl_processing (void)
3514 {
3515 tree void_ftype;
3516 tree void_ftype_ptr;
3517
3518 build_common_tree_nodes (flag_signed_char);
3519
3520 /* Create all the identifiers we need. */
3521 initialize_predefined_identifiers ();
3522
3523 /* Create the global variables. */
3524 push_to_top_level ();
3525
3526 current_function_decl = NULL_TREE;
3527 current_binding_level = NULL;
3528 /* Enter the global namespace. */
3529 gcc_assert (global_namespace == NULL_TREE);
3530 global_namespace = build_lang_decl (NAMESPACE_DECL, global_scope_name,
3531 void_type_node);
3532 DECL_CONTEXT (global_namespace) = build_translation_unit_decl (NULL_TREE);
3533 TREE_PUBLIC (global_namespace) = 1;
3534 begin_scope (sk_namespace, global_namespace);
3535
3536 current_lang_name = NULL_TREE;
3537
3538 if (flag_visibility_ms_compat)
3539 default_visibility = VISIBILITY_HIDDEN;
3540
3541 /* Initially, C. */
3542 current_lang_name = lang_name_c;
3543
3544 /* Create the `std' namespace. */
3545 push_namespace (std_identifier);
3546 std_node = current_namespace;
3547 pop_namespace ();
3548
3549 c_common_nodes_and_builtins ();
3550
3551 java_byte_type_node = record_builtin_java_type ("__java_byte", 8);
3552 java_short_type_node = record_builtin_java_type ("__java_short", 16);
3553 java_int_type_node = record_builtin_java_type ("__java_int", 32);
3554 java_long_type_node = record_builtin_java_type ("__java_long", 64);
3555 java_float_type_node = record_builtin_java_type ("__java_float", -32);
3556 java_double_type_node = record_builtin_java_type ("__java_double", -64);
3557 java_char_type_node = record_builtin_java_type ("__java_char", -16);
3558 java_boolean_type_node = record_builtin_java_type ("__java_boolean", -1);
3559
3560 integer_two_node = build_int_cst (NULL_TREE, 2);
3561
3562 record_builtin_type (RID_BOOL, "bool", boolean_type_node);
3563 truthvalue_type_node = boolean_type_node;
3564 truthvalue_false_node = boolean_false_node;
3565 truthvalue_true_node = boolean_true_node;
3566
3567 empty_except_spec = build_tree_list (NULL_TREE, NULL_TREE);
3568 noexcept_true_spec = build_tree_list (boolean_true_node, NULL_TREE);
3569 noexcept_false_spec = build_tree_list (boolean_false_node, NULL_TREE);
3570
3571 #if 0
3572 record_builtin_type (RID_MAX, NULL, string_type_node);
3573 #endif
3574
3575 delta_type_node = ptrdiff_type_node;
3576 vtable_index_type = ptrdiff_type_node;
3577
3578 vtt_parm_type = build_pointer_type (const_ptr_type_node);
3579 void_ftype = build_function_type_list (void_type_node, NULL_TREE);
3580 void_ftype_ptr = build_function_type_list (void_type_node,
3581 ptr_type_node, NULL_TREE);
3582 void_ftype_ptr
3583 = build_exception_variant (void_ftype_ptr, empty_except_spec);
3584
3585 /* C++ extensions */
3586
3587 unknown_type_node = make_node (LANG_TYPE);
3588 record_unknown_type (unknown_type_node, "unknown type");
3589
3590 /* Indirecting an UNKNOWN_TYPE node yields an UNKNOWN_TYPE node. */
3591 TREE_TYPE (unknown_type_node) = unknown_type_node;
3592
3593 /* Looking up TYPE_POINTER_TO and TYPE_REFERENCE_TO yield the same
3594 result. */
3595 TYPE_POINTER_TO (unknown_type_node) = unknown_type_node;
3596 TYPE_REFERENCE_TO (unknown_type_node) = unknown_type_node;
3597
3598 init_list_type_node = make_node (LANG_TYPE);
3599 record_unknown_type (init_list_type_node, "init list");
3600
3601 {
3602 /* Make sure we get a unique function type, so we can give
3603 its pointer type a name. (This wins for gdb.) */
3604 tree vfunc_type = make_node (FUNCTION_TYPE);
3605 TREE_TYPE (vfunc_type) = integer_type_node;
3606 TYPE_ARG_TYPES (vfunc_type) = NULL_TREE;
3607 layout_type (vfunc_type);
3608
3609 vtable_entry_type = build_pointer_type (vfunc_type);
3610 }
3611 record_builtin_type (RID_MAX, VTBL_PTR_TYPE, vtable_entry_type);
3612
3613 vtbl_type_node
3614 = build_cplus_array_type (vtable_entry_type, NULL_TREE);
3615 layout_type (vtbl_type_node);
3616 vtbl_type_node = cp_build_qualified_type (vtbl_type_node, TYPE_QUAL_CONST);
3617 record_builtin_type (RID_MAX, NULL, vtbl_type_node);
3618 vtbl_ptr_type_node = build_pointer_type (vtable_entry_type);
3619 layout_type (vtbl_ptr_type_node);
3620 record_builtin_type (RID_MAX, NULL, vtbl_ptr_type_node);
3621
3622 push_namespace (get_identifier ("__cxxabiv1"));
3623 abi_node = current_namespace;
3624 pop_namespace ();
3625
3626 global_type_node = make_node (LANG_TYPE);
3627 record_unknown_type (global_type_node, "global type");
3628
3629 /* Now, C++. */
3630 current_lang_name = lang_name_cplusplus;
3631
3632 {
3633 tree newtype, deltype;
3634 tree ptr_ftype_sizetype;
3635 tree new_eh_spec;
3636
3637 ptr_ftype_sizetype
3638 = build_function_type_list (ptr_type_node, size_type_node, NULL_TREE);
3639 if (cxx_dialect == cxx98)
3640 {
3641 tree bad_alloc_id;
3642 tree bad_alloc_type_node;
3643 tree bad_alloc_decl;
3644
3645 push_namespace (std_identifier);
3646 bad_alloc_id = get_identifier ("bad_alloc");
3647 bad_alloc_type_node = make_class_type (RECORD_TYPE);
3648 TYPE_CONTEXT (bad_alloc_type_node) = current_namespace;
3649 bad_alloc_decl
3650 = create_implicit_typedef (bad_alloc_id, bad_alloc_type_node);
3651 DECL_CONTEXT (bad_alloc_decl) = current_namespace;
3652 pop_namespace ();
3653
3654 new_eh_spec
3655 = add_exception_specifier (NULL_TREE, bad_alloc_type_node, -1);
3656 }
3657 else
3658 new_eh_spec = noexcept_false_spec;
3659
3660 newtype = build_exception_variant (ptr_ftype_sizetype, new_eh_spec);
3661 deltype = build_exception_variant (void_ftype_ptr, empty_except_spec);
3662 push_cp_library_fn (NEW_EXPR, newtype);
3663 push_cp_library_fn (VEC_NEW_EXPR, newtype);
3664 global_delete_fndecl = push_cp_library_fn (DELETE_EXPR, deltype);
3665 push_cp_library_fn (VEC_DELETE_EXPR, deltype);
3666
3667 nullptr_type_node = make_node (NULLPTR_TYPE);
3668 TYPE_SIZE (nullptr_type_node) = bitsize_int (GET_MODE_BITSIZE (ptr_mode));
3669 TYPE_SIZE_UNIT (nullptr_type_node) = size_int (GET_MODE_SIZE (ptr_mode));
3670 TYPE_UNSIGNED (nullptr_type_node) = 1;
3671 TYPE_PRECISION (nullptr_type_node) = GET_MODE_BITSIZE (ptr_mode);
3672 SET_TYPE_MODE (nullptr_type_node, Pmode);
3673 record_builtin_type (RID_MAX, "decltype(nullptr)", nullptr_type_node);
3674 nullptr_node = build_int_cst (nullptr_type_node, 0);
3675 }
3676
3677 abort_fndecl
3678 = build_library_fn_ptr ("__cxa_pure_virtual", void_ftype);
3679
3680 /* Perform other language dependent initializations. */
3681 init_class_processing ();
3682 init_rtti_processing ();
3683 init_template_processing ();
3684
3685 if (flag_exceptions)
3686 init_exception_processing ();
3687
3688 if (! supports_one_only ())
3689 flag_weak = 0;
3690
3691 make_fname_decl = cp_make_fname_decl;
3692 start_fname_decls ();
3693
3694 /* Show we use EH for cleanups. */
3695 if (flag_exceptions)
3696 using_eh_for_cleanups ();
3697 }
3698
3699 /* Generate an initializer for a function naming variable from
3700 NAME. NAME may be NULL, to indicate a dependent name. TYPE_P is
3701 filled in with the type of the init. */
3702
3703 tree
3704 cp_fname_init (const char* name, tree *type_p)
3705 {
3706 tree domain = NULL_TREE;
3707 tree type;
3708 tree init = NULL_TREE;
3709 size_t length = 0;
3710
3711 if (name)
3712 {
3713 length = strlen (name);
3714 domain = build_index_type (size_int (length));
3715 init = build_string (length + 1, name);
3716 }
3717
3718 type = cp_build_qualified_type (char_type_node, TYPE_QUAL_CONST);
3719 type = build_cplus_array_type (type, domain);
3720
3721 *type_p = type;
3722
3723 if (init)
3724 TREE_TYPE (init) = type;
3725 else
3726 init = error_mark_node;
3727
3728 return init;
3729 }
3730
3731 /* Create the VAR_DECL for __FUNCTION__ etc. ID is the name to give
3732 the decl, LOC is the location to give the decl, NAME is the
3733 initialization string and TYPE_DEP indicates whether NAME depended
3734 on the type of the function. We make use of that to detect
3735 __PRETTY_FUNCTION__ inside a template fn. This is being done lazily
3736 at the point of first use, so we mustn't push the decl now. */
3737
3738 static tree
3739 cp_make_fname_decl (location_t loc, tree id, int type_dep)
3740 {
3741 const char *const name = (type_dep && processing_template_decl
3742 ? NULL : fname_as_string (type_dep));
3743 tree type;
3744 tree init = cp_fname_init (name, &type);
3745 tree decl = build_decl (loc, VAR_DECL, id, type);
3746
3747 if (name)
3748 free (CONST_CAST (char *, name));
3749
3750 /* As we're using pushdecl_with_scope, we must set the context. */
3751 DECL_CONTEXT (decl) = current_function_decl;
3752 DECL_PRETTY_FUNCTION_P (decl) = type_dep;
3753
3754 TREE_STATIC (decl) = 1;
3755 TREE_READONLY (decl) = 1;
3756 DECL_ARTIFICIAL (decl) = 1;
3757
3758 TREE_USED (decl) = 1;
3759
3760 if (current_function_decl)
3761 {
3762 struct cp_binding_level *b = current_binding_level;
3763 if (b->kind == sk_function_parms)
3764 return error_mark_node;
3765 while (b->level_chain->kind != sk_function_parms)
3766 b = b->level_chain;
3767 pushdecl_with_scope (decl, b, /*is_friend=*/false);
3768 cp_finish_decl (decl, init, /*init_const_expr_p=*/false, NULL_TREE,
3769 LOOKUP_ONLYCONVERTING);
3770 }
3771 else
3772 {
3773 DECL_THIS_STATIC (decl) = true;
3774 pushdecl_top_level_and_finish (decl, init);
3775 }
3776
3777 return decl;
3778 }
3779
3780 static tree
3781 builtin_function_1 (tree decl, tree context, bool is_global)
3782 {
3783 tree id = DECL_NAME (decl);
3784 const char *name = IDENTIFIER_POINTER (id);
3785
3786 retrofit_lang_decl (decl);
3787
3788 DECL_ARTIFICIAL (decl) = 1;
3789 SET_OVERLOADED_OPERATOR_CODE (decl, ERROR_MARK);
3790 SET_DECL_LANGUAGE (decl, lang_c);
3791 /* Runtime library routines are, by definition, available in an
3792 external shared object. */
3793 DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT;
3794 DECL_VISIBILITY_SPECIFIED (decl) = 1;
3795
3796 DECL_CONTEXT (decl) = context;
3797
3798 if (is_global)
3799 pushdecl_top_level (decl);
3800 else
3801 pushdecl (decl);
3802
3803 /* A function in the user's namespace should have an explicit
3804 declaration before it is used. Mark the built-in function as
3805 anticipated but not actually declared. */
3806 if (name[0] != '_' || name[1] != '_')
3807 DECL_ANTICIPATED (decl) = 1;
3808 else if (strncmp (name + 2, "builtin_", strlen ("builtin_")) != 0)
3809 {
3810 size_t len = strlen (name);
3811
3812 /* Treat __*_chk fortification functions as anticipated as well,
3813 unless they are __builtin_*. */
3814 if (len > strlen ("___chk")
3815 && memcmp (name + len - strlen ("_chk"),
3816 "_chk", strlen ("_chk") + 1) == 0)
3817 DECL_ANTICIPATED (decl) = 1;
3818 }
3819
3820 return decl;
3821 }
3822
3823 tree
3824 cxx_builtin_function (tree decl)
3825 {
3826 tree id = DECL_NAME (decl);
3827 const char *name = IDENTIFIER_POINTER (id);
3828 /* All builtins that don't begin with an '_' should additionally
3829 go in the 'std' namespace. */
3830 if (name[0] != '_')
3831 {
3832 tree decl2 = copy_node(decl);
3833 push_namespace (std_identifier);
3834 builtin_function_1 (decl2, std_node, false);
3835 pop_namespace ();
3836 }
3837
3838 return builtin_function_1 (decl, NULL_TREE, false);
3839 }
3840
3841 /* Like cxx_builtin_function, but guarantee the function is added to the global
3842 scope. This is to allow function specific options to add new machine
3843 dependent builtins when the target ISA changes via attribute((target(...)))
3844 which saves space on program startup if the program does not use non-generic
3845 ISAs. */
3846
3847 tree
3848 cxx_builtin_function_ext_scope (tree decl)
3849 {
3850
3851 tree id = DECL_NAME (decl);
3852 const char *name = IDENTIFIER_POINTER (id);
3853 /* All builtins that don't begin with an '_' should additionally
3854 go in the 'std' namespace. */
3855 if (name[0] != '_')
3856 {
3857 tree decl2 = copy_node(decl);
3858 push_namespace (std_identifier);
3859 builtin_function_1 (decl2, std_node, true);
3860 pop_namespace ();
3861 }
3862
3863 return builtin_function_1 (decl, NULL_TREE, true);
3864 }
3865
3866 /* Generate a FUNCTION_DECL with the typical flags for a runtime library
3867 function. Not called directly. */
3868
3869 static tree
3870 build_library_fn_1 (tree name, enum tree_code operator_code, tree type)
3871 {
3872 tree fn = build_lang_decl (FUNCTION_DECL, name, type);
3873 DECL_EXTERNAL (fn) = 1;
3874 TREE_PUBLIC (fn) = 1;
3875 DECL_ARTIFICIAL (fn) = 1;
3876 SET_OVERLOADED_OPERATOR_CODE (fn, operator_code);
3877 SET_DECL_LANGUAGE (fn, lang_c);
3878 /* Runtime library routines are, by definition, available in an
3879 external shared object. */
3880 DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT;
3881 DECL_VISIBILITY_SPECIFIED (fn) = 1;
3882 return fn;
3883 }
3884
3885 /* Returns the _DECL for a library function with C linkage.
3886 We assume that such functions never throw; if this is incorrect,
3887 callers should unset TREE_NOTHROW. */
3888
3889 static tree
3890 build_library_fn (tree name, tree type)
3891 {
3892 tree fn = build_library_fn_1 (name, ERROR_MARK, type);
3893 TREE_NOTHROW (fn) = 1;
3894 return fn;
3895 }
3896
3897 /* Returns the _DECL for a library function with C++ linkage. */
3898
3899 static tree
3900 build_cp_library_fn (tree name, enum tree_code operator_code, tree type)
3901 {
3902 tree fn = build_library_fn_1 (name, operator_code, type);
3903 TREE_NOTHROW (fn) = TYPE_NOTHROW_P (type);
3904 DECL_CONTEXT (fn) = FROB_CONTEXT (current_namespace);
3905 SET_DECL_LANGUAGE (fn, lang_cplusplus);
3906 return fn;
3907 }
3908
3909 /* Like build_library_fn, but takes a C string instead of an
3910 IDENTIFIER_NODE. */
3911
3912 tree
3913 build_library_fn_ptr (const char* name, tree type)
3914 {
3915 return build_library_fn (get_identifier (name), type);
3916 }
3917
3918 /* Like build_cp_library_fn, but takes a C string instead of an
3919 IDENTIFIER_NODE. */
3920
3921 tree
3922 build_cp_library_fn_ptr (const char* name, tree type)
3923 {
3924 return build_cp_library_fn (get_identifier (name), ERROR_MARK, type);
3925 }
3926
3927 /* Like build_library_fn, but also pushes the function so that we will
3928 be able to find it via IDENTIFIER_GLOBAL_VALUE. Also, the function
3929 may throw exceptions listed in RAISES. */
3930
3931 tree
3932 push_library_fn (tree name, tree type, tree raises)
3933 {
3934 tree fn;
3935
3936 if (raises)
3937 type = build_exception_variant (type, raises);
3938
3939 fn = build_library_fn (name, type);
3940 pushdecl_top_level (fn);
3941 return fn;
3942 }
3943
3944 /* Like build_cp_library_fn, but also pushes the function so that it
3945 will be found by normal lookup. */
3946
3947 static tree
3948 push_cp_library_fn (enum tree_code operator_code, tree type)
3949 {
3950 tree fn = build_cp_library_fn (ansi_opname (operator_code),
3951 operator_code,
3952 type);
3953 pushdecl (fn);
3954 return fn;
3955 }
3956
3957 /* Like push_library_fn, but takes a TREE_LIST of parm types rather than
3958 a FUNCTION_TYPE. */
3959
3960 tree
3961 push_void_library_fn (tree name, tree parmtypes)
3962 {
3963 tree type = build_function_type (void_type_node, parmtypes);
3964 return push_library_fn (name, type, NULL_TREE);
3965 }
3966
3967 /* Like push_library_fn, but also note that this function throws
3968 and does not return. Used for __throw_foo and the like. */
3969
3970 tree
3971 push_throw_library_fn (tree name, tree type)
3972 {
3973 tree fn = push_library_fn (name, type, NULL_TREE);
3974 TREE_THIS_VOLATILE (fn) = 1;
3975 TREE_NOTHROW (fn) = 0;
3976 return fn;
3977 }
3978 \f
3979 /* When we call finish_struct for an anonymous union, we create
3980 default copy constructors and such. But, an anonymous union
3981 shouldn't have such things; this function undoes the damage to the
3982 anonymous union type T.
3983
3984 (The reason that we create the synthesized methods is that we don't
3985 distinguish `union { int i; }' from `typedef union { int i; } U'.
3986 The first is an anonymous union; the second is just an ordinary
3987 union type.) */
3988
3989 void
3990 fixup_anonymous_aggr (tree t)
3991 {
3992 tree *q;
3993
3994 /* Wipe out memory of synthesized methods. */
3995 TYPE_HAS_USER_CONSTRUCTOR (t) = 0;
3996 TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0;
3997 TYPE_HAS_COPY_CTOR (t) = 0;
3998 TYPE_HAS_CONST_COPY_CTOR (t) = 0;
3999 TYPE_HAS_COPY_ASSIGN (t) = 0;
4000 TYPE_HAS_CONST_COPY_ASSIGN (t) = 0;
4001
4002 /* Splice the implicitly generated functions out of the TYPE_METHODS
4003 list. */
4004 q = &TYPE_METHODS (t);
4005 while (*q)
4006 {
4007 if (DECL_ARTIFICIAL (*q))
4008 *q = TREE_CHAIN (*q);
4009 else
4010 q = &DECL_CHAIN (*q);
4011 }
4012
4013 /* ISO C++ 9.5.3. Anonymous unions may not have function members. */
4014 if (TYPE_METHODS (t))
4015 {
4016 tree decl = TYPE_MAIN_DECL (t);
4017
4018 if (TREE_CODE (t) != UNION_TYPE)
4019 error_at (DECL_SOURCE_LOCATION (decl),
4020 "an anonymous struct cannot have function members");
4021 else
4022 error_at (DECL_SOURCE_LOCATION (decl),
4023 "an anonymous union cannot have function members");
4024 }
4025
4026 /* Anonymous aggregates cannot have fields with ctors, dtors or complex
4027 assignment operators (because they cannot have these methods themselves).
4028 For anonymous unions this is already checked because they are not allowed
4029 in any union, otherwise we have to check it. */
4030 if (TREE_CODE (t) != UNION_TYPE)
4031 {
4032 tree field, type;
4033
4034 for (field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
4035 if (TREE_CODE (field) == FIELD_DECL)
4036 {
4037 type = TREE_TYPE (field);
4038 if (CLASS_TYPE_P (type))
4039 {
4040 if (TYPE_NEEDS_CONSTRUCTING (type))
4041 error ("member %q+#D with constructor not allowed "
4042 "in anonymous aggregate", field);
4043 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
4044 error ("member %q+#D with destructor not allowed "
4045 "in anonymous aggregate", field);
4046 if (TYPE_HAS_COMPLEX_COPY_ASSIGN (type))
4047 error ("member %q+#D with copy assignment operator "
4048 "not allowed in anonymous aggregate", field);
4049 }
4050 }
4051 }
4052 }
4053
4054 /* Make sure that a declaration with no declarator is well-formed, i.e.
4055 just declares a tagged type or anonymous union.
4056
4057 Returns the type declared; or NULL_TREE if none. */
4058
4059 tree
4060 check_tag_decl (cp_decl_specifier_seq *declspecs)
4061 {
4062 int saw_friend = declspecs->specs[(int)ds_friend] != 0;
4063 int saw_typedef = declspecs->specs[(int)ds_typedef] != 0;
4064 /* If a class, struct, or enum type is declared by the DECLSPECS
4065 (i.e, if a class-specifier, enum-specifier, or non-typename
4066 elaborated-type-specifier appears in the DECLSPECS),
4067 DECLARED_TYPE is set to the corresponding type. */
4068 tree declared_type = NULL_TREE;
4069 bool error_p = false;
4070
4071 if (declspecs->multiple_types_p)
4072 error ("multiple types in one declaration");
4073 else if (declspecs->redefined_builtin_type)
4074 {
4075 if (!in_system_header)
4076 permerror (input_location, "redeclaration of C++ built-in type %qT",
4077 declspecs->redefined_builtin_type);
4078 return NULL_TREE;
4079 }
4080
4081 if (declspecs->type
4082 && TYPE_P (declspecs->type)
4083 && ((TREE_CODE (declspecs->type) != TYPENAME_TYPE
4084 && MAYBE_CLASS_TYPE_P (declspecs->type))
4085 || TREE_CODE (declspecs->type) == ENUMERAL_TYPE))
4086 declared_type = declspecs->type;
4087 else if (declspecs->type == error_mark_node)
4088 error_p = true;
4089 if (declared_type == NULL_TREE && ! saw_friend && !error_p)
4090 permerror (input_location, "declaration does not declare anything");
4091 /* Check for an anonymous union. */
4092 else if (declared_type && RECORD_OR_UNION_CODE_P (TREE_CODE (declared_type))
4093 && TYPE_ANONYMOUS_P (declared_type))
4094 {
4095 /* 7/3 In a simple-declaration, the optional init-declarator-list
4096 can be omitted only when declaring a class (clause 9) or
4097 enumeration (7.2), that is, when the decl-specifier-seq contains
4098 either a class-specifier, an elaborated-type-specifier with
4099 a class-key (9.1), or an enum-specifier. In these cases and
4100 whenever a class-specifier or enum-specifier is present in the
4101 decl-specifier-seq, the identifiers in these specifiers are among
4102 the names being declared by the declaration (as class-name,
4103 enum-names, or enumerators, depending on the syntax). In such
4104 cases, and except for the declaration of an unnamed bit-field (9.6),
4105 the decl-specifier-seq shall introduce one or more names into the
4106 program, or shall redeclare a name introduced by a previous
4107 declaration. [Example:
4108 enum { }; // ill-formed
4109 typedef class { }; // ill-formed
4110 --end example] */
4111 if (saw_typedef)
4112 {
4113 error ("missing type-name in typedef-declaration");
4114 return NULL_TREE;
4115 }
4116 /* Anonymous unions are objects, so they can have specifiers. */;
4117 SET_ANON_AGGR_TYPE_P (declared_type);
4118
4119 if (TREE_CODE (declared_type) != UNION_TYPE && !in_system_header)
4120 pedwarn (input_location, OPT_pedantic, "ISO C++ prohibits anonymous structs");
4121 }
4122
4123 else
4124 {
4125 if (declspecs->specs[(int)ds_inline]
4126 || declspecs->specs[(int)ds_virtual])
4127 error ("%qs can only be specified for functions",
4128 declspecs->specs[(int)ds_inline]
4129 ? "inline" : "virtual");
4130 else if (saw_friend
4131 && (!current_class_type
4132 || current_scope () != current_class_type))
4133 error ("%<friend%> can only be specified inside a class");
4134 else if (declspecs->specs[(int)ds_explicit])
4135 error ("%<explicit%> can only be specified for constructors");
4136 else if (declspecs->storage_class)
4137 error ("a storage class can only be specified for objects "
4138 "and functions");
4139 else if (declspecs->specs[(int)ds_const]
4140 || declspecs->specs[(int)ds_volatile]
4141 || declspecs->specs[(int)ds_restrict]
4142 || declspecs->specs[(int)ds_thread])
4143 error ("qualifiers can only be specified for objects "
4144 "and functions");
4145 else if (saw_typedef)
4146 warning (0, "%<typedef%> was ignored in this declaration");
4147 else if (declspecs->specs[(int) ds_constexpr])
4148 error ("%<constexpr%> cannot be used for type declarations");
4149 }
4150
4151 return declared_type;
4152 }
4153
4154 /* Called when a declaration is seen that contains no names to declare.
4155 If its type is a reference to a structure, union or enum inherited
4156 from a containing scope, shadow that tag name for the current scope
4157 with a forward reference.
4158 If its type defines a new named structure or union
4159 or defines an enum, it is valid but we need not do anything here.
4160 Otherwise, it is an error.
4161
4162 C++: may have to grok the declspecs to learn about static,
4163 complain for anonymous unions.
4164
4165 Returns the TYPE declared -- or NULL_TREE if none. */
4166
4167 tree
4168 shadow_tag (cp_decl_specifier_seq *declspecs)
4169 {
4170 tree t = check_tag_decl (declspecs);
4171
4172 if (!t)
4173 return NULL_TREE;
4174
4175 if (declspecs->attributes)
4176 {
4177 warning (0, "attribute ignored in declaration of %q+#T", t);
4178 warning (0, "attribute for %q+#T must follow the %qs keyword",
4179 t, class_key_or_enum_as_string (t));
4180
4181 }
4182
4183 if (maybe_process_partial_specialization (t) == error_mark_node)
4184 return NULL_TREE;
4185
4186 /* This is where the variables in an anonymous union are
4187 declared. An anonymous union declaration looks like:
4188 union { ... } ;
4189 because there is no declarator after the union, the parser
4190 sends that declaration here. */
4191 if (ANON_AGGR_TYPE_P (t))
4192 {
4193 fixup_anonymous_aggr (t);
4194
4195 if (TYPE_FIELDS (t))
4196 {
4197 tree decl = grokdeclarator (/*declarator=*/NULL,
4198 declspecs, NORMAL, 0, NULL);
4199 finish_anon_union (decl);
4200 }
4201 }
4202
4203 return t;
4204 }
4205 \f
4206 /* Decode a "typename", such as "int **", returning a ..._TYPE node. */
4207
4208 tree
4209 groktypename (cp_decl_specifier_seq *type_specifiers,
4210 const cp_declarator *declarator,
4211 bool is_template_arg)
4212 {
4213 tree attrs;
4214 tree type;
4215 enum decl_context context
4216 = is_template_arg ? TEMPLATE_TYPE_ARG : TYPENAME;
4217 attrs = type_specifiers->attributes;
4218 type_specifiers->attributes = NULL_TREE;
4219 type = grokdeclarator (declarator, type_specifiers, context, 0, &attrs);
4220 if (attrs && type != error_mark_node)
4221 {
4222 if (CLASS_TYPE_P (type))
4223 warning (OPT_Wattributes, "ignoring attributes applied to class type %qT "
4224 "outside of definition", type);
4225 else if (MAYBE_CLASS_TYPE_P (type))
4226 /* A template type parameter or other dependent type. */
4227 warning (OPT_Wattributes, "ignoring attributes applied to dependent "
4228 "type %qT without an associated declaration", type);
4229 else
4230 cplus_decl_attributes (&type, attrs, 0);
4231 }
4232 return type;
4233 }
4234
4235 /* Process a DECLARATOR for a function-scope variable declaration,
4236 namespace-scope variable declaration, or function declaration.
4237 (Function definitions go through start_function; class member
4238 declarations appearing in the body of the class go through
4239 grokfield.) The DECL corresponding to the DECLARATOR is returned.
4240 If an error occurs, the error_mark_node is returned instead.
4241
4242 DECLSPECS are the decl-specifiers for the declaration. INITIALIZED is
4243 SD_INITIALIZED if an explicit initializer is present, or SD_DEFAULTED
4244 for an explicitly defaulted function, or SD_DELETED for an explicitly
4245 deleted function, but 0 (SD_UNINITIALIZED) if this is a variable
4246 implicitly initialized via a default constructor. ATTRIBUTES and
4247 PREFIX_ATTRIBUTES are GNU attributes associated with this declaration.
4248 *PUSHED_SCOPE_P is set to the scope entered in this function, if any; if
4249 set, the caller is responsible for calling pop_scope. */
4250
4251 tree
4252 start_decl (const cp_declarator *declarator,
4253 cp_decl_specifier_seq *declspecs,
4254 int initialized,
4255 tree attributes,
4256 tree prefix_attributes,
4257 tree *pushed_scope_p)
4258 {
4259 tree decl;
4260 tree context;
4261 bool was_public;
4262 int flags;
4263 bool alias;
4264
4265 *pushed_scope_p = NULL_TREE;
4266
4267 /* An object declared as __attribute__((deprecated)) suppresses
4268 warnings of uses of other deprecated items. */
4269 if (lookup_attribute ("deprecated", attributes))
4270 deprecated_state = DEPRECATED_SUPPRESS;
4271
4272 attributes = chainon (attributes, prefix_attributes);
4273
4274 decl = grokdeclarator (declarator, declspecs, NORMAL, initialized,
4275 &attributes);
4276
4277 deprecated_state = DEPRECATED_NORMAL;
4278
4279 if (decl == NULL_TREE || TREE_CODE (decl) == VOID_TYPE
4280 || decl == error_mark_node)
4281 return error_mark_node;
4282
4283 context = CP_DECL_CONTEXT (decl);
4284 if (context != global_namespace)
4285 *pushed_scope_p = push_scope (context);
4286
4287 if (initialized)
4288 /* Is it valid for this decl to have an initializer at all?
4289 If not, set INITIALIZED to zero, which will indirectly
4290 tell `cp_finish_decl' to ignore the initializer once it is parsed. */
4291 switch (TREE_CODE (decl))
4292 {
4293 case TYPE_DECL:
4294 error ("typedef %qD is initialized (use decltype instead)", decl);
4295 return error_mark_node;
4296
4297 case FUNCTION_DECL:
4298 if (initialized == SD_DELETED)
4299 /* We'll handle the rest of the semantics later, but we need to
4300 set this now so it's visible to duplicate_decls. */
4301 DECL_DELETED_FN (decl) = 1;
4302 break;
4303
4304 default:
4305 break;
4306 }
4307
4308 if (initialized)
4309 {
4310 if (! toplevel_bindings_p ()
4311 && DECL_EXTERNAL (decl))
4312 warning (0, "declaration of %q#D has %<extern%> and is initialized",
4313 decl);
4314 DECL_EXTERNAL (decl) = 0;
4315 if (toplevel_bindings_p ())
4316 TREE_STATIC (decl) = 1;
4317 }
4318 alias = lookup_attribute ("alias", DECL_ATTRIBUTES (decl)) != 0;
4319
4320 if (alias && TREE_CODE (decl) == FUNCTION_DECL)
4321 record_key_method_defined (decl);
4322
4323 /* If this is a typedef that names the class for linkage purposes
4324 (7.1.3p8), apply any attributes directly to the type. */
4325 if (TREE_CODE (decl) == TYPE_DECL
4326 && TAGGED_TYPE_P (TREE_TYPE (decl))
4327 && decl == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (decl))))
4328 flags = ATTR_FLAG_TYPE_IN_PLACE;
4329 else
4330 flags = 0;
4331
4332 /* Set attributes here so if duplicate decl, will have proper attributes. */
4333 cplus_decl_attributes (&decl, attributes, flags);
4334
4335 /* Dllimported symbols cannot be defined. Static data members (which
4336 can be initialized in-class and dllimported) go through grokfield,
4337 not here, so we don't need to exclude those decls when checking for
4338 a definition. */
4339 if (initialized && DECL_DLLIMPORT_P (decl))
4340 {
4341 error ("definition of %q#D is marked %<dllimport%>", decl);
4342 DECL_DLLIMPORT_P (decl) = 0;
4343 }
4344
4345 /* If #pragma weak was used, mark the decl weak now. */
4346 maybe_apply_pragma_weak (decl);
4347
4348 if (TREE_CODE (decl) == FUNCTION_DECL
4349 && DECL_DECLARED_INLINE_P (decl)
4350 && DECL_UNINLINABLE (decl)
4351 && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl)))
4352 warning (0, "inline function %q+D given attribute noinline", decl);
4353
4354 if (TYPE_P (context) && COMPLETE_TYPE_P (complete_type (context)))
4355 {
4356 if (TREE_CODE (decl) == VAR_DECL)
4357 {
4358 tree field = lookup_field (context, DECL_NAME (decl), 0, false);
4359 if (field == NULL_TREE || TREE_CODE (field) != VAR_DECL)
4360 error ("%q#D is not a static member of %q#T", decl, context);
4361 else
4362 {
4363 if (DECL_CONTEXT (field) != context)
4364 {
4365 if (!same_type_p (DECL_CONTEXT (field), context))
4366 permerror (input_location, "ISO C++ does not permit %<%T::%D%> "
4367 "to be defined as %<%T::%D%>",
4368 DECL_CONTEXT (field), DECL_NAME (decl),
4369 context, DECL_NAME (decl));
4370 DECL_CONTEXT (decl) = DECL_CONTEXT (field);
4371 }
4372 if (processing_specialization
4373 && template_class_depth (context) == 0
4374 && CLASSTYPE_TEMPLATE_SPECIALIZATION (context))
4375 error ("template header not allowed in member definition "
4376 "of explicitly specialized class");
4377 /* Static data member are tricky; an in-class initialization
4378 still doesn't provide a definition, so the in-class
4379 declaration will have DECL_EXTERNAL set, but will have an
4380 initialization. Thus, duplicate_decls won't warn
4381 about this situation, and so we check here. */
4382 if (initialized && DECL_INITIALIZED_IN_CLASS_P (field))
4383 error ("duplicate initialization of %qD", decl);
4384 if (duplicate_decls (decl, field, /*newdecl_is_friend=*/false))
4385 decl = field;
4386 if (declspecs->specs[(int) ds_constexpr]
4387 && !DECL_DECLARED_CONSTEXPR_P (field))
4388 error ("%qD declared %<constexpr%> outside its class", field);
4389 }
4390 }
4391 else
4392 {
4393 tree field = check_classfn (context, decl,
4394 (processing_template_decl
4395 > template_class_depth (context))
4396 ? current_template_parms
4397 : NULL_TREE);
4398 if (field && field != error_mark_node
4399 && duplicate_decls (decl, field,
4400 /*newdecl_is_friend=*/false))
4401 decl = field;
4402 }
4403
4404 /* cp_finish_decl sets DECL_EXTERNAL if DECL_IN_AGGR_P is set. */
4405 DECL_IN_AGGR_P (decl) = 0;
4406 /* Do not mark DECL as an explicit specialization if it was not
4407 already marked as an instantiation; a declaration should
4408 never be marked as a specialization unless we know what
4409 template is being specialized. */
4410 if (DECL_LANG_SPECIFIC (decl) && DECL_USE_TEMPLATE (decl))
4411 {
4412 SET_DECL_TEMPLATE_SPECIALIZATION (decl);
4413
4414 /* [temp.expl.spec] An explicit specialization of a static data
4415 member of a template is a definition if the declaration
4416 includes an initializer; otherwise, it is a declaration.
4417
4418 We check for processing_specialization so this only applies
4419 to the new specialization syntax. */
4420 if (!initialized && processing_specialization)
4421 DECL_EXTERNAL (decl) = 1;
4422 }
4423
4424 if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl)
4425 /* Aliases are definitions. */
4426 && !alias)
4427 permerror (input_location, "declaration of %q#D outside of class is not definition",
4428 decl);
4429 }
4430
4431 was_public = TREE_PUBLIC (decl);
4432
4433 /* Enter this declaration into the symbol table. */
4434 decl = maybe_push_decl (decl);
4435
4436 if (processing_template_decl)
4437 decl = push_template_decl (decl);
4438 if (decl == error_mark_node)
4439 return error_mark_node;
4440
4441 /* Tell the back end to use or not use .common as appropriate. If we say
4442 -fconserve-space, we want this to save .data space, at the expense of
4443 wrong semantics. If we say -fno-conserve-space, we want this to
4444 produce errors about redefs; to do this we force variables into the
4445 data segment. */
4446 if (flag_conserve_space
4447 && TREE_CODE (decl) == VAR_DECL
4448 && TREE_PUBLIC (decl)
4449 && !DECL_THREAD_LOCAL_P (decl)
4450 && !have_global_bss_p ())
4451 DECL_COMMON (decl) = 1;
4452
4453 if (TREE_CODE (decl) == VAR_DECL
4454 && DECL_NAMESPACE_SCOPE_P (decl) && !TREE_PUBLIC (decl) && !was_public
4455 && !DECL_THIS_STATIC (decl) && !DECL_ARTIFICIAL (decl))
4456 {
4457 /* This is a const variable with implicit 'static'. Set
4458 DECL_THIS_STATIC so we can tell it from variables that are
4459 !TREE_PUBLIC because of the anonymous namespace. */
4460 gcc_assert (CP_TYPE_CONST_P (TREE_TYPE (decl)) || errorcount);
4461 DECL_THIS_STATIC (decl) = 1;
4462 }
4463
4464 if (!processing_template_decl && TREE_CODE (decl) == VAR_DECL)
4465 start_decl_1 (decl, initialized);
4466
4467 return decl;
4468 }
4469
4470 /* Process the declaration of a variable DECL. INITIALIZED is true
4471 iff DECL is explicitly initialized. (INITIALIZED is false if the
4472 variable is initialized via an implicitly-called constructor.)
4473 This function must be called for ordinary variables (including, for
4474 example, implicit instantiations of templates), but must not be
4475 called for template declarations. */
4476
4477 void
4478 start_decl_1 (tree decl, bool initialized)
4479 {
4480 tree type;
4481 bool complete_p;
4482 bool aggregate_definition_p;
4483
4484 gcc_assert (!processing_template_decl);
4485
4486 if (error_operand_p (decl))
4487 return;
4488
4489 gcc_assert (TREE_CODE (decl) == VAR_DECL);
4490
4491 type = TREE_TYPE (decl);
4492 complete_p = COMPLETE_TYPE_P (type);
4493 aggregate_definition_p = MAYBE_CLASS_TYPE_P (type) && !DECL_EXTERNAL (decl);
4494
4495 /* If an explicit initializer is present, or if this is a definition
4496 of an aggregate, then we need a complete type at this point.
4497 (Scalars are always complete types, so there is nothing to
4498 check.) This code just sets COMPLETE_P; errors (if necessary)
4499 are issued below. */
4500 if ((initialized || aggregate_definition_p)
4501 && !complete_p
4502 && COMPLETE_TYPE_P (complete_type (type)))
4503 {
4504 complete_p = true;
4505 /* We will not yet have set TREE_READONLY on DECL if the type
4506 was "const", but incomplete, before this point. But, now, we
4507 have a complete type, so we can try again. */
4508 cp_apply_type_quals_to_decl (cp_type_quals (type), decl);
4509 }
4510
4511 if (initialized)
4512 /* Is it valid for this decl to have an initializer at all? */
4513 {
4514 /* Don't allow initializations for incomplete types except for
4515 arrays which might be completed by the initialization. */
4516 if (complete_p)
4517 ; /* A complete type is ok. */
4518 else if (type_uses_auto (type))
4519 ; /* An auto type is ok. */
4520 else if (TREE_CODE (type) != ARRAY_TYPE)
4521 {
4522 error ("variable %q#D has initializer but incomplete type", decl);
4523 type = TREE_TYPE (decl) = error_mark_node;
4524 }
4525 else if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (type))))
4526 {
4527 if (DECL_LANG_SPECIFIC (decl) && DECL_TEMPLATE_INFO (decl))
4528 error ("elements of array %q#D have incomplete type", decl);
4529 /* else we already gave an error in start_decl. */
4530 }
4531 }
4532 else if (aggregate_definition_p && !complete_p)
4533 {
4534 if (type_uses_auto (type))
4535 error ("declaration of %q#D has no initializer", decl);
4536 else
4537 error ("aggregate %q#D has incomplete type and cannot be defined",
4538 decl);
4539 /* Change the type so that assemble_variable will give
4540 DECL an rtl we can live with: (mem (const_int 0)). */
4541 type = TREE_TYPE (decl) = error_mark_node;
4542 }
4543
4544 /* Create a new scope to hold this declaration if necessary.
4545 Whether or not a new scope is necessary cannot be determined
4546 until after the type has been completed; if the type is a
4547 specialization of a class template it is not until after
4548 instantiation has occurred that TYPE_HAS_NONTRIVIAL_DESTRUCTOR
4549 will be set correctly. */
4550 maybe_push_cleanup_level (type);
4551 }
4552
4553 /* Handle initialization of references. DECL, TYPE, and INIT have the
4554 same meaning as in cp_finish_decl. *CLEANUP must be NULL on entry,
4555 but will be set to a new CLEANUP_STMT if a temporary is created
4556 that must be destroyed subsequently.
4557
4558 Returns an initializer expression to use to initialize DECL, or
4559 NULL if the initialization can be performed statically.
4560
4561 Quotes on semantics can be found in ARM 8.4.3. */
4562
4563 static tree
4564 grok_reference_init (tree decl, tree type, tree init, tree *cleanup)
4565 {
4566 tree tmp;
4567
4568 if (init == NULL_TREE)
4569 {
4570 if ((DECL_LANG_SPECIFIC (decl) == 0
4571 || DECL_IN_AGGR_P (decl) == 0)
4572 && ! DECL_THIS_EXTERN (decl))
4573 error ("%qD declared as reference but not initialized", decl);
4574 return NULL_TREE;
4575 }
4576
4577 if (TREE_CODE (init) == TREE_LIST)
4578 init = build_x_compound_expr_from_list (init, ELK_INIT,
4579 tf_warning_or_error);
4580
4581 if (TREE_CODE (TREE_TYPE (type)) != ARRAY_TYPE
4582 && TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE)
4583 /* Note: default conversion is only called in very special cases. */
4584 init = decay_conversion (init);
4585
4586 /* Convert INIT to the reference type TYPE. This may involve the
4587 creation of a temporary, whose lifetime must be the same as that
4588 of the reference. If so, a DECL_EXPR for the temporary will be
4589 added just after the DECL_EXPR for DECL. That's why we don't set
4590 DECL_INITIAL for local references (instead assigning to them
4591 explicitly); we need to allow the temporary to be initialized
4592 first. */
4593 tmp = initialize_reference (type, init, decl, cleanup, tf_warning_or_error);
4594
4595 if (tmp == error_mark_node)
4596 return NULL_TREE;
4597 else if (tmp == NULL_TREE)
4598 {
4599 error ("cannot initialize %qT from %qT", type, TREE_TYPE (init));
4600 return NULL_TREE;
4601 }
4602
4603 if (TREE_STATIC (decl) && !TREE_CONSTANT (tmp))
4604 return tmp;
4605
4606 DECL_INITIAL (decl) = tmp;
4607
4608 return NULL_TREE;
4609 }
4610
4611 /* Subroutine of check_initializer. We're initializing a DECL of
4612 std::initializer_list<T> TYPE from a braced-init-list INIT, and need to
4613 extend the lifetime of the underlying array to match that of the decl,
4614 just like for reference initialization. CLEANUP is as for
4615 grok_reference_init. */
4616
4617 static tree
4618 build_init_list_var_init (tree decl, tree type, tree init, tree *array_init,
4619 tree *cleanup)
4620 {
4621 tree aggr_init, array, arrtype;
4622 init = perform_implicit_conversion (type, init, tf_warning_or_error);
4623 if (error_operand_p (init))
4624 return error_mark_node;
4625
4626 aggr_init = TARGET_EXPR_INITIAL (init);
4627 array = CONSTRUCTOR_ELT (aggr_init, 0)->value;
4628 arrtype = TREE_TYPE (array);
4629 STRIP_NOPS (array);
4630 gcc_assert (TREE_CODE (array) == ADDR_EXPR);
4631 array = TREE_OPERAND (array, 0);
4632 /* If the array is constant, finish_compound_literal already made it a
4633 static variable and we don't need to do anything here. */
4634 if (decl && TREE_CODE (array) == TARGET_EXPR)
4635 {
4636 tree var = set_up_extended_ref_temp (decl, array, cleanup, array_init);
4637 var = build_address (var);
4638 var = convert (arrtype, var);
4639 CONSTRUCTOR_ELT (aggr_init, 0)->value = var;
4640 }
4641 return init;
4642 }
4643
4644 /* Designated initializers in arrays are not supported in GNU C++.
4645 The parser cannot detect this error since it does not know whether
4646 a given brace-enclosed initializer is for a class type or for an
4647 array. This function checks that CE does not use a designated
4648 initializer. If it does, an error is issued. Returns true if CE
4649 is valid, i.e., does not have a designated initializer. */
4650
4651 static bool
4652 check_array_designated_initializer (const constructor_elt *ce)
4653 {
4654 /* Designated initializers for array elements are not supported. */
4655 if (ce->index)
4656 {
4657 /* The parser only allows identifiers as designated
4658 initializers. */
4659 if (ce->index == error_mark_node)
4660 error ("name used in a GNU-style designated "
4661 "initializer for an array");
4662 else if (TREE_CODE (ce->index) == INTEGER_CST)
4663 /* An index added by reshape_init. */
4664 return true;
4665 else
4666 {
4667 gcc_assert (TREE_CODE (ce->index) == IDENTIFIER_NODE);
4668 error ("name %qD used in a GNU-style designated "
4669 "initializer for an array", ce->index);
4670 }
4671 return false;
4672 }
4673
4674 return true;
4675 }
4676
4677 /* When parsing `int a[] = {1, 2};' we don't know the size of the
4678 array until we finish parsing the initializer. If that's the
4679 situation we're in, update DECL accordingly. */
4680
4681 static void
4682 maybe_deduce_size_from_array_init (tree decl, tree init)
4683 {
4684 tree type = TREE_TYPE (decl);
4685
4686 if (TREE_CODE (type) == ARRAY_TYPE
4687 && TYPE_DOMAIN (type) == NULL_TREE
4688 && TREE_CODE (decl) != TYPE_DECL)
4689 {
4690 /* do_default is really a C-ism to deal with tentative definitions.
4691 But let's leave it here to ease the eventual merge. */
4692 int do_default = !DECL_EXTERNAL (decl);
4693 tree initializer = init ? init : DECL_INITIAL (decl);
4694 int failure = 0;
4695
4696 /* Check that there are no designated initializers in INIT, as
4697 those are not supported in GNU C++, and as the middle-end
4698 will crash if presented with a non-numeric designated
4699 initializer. */
4700 if (initializer && TREE_CODE (initializer) == CONSTRUCTOR)
4701 {
4702 VEC(constructor_elt,gc) *v = CONSTRUCTOR_ELTS (initializer);
4703 constructor_elt *ce;
4704 HOST_WIDE_INT i;
4705 FOR_EACH_VEC_ELT (constructor_elt, v, i, ce)
4706 if (!check_array_designated_initializer (ce))
4707 failure = 1;
4708 }
4709
4710 if (!failure)
4711 {
4712 failure = cp_complete_array_type (&TREE_TYPE (decl), initializer,
4713 do_default);
4714 if (failure == 1)
4715 {
4716 error ("initializer fails to determine size of %qD", decl);
4717 TREE_TYPE (decl) = error_mark_node;
4718 }
4719 else if (failure == 2)
4720 {
4721 if (do_default)
4722 {
4723 error ("array size missing in %qD", decl);
4724 TREE_TYPE (decl) = error_mark_node;
4725 }
4726 /* If a `static' var's size isn't known, make it extern as
4727 well as static, so it does not get allocated. If it's not
4728 `static', then don't mark it extern; finish_incomplete_decl
4729 will give it a default size and it will get allocated. */
4730 else if (!pedantic && TREE_STATIC (decl) && !TREE_PUBLIC (decl))
4731 DECL_EXTERNAL (decl) = 1;
4732 }
4733 else if (failure == 3)
4734 {
4735 error ("zero-size array %qD", decl);
4736 TREE_TYPE (decl) = error_mark_node;
4737 }
4738 }
4739
4740 cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl);
4741
4742 relayout_decl (decl);
4743 }
4744 }
4745
4746 /* Set DECL_SIZE, DECL_ALIGN, etc. for DECL (a VAR_DECL), and issue
4747 any appropriate error messages regarding the layout. */
4748
4749 static void
4750 layout_var_decl (tree decl)
4751 {
4752 tree type;
4753
4754 type = TREE_TYPE (decl);
4755 if (type == error_mark_node)
4756 return;
4757
4758 /* If we haven't already layed out this declaration, do so now.
4759 Note that we must not call complete type for an external object
4760 because it's type might involve templates that we are not
4761 supposed to instantiate yet. (And it's perfectly valid to say
4762 `extern X x' for some incomplete type `X'.) */
4763 if (!DECL_EXTERNAL (decl))
4764 complete_type (type);
4765 if (!DECL_SIZE (decl)
4766 && TREE_TYPE (decl) != error_mark_node
4767 && (COMPLETE_TYPE_P (type)
4768 || (TREE_CODE (type) == ARRAY_TYPE
4769 && !TYPE_DOMAIN (type)
4770 && COMPLETE_TYPE_P (TREE_TYPE (type)))))
4771 layout_decl (decl, 0);
4772
4773 if (!DECL_EXTERNAL (decl) && DECL_SIZE (decl) == NULL_TREE)
4774 {
4775 /* An automatic variable with an incomplete type: that is an error.
4776 Don't talk about array types here, since we took care of that
4777 message in grokdeclarator. */
4778 error ("storage size of %qD isn%'t known", decl);
4779 TREE_TYPE (decl) = error_mark_node;
4780 }
4781 #if 0
4782 /* Keep this code around in case we later want to control debug info
4783 based on whether a type is "used". (jason 1999-11-11) */
4784
4785 else if (!DECL_EXTERNAL (decl) && MAYBE_CLASS_TYPE_P (ttype))
4786 /* Let debugger know it should output info for this type. */
4787 note_debug_info_needed (ttype);
4788
4789 if (TREE_STATIC (decl) && DECL_CLASS_SCOPE_P (decl))
4790 note_debug_info_needed (DECL_CONTEXT (decl));
4791 #endif
4792
4793 if ((DECL_EXTERNAL (decl) || TREE_STATIC (decl))
4794 && DECL_SIZE (decl) != NULL_TREE
4795 && ! TREE_CONSTANT (DECL_SIZE (decl)))
4796 {
4797 if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
4798 constant_expression_warning (DECL_SIZE (decl));
4799 else
4800 {
4801 error ("storage size of %qD isn%'t constant", decl);
4802 TREE_TYPE (decl) = error_mark_node;
4803 }
4804 }
4805 }
4806
4807 /* If a local static variable is declared in an inline function, or if
4808 we have a weak definition, we must endeavor to create only one
4809 instance of the variable at link-time. */
4810
4811 void
4812 maybe_commonize_var (tree decl)
4813 {
4814 /* Static data in a function with comdat linkage also has comdat
4815 linkage. */
4816 if (TREE_STATIC (decl)
4817 /* Don't mess with __FUNCTION__. */
4818 && ! DECL_ARTIFICIAL (decl)
4819 && DECL_FUNCTION_SCOPE_P (decl)
4820 && vague_linkage_p (DECL_CONTEXT (decl)))
4821 {
4822 if (flag_weak)
4823 {
4824 /* With weak symbols, we simply make the variable COMDAT;
4825 that will cause copies in multiple translations units to
4826 be merged. */
4827 comdat_linkage (decl);
4828 }
4829 else
4830 {
4831 if (DECL_INITIAL (decl) == NULL_TREE
4832 || DECL_INITIAL (decl) == error_mark_node)
4833 {
4834 /* Without weak symbols, we can use COMMON to merge
4835 uninitialized variables. */
4836 TREE_PUBLIC (decl) = 1;
4837 DECL_COMMON (decl) = 1;
4838 }
4839 else
4840 {
4841 /* While for initialized variables, we must use internal
4842 linkage -- which means that multiple copies will not
4843 be merged. */
4844 TREE_PUBLIC (decl) = 0;
4845 DECL_COMMON (decl) = 0;
4846 warning_at (input_location, 0,
4847 "sorry: semantics of inline function static "
4848 "data %q+#D are wrong (you%'ll wind up "
4849 "with multiple copies)", decl);
4850 warning_at (DECL_SOURCE_LOCATION (decl), 0,
4851 " you can work around this by removing "
4852 "the initializer");
4853 }
4854 }
4855 }
4856 else if (DECL_LANG_SPECIFIC (decl) && DECL_COMDAT (decl))
4857 /* Set it up again; we might have set DECL_INITIAL since the last
4858 time. */
4859 comdat_linkage (decl);
4860 }
4861
4862 /* Issue an error message if DECL is an uninitialized const variable. */
4863
4864 static void
4865 check_for_uninitialized_const_var (tree decl)
4866 {
4867 tree type = strip_array_types (TREE_TYPE (decl));
4868
4869 /* ``Unless explicitly declared extern, a const object does not have
4870 external linkage and must be initialized. ($8.4; $12.1)'' ARM
4871 7.1.6 */
4872 if (TREE_CODE (decl) == VAR_DECL
4873 && TREE_CODE (type) != REFERENCE_TYPE
4874 && CP_TYPE_CONST_P (type)
4875 && (!TYPE_NEEDS_CONSTRUCTING (type)
4876 || !type_has_user_provided_default_constructor (type))
4877 && !DECL_INITIAL (decl))
4878 {
4879 permerror (DECL_SOURCE_LOCATION (decl),
4880 "uninitialized const %qD", decl);
4881
4882 if (CLASS_TYPE_P (type)
4883 && !type_has_user_provided_default_constructor (type))
4884 {
4885 tree defaulted_ctor;
4886
4887 inform (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (type)),
4888 "%q#T has no user-provided default constructor", type);
4889 defaulted_ctor = in_class_defaulted_default_constructor (type);
4890 if (defaulted_ctor)
4891 inform (DECL_SOURCE_LOCATION (defaulted_ctor),
4892 "constructor is not user-provided because it is "
4893 "explicitly defaulted in the class body");
4894 }
4895 }
4896 }
4897 \f
4898 /* Structure holding the current initializer being processed by reshape_init.
4899 CUR is a pointer to the current element being processed, END is a pointer
4900 after the last element present in the initializer. */
4901 typedef struct reshape_iterator_t
4902 {
4903 constructor_elt *cur;
4904 constructor_elt *end;
4905 } reshape_iter;
4906
4907 static tree reshape_init_r (tree, reshape_iter *, bool, tsubst_flags_t);
4908
4909 /* FIELD is a FIELD_DECL or NULL. In the former case, the value
4910 returned is the next FIELD_DECL (possibly FIELD itself) that can be
4911 initialized. If there are no more such fields, the return value
4912 will be NULL. */
4913
4914 tree
4915 next_initializable_field (tree field)
4916 {
4917 while (field
4918 && (TREE_CODE (field) != FIELD_DECL
4919 || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field))
4920 || DECL_ARTIFICIAL (field)))
4921 field = DECL_CHAIN (field);
4922
4923 return field;
4924 }
4925
4926 /* Subroutine of reshape_init_array and reshape_init_vector, which does
4927 the actual work. ELT_TYPE is the element type of the array. MAX_INDEX is an
4928 INTEGER_CST representing the size of the array minus one (the maximum index),
4929 or NULL_TREE if the array was declared without specifying the size. D is
4930 the iterator within the constructor. */
4931
4932 static tree
4933 reshape_init_array_1 (tree elt_type, tree max_index, reshape_iter *d,
4934 tsubst_flags_t complain)
4935 {
4936 tree new_init;
4937 bool sized_array_p = (max_index != NULL_TREE);
4938 unsigned HOST_WIDE_INT max_index_cst = 0;
4939 unsigned HOST_WIDE_INT index;
4940
4941 /* The initializer for an array is always a CONSTRUCTOR. */
4942 new_init = build_constructor (init_list_type_node, NULL);
4943
4944 if (sized_array_p)
4945 {
4946 /* Minus 1 is used for zero sized arrays. */
4947 if (integer_all_onesp (max_index))
4948 return new_init;
4949
4950 if (host_integerp (max_index, 1))
4951 max_index_cst = tree_low_cst (max_index, 1);
4952 /* sizetype is sign extended, not zero extended. */
4953 else
4954 max_index_cst = tree_low_cst (fold_convert (size_type_node, max_index),
4955 1);
4956 }
4957
4958 /* Loop until there are no more initializers. */
4959 for (index = 0;
4960 d->cur != d->end && (!sized_array_p || index <= max_index_cst);
4961 ++index)
4962 {
4963 tree elt_init;
4964
4965 check_array_designated_initializer (d->cur);
4966 elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false,
4967 complain);
4968 if (elt_init == error_mark_node)
4969 return error_mark_node;
4970 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init),
4971 size_int (index), elt_init);
4972 if (!TREE_CONSTANT (elt_init))
4973 TREE_CONSTANT (new_init) = false;
4974 }
4975
4976 return new_init;
4977 }
4978
4979 /* Subroutine of reshape_init_r, processes the initializers for arrays.
4980 Parameters are the same of reshape_init_r. */
4981
4982 static tree
4983 reshape_init_array (tree type, reshape_iter *d, tsubst_flags_t complain)
4984 {
4985 tree max_index = NULL_TREE;
4986
4987 gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
4988
4989 if (TYPE_DOMAIN (type))
4990 max_index = array_type_nelts (type);
4991
4992 return reshape_init_array_1 (TREE_TYPE (type), max_index, d, complain);
4993 }
4994
4995 /* Subroutine of reshape_init_r, processes the initializers for vectors.
4996 Parameters are the same of reshape_init_r. */
4997
4998 static tree
4999 reshape_init_vector (tree type, reshape_iter *d, tsubst_flags_t complain)
5000 {
5001 tree max_index = NULL_TREE;
5002
5003 gcc_assert (TREE_CODE (type) == VECTOR_TYPE);
5004
5005 if (COMPOUND_LITERAL_P (d->cur->value))
5006 {
5007 tree value = d->cur->value;
5008 if (!same_type_p (TREE_TYPE (value), type))
5009 {
5010 if (complain & tf_error)
5011 error ("invalid type %qT as initializer for a vector of type %qT",
5012 TREE_TYPE (d->cur->value), type);
5013 value = error_mark_node;
5014 }
5015 ++d->cur;
5016 return value;
5017 }
5018
5019 /* For a vector, we initialize it as an array of the appropriate size. */
5020 if (TREE_CODE (type) == VECTOR_TYPE)
5021 max_index = size_int (TYPE_VECTOR_SUBPARTS (type) - 1);
5022
5023 return reshape_init_array_1 (TREE_TYPE (type), max_index, d, complain);
5024 }
5025
5026 /* Subroutine of reshape_init_r, processes the initializers for classes
5027 or union. Parameters are the same of reshape_init_r. */
5028
5029 static tree
5030 reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p,
5031 tsubst_flags_t complain)
5032 {
5033 tree field;
5034 tree new_init;
5035
5036 gcc_assert (CLASS_TYPE_P (type));
5037
5038 /* The initializer for a class is always a CONSTRUCTOR. */
5039 new_init = build_constructor (init_list_type_node, NULL);
5040 field = next_initializable_field (TYPE_FIELDS (type));
5041
5042 if (!field)
5043 {
5044 /* [dcl.init.aggr]
5045
5046 An initializer for an aggregate member that is an
5047 empty class shall have the form of an empty
5048 initializer-list {}. */
5049 if (!first_initializer_p)
5050 {
5051 if (complain & tf_error)
5052 error ("initializer for %qT must be brace-enclosed", type);
5053 return error_mark_node;
5054 }
5055 return new_init;
5056 }
5057
5058 /* Loop through the initializable fields, gathering initializers. */
5059 while (d->cur != d->end)
5060 {
5061 tree field_init;
5062
5063 /* Handle designated initializers, as an extension. */
5064 if (d->cur->index)
5065 {
5066 field = lookup_field_1 (type, d->cur->index, /*want_type=*/false);
5067
5068 if (!field || TREE_CODE (field) != FIELD_DECL)
5069 {
5070 if (complain & tf_error)
5071 error ("%qT has no non-static data member named %qD", type,
5072 d->cur->index);
5073 return error_mark_node;
5074 }
5075 }
5076
5077 /* If we processed all the member of the class, we are done. */
5078 if (!field)
5079 break;
5080
5081 field_init = reshape_init_r (TREE_TYPE (field), d,
5082 /*first_initializer_p=*/false, complain);
5083 if (field_init == error_mark_node)
5084 return error_mark_node;
5085
5086 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), field, field_init);
5087
5088 /* [dcl.init.aggr]
5089
5090 When a union is initialized with a brace-enclosed
5091 initializer, the braces shall only contain an
5092 initializer for the first member of the union. */
5093 if (TREE_CODE (type) == UNION_TYPE)
5094 break;
5095
5096 field = next_initializable_field (DECL_CHAIN (field));
5097 }
5098
5099 return new_init;
5100 }
5101
5102 /* Subroutine of reshape_init, which processes a single initializer (part of
5103 a CONSTRUCTOR). TYPE is the type of the variable being initialized, D is the
5104 iterator within the CONSTRUCTOR which points to the initializer to process.
5105 FIRST_INITIALIZER_P is true if this is the first initializer of the
5106 outermost CONSTRUCTOR node. */
5107
5108 static tree
5109 reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p,
5110 tsubst_flags_t complain)
5111 {
5112 tree init = d->cur->value;
5113
5114 if (error_operand_p (init))
5115 return error_mark_node;
5116
5117 if (TREE_CODE (type) == COMPLEX_TYPE)
5118 {
5119 /* A complex type can be initialized from one or two initializers,
5120 but braces are not elided. */
5121 d->cur++;
5122 if (BRACE_ENCLOSED_INITIALIZER_P (init))
5123 {
5124 if (CONSTRUCTOR_NELTS (init) > 2)
5125 {
5126 if (complain & tf_error)
5127 error ("too many initializers for %qT", type);
5128 else
5129 return error_mark_node;
5130 }
5131 }
5132 else if (first_initializer_p && d->cur != d->end)
5133 {
5134 VEC(constructor_elt, gc) *v = 0;
5135 CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init);
5136 CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, d->cur->value);
5137 d->cur++;
5138 init = build_constructor (init_list_type_node, v);
5139 }
5140 return init;
5141 }
5142
5143 /* A non-aggregate type is always initialized with a single
5144 initializer. */
5145 if (!CP_AGGREGATE_TYPE_P (type))
5146 {
5147 /* It is invalid to initialize a non-aggregate type with a
5148 brace-enclosed initializer before C++0x.
5149 We need to check for BRACE_ENCLOSED_INITIALIZER_P here because
5150 of g++.old-deja/g++.mike/p7626.C: a pointer-to-member constant is
5151 a CONSTRUCTOR (with a record type). */
5152 if (TREE_CODE (init) == CONSTRUCTOR
5153 && BRACE_ENCLOSED_INITIALIZER_P (init)) /* p7626.C */
5154 {
5155 if (SCALAR_TYPE_P (type))
5156 {
5157 if (complain & tf_error)
5158 error ("braces around scalar initializer for type %qT", type);
5159 init = error_mark_node;
5160 }
5161 else
5162 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
5163 }
5164
5165 d->cur++;
5166 return init;
5167 }
5168
5169 /* [dcl.init.aggr]
5170
5171 All implicit type conversions (clause _conv_) are considered when
5172 initializing the aggregate member with an initializer from an
5173 initializer-list. If the initializer can initialize a member,
5174 the member is initialized. Otherwise, if the member is itself a
5175 non-empty subaggregate, brace elision is assumed and the
5176 initializer is considered for the initialization of the first
5177 member of the subaggregate. */
5178 if (TREE_CODE (init) != CONSTRUCTOR
5179 /* But don't try this for the first initializer, since that would be
5180 looking through the outermost braces; A a2 = { a1 }; is not a
5181 valid aggregate initialization. */
5182 && !first_initializer_p
5183 && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (init))
5184 || can_convert_arg (type, TREE_TYPE (init), init, LOOKUP_NORMAL)))
5185 {
5186 d->cur++;
5187 return init;
5188 }
5189
5190 /* [dcl.init.string]
5191
5192 A char array (whether plain char, signed char, or unsigned char)
5193 can be initialized by a string-literal (optionally enclosed in
5194 braces); a wchar_t array can be initialized by a wide
5195 string-literal (optionally enclosed in braces). */
5196 if (TREE_CODE (type) == ARRAY_TYPE
5197 && char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (type))))
5198 {
5199 tree str_init = init;
5200
5201 /* Strip one level of braces if and only if they enclose a single
5202 element (as allowed by [dcl.init.string]). */
5203 if (!first_initializer_p
5204 && TREE_CODE (str_init) == CONSTRUCTOR
5205 && VEC_length (constructor_elt, CONSTRUCTOR_ELTS (str_init)) == 1)
5206 {
5207 str_init = VEC_index (constructor_elt,
5208 CONSTRUCTOR_ELTS (str_init), 0)->value;
5209 }
5210
5211 /* If it's a string literal, then it's the initializer for the array
5212 as a whole. Otherwise, continue with normal initialization for
5213 array types (one value per array element). */
5214 if (TREE_CODE (str_init) == STRING_CST)
5215 {
5216 d->cur++;
5217 return str_init;
5218 }
5219 }
5220
5221 /* The following cases are about aggregates. If we are not within a full
5222 initializer already, and there is not a CONSTRUCTOR, it means that there
5223 is a missing set of braces (that is, we are processing the case for
5224 which reshape_init exists). */
5225 if (!first_initializer_p)
5226 {
5227 if (TREE_CODE (init) == CONSTRUCTOR)
5228 {
5229 if (TREE_TYPE (init) && TYPE_PTRMEMFUNC_P (TREE_TYPE (init)))
5230 /* There is no need to reshape pointer-to-member function
5231 initializers, as they are always constructed correctly
5232 by the front end. */
5233 ;
5234 else if (COMPOUND_LITERAL_P (init))
5235 /* For a nested compound literal, there is no need to reshape since
5236 brace elision is not allowed. Even if we decided to allow it,
5237 we should add a call to reshape_init in finish_compound_literal,
5238 before calling digest_init, so changing this code would still
5239 not be necessary. */
5240 gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init));
5241 else
5242 {
5243 ++d->cur;
5244 gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init));
5245 return reshape_init (type, init, complain);
5246 }
5247 }
5248
5249 warning (OPT_Wmissing_braces, "missing braces around initializer for %qT",
5250 type);
5251 }
5252
5253 /* Dispatch to specialized routines. */
5254 if (CLASS_TYPE_P (type))
5255 return reshape_init_class (type, d, first_initializer_p, complain);
5256 else if (TREE_CODE (type) == ARRAY_TYPE)
5257 return reshape_init_array (type, d, complain);
5258 else if (TREE_CODE (type) == VECTOR_TYPE)
5259 return reshape_init_vector (type, d, complain);
5260 else
5261 gcc_unreachable();
5262 }
5263
5264 /* Undo the brace-elision allowed by [dcl.init.aggr] in a
5265 brace-enclosed aggregate initializer.
5266
5267 INIT is the CONSTRUCTOR containing the list of initializers describing
5268 a brace-enclosed initializer for an entity of the indicated aggregate TYPE.
5269 It may not presently match the shape of the TYPE; for example:
5270
5271 struct S { int a; int b; };
5272 struct S a[] = { 1, 2, 3, 4 };
5273
5274 Here INIT will hold a VEC of four elements, rather than a
5275 VEC of two elements, each itself a VEC of two elements. This
5276 routine transforms INIT from the former form into the latter. The
5277 revised CONSTRUCTOR node is returned. */
5278
5279 tree
5280 reshape_init (tree type, tree init, tsubst_flags_t complain)
5281 {
5282 VEC(constructor_elt, gc) *v;
5283 reshape_iter d;
5284 tree new_init;
5285
5286 gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init));
5287
5288 v = CONSTRUCTOR_ELTS (init);
5289
5290 /* An empty constructor does not need reshaping, and it is always a valid
5291 initializer. */
5292 if (VEC_empty (constructor_elt, v))
5293 return init;
5294
5295 /* Recurse on this CONSTRUCTOR. */
5296 d.cur = VEC_index (constructor_elt, v, 0);
5297 d.end = d.cur + VEC_length (constructor_elt, v);
5298
5299 new_init = reshape_init_r (type, &d, true, complain);
5300 if (new_init == error_mark_node)
5301 return error_mark_node;
5302
5303 /* Make sure all the element of the constructor were used. Otherwise,
5304 issue an error about exceeding initializers. */
5305 if (d.cur != d.end)
5306 {
5307 if (complain & tf_error)
5308 error ("too many initializers for %qT", type);
5309 else
5310 return error_mark_node;
5311 }
5312
5313 return new_init;
5314 }
5315
5316 /* Verify array initializer. Returns true if errors have been reported. */
5317
5318 bool
5319 check_array_initializer (tree decl, tree type, tree init)
5320 {
5321 tree element_type = TREE_TYPE (type);
5322
5323 /* The array type itself need not be complete, because the
5324 initializer may tell us how many elements are in the array.
5325 But, the elements of the array must be complete. */
5326 if (!COMPLETE_TYPE_P (complete_type (element_type)))
5327 {
5328 if (decl)
5329 error ("elements of array %q#D have incomplete type", decl);
5330 else
5331 error ("elements of array %q#T have incomplete type", type);
5332 return true;
5333 }
5334 /* It is not valid to initialize a VLA. */
5335 if (init
5336 && ((COMPLETE_TYPE_P (type) && !TREE_CONSTANT (TYPE_SIZE (type)))
5337 || !TREE_CONSTANT (TYPE_SIZE (element_type))))
5338 {
5339 if (decl)
5340 error ("variable-sized object %qD may not be initialized", decl);
5341 else
5342 error ("variable-sized compound literal");
5343 return true;
5344 }
5345 return false;
5346 }
5347
5348 /* Subroutine of check_initializer; args are passed down from that function.
5349 Set stmts_are_full_exprs_p to 1 across a call to build_aggr_init. */
5350
5351 static tree
5352 build_aggr_init_full_exprs (tree decl, tree init, int flags)
5353
5354 {
5355 int saved_stmts_are_full_exprs_p = 0;
5356 if (building_stmt_list_p ())
5357 {
5358 saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p ();
5359 current_stmt_tree ()->stmts_are_full_exprs_p = 1;
5360 }
5361 init = build_aggr_init (decl, init, flags, tf_warning_or_error);
5362 if (building_stmt_list_p ())
5363 current_stmt_tree ()->stmts_are_full_exprs_p =
5364 saved_stmts_are_full_exprs_p;
5365 return init;
5366 }
5367
5368 /* Verify INIT (the initializer for DECL), and record the
5369 initialization in DECL_INITIAL, if appropriate. CLEANUP is as for
5370 grok_reference_init.
5371
5372 If the return value is non-NULL, it is an expression that must be
5373 evaluated dynamically to initialize DECL. */
5374
5375 static tree
5376 check_initializer (tree decl, tree init, int flags, tree *cleanup)
5377 {
5378 tree type = TREE_TYPE (decl);
5379 tree init_code = NULL;
5380 tree extra_init = NULL_TREE;
5381 tree core_type;
5382
5383 /* Things that are going to be initialized need to have complete
5384 type. */
5385 TREE_TYPE (decl) = type = complete_type (TREE_TYPE (decl));
5386
5387 if (type == error_mark_node)
5388 /* We will have already complained. */
5389 return NULL_TREE;
5390
5391 if (TREE_CODE (type) == ARRAY_TYPE)
5392 {
5393 if (check_array_initializer (decl, type, init))
5394 return NULL_TREE;
5395 }
5396 else if (!COMPLETE_TYPE_P (type))
5397 {
5398 error ("%qD has incomplete type", decl);
5399 TREE_TYPE (decl) = error_mark_node;
5400 return NULL_TREE;
5401 }
5402 else
5403 /* There is no way to make a variable-sized class type in GNU C++. */
5404 gcc_assert (TREE_CONSTANT (TYPE_SIZE (type)));
5405
5406 if (init && BRACE_ENCLOSED_INITIALIZER_P (init))
5407 {
5408 int init_len = VEC_length (constructor_elt, CONSTRUCTOR_ELTS (init));
5409 if (SCALAR_TYPE_P (type))
5410 {
5411 if (init_len == 0)
5412 {
5413 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);
5414 init = build_zero_init (type, NULL_TREE, false);
5415 }
5416 else if (init_len != 1 && TREE_CODE (type) != COMPLEX_TYPE)
5417 {
5418 error ("scalar object %qD requires one element in initializer",
5419 decl);
5420 TREE_TYPE (decl) = error_mark_node;
5421 return NULL_TREE;
5422 }
5423 }
5424 }
5425
5426 if (TREE_CODE (decl) == CONST_DECL)
5427 {
5428 gcc_assert (TREE_CODE (type) != REFERENCE_TYPE);
5429
5430 DECL_INITIAL (decl) = init;
5431
5432 gcc_assert (init != NULL_TREE);
5433 init = NULL_TREE;
5434 }
5435 else if (!init && DECL_REALLY_EXTERN (decl))
5436 ;
5437 else if (TREE_CODE (type) == REFERENCE_TYPE)
5438 init = grok_reference_init (decl, type, init, cleanup);
5439 else if (init || type_build_ctor_call (type))
5440 {
5441 if (!init)
5442 check_for_uninitialized_const_var (decl);
5443 /* Do not reshape constructors of vectors (they don't need to be
5444 reshaped. */
5445 else if (BRACE_ENCLOSED_INITIALIZER_P (init))
5446 {
5447 if (is_std_init_list (type))
5448 init = build_init_list_var_init (decl, type, init,
5449 &extra_init, cleanup);
5450 else if (TYPE_NON_AGGREGATE_CLASS (type))
5451 {
5452 /* Don't reshape if the class has constructors. */
5453 if (cxx_dialect == cxx98)
5454 error ("in C++98 %qD must be initialized by constructor, "
5455 "not by %<{...}%>",
5456 decl);
5457 }
5458 else if (TREE_CODE (type) == VECTOR_TYPE && TYPE_VECTOR_OPAQUE (type))
5459 {
5460 error ("opaque vector types cannot be initialized");
5461 init = error_mark_node;
5462 }
5463 else
5464 init = reshape_init (type, init, tf_warning_or_error);
5465 }
5466
5467 /* If DECL has an array type without a specific bound, deduce the
5468 array size from the initializer. */
5469 maybe_deduce_size_from_array_init (decl, init);
5470 type = TREE_TYPE (decl);
5471 if (type == error_mark_node)
5472 return NULL_TREE;
5473
5474 if (type_build_ctor_call (type)
5475 || (CLASS_TYPE_P (type)
5476 && !(init && BRACE_ENCLOSED_INITIALIZER_P (init))))
5477 {
5478 init_code = build_aggr_init_full_exprs (decl, init, flags);
5479
5480 /* If this is a constexpr initializer, expand_default_init will
5481 have returned an INIT_EXPR rather than a CALL_EXPR. In that
5482 case, pull the initializer back out and pass it down into
5483 store_init_value. */
5484 while (TREE_CODE (init_code) == EXPR_STMT
5485 || TREE_CODE (init_code) == CONVERT_EXPR)
5486 init_code = TREE_OPERAND (init_code, 0);
5487 if (TREE_CODE (init_code) == INIT_EXPR)
5488 {
5489 init = TREE_OPERAND (init_code, 1);
5490 init_code = NULL_TREE;
5491 /* Don't call digest_init; it's unnecessary and will complain
5492 about aggregate initialization of non-aggregate classes. */
5493 flags |= LOOKUP_ALREADY_DIGESTED;
5494 }
5495 else if (DECL_DECLARED_CONSTEXPR_P (decl))
5496 {
5497 /* Declared constexpr, but no suitable initializer; massage
5498 init appropriately so we can pass it into store_init_value
5499 for the error. */
5500 if (init && BRACE_ENCLOSED_INITIALIZER_P (init))
5501 init = finish_compound_literal (type, init,
5502 tf_warning_or_error);
5503 else if (CLASS_TYPE_P (type)
5504 && (!init || TREE_CODE (init) == TREE_LIST))
5505 {
5506 init = build_functional_cast (type, init, tf_none);
5507 if (init != error_mark_node)
5508 TARGET_EXPR_DIRECT_INIT_P (init) = true;
5509 }
5510 init_code = NULL_TREE;
5511 }
5512 else
5513 init = NULL_TREE;
5514 }
5515
5516 if (init && TREE_CODE (init) != TREE_VEC)
5517 {
5518 init_code = store_init_value (decl, init, flags);
5519 if (pedantic && TREE_CODE (type) == ARRAY_TYPE
5520 && DECL_INITIAL (decl)
5521 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST
5522 && PAREN_STRING_LITERAL_P (DECL_INITIAL (decl)))
5523 warning (0, "array %qD initialized by parenthesized string literal %qE",
5524 decl, DECL_INITIAL (decl));
5525 init = NULL;
5526 }
5527 }
5528 else
5529 {
5530 if (CLASS_TYPE_P (core_type = strip_array_types (type))
5531 && (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type)
5532 || CLASSTYPE_REF_FIELDS_NEED_INIT (core_type)))
5533 diagnose_uninitialized_cst_or_ref_member (core_type, /*using_new=*/false,
5534 /*complain=*/true);
5535
5536 check_for_uninitialized_const_var (decl);
5537 }
5538
5539 if (init && init != error_mark_node)
5540 init_code = build2 (INIT_EXPR, type, decl, init);
5541
5542 if (extra_init)
5543 init_code = add_stmt_to_compound (extra_init, init_code);
5544
5545 if (init_code && DECL_IN_AGGR_P (decl))
5546 {
5547 static int explained = 0;
5548
5549 if (cxx_dialect < cxx0x)
5550 error ("initializer invalid for static member with constructor");
5551 else
5552 error ("non-constant in-class initialization invalid for static "
5553 "member %qD", decl);
5554 if (!explained)
5555 {
5556 error ("(an out of class initialization is required)");
5557 explained = 1;
5558 }
5559 }
5560
5561 return init_code;
5562 }
5563
5564 /* If DECL is not a local variable, give it RTL. */
5565
5566 static void
5567 make_rtl_for_nonlocal_decl (tree decl, tree init, const char* asmspec)
5568 {
5569 int toplev = toplevel_bindings_p ();
5570 int defer_p;
5571 const char *filename;
5572
5573 /* Set the DECL_ASSEMBLER_NAME for the object. */
5574 if (asmspec)
5575 {
5576 /* The `register' keyword, when used together with an
5577 asm-specification, indicates that the variable should be
5578 placed in a particular register. */
5579 if (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
5580 {
5581 set_user_assembler_name (decl, asmspec);
5582 DECL_HARD_REGISTER (decl) = 1;
5583 }
5584 else
5585 {
5586 if (TREE_CODE (decl) == FUNCTION_DECL
5587 && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
5588 set_builtin_user_assembler_name (decl, asmspec);
5589 set_user_assembler_name (decl, asmspec);
5590 }
5591 }
5592
5593 /* Handle non-variables up front. */
5594 if (TREE_CODE (decl) != VAR_DECL)
5595 {
5596 rest_of_decl_compilation (decl, toplev, at_eof);
5597 return;
5598 }
5599
5600 /* If we see a class member here, it should be a static data
5601 member. */
5602 if (DECL_LANG_SPECIFIC (decl) && DECL_IN_AGGR_P (decl))
5603 {
5604 gcc_assert (TREE_STATIC (decl));
5605 /* An in-class declaration of a static data member should be
5606 external; it is only a declaration, and not a definition. */
5607 if (init == NULL_TREE)
5608 gcc_assert (DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl));
5609 }
5610
5611 /* We don't create any RTL for local variables. */
5612 if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl))
5613 return;
5614
5615 /* We defer emission of local statics until the corresponding
5616 DECL_EXPR is expanded. */
5617 defer_p = DECL_FUNCTION_SCOPE_P (decl) || DECL_VIRTUAL_P (decl);
5618
5619 /* We try to defer namespace-scope static constants so that they are
5620 not emitted into the object file unnecessarily. */
5621 filename = input_filename;
5622 if (!DECL_VIRTUAL_P (decl)
5623 && TREE_READONLY (decl)
5624 && DECL_INITIAL (decl) != NULL_TREE
5625 && DECL_INITIAL (decl) != error_mark_node
5626 && filename != NULL
5627 && ! EMPTY_CONSTRUCTOR_P (DECL_INITIAL (decl))
5628 && toplev
5629 && !TREE_PUBLIC (decl))
5630 {
5631 /* Fool with the linkage of static consts according to #pragma
5632 interface. */
5633 struct c_fileinfo *finfo = get_fileinfo (filename);
5634 if (!finfo->interface_unknown && !TREE_PUBLIC (decl))
5635 {
5636 TREE_PUBLIC (decl) = 1;
5637 DECL_EXTERNAL (decl) = finfo->interface_only;
5638 }
5639
5640 defer_p = 1;
5641 }
5642 /* Likewise for template instantiations. */
5643 else if (DECL_LANG_SPECIFIC (decl)
5644 && DECL_IMPLICIT_INSTANTIATION (decl))
5645 defer_p = 1;
5646
5647 /* If we're not deferring, go ahead and assemble the variable. */
5648 if (!defer_p)
5649 rest_of_decl_compilation (decl, toplev, at_eof);
5650 }
5651
5652 /* walk_tree helper for wrap_temporary_cleanups, below. */
5653
5654 static tree
5655 wrap_cleanups_r (tree *stmt_p, int *walk_subtrees, void *data)
5656 {
5657 if (TYPE_P (*stmt_p))
5658 {
5659 *walk_subtrees = 0;
5660 return NULL_TREE;
5661 }
5662
5663 if (TREE_CODE (*stmt_p) == TARGET_EXPR)
5664 {
5665 tree guard = (tree)data;
5666 tree tcleanup = TARGET_EXPR_CLEANUP (*stmt_p);
5667
5668 tcleanup = build2 (TRY_CATCH_EXPR, void_type_node, tcleanup, guard);
5669 /* Tell honor_protect_cleanup_actions to handle this as a separate
5670 cleanup. */
5671 TRY_CATCH_IS_CLEANUP (tcleanup) = 1;
5672
5673 TARGET_EXPR_CLEANUP (*stmt_p) = tcleanup;
5674 }
5675
5676 return NULL_TREE;
5677 }
5678
5679 /* We're initializing a local variable which has a cleanup GUARD. If there
5680 are any temporaries used in the initializer INIT of this variable, we
5681 need to wrap their cleanups with TRY_CATCH_EXPR (, GUARD) so that the
5682 variable will be cleaned up properly if one of them throws.
5683
5684 Unfortunately, there's no way to express this properly in terms of
5685 nesting, as the regions for the temporaries overlap the region for the
5686 variable itself; if there are two temporaries, the variable needs to be
5687 the first thing destroyed if either of them throws. However, we only
5688 want to run the variable's cleanup if it actually got constructed. So
5689 we need to guard the temporary cleanups with the variable's cleanup if
5690 they are run on the normal path, but not if they are run on the
5691 exceptional path. We implement this by telling
5692 honor_protect_cleanup_actions to strip the variable cleanup from the
5693 exceptional path. */
5694
5695 static void
5696 wrap_temporary_cleanups (tree init, tree guard)
5697 {
5698 cp_walk_tree_without_duplicates (&init, wrap_cleanups_r, (void *)guard);
5699 }
5700
5701 /* Generate code to initialize DECL (a local variable). */
5702
5703 static void
5704 initialize_local_var (tree decl, tree init)
5705 {
5706 tree type = TREE_TYPE (decl);
5707 tree cleanup;
5708 int already_used;
5709
5710 gcc_assert (TREE_CODE (decl) == VAR_DECL
5711 || TREE_CODE (decl) == RESULT_DECL);
5712 gcc_assert (!TREE_STATIC (decl));
5713
5714 if (DECL_SIZE (decl) == NULL_TREE)
5715 {
5716 /* If we used it already as memory, it must stay in memory. */
5717 DECL_INITIAL (decl) = NULL_TREE;
5718 TREE_ADDRESSABLE (decl) = TREE_USED (decl);
5719 return;
5720 }
5721
5722 if (type == error_mark_node)
5723 return;
5724
5725 /* Compute and store the initial value. */
5726 already_used = TREE_USED (decl) || TREE_USED (type);
5727 if (TREE_USED (type))
5728 DECL_READ_P (decl) = 1;
5729
5730 /* Generate a cleanup, if necessary. */
5731 cleanup = cxx_maybe_build_cleanup (decl, tf_warning_or_error);
5732
5733 /* Perform the initialization. */
5734 if (init)
5735 {
5736 if (TREE_CODE (init) == INIT_EXPR
5737 && !TREE_SIDE_EFFECTS (TREE_OPERAND (init, 1)))
5738 {
5739 /* Stick simple initializers in DECL_INITIAL so that
5740 -Wno-init-self works (c++/34772). */
5741 gcc_assert (TREE_OPERAND (init, 0) == decl);
5742 DECL_INITIAL (decl) = TREE_OPERAND (init, 1);
5743 }
5744 else
5745 {
5746 int saved_stmts_are_full_exprs_p;
5747
5748 /* If we're only initializing a single object, guard the
5749 destructors of any temporaries used in its initializer with
5750 its destructor. This isn't right for arrays because each
5751 element initialization is a full-expression. */
5752 if (cleanup && TREE_CODE (type) != ARRAY_TYPE)
5753 wrap_temporary_cleanups (init, cleanup);
5754
5755 gcc_assert (building_stmt_list_p ());
5756 saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p ();
5757 current_stmt_tree ()->stmts_are_full_exprs_p = 1;
5758 finish_expr_stmt (init);
5759 current_stmt_tree ()->stmts_are_full_exprs_p =
5760 saved_stmts_are_full_exprs_p;
5761 }
5762 }
5763
5764 /* Set this to 0 so we can tell whether an aggregate which was
5765 initialized was ever used. Don't do this if it has a
5766 destructor, so we don't complain about the 'resource
5767 allocation is initialization' idiom. Now set
5768 attribute((unused)) on types so decls of that type will be
5769 marked used. (see TREE_USED, above.) */
5770 if (TYPE_NEEDS_CONSTRUCTING (type)
5771 && ! already_used
5772 && TYPE_HAS_TRIVIAL_DESTRUCTOR (type)
5773 && DECL_NAME (decl))
5774 TREE_USED (decl) = 0;
5775 else if (already_used)
5776 TREE_USED (decl) = 1;
5777
5778 if (cleanup)
5779 finish_decl_cleanup (decl, cleanup);
5780 }
5781
5782 /* DECL is a VAR_DECL for a compiler-generated variable with static
5783 storage duration (like a virtual table) whose initializer is a
5784 compile-time constant. Initialize the variable and provide it to the
5785 back end. */
5786
5787 void
5788 initialize_artificial_var (tree decl, VEC(constructor_elt,gc) *v)
5789 {
5790 tree init;
5791 gcc_assert (DECL_ARTIFICIAL (decl));
5792 init = build_constructor (TREE_TYPE (decl), v);
5793 gcc_assert (TREE_CODE (init) == CONSTRUCTOR);
5794 DECL_INITIAL (decl) = init;
5795 DECL_INITIALIZED_P (decl) = 1;
5796 determine_visibility (decl);
5797 layout_var_decl (decl);
5798 maybe_commonize_var (decl);
5799 make_rtl_for_nonlocal_decl (decl, init, /*asmspec=*/NULL);
5800 }
5801
5802 /* INIT is the initializer for a variable, as represented by the
5803 parser. Returns true iff INIT is type-dependent. */
5804
5805 static bool
5806 type_dependent_init_p (tree init)
5807 {
5808 if (TREE_CODE (init) == TREE_LIST)
5809 /* A parenthesized initializer, e.g.: int i (3, 2); ? */
5810 return any_type_dependent_elements_p (init);
5811 else if (TREE_CODE (init) == CONSTRUCTOR)
5812 /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */
5813 {
5814 VEC(constructor_elt, gc) *elts;
5815 size_t nelts;
5816 size_t i;
5817
5818 elts = CONSTRUCTOR_ELTS (init);
5819 nelts = VEC_length (constructor_elt, elts);
5820 for (i = 0; i < nelts; ++i)
5821 if (type_dependent_init_p (VEC_index (constructor_elt,
5822 elts, i)->value))
5823 return true;
5824 }
5825 else
5826 /* It must be a simple expression, e.g., int i = 3; */
5827 return type_dependent_expression_p (init);
5828
5829 return false;
5830 }
5831
5832 /* INIT is the initializer for a variable, as represented by the
5833 parser. Returns true iff INIT is value-dependent. */
5834
5835 static bool
5836 value_dependent_init_p (tree init)
5837 {
5838 if (TREE_CODE (init) == TREE_LIST)
5839 /* A parenthesized initializer, e.g.: int i (3, 2); ? */
5840 return any_value_dependent_elements_p (init);
5841 else if (TREE_CODE (init) == CONSTRUCTOR)
5842 /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */
5843 {
5844 VEC(constructor_elt, gc) *elts;
5845 size_t nelts;
5846 size_t i;
5847
5848 elts = CONSTRUCTOR_ELTS (init);
5849 nelts = VEC_length (constructor_elt, elts);
5850 for (i = 0; i < nelts; ++i)
5851 if (value_dependent_init_p (VEC_index (constructor_elt,
5852 elts, i)->value))
5853 return true;
5854 }
5855 else
5856 /* It must be a simple expression, e.g., int i = 3; */
5857 return value_dependent_expression_p (init);
5858
5859 return false;
5860 }
5861
5862 /* Finish processing of a declaration;
5863 install its line number and initial value.
5864 If the length of an array type is not known before,
5865 it must be determined now, from the initial value, or it is an error.
5866
5867 INIT is the initializer (if any) for DECL. If INIT_CONST_EXPR_P is
5868 true, then INIT is an integral constant expression.
5869
5870 FLAGS is LOOKUP_ONLYCONVERTING if the = init syntax was used, else 0
5871 if the (init) syntax was used. */
5872
5873 void
5874 cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
5875 tree asmspec_tree, int flags)
5876 {
5877 tree type;
5878 tree cleanup;
5879 const char *asmspec = NULL;
5880 int was_readonly = 0;
5881 bool var_definition_p = false;
5882 tree auto_node;
5883
5884 if (decl == error_mark_node)
5885 return;
5886 else if (! decl)
5887 {
5888 if (init)
5889 error ("assignment (not initialization) in declaration");
5890 return;
5891 }
5892
5893 gcc_assert (TREE_CODE (decl) != RESULT_DECL);
5894 /* Parameters are handled by store_parm_decls, not cp_finish_decl. */
5895 gcc_assert (TREE_CODE (decl) != PARM_DECL);
5896
5897 type = TREE_TYPE (decl);
5898 if (type == error_mark_node)
5899 return;
5900
5901 /* Assume no cleanup is required. */
5902 cleanup = NULL_TREE;
5903
5904 /* If a name was specified, get the string. */
5905 if (global_scope_p (current_binding_level))
5906 asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree);
5907 if (asmspec_tree && asmspec_tree != error_mark_node)
5908 asmspec = TREE_STRING_POINTER (asmspec_tree);
5909
5910 if (current_class_type
5911 && CP_DECL_CONTEXT (decl) == current_class_type
5912 && TYPE_BEING_DEFINED (current_class_type)
5913 && !CLASSTYPE_TEMPLATE_INSTANTIATION (current_class_type)
5914 && (DECL_INITIAL (decl) || init))
5915 DECL_INITIALIZED_IN_CLASS_P (decl) = 1;
5916
5917 auto_node = type_uses_auto (type);
5918 if (auto_node)
5919 {
5920 tree d_init;
5921 if (init == NULL_TREE)
5922 {
5923 error ("declaration of %q#D has no initializer", decl);
5924 TREE_TYPE (decl) = error_mark_node;
5925 return;
5926 }
5927 d_init = init;
5928 if (TREE_CODE (d_init) == TREE_LIST)
5929 d_init = build_x_compound_expr_from_list (d_init, ELK_INIT,
5930 tf_warning_or_error);
5931 d_init = resolve_nondeduced_context (d_init);
5932 if (describable_type (d_init))
5933 {
5934 type = TREE_TYPE (decl) = do_auto_deduction (type, d_init,
5935 auto_node);
5936 if (type == error_mark_node)
5937 return;
5938 }
5939 }
5940
5941 if (!ensure_literal_type_for_constexpr_object (decl))
5942 DECL_DECLARED_CONSTEXPR_P (decl) = 0;
5943
5944 if (TREE_CODE (decl) == VAR_DECL
5945 && DECL_CLASS_SCOPE_P (decl)
5946 && DECL_INITIALIZED_IN_CLASS_P (decl))
5947 check_static_variable_definition (decl, type);
5948
5949 if (init && TREE_CODE (decl) == FUNCTION_DECL)
5950 {
5951 tree clone;
5952 if (init == ridpointers[(int)RID_DELETE])
5953 {
5954 /* FIXME check this is 1st decl. */
5955 DECL_DELETED_FN (decl) = 1;
5956 DECL_DECLARED_INLINE_P (decl) = 1;
5957 DECL_INITIAL (decl) = error_mark_node;
5958 FOR_EACH_CLONE (clone, decl)
5959 {
5960 DECL_DELETED_FN (clone) = 1;
5961 DECL_DECLARED_INLINE_P (clone) = 1;
5962 DECL_INITIAL (clone) = error_mark_node;
5963 }
5964 init = NULL_TREE;
5965 }
5966 else if (init == ridpointers[(int)RID_DEFAULT])
5967 {
5968 if (defaultable_fn_check (decl))
5969 DECL_DEFAULTED_FN (decl) = 1;
5970 else
5971 DECL_INITIAL (decl) = NULL_TREE;
5972 }
5973 }
5974
5975 if (init && TREE_CODE (decl) == VAR_DECL)
5976 {
5977 DECL_NONTRIVIALLY_INITIALIZED_P (decl) = 1;
5978 if (init_const_expr_p)
5979 {
5980 /* Set these flags now for templates. We'll update the flags in
5981 store_init_value for instantiations. */
5982 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = 1;
5983 if (decl_maybe_constant_var_p (decl))
5984 TREE_CONSTANT (decl) = 1;
5985 }
5986 }
5987
5988 if (processing_template_decl)
5989 {
5990 bool type_dependent_p;
5991
5992 /* Add this declaration to the statement-tree. */
5993 if (at_function_scope_p ())
5994 add_decl_expr (decl);
5995
5996 type_dependent_p = dependent_type_p (type);
5997
5998 if (check_for_bare_parameter_packs (init))
5999 {
6000 init = NULL_TREE;
6001 DECL_INITIAL (decl) = NULL_TREE;
6002 }
6003
6004 /* Generally, initializers in templates are expanded when the
6005 template is instantiated. But, if DECL is a variable constant
6006 then it can be used in future constant expressions, so its value
6007 must be available. */
6008
6009 if (TREE_CODE (decl) != VAR_DECL || dependent_type_p (type))
6010 /* We can't do anything if the decl has dependent type. */;
6011 else if (init
6012 && init_const_expr_p
6013 && !type_dependent_p
6014 && decl_maybe_constant_var_p (decl)
6015 && !type_dependent_init_p (init)
6016 && !value_dependent_init_p (init))
6017 {
6018 /* This variable seems to be a non-dependent constant, so process
6019 its initializer. If check_initializer returns non-null the
6020 initialization wasn't constant after all. */
6021 tree init_code = check_initializer (decl, init, flags, &cleanup);
6022 if (init_code == NULL_TREE)
6023 init = NULL_TREE;
6024 }
6025 else if (!DECL_PRETTY_FUNCTION_P (decl))
6026 /* Deduce array size even if the initializer is dependent. */
6027 maybe_deduce_size_from_array_init (decl, init);
6028
6029 if (init)
6030 DECL_INITIAL (decl) = init;
6031 return;
6032 }
6033
6034 /* Take care of TYPE_DECLs up front. */
6035 if (TREE_CODE (decl) == TYPE_DECL)
6036 {
6037 if (type != error_mark_node
6038 && MAYBE_CLASS_TYPE_P (type) && DECL_NAME (decl))
6039 {
6040 if (TREE_TYPE (DECL_NAME (decl)) && TREE_TYPE (decl) != type)
6041 warning (0, "shadowing previous type declaration of %q#D", decl);
6042 set_identifier_type_value (DECL_NAME (decl), decl);
6043 }
6044
6045 /* If we have installed this as the canonical typedef for this
6046 type, and that type has not been defined yet, delay emitting
6047 the debug information for it, as we will emit it later. */
6048 if (TYPE_MAIN_DECL (TREE_TYPE (decl)) == decl
6049 && !COMPLETE_TYPE_P (TREE_TYPE (decl)))
6050 TYPE_DECL_SUPPRESS_DEBUG (decl) = 1;
6051
6052 rest_of_decl_compilation (decl, DECL_FILE_SCOPE_P (decl),
6053 at_eof);
6054 return;
6055 }
6056
6057 /* A reference will be modified here, as it is initialized. */
6058 if (! DECL_EXTERNAL (decl)
6059 && TREE_READONLY (decl)
6060 && TREE_CODE (type) == REFERENCE_TYPE)
6061 {
6062 was_readonly = 1;
6063 TREE_READONLY (decl) = 0;
6064 }
6065
6066 if (TREE_CODE (decl) == VAR_DECL)
6067 {
6068 /* Only variables with trivial initialization and destruction can
6069 have thread-local storage. */
6070 if (DECL_THREAD_LOCAL_P (decl)
6071 && (type_has_nontrivial_default_init (TREE_TYPE (decl))
6072 || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
6073 error ("%qD cannot be thread-local because it has non-trivial "
6074 "type %qT", decl, TREE_TYPE (decl));
6075 /* If this is a local variable that will need a mangled name,
6076 register it now. We must do this before processing the
6077 initializer for the variable, since the initialization might
6078 require a guard variable, and since the mangled name of the
6079 guard variable will depend on the mangled name of this
6080 variable. */
6081 if (DECL_FUNCTION_SCOPE_P (decl)
6082 && TREE_STATIC (decl)
6083 && !DECL_ARTIFICIAL (decl))
6084 {
6085 push_local_name (decl);
6086 if (DECL_CONSTRUCTOR_P (current_function_decl)
6087 || DECL_DESTRUCTOR_P (current_function_decl))
6088 /* Normally local_decls is populated during GIMPLE lowering,
6089 but [cd]tors are never actually compiled directly. We need
6090 to put statics on the list so we can deal with the label
6091 address extension. */
6092 add_local_decl (cfun, decl);
6093 }
6094
6095 /* Convert the initializer to the type of DECL, if we have not
6096 already initialized DECL. */
6097 if (!DECL_INITIALIZED_P (decl)
6098 /* If !DECL_EXTERNAL then DECL is being defined. In the
6099 case of a static data member initialized inside the
6100 class-specifier, there can be an initializer even if DECL
6101 is *not* defined. */
6102 && (!DECL_EXTERNAL (decl) || init))
6103 {
6104 if (TYPE_FOR_JAVA (type) && MAYBE_CLASS_TYPE_P (type))
6105 {
6106 tree jclass
6107 = IDENTIFIER_GLOBAL_VALUE (get_identifier ("jclass"));
6108 /* Allow libjava/prims.cc define primitive classes. */
6109 if (init != NULL_TREE
6110 || jclass == NULL_TREE
6111 || TREE_CODE (jclass) != TYPE_DECL
6112 || !POINTER_TYPE_P (TREE_TYPE (jclass))
6113 || !same_type_ignoring_top_level_qualifiers_p
6114 (type, TREE_TYPE (TREE_TYPE (jclass))))
6115 error ("Java object %qD not allocated with %<new%>", decl);
6116 init = NULL_TREE;
6117 }
6118 init = check_initializer (decl, init, flags, &cleanup);
6119 /* Thread-local storage cannot be dynamically initialized. */
6120 if (DECL_THREAD_LOCAL_P (decl) && init)
6121 {
6122 error ("%qD is thread-local and so cannot be dynamically "
6123 "initialized", decl);
6124 init = NULL_TREE;
6125 }
6126
6127 /* Check that the initializer for a static data member was a
6128 constant. Although we check in the parser that the
6129 initializer is an integral constant expression, we do not
6130 simplify division-by-zero at the point at which it
6131 occurs. Therefore, in:
6132
6133 struct S { static const int i = 7 / 0; };
6134
6135 we issue an error at this point. It would
6136 probably be better to forbid division by zero in
6137 integral constant expressions. */
6138 if (DECL_EXTERNAL (decl) && init)
6139 {
6140 error ("%qD cannot be initialized by a non-constant expression"
6141 " when being declared", decl);
6142 DECL_INITIALIZED_IN_CLASS_P (decl) = 0;
6143 init = NULL_TREE;
6144 }
6145
6146 /* Handle:
6147
6148 [dcl.init]
6149
6150 The memory occupied by any object of static storage
6151 duration is zero-initialized at program startup before
6152 any other initialization takes place.
6153
6154 We cannot create an appropriate initializer until after
6155 the type of DECL is finalized. If DECL_INITIAL is set,
6156 then the DECL is statically initialized, and any
6157 necessary zero-initialization has already been performed. */
6158 if (TREE_STATIC (decl) && !DECL_INITIAL (decl))
6159 DECL_INITIAL (decl) = build_zero_init (TREE_TYPE (decl),
6160 /*nelts=*/NULL_TREE,
6161 /*static_storage_p=*/true);
6162 /* Remember that the initialization for this variable has
6163 taken place. */
6164 DECL_INITIALIZED_P (decl) = 1;
6165 /* This declaration is the definition of this variable,
6166 unless we are initializing a static data member within
6167 the class specifier. */
6168 if (!DECL_EXTERNAL (decl))
6169 var_definition_p = true;
6170 }
6171 /* If the variable has an array type, lay out the type, even if
6172 there is no initializer. It is valid to index through the
6173 array, and we must get TYPE_ALIGN set correctly on the array
6174 type. */
6175 else if (TREE_CODE (type) == ARRAY_TYPE)
6176 layout_type (type);
6177
6178 if (TREE_STATIC (decl)
6179 && !at_function_scope_p ()
6180 && current_function_decl == NULL)
6181 /* So decl is a global variable or a static member of a
6182 non local class. Record the types it uses
6183 so that we can decide later to emit debug info for them. */
6184 record_types_used_by_current_var_decl (decl);
6185 }
6186 else if (TREE_CODE (decl) == FIELD_DECL
6187 && TYPE_FOR_JAVA (type) && MAYBE_CLASS_TYPE_P (type))
6188 error ("non-static data member %qD has Java class type", decl);
6189
6190 /* Add this declaration to the statement-tree. This needs to happen
6191 after the call to check_initializer so that the DECL_EXPR for a
6192 reference temp is added before the DECL_EXPR for the reference itself. */
6193 if (at_function_scope_p ())
6194 add_decl_expr (decl);
6195
6196 /* Let the middle end know about variables and functions -- but not
6197 static data members in uninstantiated class templates. */
6198 if (TREE_CODE (decl) == VAR_DECL
6199 || TREE_CODE (decl) == FUNCTION_DECL)
6200 {
6201 if (TREE_CODE (decl) == VAR_DECL)
6202 {
6203 layout_var_decl (decl);
6204 maybe_commonize_var (decl);
6205 }
6206
6207 /* This needs to happen after the linkage is set. */
6208 determine_visibility (decl);
6209
6210 if (var_definition_p && TREE_STATIC (decl))
6211 {
6212 /* If a TREE_READONLY variable needs initialization
6213 at runtime, it is no longer readonly and we need to
6214 avoid MEM_READONLY_P being set on RTL created for it. */
6215 if (init)
6216 {
6217 if (TREE_READONLY (decl))
6218 TREE_READONLY (decl) = 0;
6219 was_readonly = 0;
6220 }
6221 else if (was_readonly)
6222 TREE_READONLY (decl) = 1;
6223 }
6224
6225 make_rtl_for_nonlocal_decl (decl, init, asmspec);
6226
6227 /* Check for abstractness of the type. Notice that there is no
6228 need to strip array types here since the check for those types
6229 is already done within create_array_type_for_decl. */
6230 if (TREE_CODE (type) == FUNCTION_TYPE
6231 || TREE_CODE (type) == METHOD_TYPE)
6232 abstract_virtuals_error (decl, TREE_TYPE (type));
6233 else
6234 abstract_virtuals_error (decl, type);
6235
6236 if (TREE_TYPE (decl) == error_mark_node)
6237 /* No initialization required. */
6238 ;
6239 else if (TREE_CODE (decl) == FUNCTION_DECL)
6240 {
6241 if (init)
6242 {
6243 if (init == ridpointers[(int)RID_DEFAULT])
6244 {
6245 /* An out-of-class default definition is defined at
6246 the point where it is explicitly defaulted. */
6247 if (DECL_DELETED_FN (decl))
6248 maybe_explain_implicit_delete (decl);
6249 else if (DECL_INITIAL (decl) == error_mark_node)
6250 synthesize_method (decl);
6251 }
6252 else
6253 error ("function %q#D is initialized like a variable", decl);
6254 }
6255 /* else no initialization required. */
6256 }
6257 else if (DECL_EXTERNAL (decl)
6258 && ! (DECL_LANG_SPECIFIC (decl)
6259 && DECL_NOT_REALLY_EXTERN (decl)))
6260 {
6261 if (init)
6262 DECL_INITIAL (decl) = init;
6263 }
6264 /* A variable definition. */
6265 else if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl))
6266 /* Initialize the local variable. */
6267 initialize_local_var (decl, init);
6268
6269 /* If a variable is defined, and then a subsequent
6270 definition with external linkage is encountered, we will
6271 get here twice for the same variable. We want to avoid
6272 calling expand_static_init more than once. For variables
6273 that are not static data members, we can call
6274 expand_static_init only when we actually process the
6275 initializer. It is not legal to redeclare a static data
6276 member, so this issue does not arise in that case. */
6277 else if (var_definition_p && TREE_STATIC (decl))
6278 expand_static_init (decl, init);
6279 }
6280
6281 /* If a CLEANUP_STMT was created to destroy a temporary bound to a
6282 reference, insert it in the statement-tree now. */
6283 if (cleanup)
6284 push_cleanup (decl, cleanup, false);
6285
6286 if (was_readonly)
6287 TREE_READONLY (decl) = 1;
6288 }
6289
6290 /* Returns a declaration for a VAR_DECL as if:
6291
6292 extern "C" TYPE NAME;
6293
6294 had been seen. Used to create compiler-generated global
6295 variables. */
6296
6297 static tree
6298 declare_global_var (tree name, tree type)
6299 {
6300 tree decl;
6301
6302 push_to_top_level ();
6303 decl = build_decl (input_location, VAR_DECL, name, type);
6304 TREE_PUBLIC (decl) = 1;
6305 DECL_EXTERNAL (decl) = 1;
6306 DECL_ARTIFICIAL (decl) = 1;
6307 /* If the user has explicitly declared this variable (perhaps
6308 because the code we are compiling is part of a low-level runtime
6309 library), then it is possible that our declaration will be merged
6310 with theirs by pushdecl. */
6311 decl = pushdecl (decl);
6312 cp_finish_decl (decl, NULL_TREE, false, NULL_TREE, 0);
6313 pop_from_top_level ();
6314
6315 return decl;
6316 }
6317
6318 /* Returns the type for the argument to "__cxa_atexit" (or "atexit",
6319 if "__cxa_atexit" is not being used) corresponding to the function
6320 to be called when the program exits. */
6321
6322 static tree
6323 get_atexit_fn_ptr_type (void)
6324 {
6325 tree fn_type;
6326
6327 if (!atexit_fn_ptr_type_node)
6328 {
6329 tree arg_type;
6330 if (flag_use_cxa_atexit
6331 && !targetm.cxx.use_atexit_for_cxa_atexit ())
6332 /* The parameter to "__cxa_atexit" is "void (*)(void *)". */
6333 arg_type = ptr_type_node;
6334 else
6335 /* The parameter to "atexit" is "void (*)(void)". */
6336 arg_type = NULL_TREE;
6337
6338 fn_type = build_function_type_list (void_type_node,
6339 arg_type, NULL_TREE);
6340 atexit_fn_ptr_type_node = build_pointer_type (fn_type);
6341 }
6342
6343 return atexit_fn_ptr_type_node;
6344 }
6345
6346 /* Returns a pointer to the `atexit' function. Note that if
6347 FLAG_USE_CXA_ATEXIT is nonzero, then this will actually be the new
6348 `__cxa_atexit' function specified in the IA64 C++ ABI. */
6349
6350 static tree
6351 get_atexit_node (void)
6352 {
6353 tree atexit_fndecl;
6354 tree fn_type;
6355 tree fn_ptr_type;
6356 const char *name;
6357 bool use_aeabi_atexit;
6358
6359 if (atexit_node)
6360 return atexit_node;
6361
6362 if (flag_use_cxa_atexit && !targetm.cxx.use_atexit_for_cxa_atexit ())
6363 {
6364 /* The declaration for `__cxa_atexit' is:
6365
6366 int __cxa_atexit (void (*)(void *), void *, void *)
6367
6368 We build up the argument types and then the function type
6369 itself. */
6370 tree argtype0, argtype1, argtype2;
6371
6372 use_aeabi_atexit = targetm.cxx.use_aeabi_atexit ();
6373 /* First, build the pointer-to-function type for the first
6374 argument. */
6375 fn_ptr_type = get_atexit_fn_ptr_type ();
6376 /* Then, build the rest of the argument types. */
6377 argtype2 = ptr_type_node;
6378 if (use_aeabi_atexit)
6379 {
6380 argtype1 = fn_ptr_type;
6381 argtype0 = ptr_type_node;
6382 }
6383 else
6384 {
6385 argtype1 = ptr_type_node;
6386 argtype0 = fn_ptr_type;
6387 }
6388 /* And the final __cxa_atexit type. */
6389 fn_type = build_function_type_list (integer_type_node,
6390 argtype0, argtype1, argtype2,
6391 NULL_TREE);
6392 fn_ptr_type = build_pointer_type (fn_type);
6393 if (use_aeabi_atexit)
6394 name = "__aeabi_atexit";
6395 else
6396 name = "__cxa_atexit";
6397 }
6398 else
6399 {
6400 /* The declaration for `atexit' is:
6401
6402 int atexit (void (*)());
6403
6404 We build up the argument types and then the function type
6405 itself. */
6406 fn_ptr_type = get_atexit_fn_ptr_type ();
6407 /* Build the final atexit type. */
6408 fn_type = build_function_type_list (integer_type_node,
6409 fn_ptr_type, NULL_TREE);
6410 name = "atexit";
6411 }
6412
6413 /* Now, build the function declaration. */
6414 push_lang_context (lang_name_c);
6415 atexit_fndecl = build_library_fn_ptr (name, fn_type);
6416 mark_used (atexit_fndecl);
6417 pop_lang_context ();
6418 atexit_node = decay_conversion (atexit_fndecl);
6419
6420 return atexit_node;
6421 }
6422
6423 /* Returns the __dso_handle VAR_DECL. */
6424
6425 static tree
6426 get_dso_handle_node (void)
6427 {
6428 if (dso_handle_node)
6429 return dso_handle_node;
6430
6431 /* Declare the variable. */
6432 dso_handle_node = declare_global_var (get_identifier ("__dso_handle"),
6433 ptr_type_node);
6434
6435 return dso_handle_node;
6436 }
6437
6438 /* Begin a new function with internal linkage whose job will be simply
6439 to destroy some particular variable. */
6440
6441 static GTY(()) int start_cleanup_cnt;
6442
6443 static tree
6444 start_cleanup_fn (void)
6445 {
6446 char name[32];
6447 tree fntype;
6448 tree fndecl;
6449 bool use_cxa_atexit = flag_use_cxa_atexit
6450 && !targetm.cxx.use_atexit_for_cxa_atexit ();
6451
6452 push_to_top_level ();
6453
6454 /* No need to mangle this. */
6455 push_lang_context (lang_name_c);
6456
6457 /* Build the name of the function. */
6458 sprintf (name, "__tcf_%d", start_cleanup_cnt++);
6459 /* Build the function declaration. */
6460 fntype = TREE_TYPE (get_atexit_fn_ptr_type ());
6461 fndecl = build_lang_decl (FUNCTION_DECL, get_identifier (name), fntype);
6462 /* It's a function with internal linkage, generated by the
6463 compiler. */
6464 TREE_PUBLIC (fndecl) = 0;
6465 DECL_ARTIFICIAL (fndecl) = 1;
6466 /* Make the function `inline' so that it is only emitted if it is
6467 actually needed. It is unlikely that it will be inlined, since
6468 it is only called via a function pointer, but we avoid unnecessary
6469 emissions this way. */
6470 DECL_DECLARED_INLINE_P (fndecl) = 1;
6471 DECL_INTERFACE_KNOWN (fndecl) = 1;
6472 /* Build the parameter. */
6473 if (use_cxa_atexit)
6474 {
6475 tree parmdecl;
6476
6477 parmdecl = cp_build_parm_decl (NULL_TREE, ptr_type_node);
6478 DECL_CONTEXT (parmdecl) = fndecl;
6479 TREE_USED (parmdecl) = 1;
6480 DECL_READ_P (parmdecl) = 1;
6481 DECL_ARGUMENTS (fndecl) = parmdecl;
6482 }
6483
6484 pushdecl (fndecl);
6485 start_preparsed_function (fndecl, NULL_TREE, SF_PRE_PARSED);
6486
6487 pop_lang_context ();
6488
6489 return current_function_decl;
6490 }
6491
6492 /* Finish the cleanup function begun by start_cleanup_fn. */
6493
6494 static void
6495 end_cleanup_fn (void)
6496 {
6497 expand_or_defer_fn (finish_function (0));
6498
6499 pop_from_top_level ();
6500 }
6501
6502 /* Generate code to handle the destruction of DECL, an object with
6503 static storage duration. */
6504
6505 tree
6506 register_dtor_fn (tree decl)
6507 {
6508 tree cleanup;
6509 tree compound_stmt;
6510 tree fcall;
6511 tree type;
6512 bool use_dtor;
6513 tree arg0, arg1 = NULL_TREE, arg2 = NULL_TREE;
6514
6515 type = TREE_TYPE (decl);
6516 if (TYPE_HAS_TRIVIAL_DESTRUCTOR (type))
6517 return void_zero_node;
6518
6519 /* If we're using "__cxa_atexit" (or "__aeabi_atexit"), and DECL is
6520 a class object, we can just pass the destructor to
6521 "__cxa_atexit"; we don't have to build a temporary function to do
6522 the cleanup. */
6523 use_dtor = (flag_use_cxa_atexit
6524 && !targetm.cxx.use_atexit_for_cxa_atexit ()
6525 && CLASS_TYPE_P (type));
6526 if (use_dtor)
6527 {
6528 int idx;
6529
6530 /* Find the destructor. */
6531 idx = lookup_fnfields_1 (type, complete_dtor_identifier);
6532 gcc_assert (idx >= 0);
6533 cleanup = VEC_index (tree, CLASSTYPE_METHOD_VEC (type), idx);
6534 /* Make sure it is accessible. */
6535 perform_or_defer_access_check (TYPE_BINFO (type), cleanup, cleanup);
6536 }
6537 else
6538 {
6539 /* Call build_cleanup before we enter the anonymous function so
6540 that any access checks will be done relative to the current
6541 scope, rather than the scope of the anonymous function. */
6542 build_cleanup (decl);
6543
6544 /* Now start the function. */
6545 cleanup = start_cleanup_fn ();
6546
6547 /* Now, recompute the cleanup. It may contain SAVE_EXPRs that refer
6548 to the original function, rather than the anonymous one. That
6549 will make the back end think that nested functions are in use,
6550 which causes confusion. */
6551 push_deferring_access_checks (dk_no_check);
6552 fcall = build_cleanup (decl);
6553 pop_deferring_access_checks ();
6554
6555 /* Create the body of the anonymous function. */
6556 compound_stmt = begin_compound_stmt (BCS_FN_BODY);
6557 finish_expr_stmt (fcall);
6558 finish_compound_stmt (compound_stmt);
6559 end_cleanup_fn ();
6560 }
6561
6562 /* Call atexit with the cleanup function. */
6563 mark_used (cleanup);
6564 cleanup = build_address (cleanup);
6565 if (flag_use_cxa_atexit && !targetm.cxx.use_atexit_for_cxa_atexit ())
6566 {
6567 tree addr;
6568
6569 if (use_dtor)
6570 {
6571 /* We must convert CLEANUP to the type that "__cxa_atexit"
6572 expects. */
6573 cleanup = build_nop (get_atexit_fn_ptr_type (), cleanup);
6574 /* "__cxa_atexit" will pass the address of DECL to the
6575 cleanup function. */
6576 mark_used (decl);
6577 addr = build_address (decl);
6578 /* The declared type of the parameter to "__cxa_atexit" is
6579 "void *". For plain "T*", we could just let the
6580 machinery in cp_build_function_call convert it -- but if the
6581 type is "cv-qualified T *", then we need to convert it
6582 before passing it in, to avoid spurious errors. */
6583 addr = build_nop (ptr_type_node, addr);
6584 }
6585 else
6586 /* Since the cleanup functions we build ignore the address
6587 they're given, there's no reason to pass the actual address
6588 in, and, in general, it's cheaper to pass NULL than any
6589 other value. */
6590 addr = null_pointer_node;
6591 arg2 = cp_build_addr_expr (get_dso_handle_node (),
6592 tf_warning_or_error);
6593 if (targetm.cxx.use_aeabi_atexit ())
6594 {
6595 arg1 = cleanup;
6596 arg0 = addr;
6597 }
6598 else
6599 {
6600 arg1 = addr;
6601 arg0 = cleanup;
6602 }
6603 }
6604 else
6605 arg0 = cleanup;
6606 return cp_build_function_call_nary (get_atexit_node (), tf_warning_or_error,
6607 arg0, arg1, arg2, NULL_TREE);
6608 }
6609
6610 /* DECL is a VAR_DECL with static storage duration. INIT, if present,
6611 is its initializer. Generate code to handle the construction
6612 and destruction of DECL. */
6613
6614 static void
6615 expand_static_init (tree decl, tree init)
6616 {
6617 gcc_assert (TREE_CODE (decl) == VAR_DECL);
6618 gcc_assert (TREE_STATIC (decl));
6619
6620 /* Some variables require no dynamic initialization. */
6621 if (!init
6622 && TYPE_HAS_TRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
6623 return;
6624
6625 if (DECL_FUNCTION_SCOPE_P (decl))
6626 {
6627 /* Emit code to perform this initialization but once. */
6628 tree if_stmt = NULL_TREE, inner_if_stmt = NULL_TREE;
6629 tree then_clause = NULL_TREE, inner_then_clause = NULL_TREE;
6630 tree guard, guard_addr;
6631 tree acquire_fn, release_fn, abort_fn;
6632 tree flag, begin;
6633
6634 /* Emit code to perform this initialization but once. This code
6635 looks like:
6636
6637 static <type> guard;
6638 if (!guard.first_byte) {
6639 if (__cxa_guard_acquire (&guard)) {
6640 bool flag = false;
6641 try {
6642 // Do initialization.
6643 flag = true; __cxa_guard_release (&guard);
6644 // Register variable for destruction at end of program.
6645 } catch {
6646 if (!flag) __cxa_guard_abort (&guard);
6647 }
6648 }
6649
6650 Note that the `flag' variable is only set to 1 *after* the
6651 initialization is complete. This ensures that an exception,
6652 thrown during the construction, will cause the variable to
6653 reinitialized when we pass through this code again, as per:
6654
6655 [stmt.dcl]
6656
6657 If the initialization exits by throwing an exception, the
6658 initialization is not complete, so it will be tried again
6659 the next time control enters the declaration.
6660
6661 This process should be thread-safe, too; multiple threads
6662 should not be able to initialize the variable more than
6663 once. */
6664
6665 /* Create the guard variable. */
6666 guard = get_guard (decl);
6667
6668 /* This optimization isn't safe on targets with relaxed memory
6669 consistency. On such targets we force synchronization in
6670 __cxa_guard_acquire. */
6671 if (!targetm.relaxed_ordering || !flag_threadsafe_statics)
6672 {
6673 /* Begin the conditional initialization. */
6674 if_stmt = begin_if_stmt ();
6675 finish_if_stmt_cond (get_guard_cond (guard), if_stmt);
6676 then_clause = begin_compound_stmt (BCS_NO_SCOPE);
6677 }
6678
6679 if (flag_threadsafe_statics)
6680 {
6681 guard_addr = build_address (guard);
6682
6683 acquire_fn = get_identifier ("__cxa_guard_acquire");
6684 release_fn = get_identifier ("__cxa_guard_release");
6685 abort_fn = get_identifier ("__cxa_guard_abort");
6686 if (!get_global_value_if_present (acquire_fn, &acquire_fn))
6687 {
6688 tree vfntype = build_function_type_list (void_type_node,
6689 TREE_TYPE (guard_addr),
6690 NULL_TREE);
6691 acquire_fn = push_library_fn
6692 (acquire_fn, build_function_type_list (integer_type_node,
6693 TREE_TYPE (guard_addr),
6694 NULL_TREE),
6695 NULL_TREE);
6696 release_fn = push_library_fn (release_fn, vfntype, NULL_TREE);
6697 abort_fn = push_library_fn (abort_fn, vfntype, NULL_TREE);
6698 }
6699 else
6700 {
6701 release_fn = identifier_global_value (release_fn);
6702 abort_fn = identifier_global_value (abort_fn);
6703 }
6704
6705 inner_if_stmt = begin_if_stmt ();
6706 finish_if_stmt_cond (build_call_n (acquire_fn, 1, guard_addr),
6707 inner_if_stmt);
6708
6709 inner_then_clause = begin_compound_stmt (BCS_NO_SCOPE);
6710 begin = get_target_expr (boolean_false_node);
6711 flag = TARGET_EXPR_SLOT (begin);
6712
6713 TARGET_EXPR_CLEANUP (begin)
6714 = build3 (COND_EXPR, void_type_node, flag,
6715 void_zero_node,
6716 build_call_n (abort_fn, 1, guard_addr));
6717 CLEANUP_EH_ONLY (begin) = 1;
6718
6719 /* Do the initialization itself. */
6720 init = add_stmt_to_compound (begin, init);
6721 init = add_stmt_to_compound
6722 (init, build2 (MODIFY_EXPR, void_type_node, flag, boolean_true_node));
6723 init = add_stmt_to_compound
6724 (init, build_call_n (release_fn, 1, guard_addr));
6725 }
6726 else
6727 init = add_stmt_to_compound (init, set_guard (guard));
6728
6729 /* Use atexit to register a function for destroying this static
6730 variable. */
6731 init = add_stmt_to_compound (init, register_dtor_fn (decl));
6732
6733 finish_expr_stmt (init);
6734
6735 if (flag_threadsafe_statics)
6736 {
6737 finish_compound_stmt (inner_then_clause);
6738 finish_then_clause (inner_if_stmt);
6739 finish_if_stmt (inner_if_stmt);
6740 }
6741
6742 if (!targetm.relaxed_ordering || !flag_threadsafe_statics)
6743 {
6744 finish_compound_stmt (then_clause);
6745 finish_then_clause (if_stmt);
6746 finish_if_stmt (if_stmt);
6747 }
6748 }
6749 else
6750 static_aggregates = tree_cons (init, decl, static_aggregates);
6751 }
6752
6753 \f
6754 /* Make TYPE a complete type based on INITIAL_VALUE.
6755 Return 0 if successful, 1 if INITIAL_VALUE can't be deciphered,
6756 2 if there was no information (in which case assume 0 if DO_DEFAULT),
6757 3 if the initializer list is empty (in pedantic mode). */
6758
6759 int
6760 cp_complete_array_type (tree *ptype, tree initial_value, bool do_default)
6761 {
6762 int failure;
6763 tree type, elt_type;
6764
6765 if (initial_value)
6766 {
6767 unsigned HOST_WIDE_INT i;
6768 tree value;
6769
6770 /* An array of character type can be initialized from a
6771 brace-enclosed string constant.
6772
6773 FIXME: this code is duplicated from reshape_init. Probably
6774 we should just call reshape_init here? */
6775 if (char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (*ptype)))
6776 && TREE_CODE (initial_value) == CONSTRUCTOR
6777 && !VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (initial_value)))
6778 {
6779 VEC(constructor_elt,gc) *v = CONSTRUCTOR_ELTS (initial_value);
6780 tree value = VEC_index (constructor_elt, v, 0)->value;
6781
6782 if (TREE_CODE (value) == STRING_CST
6783 && VEC_length (constructor_elt, v) == 1)
6784 initial_value = value;
6785 }
6786
6787 /* If any of the elements are parameter packs, we can't actually
6788 complete this type now because the array size is dependent. */
6789 if (TREE_CODE (initial_value) == CONSTRUCTOR)
6790 {
6791 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (initial_value),
6792 i, value)
6793 {
6794 if (PACK_EXPANSION_P (value))
6795 return 0;
6796 }
6797 }
6798 }
6799
6800 failure = complete_array_type (ptype, initial_value, do_default);
6801
6802 /* We can create the array before the element type is complete, which
6803 means that we didn't have these two bits set in the original type
6804 either. In completing the type, we are expected to propagate these
6805 bits. See also complete_type which does the same thing for arrays
6806 of fixed size. */
6807 type = *ptype;
6808 if (TYPE_DOMAIN (type))
6809 {
6810 elt_type = TREE_TYPE (type);
6811 TYPE_NEEDS_CONSTRUCTING (type) = TYPE_NEEDS_CONSTRUCTING (elt_type);
6812 TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)
6813 = TYPE_HAS_NONTRIVIAL_DESTRUCTOR (elt_type);
6814 }
6815
6816 return failure;
6817 }
6818
6819 /* As above, but either give an error or reject zero-size arrays, depending
6820 on COMPLAIN. */
6821
6822 int
6823 cp_complete_array_type_or_error (tree *ptype, tree initial_value,
6824 bool do_default, tsubst_flags_t complain)
6825 {
6826 int failure;
6827 bool sfinae = !(complain & tf_error);
6828 /* In SFINAE context we can't be lenient about zero-size arrays. */
6829 if (sfinae)
6830 ++pedantic;
6831 failure = cp_complete_array_type (ptype, initial_value, do_default);
6832 if (sfinae)
6833 --pedantic;
6834 if (failure)
6835 {
6836 if (sfinae)
6837 /* Not an error. */;
6838 else if (failure == 1)
6839 error ("initializer fails to determine size of %qT", *ptype);
6840 else if (failure == 2)
6841 {
6842 if (do_default)
6843 error ("array size missing in %qT", *ptype);
6844 }
6845 else if (failure == 3)
6846 error ("zero-size array %qT", *ptype);
6847 *ptype = error_mark_node;
6848 }
6849 return failure;
6850 }
6851 \f
6852 /* Return zero if something is declared to be a member of type
6853 CTYPE when in the context of CUR_TYPE. STRING is the error
6854 message to print in that case. Otherwise, quietly return 1. */
6855
6856 static int
6857 member_function_or_else (tree ctype, tree cur_type, enum overload_flags flags)
6858 {
6859 if (ctype && ctype != cur_type)
6860 {
6861 if (flags == DTOR_FLAG)
6862 error ("destructor for alien class %qT cannot be a member", ctype);
6863 else
6864 error ("constructor for alien class %qT cannot be a member", ctype);
6865 return 0;
6866 }
6867 return 1;
6868 }
6869 \f
6870 /* Subroutine of `grokdeclarator'. */
6871
6872 /* Generate errors possibly applicable for a given set of specifiers.
6873 This is for ARM $7.1.2. */
6874
6875 static void
6876 bad_specifiers (tree object,
6877 enum bad_spec_place type,
6878 int virtualp,
6879 int quals,
6880 int inlinep,
6881 int friendp,
6882 int raises)
6883 {
6884 switch (type)
6885 {
6886 case BSP_VAR:
6887 if (virtualp)
6888 error ("%qD declared as a %<virtual%> variable", object);
6889 if (inlinep)
6890 error ("%qD declared as an %<inline%> variable", object);
6891 if (quals)
6892 error ("%<const%> and %<volatile%> function specifiers on "
6893 "%qD invalid in variable declaration", object);
6894 break;
6895 case BSP_PARM:
6896 if (virtualp)
6897 error ("%qD declared as a %<virtual%> parameter", object);
6898 if (inlinep)
6899 error ("%qD declared as an %<inline%> parameter", object);
6900 if (quals)
6901 error ("%<const%> and %<volatile%> function specifiers on "
6902 "%qD invalid in parameter declaration", object);
6903 break;
6904 case BSP_TYPE:
6905 if (virtualp)
6906 error ("%qD declared as a %<virtual%> type", object);
6907 if (inlinep)
6908 error ("%qD declared as an %<inline%> type", object);
6909 if (quals)
6910 error ("%<const%> and %<volatile%> function specifiers on "
6911 "%qD invalid in type declaration", object);
6912 break;
6913 case BSP_FIELD:
6914 if (virtualp)
6915 error ("%qD declared as a %<virtual%> field", object);
6916 if (inlinep)
6917 error ("%qD declared as an %<inline%> field", object);
6918 if (quals)
6919 error ("%<const%> and %<volatile%> function specifiers on "
6920 "%qD invalid in field declaration", object);
6921 break;
6922 default:
6923 gcc_unreachable();
6924 }
6925 if (friendp)
6926 error ("%q+D declared as a friend", object);
6927 if (raises
6928 && (TREE_CODE (object) == TYPE_DECL
6929 || (!TYPE_PTRFN_P (TREE_TYPE (object))
6930 && !TYPE_REFFN_P (TREE_TYPE (object))
6931 && !TYPE_PTRMEMFUNC_P (TREE_TYPE (object)))))
6932 error ("%q+D declared with an exception specification", object);
6933 }
6934
6935 /* DECL is a member function or static data member and is presently
6936 being defined. Check that the definition is taking place in a
6937 valid namespace. */
6938
6939 static void
6940 check_class_member_definition_namespace (tree decl)
6941 {
6942 /* These checks only apply to member functions and static data
6943 members. */
6944 gcc_assert (TREE_CODE (decl) == FUNCTION_DECL
6945 || TREE_CODE (decl) == VAR_DECL);
6946 /* We check for problems with specializations in pt.c in
6947 check_specialization_namespace, where we can issue better
6948 diagnostics. */
6949 if (processing_specialization)
6950 return;
6951 /* There are no restrictions on the placement of
6952 explicit instantiations. */
6953 if (processing_explicit_instantiation)
6954 return;
6955 /* [class.mfct]
6956
6957 A member function definition that appears outside of the
6958 class definition shall appear in a namespace scope enclosing
6959 the class definition.
6960
6961 [class.static.data]
6962
6963 The definition for a static data member shall appear in a
6964 namespace scope enclosing the member's class definition. */
6965 if (!is_ancestor (current_namespace, DECL_CONTEXT (decl)))
6966 permerror (input_location, "definition of %qD is not in namespace enclosing %qT",
6967 decl, DECL_CONTEXT (decl));
6968 }
6969
6970 /* Build a PARM_DECL for the "this" parameter. TYPE is the
6971 METHOD_TYPE for a non-static member function; QUALS are the
6972 cv-qualifiers that apply to the function. */
6973
6974 tree
6975 build_this_parm (tree type, cp_cv_quals quals)
6976 {
6977 tree this_type;
6978 tree qual_type;
6979 tree parm;
6980 cp_cv_quals this_quals;
6981
6982 this_type = type_of_this_parm (type);
6983 /* The `this' parameter is implicitly `const'; it cannot be
6984 assigned to. */
6985 this_quals = (quals & TYPE_QUAL_RESTRICT) | TYPE_QUAL_CONST;
6986 qual_type = cp_build_qualified_type (this_type, this_quals);
6987 parm = build_artificial_parm (this_identifier, qual_type);
6988 cp_apply_type_quals_to_decl (this_quals, parm);
6989 return parm;
6990 }
6991
6992 /* DECL is a static member function. Complain if it was declared
6993 with function-cv-quals. */
6994
6995 static void
6996 check_static_quals (tree decl, cp_cv_quals quals)
6997 {
6998 if (quals != TYPE_UNQUALIFIED)
6999 error ("static member function %q#D declared with type qualifiers",
7000 decl);
7001 }
7002
7003 /* CTYPE is class type, or null if non-class.
7004 TYPE is type this FUNCTION_DECL should have, either FUNCTION_TYPE
7005 or METHOD_TYPE.
7006 DECLARATOR is the function's name.
7007 PARMS is a chain of PARM_DECLs for the function.
7008 VIRTUALP is truthvalue of whether the function is virtual or not.
7009 FLAGS are to be passed through to `grokclassfn'.
7010 QUALS are qualifiers indicating whether the function is `const'
7011 or `volatile'.
7012 RAISES is a list of exceptions that this function can raise.
7013 CHECK is 1 if we must find this method in CTYPE, 0 if we should
7014 not look, and -1 if we should not call `grokclassfn' at all.
7015
7016 SFK is the kind of special function (if any) for the new function.
7017
7018 Returns `NULL_TREE' if something goes wrong, after issuing
7019 applicable error messages. */
7020
7021 static tree
7022 grokfndecl (tree ctype,
7023 tree type,
7024 tree declarator,
7025 tree parms,
7026 tree orig_declarator,
7027 int virtualp,
7028 enum overload_flags flags,
7029 cp_cv_quals quals,
7030 tree raises,
7031 int check,
7032 int friendp,
7033 int publicp,
7034 int inlinep,
7035 special_function_kind sfk,
7036 bool funcdef_flag,
7037 int template_count,
7038 tree in_namespace,
7039 tree* attrlist,
7040 location_t location)
7041 {
7042 tree decl;
7043 int staticp = ctype && TREE_CODE (type) == FUNCTION_TYPE;
7044 tree t;
7045
7046 if (raises)
7047 type = build_exception_variant (type, raises);
7048
7049 decl = build_lang_decl (FUNCTION_DECL, declarator, type);
7050
7051 /* If we have an explicit location, use it, otherwise use whatever
7052 build_lang_decl used (probably input_location). */
7053 if (location != UNKNOWN_LOCATION)
7054 DECL_SOURCE_LOCATION (decl) = location;
7055
7056 if (TREE_CODE (type) == METHOD_TYPE)
7057 {
7058 tree parm;
7059 parm = build_this_parm (type, quals);
7060 DECL_CHAIN (parm) = parms;
7061 parms = parm;
7062 }
7063 DECL_ARGUMENTS (decl) = parms;
7064 for (t = parms; t; t = DECL_CHAIN (t))
7065 DECL_CONTEXT (t) = decl;
7066 /* Propagate volatile out from type to decl. */
7067 if (TYPE_VOLATILE (type))
7068 TREE_THIS_VOLATILE (decl) = 1;
7069
7070 /* Setup decl according to sfk. */
7071 switch (sfk)
7072 {
7073 case sfk_constructor:
7074 case sfk_copy_constructor:
7075 case sfk_move_constructor:
7076 DECL_CONSTRUCTOR_P (decl) = 1;
7077 break;
7078 case sfk_destructor:
7079 DECL_DESTRUCTOR_P (decl) = 1;
7080 break;
7081 default:
7082 break;
7083 }
7084
7085 /* If pointers to member functions use the least significant bit to
7086 indicate whether a function is virtual, ensure a pointer
7087 to this function will have that bit clear. */
7088 if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn
7089 && TREE_CODE (type) == METHOD_TYPE
7090 && DECL_ALIGN (decl) < 2 * BITS_PER_UNIT)
7091 DECL_ALIGN (decl) = 2 * BITS_PER_UNIT;
7092
7093 if (friendp
7094 && TREE_CODE (orig_declarator) == TEMPLATE_ID_EXPR)
7095 {
7096 if (funcdef_flag)
7097 error
7098 ("defining explicit specialization %qD in friend declaration",
7099 orig_declarator);
7100 else
7101 {
7102 tree fns = TREE_OPERAND (orig_declarator, 0);
7103 tree args = TREE_OPERAND (orig_declarator, 1);
7104
7105 if (PROCESSING_REAL_TEMPLATE_DECL_P ())
7106 {
7107 /* Something like `template <class T> friend void f<T>()'. */
7108 error ("invalid use of template-id %qD in declaration "
7109 "of primary template",
7110 orig_declarator);
7111 return NULL_TREE;
7112 }
7113
7114
7115 /* A friend declaration of the form friend void f<>(). Record
7116 the information in the TEMPLATE_ID_EXPR. */
7117 SET_DECL_IMPLICIT_INSTANTIATION (decl);
7118
7119 if (TREE_CODE (fns) == COMPONENT_REF)
7120 {
7121 /* Due to bison parser ickiness, we will have already looked
7122 up an operator_name or PFUNCNAME within the current class
7123 (see template_id in parse.y). If the current class contains
7124 such a name, we'll get a COMPONENT_REF here. Undo that. */
7125
7126 gcc_assert (TREE_TYPE (TREE_OPERAND (fns, 0))
7127 == current_class_type);
7128 fns = TREE_OPERAND (fns, 1);
7129 }
7130 gcc_assert (TREE_CODE (fns) == IDENTIFIER_NODE
7131 || TREE_CODE (fns) == OVERLOAD);
7132 DECL_TEMPLATE_INFO (decl) = build_template_info (fns, args);
7133
7134 for (t = TYPE_ARG_TYPES (TREE_TYPE (decl)); t; t = TREE_CHAIN (t))
7135 if (TREE_PURPOSE (t)
7136 && TREE_CODE (TREE_PURPOSE (t)) == DEFAULT_ARG)
7137 {
7138 error ("default arguments are not allowed in declaration "
7139 "of friend template specialization %qD",
7140 decl);
7141 return NULL_TREE;
7142 }
7143
7144 if (inlinep)
7145 {
7146 error ("%<inline%> is not allowed in declaration of friend "
7147 "template specialization %qD",
7148 decl);
7149 return NULL_TREE;
7150 }
7151 }
7152 }
7153
7154 /* If this decl has namespace scope, set that up. */
7155 if (in_namespace)
7156 set_decl_namespace (decl, in_namespace, friendp);
7157 else if (!ctype)
7158 DECL_CONTEXT (decl) = FROB_CONTEXT (current_decl_namespace ());
7159
7160 /* `main' and builtins have implicit 'C' linkage. */
7161 if ((MAIN_NAME_P (declarator)
7162 || (IDENTIFIER_LENGTH (declarator) > 10
7163 && IDENTIFIER_POINTER (declarator)[0] == '_'
7164 && IDENTIFIER_POINTER (declarator)[1] == '_'
7165 && strncmp (IDENTIFIER_POINTER (declarator)+2, "builtin_", 8) == 0))
7166 && current_lang_name == lang_name_cplusplus
7167 && ctype == NULL_TREE
7168 && DECL_FILE_SCOPE_P (decl))
7169 SET_DECL_LANGUAGE (decl, lang_c);
7170
7171 /* Should probably propagate const out from type to decl I bet (mrs). */
7172 if (staticp)
7173 {
7174 DECL_STATIC_FUNCTION_P (decl) = 1;
7175 DECL_CONTEXT (decl) = ctype;
7176 }
7177
7178 if (ctype)
7179 {
7180 DECL_CONTEXT (decl) = ctype;
7181 if (funcdef_flag)
7182 check_class_member_definition_namespace (decl);
7183 }
7184
7185 if (ctype == NULL_TREE && DECL_MAIN_P (decl))
7186 {
7187 if (processing_template_decl)
7188 error ("cannot declare %<::main%> to be a template");
7189 if (inlinep)
7190 error ("cannot declare %<::main%> to be inline");
7191 if (!publicp)
7192 error ("cannot declare %<::main%> to be static");
7193 inlinep = 0;
7194 publicp = 1;
7195 }
7196
7197 /* Members of anonymous types and local classes have no linkage; make
7198 them internal. If a typedef is made later, this will be changed. */
7199 if (ctype && (TYPE_ANONYMOUS_P (ctype)
7200 || decl_function_context (TYPE_MAIN_DECL (ctype))))
7201 publicp = 0;
7202
7203 if (publicp && cxx_dialect == cxx98)
7204 {
7205 /* [basic.link]: A name with no linkage (notably, the name of a class
7206 or enumeration declared in a local scope) shall not be used to
7207 declare an entity with linkage.
7208
7209 DR 757 relaxes this restriction for C++0x. */
7210 t = no_linkage_check (TREE_TYPE (decl),
7211 /*relaxed_p=*/false);
7212 if (t)
7213 {
7214 if (TYPE_ANONYMOUS_P (t))
7215 {
7216 if (DECL_EXTERN_C_P (decl))
7217 /* Allow this; it's pretty common in C. */;
7218 else
7219 {
7220 permerror (input_location, "anonymous type with no linkage "
7221 "used to declare function %q#D with linkage",
7222 decl);
7223 if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
7224 permerror (input_location, "%q+#D does not refer to the unqualified "
7225 "type, so it is not used for linkage",
7226 TYPE_NAME (t));
7227 }
7228 }
7229 else
7230 permerror (input_location, "type %qT with no linkage used to "
7231 "declare function %q#D with linkage", t, decl);
7232 }
7233 }
7234
7235 TREE_PUBLIC (decl) = publicp;
7236 if (! publicp)
7237 {
7238 DECL_INTERFACE_KNOWN (decl) = 1;
7239 DECL_NOT_REALLY_EXTERN (decl) = 1;
7240 }
7241
7242 /* If the declaration was declared inline, mark it as such. */
7243 if (inlinep)
7244 DECL_DECLARED_INLINE_P (decl) = 1;
7245 if (inlinep & 2)
7246 DECL_DECLARED_CONSTEXPR_P (decl) = true;
7247
7248 DECL_EXTERNAL (decl) = 1;
7249 if (quals && TREE_CODE (type) == FUNCTION_TYPE)
7250 {
7251 error (ctype
7252 ? G_("static member function %qD cannot have cv-qualifier")
7253 : G_("non-member function %qD cannot have cv-qualifier"),
7254 decl);
7255 quals = TYPE_UNQUALIFIED;
7256 }
7257
7258 if (IDENTIFIER_OPNAME_P (DECL_NAME (decl))
7259 && !grok_op_properties (decl, /*complain=*/true))
7260 return NULL_TREE;
7261
7262 if (funcdef_flag)
7263 /* Make the init_value nonzero so pushdecl knows this is not
7264 tentative. error_mark_node is replaced later with the BLOCK. */
7265 DECL_INITIAL (decl) = error_mark_node;
7266
7267 if (TYPE_NOTHROW_P (type) || nothrow_libfn_p (decl))
7268 TREE_NOTHROW (decl) = 1;
7269
7270 /* Caller will do the rest of this. */
7271 if (check < 0)
7272 return decl;
7273
7274 if (ctype != NULL_TREE)
7275 grokclassfn (ctype, decl, flags);
7276
7277 decl = check_explicit_specialization (orig_declarator, decl,
7278 template_count,
7279 2 * funcdef_flag +
7280 4 * (friendp != 0));
7281 if (decl == error_mark_node)
7282 return NULL_TREE;
7283
7284 if (DECL_STATIC_FUNCTION_P (decl))
7285 check_static_quals (decl, quals);
7286
7287 if (attrlist)
7288 {
7289 cplus_decl_attributes (&decl, *attrlist, 0);
7290 *attrlist = NULL_TREE;
7291 }
7292
7293 /* Check main's type after attributes have been applied. */
7294 if (ctype == NULL_TREE && DECL_MAIN_P (decl))
7295 {
7296 if (!same_type_p (TREE_TYPE (TREE_TYPE (decl)),
7297 integer_type_node))
7298 {
7299 tree oldtypeargs = TYPE_ARG_TYPES (TREE_TYPE (decl));
7300 tree newtype;
7301 error ("%<::main%> must return %<int%>");
7302 newtype = build_function_type (integer_type_node, oldtypeargs);
7303 TREE_TYPE (decl) = newtype;
7304 }
7305 if (warn_main)
7306 check_main_parameter_types (decl);
7307 }
7308
7309 if (ctype != NULL_TREE
7310 && (! TYPE_FOR_JAVA (ctype) || check_java_method (decl))
7311 && check)
7312 {
7313 tree old_decl = check_classfn (ctype, decl,
7314 (processing_template_decl
7315 > template_class_depth (ctype))
7316 ? current_template_parms
7317 : NULL_TREE);
7318
7319 if (old_decl == error_mark_node)
7320 return NULL_TREE;
7321
7322 if (old_decl)
7323 {
7324 tree ok;
7325 tree pushed_scope;
7326
7327 if (TREE_CODE (old_decl) == TEMPLATE_DECL)
7328 /* Because grokfndecl is always supposed to return a
7329 FUNCTION_DECL, we pull out the DECL_TEMPLATE_RESULT
7330 here. We depend on our callers to figure out that its
7331 really a template that's being returned. */
7332 old_decl = DECL_TEMPLATE_RESULT (old_decl);
7333
7334 if (DECL_STATIC_FUNCTION_P (old_decl)
7335 && TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE)
7336 {
7337 /* Remove the `this' parm added by grokclassfn. */
7338 revert_static_member_fn (decl);
7339 check_static_quals (decl, quals);
7340 }
7341 if (DECL_ARTIFICIAL (old_decl))
7342 {
7343 error ("definition of implicitly-declared %qD", old_decl);
7344 return NULL_TREE;
7345 }
7346
7347 /* Since we've smashed OLD_DECL to its
7348 DECL_TEMPLATE_RESULT, we must do the same to DECL. */
7349 if (TREE_CODE (decl) == TEMPLATE_DECL)
7350 decl = DECL_TEMPLATE_RESULT (decl);
7351
7352 /* Attempt to merge the declarations. This can fail, in
7353 the case of some invalid specialization declarations. */
7354 pushed_scope = push_scope (ctype);
7355 ok = duplicate_decls (decl, old_decl, friendp);
7356 if (pushed_scope)
7357 pop_scope (pushed_scope);
7358 if (!ok)
7359 {
7360 error ("no %q#D member function declared in class %qT",
7361 decl, ctype);
7362 return NULL_TREE;
7363 }
7364 return old_decl;
7365 }
7366 }
7367
7368 if (DECL_CONSTRUCTOR_P (decl) && !grok_ctor_properties (ctype, decl))
7369 return NULL_TREE;
7370
7371 if (ctype == NULL_TREE || check)
7372 return decl;
7373
7374 if (virtualp)
7375 DECL_VIRTUAL_P (decl) = 1;
7376
7377 return decl;
7378 }
7379
7380 /* decl is a FUNCTION_DECL.
7381 specifiers are the parsed virt-specifiers.
7382
7383 Set flags to reflect the virt-specifiers.
7384
7385 Returns decl. */
7386
7387 static tree
7388 set_virt_specifiers (tree decl, cp_virt_specifiers specifiers)
7389 {
7390 if (decl == NULL_TREE)
7391 return decl;
7392 if (specifiers & VIRT_SPEC_OVERRIDE)
7393 DECL_OVERRIDE_P (decl) = 1;
7394 if (specifiers & VIRT_SPEC_FINAL)
7395 DECL_FINAL_P (decl) = 1;
7396 return decl;
7397 }
7398
7399 /* DECL is a VAR_DECL for a static data member. Set flags to reflect
7400 the linkage that DECL will receive in the object file. */
7401
7402 static void
7403 set_linkage_for_static_data_member (tree decl)
7404 {
7405 /* A static data member always has static storage duration and
7406 external linkage. Note that static data members are forbidden in
7407 local classes -- the only situation in which a class has
7408 non-external linkage. */
7409 TREE_PUBLIC (decl) = 1;
7410 TREE_STATIC (decl) = 1;
7411 /* For non-template classes, static data members are always put
7412 out in exactly those files where they are defined, just as
7413 with ordinary namespace-scope variables. */
7414 if (!processing_template_decl)
7415 DECL_INTERFACE_KNOWN (decl) = 1;
7416 }
7417
7418 /* Create a VAR_DECL named NAME with the indicated TYPE.
7419
7420 If SCOPE is non-NULL, it is the class type or namespace containing
7421 the variable. If SCOPE is NULL, the variable should is created in
7422 the innermost enclosings scope. */
7423
7424 static tree
7425 grokvardecl (tree type,
7426 tree name,
7427 const cp_decl_specifier_seq *declspecs,
7428 int initialized,
7429 int constp,
7430 tree scope)
7431 {
7432 tree decl;
7433 tree explicit_scope;
7434
7435 gcc_assert (!name || TREE_CODE (name) == IDENTIFIER_NODE);
7436
7437 /* Compute the scope in which to place the variable, but remember
7438 whether or not that scope was explicitly specified by the user. */
7439 explicit_scope = scope;
7440 if (!scope)
7441 {
7442 /* An explicit "extern" specifier indicates a namespace-scope
7443 variable. */
7444 if (declspecs->storage_class == sc_extern)
7445 scope = current_decl_namespace ();
7446 else if (!at_function_scope_p ())
7447 scope = current_scope ();
7448 }
7449
7450 if (scope
7451 && (/* If the variable is a namespace-scope variable declared in a
7452 template, we need DECL_LANG_SPECIFIC. */
7453 (TREE_CODE (scope) == NAMESPACE_DECL && processing_template_decl)
7454 /* Similarly for namespace-scope variables with language linkage
7455 other than C++. */
7456 || (TREE_CODE (scope) == NAMESPACE_DECL
7457 && current_lang_name != lang_name_cplusplus)
7458 /* Similarly for static data members. */
7459 || TYPE_P (scope)))
7460 decl = build_lang_decl (VAR_DECL, name, type);
7461 else
7462 decl = build_decl (input_location, VAR_DECL, name, type);
7463
7464 if (explicit_scope && TREE_CODE (explicit_scope) == NAMESPACE_DECL)
7465 set_decl_namespace (decl, explicit_scope, 0);
7466 else
7467 DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
7468
7469 if (declspecs->storage_class == sc_extern)
7470 {
7471 DECL_THIS_EXTERN (decl) = 1;
7472 DECL_EXTERNAL (decl) = !initialized;
7473 }
7474
7475 if (DECL_CLASS_SCOPE_P (decl))
7476 {
7477 set_linkage_for_static_data_member (decl);
7478 /* This function is only called with out-of-class definitions. */
7479 DECL_EXTERNAL (decl) = 0;
7480 check_class_member_definition_namespace (decl);
7481 }
7482 /* At top level, either `static' or no s.c. makes a definition
7483 (perhaps tentative), and absence of `static' makes it public. */
7484 else if (toplevel_bindings_p ())
7485 {
7486 TREE_PUBLIC (decl) = (declspecs->storage_class != sc_static
7487 && (DECL_THIS_EXTERN (decl) || ! constp));
7488 TREE_STATIC (decl) = ! DECL_EXTERNAL (decl);
7489 }
7490 /* Not at top level, only `static' makes a static definition. */
7491 else
7492 {
7493 TREE_STATIC (decl) = declspecs->storage_class == sc_static;
7494 TREE_PUBLIC (decl) = DECL_EXTERNAL (decl);
7495 }
7496
7497 if (declspecs->specs[(int)ds_thread])
7498 DECL_TLS_MODEL (decl) = decl_default_tls_model (decl);
7499
7500 /* If the type of the decl has no linkage, make sure that we'll
7501 notice that in mark_used. */
7502 if (cxx_dialect > cxx98
7503 && decl_linkage (decl) != lk_none
7504 && DECL_LANG_SPECIFIC (decl) == NULL
7505 && !DECL_EXTERN_C_P (decl)
7506 && no_linkage_check (TREE_TYPE (decl), /*relaxed_p=*/false))
7507 retrofit_lang_decl (decl);
7508
7509 if (TREE_PUBLIC (decl))
7510 {
7511 /* [basic.link]: A name with no linkage (notably, the name of a class
7512 or enumeration declared in a local scope) shall not be used to
7513 declare an entity with linkage.
7514
7515 DR 757 relaxes this restriction for C++0x. */
7516 tree t = (cxx_dialect > cxx98 ? NULL_TREE
7517 : no_linkage_check (TREE_TYPE (decl), /*relaxed_p=*/false));
7518 if (t)
7519 {
7520 if (TYPE_ANONYMOUS_P (t))
7521 {
7522 if (DECL_EXTERN_C_P (decl))
7523 /* Allow this; it's pretty common in C. */
7524 ;
7525 else
7526 {
7527 /* DRs 132, 319 and 389 seem to indicate types with
7528 no linkage can only be used to declare extern "C"
7529 entities. Since it's not always an error in the
7530 ISO C++ 90 Standard, we only issue a warning. */
7531 warning (0, "anonymous type with no linkage used to declare "
7532 "variable %q#D with linkage", decl);
7533 if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
7534 warning (0, "%q+#D does not refer to the unqualified "
7535 "type, so it is not used for linkage",
7536 TYPE_NAME (t));
7537 }
7538 }
7539 else
7540 warning (0, "type %qT with no linkage used to declare variable "
7541 "%q#D with linkage", t, decl);
7542 }
7543 }
7544 else
7545 DECL_INTERFACE_KNOWN (decl) = 1;
7546
7547 return decl;
7548 }
7549
7550 /* Create and return a canonical pointer to member function type, for
7551 TYPE, which is a POINTER_TYPE to a METHOD_TYPE. */
7552
7553 tree
7554 build_ptrmemfunc_type (tree type)
7555 {
7556 tree field, fields;
7557 tree t;
7558 tree unqualified_variant = NULL_TREE;
7559
7560 if (type == error_mark_node)
7561 return type;
7562
7563 /* If a canonical type already exists for this type, use it. We use
7564 this method instead of type_hash_canon, because it only does a
7565 simple equality check on the list of field members. */
7566
7567 if ((t = TYPE_GET_PTRMEMFUNC_TYPE (type)))
7568 return t;
7569
7570 /* Make sure that we always have the unqualified pointer-to-member
7571 type first. */
7572 if (cp_type_quals (type) != TYPE_UNQUALIFIED)
7573 unqualified_variant
7574 = build_ptrmemfunc_type (TYPE_MAIN_VARIANT (type));
7575
7576 t = make_class_type (RECORD_TYPE);
7577 xref_basetypes (t, NULL_TREE);
7578
7579 /* Let the front end know this is a pointer to member function... */
7580 TYPE_PTRMEMFUNC_FLAG (t) = 1;
7581 /* ... and not really a class type. */
7582 SET_CLASS_TYPE_P (t, 0);
7583
7584 field = build_decl (input_location, FIELD_DECL, pfn_identifier, type);
7585 fields = field;
7586
7587 field = build_decl (input_location, FIELD_DECL, delta_identifier,
7588 delta_type_node);
7589 DECL_CHAIN (field) = fields;
7590 fields = field;
7591
7592 finish_builtin_struct (t, "__ptrmemfunc_type", fields, ptr_type_node);
7593
7594 /* Zap out the name so that the back end will give us the debugging
7595 information for this anonymous RECORD_TYPE. */
7596 TYPE_NAME (t) = NULL_TREE;
7597
7598 /* If this is not the unqualified form of this pointer-to-member
7599 type, set the TYPE_MAIN_VARIANT for this type to be the
7600 unqualified type. Since they are actually RECORD_TYPEs that are
7601 not variants of each other, we must do this manually.
7602 As we just built a new type there is no need to do yet another copy. */
7603 if (cp_type_quals (type) != TYPE_UNQUALIFIED)
7604 {
7605 int type_quals = cp_type_quals (type);
7606 TYPE_READONLY (t) = (type_quals & TYPE_QUAL_CONST) != 0;
7607 TYPE_VOLATILE (t) = (type_quals & TYPE_QUAL_VOLATILE) != 0;
7608 TYPE_RESTRICT (t) = (type_quals & TYPE_QUAL_RESTRICT) != 0;
7609 TYPE_MAIN_VARIANT (t) = unqualified_variant;
7610 TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (unqualified_variant);
7611 TYPE_NEXT_VARIANT (unqualified_variant) = t;
7612 TREE_TYPE (TYPE_BINFO (t)) = t;
7613 }
7614
7615 /* Cache this pointer-to-member type so that we can find it again
7616 later. */
7617 TYPE_SET_PTRMEMFUNC_TYPE (type, t);
7618
7619 if (TYPE_STRUCTURAL_EQUALITY_P (type))
7620 SET_TYPE_STRUCTURAL_EQUALITY (t);
7621 else if (TYPE_CANONICAL (type) != type)
7622 TYPE_CANONICAL (t) = build_ptrmemfunc_type (TYPE_CANONICAL (type));
7623
7624 return t;
7625 }
7626
7627 /* Create and return a pointer to data member type. */
7628
7629 tree
7630 build_ptrmem_type (tree class_type, tree member_type)
7631 {
7632 if (TREE_CODE (member_type) == METHOD_TYPE)
7633 {
7634 cp_cv_quals quals = type_memfn_quals (member_type);
7635 member_type = build_memfn_type (member_type, class_type, quals);
7636 return build_ptrmemfunc_type (build_pointer_type (member_type));
7637 }
7638 else
7639 {
7640 gcc_assert (TREE_CODE (member_type) != FUNCTION_TYPE);
7641 return build_offset_type (class_type, member_type);
7642 }
7643 }
7644
7645 /* DECL is a VAR_DECL defined in-class, whose TYPE is also given.
7646 Check to see that the definition is valid. Issue appropriate error
7647 messages. Return 1 if the definition is particularly bad, or 0
7648 otherwise. */
7649
7650 static int
7651 check_static_variable_definition (tree decl, tree type)
7652 {
7653 /* Can't check yet if we don't know the type. */
7654 if (dependent_type_p (type))
7655 return 0;
7656 /* If DECL is declared constexpr, we'll do the appropriate checks
7657 in check_initializer. */
7658 if (DECL_P (decl) && DECL_DECLARED_CONSTEXPR_P (decl))
7659 return 0;
7660 else if (cxx_dialect >= cxx0x && !INTEGRAL_OR_ENUMERATION_TYPE_P (type))
7661 {
7662 if (literal_type_p (type))
7663 error ("%<constexpr%> needed for in-class initialization of static "
7664 "data member %q#D of non-integral type", decl);
7665 else
7666 error ("in-class initialization of static data member %q#D of "
7667 "non-literal type", decl);
7668 return 1;
7669 }
7670
7671 /* Motion 10 at San Diego: If a static const integral data member is
7672 initialized with an integral constant expression, the initializer
7673 may appear either in the declaration (within the class), or in
7674 the definition, but not both. If it appears in the class, the
7675 member is a member constant. The file-scope definition is always
7676 required. */
7677 if (!ARITHMETIC_TYPE_P (type) && TREE_CODE (type) != ENUMERAL_TYPE)
7678 {
7679 error ("invalid in-class initialization of static data member "
7680 "of non-integral type %qT",
7681 type);
7682 return 1;
7683 }
7684 else if (!CP_TYPE_CONST_P (type))
7685 error ("ISO C++ forbids in-class initialization of non-const "
7686 "static member %qD",
7687 decl);
7688 else if (!INTEGRAL_OR_ENUMERATION_TYPE_P (type))
7689 pedwarn (input_location, OPT_pedantic, "ISO C++ forbids initialization of member constant "
7690 "%qD of non-integral type %qT", decl, type);
7691
7692 return 0;
7693 }
7694
7695 /* *expr_p is part of the TYPE_SIZE of a variably-sized array. If any
7696 SAVE_EXPRs in *expr_p wrap expressions with side-effects, break those
7697 expressions out into temporary variables so that walk_tree doesn't
7698 step into them (c++/15764). */
7699
7700 static tree
7701 stabilize_save_expr_r (tree *expr_p, int *walk_subtrees, void *data)
7702 {
7703 struct pointer_set_t *pset = (struct pointer_set_t *)data;
7704 tree expr = *expr_p;
7705 if (TREE_CODE (expr) == SAVE_EXPR)
7706 {
7707 tree op = TREE_OPERAND (expr, 0);
7708 cp_walk_tree (&op, stabilize_save_expr_r, data, pset);
7709 if (TREE_SIDE_EFFECTS (op))
7710 TREE_OPERAND (expr, 0) = get_temp_regvar (TREE_TYPE (op), op);
7711 *walk_subtrees = 0;
7712 }
7713 else if (!EXPR_P (expr) || !TREE_SIDE_EFFECTS (expr))
7714 *walk_subtrees = 0;
7715 return NULL;
7716 }
7717
7718 /* Entry point for the above. */
7719
7720 static void
7721 stabilize_vla_size (tree size)
7722 {
7723 struct pointer_set_t *pset = pointer_set_create ();
7724 /* Break out any function calls into temporary variables. */
7725 cp_walk_tree (&size, stabilize_save_expr_r, pset, pset);
7726 }
7727
7728 /* Given the SIZE (i.e., number of elements) in an array, compute an
7729 appropriate index type for the array. If non-NULL, NAME is the
7730 name of the thing being declared. */
7731
7732 tree
7733 compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
7734 {
7735 tree type;
7736 tree itype;
7737 tree osize = size;
7738 tree abi_1_itype = NULL_TREE;
7739
7740 if (error_operand_p (size))
7741 return error_mark_node;
7742
7743 type = TREE_TYPE (size);
7744 /* type_dependent_expression_p? */
7745 if (!dependent_type_p (type))
7746 {
7747 mark_rvalue_use (size);
7748
7749 if (cxx_dialect < cxx0x && TREE_CODE (size) == NOP_EXPR
7750 && TREE_SIDE_EFFECTS (size))
7751 /* In C++98, we mark a non-constant array bound with a magic
7752 NOP_EXPR with TREE_SIDE_EFFECTS; don't fold in that case. */;
7753 else
7754 {
7755 size = fold_non_dependent_expr (size);
7756
7757 if (CLASS_TYPE_P (type)
7758 && CLASSTYPE_LITERAL_P (type))
7759 {
7760 size = build_expr_type_conversion (WANT_INT, size, true);
7761 if (!size)
7762 {
7763 if (!(complain & tf_error))
7764 return error_mark_node;
7765 if (name)
7766 error ("size of array %qD has non-integral type %qT",
7767 name, type);
7768 else
7769 error ("size of array has non-integral type %qT", type);
7770 size = integer_one_node;
7771 }
7772 if (size == error_mark_node)
7773 return error_mark_node;
7774 type = TREE_TYPE (size);
7775 /* We didn't support this case in GCC 3.2, so don't bother
7776 trying to model it now in ABI v1. */
7777 abi_1_itype = error_mark_node;
7778 }
7779
7780 size = maybe_constant_value (size);
7781 if (!TREE_CONSTANT (size))
7782 size = osize;
7783 }
7784
7785 if (error_operand_p (size))
7786 return error_mark_node;
7787
7788 /* The array bound must be an integer type. */
7789 if (!INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type))
7790 {
7791 if (!(complain & tf_error))
7792 return error_mark_node;
7793 if (name)
7794 error ("size of array %qD has non-integral type %qT", name, type);
7795 else
7796 error ("size of array has non-integral type %qT", type);
7797 size = integer_one_node;
7798 type = TREE_TYPE (size);
7799 }
7800 }
7801
7802 /* A type is dependent if it is...an array type constructed from any
7803 dependent type or whose size is specified by a constant expression
7804 that is value-dependent. */
7805 /* We can only call value_dependent_expression_p on integral constant
7806 expressions; treat non-constant expressions as dependent, too. */
7807 if (processing_template_decl
7808 && (dependent_type_p (type)
7809 || !TREE_CONSTANT (size) || value_dependent_expression_p (size)))
7810 {
7811 /* We cannot do any checking for a SIZE that isn't known to be
7812 constant. Just build the index type and mark that it requires
7813 structural equality checks. */
7814 itype = build_index_type (build_min (MINUS_EXPR, sizetype,
7815 size, integer_one_node));
7816 TYPE_DEPENDENT_P (itype) = 1;
7817 TYPE_DEPENDENT_P_VALID (itype) = 1;
7818 SET_TYPE_STRUCTURAL_EQUALITY (itype);
7819 return itype;
7820 }
7821
7822 if (!abi_version_at_least (2) && processing_template_decl
7823 && abi_1_itype == NULL_TREE)
7824 /* For abi-1, we handled all instances in templates the same way,
7825 even when they were non-dependent. This affects the manglings
7826 produced. So, we do the normal checking for non-dependent
7827 sizes, but at the end we'll return the same type that abi-1
7828 would have, but with TYPE_CANONICAL set to the "right"
7829 value that the current ABI would provide. */
7830 abi_1_itype = build_index_type (build_min (MINUS_EXPR, sizetype,
7831 osize, integer_one_node));
7832
7833 /* Normally, the array-bound will be a constant. */
7834 if (TREE_CODE (size) == INTEGER_CST)
7835 {
7836 /* Check to see if the array bound overflowed. Make that an
7837 error, no matter how generous we're being. */
7838 constant_expression_error (size);
7839
7840 /* An array must have a positive number of elements. */
7841 if (INT_CST_LT (size, integer_zero_node))
7842 {
7843 if (!(complain & tf_error))
7844 return error_mark_node;
7845 if (name)
7846 error ("size of array %qD is negative", name);
7847 else
7848 error ("size of array is negative");
7849 size = integer_one_node;
7850 }
7851 /* As an extension we allow zero-sized arrays. */
7852 else if (integer_zerop (size))
7853 {
7854 if (!(complain & tf_error))
7855 /* We must fail if performing argument deduction (as
7856 indicated by the state of complain), so that
7857 another substitution can be found. */
7858 return error_mark_node;
7859 else if (in_system_header)
7860 /* Allow them in system headers because glibc uses them. */;
7861 else if (name)
7862 pedwarn (input_location, OPT_pedantic, "ISO C++ forbids zero-size array %qD", name);
7863 else
7864 pedwarn (input_location, OPT_pedantic, "ISO C++ forbids zero-size array");
7865 }
7866 }
7867 else if (TREE_CONSTANT (size)
7868 /* We don't allow VLAs at non-function scopes, or during
7869 tentative template substitution. */
7870 || !at_function_scope_p () || !(complain & tf_error))
7871 {
7872 if (!(complain & tf_error))
7873 return error_mark_node;
7874 /* `(int) &fn' is not a valid array bound. */
7875 if (name)
7876 error ("size of array %qD is not an integral constant-expression",
7877 name);
7878 else
7879 error ("size of array is not an integral constant-expression");
7880 size = integer_one_node;
7881 }
7882 else if (pedantic && warn_vla != 0)
7883 {
7884 if (name)
7885 pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
7886 else
7887 pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array");
7888 }
7889 else if (warn_vla > 0)
7890 {
7891 if (name)
7892 warning (OPT_Wvla,
7893 "variable length array %qD is used", name);
7894 else
7895 warning (OPT_Wvla,
7896 "variable length array is used");
7897 }
7898
7899 if (processing_template_decl && !TREE_CONSTANT (size))
7900 /* A variable sized array. */
7901 itype = build_min (MINUS_EXPR, sizetype, size, integer_one_node);
7902 else
7903 {
7904 HOST_WIDE_INT saved_processing_template_decl;
7905
7906 /* Compute the index of the largest element in the array. It is
7907 one less than the number of elements in the array. We save
7908 and restore PROCESSING_TEMPLATE_DECL so that computations in
7909 cp_build_binary_op will be appropriately folded. */
7910 saved_processing_template_decl = processing_template_decl;
7911 processing_template_decl = 0;
7912 itype = cp_build_binary_op (input_location,
7913 MINUS_EXPR,
7914 cp_convert (ssizetype, size),
7915 cp_convert (ssizetype, integer_one_node),
7916 tf_warning_or_error);
7917 itype = fold (itype);
7918 processing_template_decl = saved_processing_template_decl;
7919
7920 if (!TREE_CONSTANT (itype))
7921 /* A variable sized array. */
7922 itype = variable_size (itype);
7923 /* Make sure that there was no overflow when creating to a signed
7924 index type. (For example, on a 32-bit machine, an array with
7925 size 2^32 - 1 is too big.) */
7926 else if (TREE_CODE (itype) == INTEGER_CST
7927 && TREE_OVERFLOW (itype))
7928 {
7929 if (!(complain & tf_error))
7930 return error_mark_node;
7931 error ("overflow in array dimension");
7932 TREE_OVERFLOW (itype) = 0;
7933 }
7934 }
7935
7936 /* Create and return the appropriate index type. */
7937 if (abi_1_itype && abi_1_itype != error_mark_node)
7938 {
7939 tree t = build_index_type (itype);
7940 TYPE_CANONICAL (abi_1_itype) = TYPE_CANONICAL (t);
7941 itype = abi_1_itype;
7942 }
7943 else
7944 itype = build_index_type (itype);
7945
7946 /* If the index type were dependent, we would have returned early, so
7947 remember that it isn't. */
7948 TYPE_DEPENDENT_P (itype) = 0;
7949 TYPE_DEPENDENT_P_VALID (itype) = 1;
7950 return itype;
7951 }
7952
7953 /* Returns the scope (if any) in which the entity declared by
7954 DECLARATOR will be located. If the entity was declared with an
7955 unqualified name, NULL_TREE is returned. */
7956
7957 tree
7958 get_scope_of_declarator (const cp_declarator *declarator)
7959 {
7960 while (declarator && declarator->kind != cdk_id)
7961 declarator = declarator->declarator;
7962
7963 /* If the declarator-id is a SCOPE_REF, the scope in which the
7964 declaration occurs is the first operand. */
7965 if (declarator
7966 && declarator->u.id.qualifying_scope)
7967 return declarator->u.id.qualifying_scope;
7968
7969 /* Otherwise, the declarator is not a qualified name; the entity will
7970 be declared in the current scope. */
7971 return NULL_TREE;
7972 }
7973
7974 /* Returns an ARRAY_TYPE for an array with SIZE elements of the
7975 indicated TYPE. If non-NULL, NAME is the NAME of the declaration
7976 with this type. */
7977
7978 static tree
7979 create_array_type_for_decl (tree name, tree type, tree size)
7980 {
7981 tree itype = NULL_TREE;
7982
7983 /* If things have already gone awry, bail now. */
7984 if (type == error_mark_node || size == error_mark_node)
7985 return error_mark_node;
7986
7987 /* 8.3.4/1: If the type of the identifier of D contains the auto
7988 type-specifier, the program is ill-formed. */
7989 if (pedantic && type_uses_auto (type))
7990 pedwarn (input_location, OPT_pedantic,
7991 "declaration of %qD as array of %<auto%>", name);
7992
7993 /* If there are some types which cannot be array elements,
7994 issue an error-message and return. */
7995 switch (TREE_CODE (type))
7996 {
7997 case VOID_TYPE:
7998 if (name)
7999 error ("declaration of %qD as array of void", name);
8000 else
8001 error ("creating array of void");
8002 return error_mark_node;
8003
8004 case FUNCTION_TYPE:
8005 if (name)
8006 error ("declaration of %qD as array of functions", name);
8007 else
8008 error ("creating array of functions");
8009 return error_mark_node;
8010
8011 case REFERENCE_TYPE:
8012 if (name)
8013 error ("declaration of %qD as array of references", name);
8014 else
8015 error ("creating array of references");
8016 return error_mark_node;
8017
8018 case METHOD_TYPE:
8019 if (name)
8020 error ("declaration of %qD as array of function members", name);
8021 else
8022 error ("creating array of function members");
8023 return error_mark_node;
8024
8025 default:
8026 break;
8027 }
8028
8029 /* [dcl.array]
8030
8031 The constant expressions that specify the bounds of the arrays
8032 can be omitted only for the first member of the sequence. */
8033 if (TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type))
8034 {
8035 if (name)
8036 error ("declaration of %qD as multidimensional array must "
8037 "have bounds for all dimensions except the first",
8038 name);
8039 else
8040 error ("multidimensional array must have bounds for all "
8041 "dimensions except the first");
8042
8043 return error_mark_node;
8044 }
8045
8046 /* Figure out the index type for the array. */
8047 if (size)
8048 itype = compute_array_index_type (name, size, tf_warning_or_error);
8049
8050 /* [dcl.array]
8051 T is called the array element type; this type shall not be [...] an
8052 abstract class type. */
8053 abstract_virtuals_error (name, type);
8054
8055 return build_cplus_array_type (type, itype);
8056 }
8057
8058 /* Check that it's OK to declare a function with the indicated TYPE.
8059 SFK indicates the kind of special function (if any) that this
8060 function is. OPTYPE is the type given in a conversion operator
8061 declaration, or the class type for a constructor/destructor.
8062 Returns the actual return type of the function; that
8063 may be different than TYPE if an error occurs, or for certain
8064 special functions. */
8065
8066 static tree
8067 check_special_function_return_type (special_function_kind sfk,
8068 tree type,
8069 tree optype)
8070 {
8071 switch (sfk)
8072 {
8073 case sfk_constructor:
8074 if (type)
8075 error ("return type specification for constructor invalid");
8076
8077 if (targetm.cxx.cdtor_returns_this () && !TYPE_FOR_JAVA (optype))
8078 type = build_pointer_type (optype);
8079 else
8080 type = void_type_node;
8081 break;
8082
8083 case sfk_destructor:
8084 if (type)
8085 error ("return type specification for destructor invalid");
8086 /* We can't use the proper return type here because we run into
8087 problems with ambiguous bases and covariant returns.
8088 Java classes are left unchanged because (void *) isn't a valid
8089 Java type, and we don't want to change the Java ABI. */
8090 if (targetm.cxx.cdtor_returns_this () && !TYPE_FOR_JAVA (optype))
8091 type = build_pointer_type (void_type_node);
8092 else
8093 type = void_type_node;
8094 break;
8095
8096 case sfk_conversion:
8097 if (type)
8098 error ("return type specified for %<operator %T%>", optype);
8099 type = optype;
8100 break;
8101
8102 default:
8103 gcc_unreachable ();
8104 }
8105
8106 return type;
8107 }
8108
8109 /* A variable or data member (whose unqualified name is IDENTIFIER)
8110 has been declared with the indicated TYPE. If the TYPE is not
8111 acceptable, issue an error message and return a type to use for
8112 error-recovery purposes. */
8113
8114 tree
8115 check_var_type (tree identifier, tree type)
8116 {
8117 if (VOID_TYPE_P (type))
8118 {
8119 if (!identifier)
8120 error ("unnamed variable or field declared void");
8121 else if (TREE_CODE (identifier) == IDENTIFIER_NODE)
8122 {
8123 gcc_assert (!IDENTIFIER_OPNAME_P (identifier));
8124 error ("variable or field %qE declared void", identifier);
8125 }
8126 else
8127 error ("variable or field declared void");
8128 type = error_mark_node;
8129 }
8130
8131 return type;
8132 }
8133
8134 /* Given declspecs and a declarator (abstract or otherwise), determine
8135 the name and type of the object declared and construct a DECL node
8136 for it.
8137
8138 DECLSPECS points to the representation of declaration-specifier
8139 sequence that precedes declarator.
8140
8141 DECL_CONTEXT says which syntactic context this declaration is in:
8142 NORMAL for most contexts. Make a VAR_DECL or FUNCTION_DECL or TYPE_DECL.
8143 FUNCDEF for a function definition. Like NORMAL but a few different
8144 error messages in each case. Return value may be zero meaning
8145 this definition is too screwy to try to parse.
8146 MEMFUNCDEF for a function definition. Like FUNCDEF but prepares to
8147 handle member functions (which have FIELD context).
8148 Return value may be zero meaning this definition is too screwy to
8149 try to parse.
8150 PARM for a parameter declaration (either within a function prototype
8151 or before a function body). Make a PARM_DECL, or return void_type_node.
8152 TPARM for a template parameter declaration.
8153 CATCHPARM for a parameter declaration before a catch clause.
8154 TYPENAME if for a typename (in a cast or sizeof).
8155 Don't make a DECL node; just return the ..._TYPE node.
8156 FIELD for a struct or union field; make a FIELD_DECL.
8157 BITFIELD for a field with specified width.
8158
8159 INITIALIZED is as for start_decl.
8160
8161 ATTRLIST is a pointer to the list of attributes, which may be NULL
8162 if there are none; *ATTRLIST may be modified if attributes from inside
8163 the declarator should be applied to the declaration.
8164
8165 When this function is called, scoping variables (such as
8166 CURRENT_CLASS_TYPE) should reflect the scope in which the
8167 declaration occurs, not the scope in which the new declaration will
8168 be placed. For example, on:
8169
8170 void S::f() { ... }
8171
8172 when grokdeclarator is called for `S::f', the CURRENT_CLASS_TYPE
8173 should not be `S'.
8174
8175 Returns a DECL (if a declarator is present), a TYPE (if there is no
8176 declarator, in cases like "struct S;"), or the ERROR_MARK_NODE if an
8177 error occurs. */
8178
8179 tree
8180 grokdeclarator (const cp_declarator *declarator,
8181 const cp_decl_specifier_seq *declspecs,
8182 enum decl_context decl_context,
8183 int initialized,
8184 tree* attrlist)
8185 {
8186 tree type = NULL_TREE;
8187 int longlong = 0;
8188 int explicit_int128 = 0;
8189 int virtualp, explicitp, friendp, inlinep, staticp;
8190 int explicit_int = 0;
8191 int explicit_char = 0;
8192 int defaulted_int = 0;
8193 tree dependent_name = NULL_TREE;
8194
8195 tree typedef_decl = NULL_TREE;
8196 const char *name = NULL;
8197 tree typedef_type = NULL_TREE;
8198 /* True if this declarator is a function definition. */
8199 bool funcdef_flag = false;
8200 cp_declarator_kind innermost_code = cdk_error;
8201 int bitfield = 0;
8202 #if 0
8203 /* See the code below that used this. */
8204 tree decl_attr = NULL_TREE;
8205 #endif
8206
8207 /* Keep track of what sort of function is being processed
8208 so that we can warn about default return values, or explicit
8209 return values which do not match prescribed defaults. */
8210 special_function_kind sfk = sfk_none;
8211
8212 tree dname = NULL_TREE;
8213 tree ctor_return_type = NULL_TREE;
8214 enum overload_flags flags = NO_SPECIAL;
8215 /* cv-qualifiers that apply to the declarator, for a declaration of
8216 a member function. */
8217 cp_cv_quals memfn_quals = TYPE_UNQUALIFIED;
8218 /* virt-specifiers that apply to the declarator, for a declaration of
8219 a member function. */
8220 cp_virt_specifiers virt_specifiers = VIRT_SPEC_UNSPECIFIED;
8221 /* cv-qualifiers that apply to the type specified by the DECLSPECS. */
8222 int type_quals;
8223 tree raises = NULL_TREE;
8224 int template_count = 0;
8225 tree returned_attrs = NULL_TREE;
8226 tree parms = NULL_TREE;
8227 const cp_declarator *id_declarator;
8228 /* The unqualified name of the declarator; either an
8229 IDENTIFIER_NODE, BIT_NOT_EXPR, or TEMPLATE_ID_EXPR. */
8230 tree unqualified_id;
8231 /* The class type, if any, in which this entity is located,
8232 or NULL_TREE if none. Note that this value may be different from
8233 the current class type; for example if an attempt is made to declare
8234 "A::f" inside "B", this value will be "A". */
8235 tree ctype = current_class_type;
8236 /* The NAMESPACE_DECL for the namespace in which this entity is
8237 located. If an unqualified name is used to declare the entity,
8238 this value will be NULL_TREE, even if the entity is located at
8239 namespace scope. */
8240 tree in_namespace = NULL_TREE;
8241 cp_storage_class storage_class;
8242 bool unsigned_p, signed_p, short_p, long_p, thread_p;
8243 bool type_was_error_mark_node = false;
8244 bool parameter_pack_p = declarator? declarator->parameter_pack_p : false;
8245 bool template_type_arg = false;
8246 bool template_parm_flag = false;
8247 bool constexpr_p = declspecs->specs[(int) ds_constexpr];
8248 const char *errmsg;
8249
8250 signed_p = declspecs->specs[(int)ds_signed];
8251 unsigned_p = declspecs->specs[(int)ds_unsigned];
8252 short_p = declspecs->specs[(int)ds_short];
8253 long_p = declspecs->specs[(int)ds_long];
8254 longlong = declspecs->specs[(int)ds_long] >= 2;
8255 explicit_int128 = declspecs->explicit_int128_p;
8256 thread_p = declspecs->specs[(int)ds_thread];
8257
8258 if (decl_context == FUNCDEF)
8259 funcdef_flag = true, decl_context = NORMAL;
8260 else if (decl_context == MEMFUNCDEF)
8261 funcdef_flag = true, decl_context = FIELD;
8262 else if (decl_context == BITFIELD)
8263 bitfield = 1, decl_context = FIELD;
8264 else if (decl_context == TEMPLATE_TYPE_ARG)
8265 template_type_arg = true, decl_context = TYPENAME;
8266 else if (decl_context == TPARM)
8267 template_parm_flag = true, decl_context = PARM;
8268
8269 if (initialized > 1)
8270 funcdef_flag = true;
8271
8272 /* Look inside a declarator for the name being declared
8273 and get it as a string, for an error message. */
8274 for (id_declarator = declarator;
8275 id_declarator;
8276 id_declarator = id_declarator->declarator)
8277 {
8278 if (id_declarator->kind != cdk_id)
8279 innermost_code = id_declarator->kind;
8280
8281 switch (id_declarator->kind)
8282 {
8283 case cdk_function:
8284 if (id_declarator->declarator
8285 && id_declarator->declarator->kind == cdk_id)
8286 {
8287 sfk = id_declarator->declarator->u.id.sfk;
8288 if (sfk == sfk_destructor)
8289 flags = DTOR_FLAG;
8290 }
8291 break;
8292
8293 case cdk_id:
8294 {
8295 tree qualifying_scope = id_declarator->u.id.qualifying_scope;
8296 tree decl = id_declarator->u.id.unqualified_name;
8297 if (!decl)
8298 break;
8299 if (qualifying_scope)
8300 {
8301 if (at_function_scope_p ())
8302 {
8303 /* [dcl.meaning]
8304
8305 A declarator-id shall not be qualified except
8306 for ...
8307
8308 None of the cases are permitted in block
8309 scope. */
8310 if (qualifying_scope == global_namespace)
8311 error ("invalid use of qualified-name %<::%D%>",
8312 decl);
8313 else if (TYPE_P (qualifying_scope))
8314 error ("invalid use of qualified-name %<%T::%D%>",
8315 qualifying_scope, decl);
8316 else
8317 error ("invalid use of qualified-name %<%D::%D%>",
8318 qualifying_scope, decl);
8319 return error_mark_node;
8320 }
8321 else if (TYPE_P (qualifying_scope))
8322 {
8323 ctype = qualifying_scope;
8324 if (innermost_code != cdk_function
8325 && current_class_type
8326 && !UNIQUELY_DERIVED_FROM_P (ctype,
8327 current_class_type))
8328 {
8329 error ("type %qT is not derived from type %qT",
8330 ctype, current_class_type);
8331 return error_mark_node;
8332 }
8333 }
8334 else if (TREE_CODE (qualifying_scope) == NAMESPACE_DECL)
8335 in_namespace = qualifying_scope;
8336 }
8337 switch (TREE_CODE (decl))
8338 {
8339 case BIT_NOT_EXPR:
8340 {
8341 tree type;
8342
8343 if (innermost_code != cdk_function)
8344 {
8345 error ("declaration of %qD as non-function", decl);
8346 return error_mark_node;
8347 }
8348 else if (!qualifying_scope
8349 && !(current_class_type && at_class_scope_p ()))
8350 {
8351 error ("declaration of %qD as non-member", decl);
8352 return error_mark_node;
8353 }
8354
8355 type = TREE_OPERAND (decl, 0);
8356 if (TYPE_P (type))
8357 type = constructor_name (type);
8358 name = identifier_to_locale (IDENTIFIER_POINTER (type));
8359 dname = decl;
8360 }
8361 break;
8362
8363 case TEMPLATE_ID_EXPR:
8364 {
8365 tree fns = TREE_OPERAND (decl, 0);
8366
8367 dname = fns;
8368 if (TREE_CODE (dname) != IDENTIFIER_NODE)
8369 {
8370 gcc_assert (is_overloaded_fn (dname));
8371 dname = DECL_NAME (get_first_fn (dname));
8372 }
8373 }
8374 /* Fall through. */
8375
8376 case IDENTIFIER_NODE:
8377 if (TREE_CODE (decl) == IDENTIFIER_NODE)
8378 dname = decl;
8379
8380 if (C_IS_RESERVED_WORD (dname))
8381 {
8382 error ("declarator-id missing; using reserved word %qD",
8383 dname);
8384 name = identifier_to_locale (IDENTIFIER_POINTER (dname));
8385 }
8386 else if (!IDENTIFIER_TYPENAME_P (dname))
8387 name = identifier_to_locale (IDENTIFIER_POINTER (dname));
8388 else
8389 {
8390 gcc_assert (flags == NO_SPECIAL);
8391 flags = TYPENAME_FLAG;
8392 ctor_return_type = TREE_TYPE (dname);
8393 sfk = sfk_conversion;
8394 if (is_typename_at_global_scope (dname))
8395 name = identifier_to_locale (IDENTIFIER_POINTER (dname));
8396 else
8397 name = "<invalid operator>";
8398 }
8399 break;
8400
8401 default:
8402 gcc_unreachable ();
8403 }
8404 break;
8405 }
8406
8407 case cdk_array:
8408 case cdk_pointer:
8409 case cdk_reference:
8410 case cdk_ptrmem:
8411 break;
8412
8413 case cdk_error:
8414 return error_mark_node;
8415
8416 default:
8417 gcc_unreachable ();
8418 }
8419 if (id_declarator->kind == cdk_id)
8420 break;
8421 }
8422
8423 /* [dcl.fct.edf]
8424
8425 The declarator in a function-definition shall have the form
8426 D1 ( parameter-declaration-clause) ... */
8427 if (funcdef_flag && innermost_code != cdk_function)
8428 {
8429 error ("function definition does not declare parameters");
8430 return error_mark_node;
8431 }
8432
8433 if (((dname && IDENTIFIER_OPNAME_P (dname)) || flags == TYPENAME_FLAG)
8434 && innermost_code != cdk_function
8435 && ! (ctype && !declspecs->any_specifiers_p))
8436 {
8437 error ("declaration of %qD as non-function", dname);
8438 return error_mark_node;
8439 }
8440
8441 /* Anything declared one level down from the top level
8442 must be one of the parameters of a function
8443 (because the body is at least two levels down). */
8444
8445 /* This heuristic cannot be applied to C++ nodes! Fixed, however,
8446 by not allowing C++ class definitions to specify their parameters
8447 with xdecls (must be spec.d in the parmlist).
8448
8449 Since we now wait to push a class scope until we are sure that
8450 we are in a legitimate method context, we must set oldcname
8451 explicitly (since current_class_name is not yet alive).
8452
8453 We also want to avoid calling this a PARM if it is in a namespace. */
8454
8455 if (decl_context == NORMAL && !toplevel_bindings_p ())
8456 {
8457 struct cp_binding_level *b = current_binding_level;
8458 current_binding_level = b->level_chain;
8459 if (current_binding_level != 0 && toplevel_bindings_p ())
8460 decl_context = PARM;
8461 current_binding_level = b;
8462 }
8463
8464 if (name == NULL)
8465 name = decl_context == PARM ? "parameter" : "type name";
8466
8467 if (constexpr_p && declspecs->specs[(int)ds_typedef])
8468 {
8469 error ("%<constexpr%> cannot appear in a typedef declaration");
8470 return error_mark_node;
8471 }
8472
8473 /* If there were multiple types specified in the decl-specifier-seq,
8474 issue an error message. */
8475 if (declspecs->multiple_types_p)
8476 {
8477 error ("two or more data types in declaration of %qs", name);
8478 return error_mark_node;
8479 }
8480
8481 if (declspecs->conflicting_specifiers_p)
8482 {
8483 error ("conflicting specifiers in declaration of %qs", name);
8484 return error_mark_node;
8485 }
8486
8487 /* Extract the basic type from the decl-specifier-seq. */
8488 type = declspecs->type;
8489 if (type == error_mark_node)
8490 {
8491 type = NULL_TREE;
8492 type_was_error_mark_node = true;
8493 }
8494 /* If the entire declaration is itself tagged as deprecated then
8495 suppress reports of deprecated items. */
8496 if (type && TREE_DEPRECATED (type)
8497 && deprecated_state != DEPRECATED_SUPPRESS)
8498 warn_deprecated_use (type, NULL_TREE);
8499 if (type && TREE_CODE (type) == TYPE_DECL)
8500 {
8501 typedef_decl = type;
8502 type = TREE_TYPE (typedef_decl);
8503 if (TREE_DEPRECATED (type)
8504 && DECL_ARTIFICIAL (typedef_decl)
8505 && deprecated_state != DEPRECATED_SUPPRESS)
8506 warn_deprecated_use (type, NULL_TREE);
8507 }
8508 /* No type at all: default to `int', and set DEFAULTED_INT
8509 because it was not a user-defined typedef. */
8510 if (type == NULL_TREE && (signed_p || unsigned_p || long_p || short_p))
8511 {
8512 /* These imply 'int'. */
8513 type = integer_type_node;
8514 defaulted_int = 1;
8515 }
8516 /* Gather flags. */
8517 explicit_int = declspecs->explicit_int_p;
8518 explicit_char = declspecs->explicit_char_p;
8519
8520 #if 0
8521 /* See the code below that used this. */
8522 if (typedef_decl)
8523 decl_attr = DECL_ATTRIBUTES (typedef_decl);
8524 #endif
8525 typedef_type = type;
8526
8527
8528 if (sfk != sfk_conversion)
8529 ctor_return_type = ctype;
8530
8531 if (sfk != sfk_none)
8532 type = check_special_function_return_type (sfk, type,
8533 ctor_return_type);
8534 else if (type == NULL_TREE)
8535 {
8536 int is_main;
8537
8538 explicit_int = -1;
8539
8540 /* We handle `main' specially here, because 'main () { }' is so
8541 common. With no options, it is allowed. With -Wreturn-type,
8542 it is a warning. It is only an error with -pedantic-errors. */
8543 is_main = (funcdef_flag
8544 && dname && TREE_CODE (dname) == IDENTIFIER_NODE
8545 && MAIN_NAME_P (dname)
8546 && ctype == NULL_TREE
8547 && in_namespace == NULL_TREE
8548 && current_namespace == global_namespace);
8549
8550 if (type_was_error_mark_node)
8551 /* We've already issued an error, don't complain more. */;
8552 else if (in_system_header || flag_ms_extensions)
8553 /* Allow it, sigh. */;
8554 else if (! is_main)
8555 permerror (input_location, "ISO C++ forbids declaration of %qs with no type", name);
8556 else if (pedantic)
8557 pedwarn (input_location, OPT_pedantic,
8558 "ISO C++ forbids declaration of %qs with no type", name);
8559 else
8560 warning (OPT_Wreturn_type,
8561 "ISO C++ forbids declaration of %qs with no type", name);
8562
8563 type = integer_type_node;
8564 }
8565
8566 ctype = NULL_TREE;
8567
8568 /* Now process the modifiers that were specified
8569 and check for invalid combinations. */
8570
8571 /* Long double is a special combination. */
8572 if (long_p && !longlong && TYPE_MAIN_VARIANT (type) == double_type_node)
8573 {
8574 long_p = false;
8575 type = cp_build_qualified_type (long_double_type_node,
8576 cp_type_quals (type));
8577 }
8578
8579 /* Check all other uses of type modifiers. */
8580
8581 if (unsigned_p || signed_p || long_p || short_p)
8582 {
8583 int ok = 0;
8584
8585 if ((signed_p || unsigned_p) && TREE_CODE (type) != INTEGER_TYPE)
8586 error ("%<signed%> or %<unsigned%> invalid for %qs", name);
8587 else if (signed_p && unsigned_p)
8588 error ("%<signed%> and %<unsigned%> specified together for %qs", name);
8589 else if (longlong && TREE_CODE (type) != INTEGER_TYPE)
8590 error ("%<long long%> invalid for %qs", name);
8591 else if (explicit_int128 && TREE_CODE (type) != INTEGER_TYPE)
8592 error ("%<__int128%> invalid for %qs", name);
8593 else if (long_p && TREE_CODE (type) == REAL_TYPE)
8594 error ("%<long%> invalid for %qs", name);
8595 else if (short_p && TREE_CODE (type) == REAL_TYPE)
8596 error ("%<short%> invalid for %qs", name);
8597 else if ((long_p || short_p) && TREE_CODE (type) != INTEGER_TYPE)
8598 error ("%<long%> or %<short%> invalid for %qs", name);
8599 else if ((long_p || short_p || explicit_char || explicit_int) && explicit_int128)
8600 error ("%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs", name);
8601 else if ((long_p || short_p) && explicit_char)
8602 error ("%<long%> or %<short%> specified with char for %qs", name);
8603 else if (long_p && short_p)
8604 error ("%<long%> and %<short%> specified together for %qs", name);
8605 else if (type == char16_type_node || type == char32_type_node)
8606 {
8607 if (signed_p || unsigned_p)
8608 error ("%<signed%> or %<unsigned%> invalid for %qs", name);
8609 else if (short_p || long_p)
8610 error ("%<short%> or %<long%> invalid for %qs", name);
8611 }
8612 else
8613 {
8614 ok = 1;
8615 if (!explicit_int && !defaulted_int && !explicit_char && !explicit_int128 && pedantic)
8616 {
8617 pedwarn (input_location, OPT_pedantic,
8618 "long, short, signed or unsigned used invalidly for %qs",
8619 name);
8620 if (flag_pedantic_errors)
8621 ok = 0;
8622 }
8623 if (explicit_int128)
8624 {
8625 if (int128_integer_type_node == NULL_TREE)
8626 {
8627 error ("%<__int128%> is not supported by this target");
8628 ok = 0;
8629 }
8630 else if (pedantic)
8631 {
8632 pedwarn (input_location, OPT_pedantic,
8633 "ISO C++ does not support %<__int128%> for %qs",
8634 name);
8635 if (flag_pedantic_errors)
8636 ok = 0;
8637 }
8638 }
8639 }
8640
8641 /* Discard the type modifiers if they are invalid. */
8642 if (! ok)
8643 {
8644 unsigned_p = false;
8645 signed_p = false;
8646 long_p = false;
8647 short_p = false;
8648 longlong = 0;
8649 explicit_int128 = false;
8650 }
8651 }
8652
8653 /* Decide whether an integer type is signed or not.
8654 Optionally treat bitfields as signed by default. */
8655 if (unsigned_p
8656 /* [class.bit]
8657
8658 It is implementation-defined whether a plain (neither
8659 explicitly signed or unsigned) char, short, int, or long
8660 bit-field is signed or unsigned.
8661
8662 Naturally, we extend this to long long as well. Note that
8663 this does not include wchar_t. */
8664 || (bitfield && !flag_signed_bitfields
8665 && !signed_p
8666 /* A typedef for plain `int' without `signed' can be
8667 controlled just like plain `int', but a typedef for
8668 `signed int' cannot be so controlled. */
8669 && !(typedef_decl
8670 && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl))
8671 && TREE_CODE (type) == INTEGER_TYPE
8672 && !same_type_p (TYPE_MAIN_VARIANT (type), wchar_type_node)))
8673 {
8674 if (explicit_int128)
8675 type = int128_unsigned_type_node;
8676 else if (longlong)
8677 type = long_long_unsigned_type_node;
8678 else if (long_p)
8679 type = long_unsigned_type_node;
8680 else if (short_p)
8681 type = short_unsigned_type_node;
8682 else if (type == char_type_node)
8683 type = unsigned_char_type_node;
8684 else if (typedef_decl)
8685 type = unsigned_type_for (type);
8686 else
8687 type = unsigned_type_node;
8688 }
8689 else if (signed_p && type == char_type_node)
8690 type = signed_char_type_node;
8691 else if (explicit_int128)
8692 type = int128_integer_type_node;
8693 else if (longlong)
8694 type = long_long_integer_type_node;
8695 else if (long_p)
8696 type = long_integer_type_node;
8697 else if (short_p)
8698 type = short_integer_type_node;
8699
8700 if (declspecs->specs[(int)ds_complex])
8701 {
8702 if (TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != REAL_TYPE)
8703 error ("complex invalid for %qs", name);
8704 /* If we just have "complex", it is equivalent to
8705 "complex double", but if any modifiers at all are specified it is
8706 the complex form of TYPE. E.g, "complex short" is
8707 "complex short int". */
8708 else if (defaulted_int && ! longlong && ! explicit_int128
8709 && ! (long_p || short_p || signed_p || unsigned_p))
8710 type = complex_double_type_node;
8711 else if (type == integer_type_node)
8712 type = complex_integer_type_node;
8713 else if (type == float_type_node)
8714 type = complex_float_type_node;
8715 else if (type == double_type_node)
8716 type = complex_double_type_node;
8717 else if (type == long_double_type_node)
8718 type = complex_long_double_type_node;
8719 else
8720 type = build_complex_type (type);
8721 }
8722
8723 type_quals = TYPE_UNQUALIFIED;
8724 if (declspecs->specs[(int)ds_const])
8725 type_quals |= TYPE_QUAL_CONST;
8726 if (declspecs->specs[(int)ds_volatile])
8727 type_quals |= TYPE_QUAL_VOLATILE;
8728 if (declspecs->specs[(int)ds_restrict])
8729 type_quals |= TYPE_QUAL_RESTRICT;
8730 if (sfk == sfk_conversion && type_quals != TYPE_UNQUALIFIED)
8731 error ("qualifiers are not allowed on declaration of %<operator %T%>",
8732 ctor_return_type);
8733
8734 type_quals |= cp_type_quals (type);
8735 type = cp_build_qualified_type_real
8736 (type, type_quals, ((typedef_decl && !DECL_ARTIFICIAL (typedef_decl)
8737 ? tf_ignore_bad_quals : 0) | tf_warning_or_error));
8738 /* We might have ignored or rejected some of the qualifiers. */
8739 type_quals = cp_type_quals (type);
8740
8741 staticp = 0;
8742 inlinep = !! declspecs->specs[(int)ds_inline];
8743 virtualp = !! declspecs->specs[(int)ds_virtual];
8744 explicitp = !! declspecs->specs[(int)ds_explicit];
8745
8746 storage_class = declspecs->storage_class;
8747 if (storage_class == sc_static)
8748 staticp = 1 + (decl_context == FIELD);
8749
8750 if (virtualp && staticp == 2)
8751 {
8752 error ("member %qD cannot be declared both virtual and static", dname);
8753 storage_class = sc_none;
8754 staticp = 0;
8755 }
8756 friendp = !! declspecs->specs[(int)ds_friend];
8757
8758 if (dependent_name && !friendp)
8759 {
8760 error ("%<%T::%D%> is not a valid declarator", ctype, dependent_name);
8761 return error_mark_node;
8762 }
8763
8764 /* Issue errors about use of storage classes for parameters. */
8765 if (decl_context == PARM)
8766 {
8767 if (declspecs->specs[(int)ds_typedef])
8768 {
8769 error ("typedef declaration invalid in parameter declaration");
8770 return error_mark_node;
8771 }
8772 else if (template_parm_flag && storage_class != sc_none)
8773 {
8774 error ("storage class specified for template parameter %qs", name);
8775 return error_mark_node;
8776 }
8777 else if (storage_class == sc_static
8778 || storage_class == sc_extern
8779 || thread_p)
8780 error ("storage class specifiers invalid in parameter declarations");
8781
8782 /* Function parameters cannot be constexpr. If we saw one, moan
8783 and pretend it wasn't there. */
8784 if (constexpr_p)
8785 {
8786 error ("a parameter cannot be declared %<constexpr%>");
8787 constexpr_p = 0;
8788 }
8789 }
8790
8791 /* Give error if `virtual' is used outside of class declaration. */
8792 if (virtualp
8793 && (current_class_name == NULL_TREE || decl_context != FIELD))
8794 {
8795 error ("%<virtual%> outside class declaration");
8796 virtualp = 0;
8797 }
8798
8799 /* Static anonymous unions are dealt with here. */
8800 if (staticp && decl_context == TYPENAME
8801 && declspecs->type
8802 && ANON_AGGR_TYPE_P (declspecs->type))
8803 decl_context = FIELD;
8804
8805 /* Warn about storage classes that are invalid for certain
8806 kinds of declarations (parameters, typenames, etc.). */
8807 if (thread_p
8808 && ((storage_class
8809 && storage_class != sc_extern
8810 && storage_class != sc_static)
8811 || declspecs->specs[(int)ds_typedef]))
8812 {
8813 error ("multiple storage classes in declaration of %qs", name);
8814 thread_p = false;
8815 }
8816 if (decl_context != NORMAL
8817 && ((storage_class != sc_none
8818 && storage_class != sc_mutable)
8819 || thread_p))
8820 {
8821 if ((decl_context == PARM || decl_context == CATCHPARM)
8822 && (storage_class == sc_register
8823 || storage_class == sc_auto))
8824 ;
8825 else if (declspecs->specs[(int)ds_typedef])
8826 ;
8827 else if (decl_context == FIELD
8828 /* C++ allows static class elements. */
8829 && storage_class == sc_static)
8830 /* C++ also allows inlines and signed and unsigned elements,
8831 but in those cases we don't come in here. */
8832 ;
8833 else
8834 {
8835 if (decl_context == FIELD)
8836 error ("storage class specified for %qs", name);
8837 else
8838 {
8839 if (decl_context == PARM || decl_context == CATCHPARM)
8840 error ("storage class specified for parameter %qs", name);
8841 else
8842 error ("storage class specified for typename");
8843 }
8844 if (storage_class == sc_register
8845 || storage_class == sc_auto
8846 || storage_class == sc_extern
8847 || thread_p)
8848 storage_class = sc_none;
8849 }
8850 }
8851 else if (storage_class == sc_extern && funcdef_flag
8852 && ! toplevel_bindings_p ())
8853 error ("nested function %qs declared %<extern%>", name);
8854 else if (toplevel_bindings_p ())
8855 {
8856 if (storage_class == sc_auto)
8857 error ("top-level declaration of %qs specifies %<auto%>", name);
8858 }
8859 else if (thread_p
8860 && storage_class != sc_extern
8861 && storage_class != sc_static)
8862 {
8863 error ("function-scope %qs implicitly auto and declared %<__thread%>",
8864 name);
8865 thread_p = false;
8866 }
8867
8868 if (storage_class && friendp)
8869 {
8870 error ("storage class specifiers invalid in friend function declarations");
8871 storage_class = sc_none;
8872 staticp = 0;
8873 }
8874
8875 if (!id_declarator)
8876 unqualified_id = NULL_TREE;
8877 else
8878 {
8879 unqualified_id = id_declarator->u.id.unqualified_name;
8880 switch (TREE_CODE (unqualified_id))
8881 {
8882 case BIT_NOT_EXPR:
8883 unqualified_id = TREE_OPERAND (unqualified_id, 0);
8884 if (TYPE_P (unqualified_id))
8885 unqualified_id = constructor_name (unqualified_id);
8886 break;
8887
8888 case IDENTIFIER_NODE:
8889 case TEMPLATE_ID_EXPR:
8890 break;
8891
8892 default:
8893 gcc_unreachable ();
8894 }
8895 }
8896
8897 /* Determine the type of the entity declared by recurring on the
8898 declarator. */
8899 for (; declarator; declarator = declarator->declarator)
8900 {
8901 const cp_declarator *inner_declarator;
8902 tree attrs;
8903
8904 if (type == error_mark_node)
8905 return error_mark_node;
8906
8907 attrs = declarator->attributes;
8908 if (attrs)
8909 {
8910 int attr_flags;
8911
8912 attr_flags = 0;
8913 if (declarator == NULL || declarator->kind == cdk_id)
8914 attr_flags |= (int) ATTR_FLAG_DECL_NEXT;
8915 if (declarator->kind == cdk_function)
8916 attr_flags |= (int) ATTR_FLAG_FUNCTION_NEXT;
8917 if (declarator->kind == cdk_array)
8918 attr_flags |= (int) ATTR_FLAG_ARRAY_NEXT;
8919 returned_attrs = decl_attributes (&type,
8920 chainon (returned_attrs, attrs),
8921 attr_flags);
8922 }
8923
8924 if (declarator->kind == cdk_id)
8925 break;
8926
8927 inner_declarator = declarator->declarator;
8928
8929 switch (declarator->kind)
8930 {
8931 case cdk_array:
8932 type = create_array_type_for_decl (dname, type,
8933 declarator->u.array.bounds);
8934 break;
8935
8936 case cdk_function:
8937 {
8938 tree arg_types;
8939 int funcdecl_p;
8940
8941 /* Declaring a function type.
8942 Make sure we have a valid type for the function to return. */
8943
8944 if (type_quals != TYPE_UNQUALIFIED)
8945 {
8946 if (SCALAR_TYPE_P (type) || VOID_TYPE_P (type))
8947 warning (OPT_Wignored_qualifiers,
8948 "type qualifiers ignored on function return type");
8949 /* We now know that the TYPE_QUALS don't apply to the
8950 decl, but to its return type. */
8951 type_quals = TYPE_UNQUALIFIED;
8952 }
8953 errmsg = targetm.invalid_return_type (type);
8954 if (errmsg)
8955 {
8956 error (errmsg);
8957 type = integer_type_node;
8958 }
8959
8960 /* Error about some types functions can't return. */
8961
8962 if (TREE_CODE (type) == FUNCTION_TYPE)
8963 {
8964 error ("%qs declared as function returning a function", name);
8965 return error_mark_node;
8966 }
8967 if (TREE_CODE (type) == ARRAY_TYPE)
8968 {
8969 error ("%qs declared as function returning an array", name);
8970 return error_mark_node;
8971 }
8972
8973 /* Pick up type qualifiers which should be applied to `this'. */
8974 memfn_quals = declarator->u.function.qualifiers;
8975 /* Pick up virt-specifiers. */
8976 virt_specifiers = declarator->u.function.virt_specifiers;
8977 /* Pick up the exception specifications. */
8978 raises = declarator->u.function.exception_specification;
8979
8980 /* Say it's a definition only for the CALL_EXPR
8981 closest to the identifier. */
8982 funcdecl_p = inner_declarator && inner_declarator->kind == cdk_id;
8983
8984 /* Handle a late-specified return type. */
8985 if (funcdecl_p)
8986 {
8987 if (type_uses_auto (type))
8988 {
8989 if (!declarator->u.function.late_return_type)
8990 {
8991 error ("%qs function uses %<auto%> type specifier without"
8992 " late return type", name);
8993 return error_mark_node;
8994 }
8995 else if (!is_auto (type))
8996 {
8997 error ("%qs function with late return type has"
8998 " %qT as its type rather than plain %<auto%>",
8999 name, type);
9000 return error_mark_node;
9001 }
9002 }
9003 else if (declarator->u.function.late_return_type)
9004 {
9005 error ("%qs function with late return type not declared"
9006 " with %<auto%> type specifier", name);
9007 return error_mark_node;
9008 }
9009 }
9010 type = splice_late_return_type
9011 (type, declarator->u.function.late_return_type);
9012 if (type == error_mark_node)
9013 return error_mark_node;
9014
9015 if (ctype == NULL_TREE
9016 && decl_context == FIELD
9017 && funcdecl_p
9018 && (friendp == 0 || dname == current_class_name))
9019 ctype = current_class_type;
9020
9021 if (ctype && (sfk == sfk_constructor
9022 || sfk == sfk_destructor))
9023 {
9024 /* We are within a class's scope. If our declarator name
9025 is the same as the class name, and we are defining
9026 a function, then it is a constructor/destructor, and
9027 therefore returns a void type. */
9028
9029 /* ISO C++ 12.4/2. A destructor may not be declared
9030 const or volatile. A destructor may not be
9031 static.
9032
9033 ISO C++ 12.1. A constructor may not be declared
9034 const or volatile. A constructor may not be
9035 virtual. A constructor may not be static. */
9036 if (staticp == 2)
9037 error ((flags == DTOR_FLAG)
9038 ? "destructor cannot be static member function"
9039 : "constructor cannot be static member function");
9040 if (memfn_quals)
9041 {
9042 error ((flags == DTOR_FLAG)
9043 ? "destructors may not be cv-qualified"
9044 : "constructors may not be cv-qualified");
9045 memfn_quals = TYPE_UNQUALIFIED;
9046 }
9047
9048 if (decl_context == FIELD
9049 && !member_function_or_else (ctype,
9050 current_class_type,
9051 flags))
9052 return error_mark_node;
9053
9054 if (flags != DTOR_FLAG)
9055 {
9056 /* It's a constructor. */
9057 if (explicitp == 1)
9058 explicitp = 2;
9059 if (virtualp)
9060 {
9061 permerror (input_location, "constructors cannot be declared virtual");
9062 virtualp = 0;
9063 }
9064 if (decl_context == FIELD
9065 && sfk != sfk_constructor)
9066 return error_mark_node;
9067 }
9068 if (decl_context == FIELD)
9069 staticp = 0;
9070 }
9071 else if (friendp)
9072 {
9073 if (initialized)
9074 error ("can%'t initialize friend function %qs", name);
9075 if (virtualp)
9076 {
9077 /* Cannot be both friend and virtual. */
9078 error ("virtual functions cannot be friends");
9079 friendp = 0;
9080 }
9081 if (decl_context == NORMAL)
9082 error ("friend declaration not in class definition");
9083 if (current_function_decl && funcdef_flag)
9084 error ("can%'t define friend function %qs in a local "
9085 "class definition",
9086 name);
9087 }
9088 else if (ctype && sfk == sfk_conversion)
9089 {
9090 if (explicitp == 1)
9091 {
9092 maybe_warn_cpp0x (CPP0X_EXPLICIT_CONVERSION);
9093 explicitp = 2;
9094 }
9095 }
9096
9097 arg_types = grokparms (declarator->u.function.parameters,
9098 &parms);
9099
9100 if (inner_declarator
9101 && inner_declarator->kind == cdk_id
9102 && inner_declarator->u.id.sfk == sfk_destructor
9103 && arg_types != void_list_node)
9104 {
9105 error ("destructors may not have parameters");
9106 arg_types = void_list_node;
9107 parms = NULL_TREE;
9108 }
9109
9110 type = build_function_type (type, arg_types);
9111 }
9112 break;
9113
9114 case cdk_pointer:
9115 case cdk_reference:
9116 case cdk_ptrmem:
9117 /* Filter out pointers-to-references and references-to-references.
9118 We can get these if a TYPE_DECL is used. */
9119
9120 if (TREE_CODE (type) == REFERENCE_TYPE)
9121 {
9122 if (declarator->kind != cdk_reference)
9123 {
9124 error ("cannot declare pointer to %q#T", type);
9125 type = TREE_TYPE (type);
9126 }
9127
9128 /* In C++0x, we allow reference to reference declarations
9129 that occur indirectly through typedefs [7.1.3/8 dcl.typedef]
9130 and template type arguments [14.3.1/4 temp.arg.type]. The
9131 check for direct reference to reference declarations, which
9132 are still forbidden, occurs below. Reasoning behind the change
9133 can be found in DR106, DR540, and the rvalue reference
9134 proposals. */
9135 else if (cxx_dialect == cxx98)
9136 {
9137 error ("cannot declare reference to %q#T", type);
9138 type = TREE_TYPE (type);
9139 }
9140 }
9141 else if (VOID_TYPE_P (type))
9142 {
9143 if (declarator->kind == cdk_reference)
9144 error ("cannot declare reference to %q#T", type);
9145 else if (declarator->kind == cdk_ptrmem)
9146 error ("cannot declare pointer to %q#T member", type);
9147 }
9148
9149 /* We now know that the TYPE_QUALS don't apply to the decl,
9150 but to the target of the pointer. */
9151 type_quals = TYPE_UNQUALIFIED;
9152
9153 if (declarator->kind == cdk_ptrmem
9154 && (TREE_CODE (type) == FUNCTION_TYPE
9155 || (memfn_quals && TREE_CODE (type) == METHOD_TYPE)))
9156 {
9157 memfn_quals |= type_memfn_quals (type);
9158 type = build_memfn_type (type,
9159 declarator->u.pointer.class_type,
9160 memfn_quals);
9161 if (type == error_mark_node)
9162 return error_mark_node;
9163 memfn_quals = TYPE_UNQUALIFIED;
9164 }
9165
9166 if (TREE_CODE (type) == FUNCTION_TYPE
9167 && type_memfn_quals (type) != TYPE_UNQUALIFIED)
9168 error (declarator->kind == cdk_reference
9169 ? G_("cannot declare reference to qualified function type %qT")
9170 : G_("cannot declare pointer to qualified function type %qT"),
9171 type);
9172
9173 /* When the pointed-to type involves components of variable size,
9174 care must be taken to ensure that the size evaluation code is
9175 emitted early enough to dominate all the possible later uses
9176 and late enough for the variables on which it depends to have
9177 been assigned.
9178
9179 This is expected to happen automatically when the pointed-to
9180 type has a name/declaration of it's own, but special attention
9181 is required if the type is anonymous.
9182
9183 We handle the NORMAL and FIELD contexts here by inserting a
9184 dummy statement that just evaluates the size at a safe point
9185 and ensures it is not deferred until e.g. within a deeper
9186 conditional context (c++/43555).
9187
9188 We expect nothing to be needed here for PARM or TYPENAME.
9189 Evaluating the size at this point for TYPENAME would
9190 actually be incorrect, as we might be in the middle of an
9191 expression with side effects on the pointed-to type size
9192 "arguments" prior to the pointer declaration point and the
9193 size evaluation could end up prior to the side effects. */
9194
9195 if (!TYPE_NAME (type)
9196 && (decl_context == NORMAL || decl_context == FIELD)
9197 && at_function_scope_p ()
9198 && variably_modified_type_p (type, NULL_TREE))
9199 {
9200 /* First break out any side-effects. */
9201 stabilize_vla_size (TYPE_SIZE (type));
9202 /* And then force evaluation of the SAVE_EXPR. */
9203 finish_expr_stmt (TYPE_SIZE (type));
9204 }
9205
9206 if (declarator->kind == cdk_reference)
9207 {
9208 /* In C++0x, the type we are creating a reference to might be
9209 a typedef which is itself a reference type. In that case,
9210 we follow the reference collapsing rules in
9211 [7.1.3/8 dcl.typedef] to create the final reference type:
9212
9213 "If a typedef TD names a type that is a reference to a type
9214 T, an attempt to create the type 'lvalue reference to cv TD'
9215 creates the type 'lvalue reference to T,' while an attempt
9216 to create the type "rvalue reference to cv TD' creates the
9217 type TD."
9218 */
9219 if (VOID_TYPE_P (type))
9220 /* We already gave an error. */;
9221 else if (TREE_CODE (type) == REFERENCE_TYPE)
9222 {
9223 if (declarator->u.reference.rvalue_ref)
9224 /* Leave type alone. */;
9225 else
9226 type = cp_build_reference_type (TREE_TYPE (type), false);
9227 }
9228 else
9229 type = cp_build_reference_type
9230 (type, declarator->u.reference.rvalue_ref);
9231
9232 /* In C++0x, we need this check for direct reference to
9233 reference declarations, which are forbidden by
9234 [8.3.2/5 dcl.ref]. Reference to reference declarations
9235 are only allowed indirectly through typedefs and template
9236 type arguments. Example:
9237
9238 void foo(int & &); // invalid ref-to-ref decl
9239
9240 typedef int & int_ref;
9241 void foo(int_ref &); // valid ref-to-ref decl
9242 */
9243 if (inner_declarator && inner_declarator->kind == cdk_reference)
9244 error ("cannot declare reference to %q#T, which is not "
9245 "a typedef or a template type argument", type);
9246 }
9247 else if (TREE_CODE (type) == METHOD_TYPE)
9248 type = build_ptrmemfunc_type (build_pointer_type (type));
9249 else if (declarator->kind == cdk_ptrmem)
9250 {
9251 gcc_assert (TREE_CODE (declarator->u.pointer.class_type)
9252 != NAMESPACE_DECL);
9253 if (declarator->u.pointer.class_type == error_mark_node)
9254 /* We will already have complained. */
9255 type = error_mark_node;
9256 else
9257 type = build_ptrmem_type (declarator->u.pointer.class_type,
9258 type);
9259 }
9260 else
9261 type = build_pointer_type (type);
9262
9263 /* Process a list of type modifier keywords (such as
9264 const or volatile) that were given inside the `*' or `&'. */
9265
9266 if (declarator->u.pointer.qualifiers)
9267 {
9268 type
9269 = cp_build_qualified_type (type,
9270 declarator->u.pointer.qualifiers);
9271 type_quals = cp_type_quals (type);
9272 }
9273 ctype = NULL_TREE;
9274 break;
9275
9276 case cdk_error:
9277 break;
9278
9279 default:
9280 gcc_unreachable ();
9281 }
9282 }
9283
9284 /* We need to stabilize side-effects in VLA sizes for regular array
9285 declarations too, not just pointers to arrays. */
9286 if (type != error_mark_node && !TYPE_NAME (type)
9287 && (decl_context == NORMAL || decl_context == FIELD)
9288 && at_function_scope_p ()
9289 && variably_modified_type_p (type, NULL_TREE))
9290 stabilize_vla_size (TYPE_SIZE (type));
9291
9292 /* A `constexpr' specifier used in an object declaration declares
9293 the object as `const'. */
9294 if (constexpr_p && innermost_code != cdk_function)
9295 {
9296 if (type_quals & TYPE_QUAL_CONST)
9297 error ("both %<const%> and %<constexpr%> cannot be used here");
9298 if (type_quals & TYPE_QUAL_VOLATILE)
9299 error ("both %<volatile%> and %<constexpr%> cannot be used here");
9300 type_quals |= TYPE_QUAL_CONST;
9301 type = cp_build_qualified_type (type, type_quals);
9302 }
9303
9304 if (unqualified_id && TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR
9305 && TREE_CODE (type) != FUNCTION_TYPE
9306 && TREE_CODE (type) != METHOD_TYPE)
9307 {
9308 error ("template-id %qD used as a declarator",
9309 unqualified_id);
9310 unqualified_id = dname;
9311 }
9312
9313 /* If TYPE is a FUNCTION_TYPE, but the function name was explicitly
9314 qualified with a class-name, turn it into a METHOD_TYPE, unless
9315 we know that the function is static. We take advantage of this
9316 opportunity to do other processing that pertains to entities
9317 explicitly declared to be class members. Note that if DECLARATOR
9318 is non-NULL, we know it is a cdk_id declarator; otherwise, we
9319 would not have exited the loop above. */
9320 if (declarator
9321 && declarator->u.id.qualifying_scope
9322 && TYPE_P (declarator->u.id.qualifying_scope))
9323 {
9324 tree t;
9325
9326 ctype = declarator->u.id.qualifying_scope;
9327 ctype = TYPE_MAIN_VARIANT (ctype);
9328 t = ctype;
9329 while (t != NULL_TREE && CLASS_TYPE_P (t))
9330 {
9331 /* You're supposed to have one `template <...>' for every
9332 template class, but you don't need one for a full
9333 specialization. For example:
9334
9335 template <class T> struct S{};
9336 template <> struct S<int> { void f(); };
9337 void S<int>::f () {}
9338
9339 is correct; there shouldn't be a `template <>' for the
9340 definition of `S<int>::f'. */
9341 if (CLASSTYPE_TEMPLATE_SPECIALIZATION (t)
9342 && !any_dependent_template_arguments_p (CLASSTYPE_TI_ARGS (t)))
9343 /* T is an explicit (not partial) specialization. All
9344 containing classes must therefore also be explicitly
9345 specialized. */
9346 break;
9347 if ((CLASSTYPE_USE_TEMPLATE (t) || CLASSTYPE_IS_TEMPLATE (t))
9348 && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (t)))
9349 template_count += 1;
9350
9351 t = TYPE_MAIN_DECL (t);
9352 t = DECL_CONTEXT (t);
9353 }
9354
9355 if (ctype == current_class_type)
9356 {
9357 if (friendp)
9358 {
9359 permerror (input_location, "member functions are implicitly friends of their class");
9360 friendp = 0;
9361 }
9362 else
9363 permerror (declarator->id_loc,
9364 "extra qualification %<%T::%> on member %qs",
9365 ctype, name);
9366 }
9367 else if (/* If the qualifying type is already complete, then we
9368 can skip the following checks. */
9369 !COMPLETE_TYPE_P (ctype)
9370 && (/* If the function is being defined, then
9371 qualifying type must certainly be complete. */
9372 funcdef_flag
9373 /* A friend declaration of "T::f" is OK, even if
9374 "T" is a template parameter. But, if this
9375 function is not a friend, the qualifying type
9376 must be a class. */
9377 || (!friendp && !CLASS_TYPE_P (ctype))
9378 /* For a declaration, the type need not be
9379 complete, if either it is dependent (since there
9380 is no meaningful definition of complete in that
9381 case) or the qualifying class is currently being
9382 defined. */
9383 || !(dependent_type_p (ctype)
9384 || currently_open_class (ctype)))
9385 /* Check that the qualifying type is complete. */
9386 && !complete_type_or_else (ctype, NULL_TREE))
9387 return error_mark_node;
9388 else if (TREE_CODE (type) == FUNCTION_TYPE)
9389 {
9390 if (current_class_type
9391 && (!friendp || funcdef_flag))
9392 {
9393 error (funcdef_flag
9394 ? "cannot define member function %<%T::%s%> within %<%T%>"
9395 : "cannot declare member function %<%T::%s%> within %<%T%>",
9396 ctype, name, current_class_type);
9397 return error_mark_node;
9398 }
9399 }
9400 else if (declspecs->specs[(int)ds_typedef]
9401 && current_class_type)
9402 {
9403 error ("cannot declare member %<%T::%s%> within %qT",
9404 ctype, name, current_class_type);
9405 return error_mark_node;
9406 }
9407 }
9408
9409 if (ctype == NULL_TREE && decl_context == FIELD && friendp == 0)
9410 ctype = current_class_type;
9411
9412 /* Now TYPE has the actual type. */
9413
9414 if (returned_attrs)
9415 {
9416 if (attrlist)
9417 *attrlist = chainon (returned_attrs, *attrlist);
9418 else
9419 attrlist = &returned_attrs;
9420 }
9421
9422 /* Handle parameter packs. */
9423 if (parameter_pack_p)
9424 {
9425 if (decl_context == PARM)
9426 /* Turn the type into a pack expansion.*/
9427 type = make_pack_expansion (type);
9428 else
9429 error ("non-parameter %qs cannot be a parameter pack", name);
9430 }
9431
9432 /* Did array size calculations overflow? */
9433
9434 if (TREE_CODE (type) == ARRAY_TYPE
9435 && COMPLETE_TYPE_P (type)
9436 && TREE_CODE (TYPE_SIZE_UNIT (type)) == INTEGER_CST
9437 && TREE_OVERFLOW (TYPE_SIZE_UNIT (type)))
9438 {
9439 error ("size of array %qs is too large", name);
9440 /* If we proceed with the array type as it is, we'll eventually
9441 crash in tree_low_cst(). */
9442 type = error_mark_node;
9443 }
9444
9445 if ((decl_context == FIELD || decl_context == PARM)
9446 && !processing_template_decl
9447 && variably_modified_type_p (type, NULL_TREE))
9448 {
9449 if (decl_context == FIELD)
9450 error ("data member may not have variably modified type %qT", type);
9451 else
9452 error ("parameter may not have variably modified type %qT", type);
9453 type = error_mark_node;
9454 }
9455
9456 if (explicitp == 1 || (explicitp && friendp))
9457 {
9458 /* [dcl.fct.spec] The explicit specifier shall only be used in
9459 declarations of constructors within a class definition. */
9460 error ("only declarations of constructors can be %<explicit%>");
9461 explicitp = 0;
9462 }
9463
9464 if (storage_class == sc_mutable)
9465 {
9466 if (decl_context != FIELD || friendp)
9467 {
9468 error ("non-member %qs cannot be declared %<mutable%>", name);
9469 storage_class = sc_none;
9470 }
9471 else if (decl_context == TYPENAME || declspecs->specs[(int)ds_typedef])
9472 {
9473 error ("non-object member %qs cannot be declared %<mutable%>", name);
9474 storage_class = sc_none;
9475 }
9476 else if (TREE_CODE (type) == FUNCTION_TYPE
9477 || TREE_CODE (type) == METHOD_TYPE)
9478 {
9479 error ("function %qs cannot be declared %<mutable%>", name);
9480 storage_class = sc_none;
9481 }
9482 else if (staticp)
9483 {
9484 error ("static %qs cannot be declared %<mutable%>", name);
9485 storage_class = sc_none;
9486 }
9487 else if (type_quals & TYPE_QUAL_CONST)
9488 {
9489 error ("const %qs cannot be declared %<mutable%>", name);
9490 storage_class = sc_none;
9491 }
9492 else if (TREE_CODE (type) == REFERENCE_TYPE)
9493 {
9494 permerror (input_location, "reference %qs cannot be declared "
9495 "%<mutable%>", name);
9496 storage_class = sc_none;
9497 }
9498 }
9499
9500 /* If this is declaring a typedef name, return a TYPE_DECL. */
9501 if (declspecs->specs[(int)ds_typedef] && decl_context != TYPENAME)
9502 {
9503 tree decl;
9504
9505 /* Note that the grammar rejects storage classes
9506 in typenames, fields or parameters. */
9507 if (current_lang_name == lang_name_java)
9508 TYPE_FOR_JAVA (type) = 1;
9509
9510 /* This declaration:
9511
9512 typedef void f(int) const;
9513
9514 declares a function type which is not a member of any
9515 particular class, but which is cv-qualified; for
9516 example "f S::*" declares a pointer to a const-qualified
9517 member function of S. We record the cv-qualification in the
9518 function type. */
9519 if (memfn_quals && TREE_CODE (type) == FUNCTION_TYPE)
9520 {
9521 type = apply_memfn_quals (type, memfn_quals);
9522
9523 /* We have now dealt with these qualifiers. */
9524 memfn_quals = TYPE_UNQUALIFIED;
9525 }
9526
9527 if (type_uses_auto (type))
9528 {
9529 error ("typedef declared %<auto%>");
9530 type = error_mark_node;
9531 }
9532
9533 if (decl_context == FIELD)
9534 decl = build_lang_decl (TYPE_DECL, unqualified_id, type);
9535 else
9536 decl = build_decl (input_location, TYPE_DECL, unqualified_id, type);
9537 if (id_declarator && declarator->u.id.qualifying_scope) {
9538 error_at (DECL_SOURCE_LOCATION (decl),
9539 "typedef name may not be a nested-name-specifier");
9540 TREE_TYPE (decl) = error_mark_node;
9541 }
9542
9543 if (decl_context != FIELD)
9544 {
9545 if (!current_function_decl)
9546 DECL_CONTEXT (decl) = FROB_CONTEXT (current_namespace);
9547 else if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (current_function_decl)
9548 || (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P
9549 (current_function_decl)))
9550 /* The TYPE_DECL is "abstract" because there will be
9551 clones of this constructor/destructor, and there will
9552 be copies of this TYPE_DECL generated in those
9553 clones. */
9554 DECL_ABSTRACT (decl) = 1;
9555 }
9556 else if (constructor_name_p (unqualified_id, current_class_type))
9557 permerror (input_location, "ISO C++ forbids nested type %qD with same name "
9558 "as enclosing class",
9559 unqualified_id);
9560
9561 /* If the user declares "typedef struct {...} foo" then the
9562 struct will have an anonymous name. Fill that name in now.
9563 Nothing can refer to it, so nothing needs know about the name
9564 change. */
9565 if (type != error_mark_node
9566 && unqualified_id
9567 && TYPE_NAME (type)
9568 && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
9569 && TYPE_ANONYMOUS_P (type)
9570 && cp_type_quals (type) == TYPE_UNQUALIFIED)
9571 {
9572 tree t;
9573
9574 /* Replace the anonymous name with the real name everywhere. */
9575 for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
9576 {
9577 if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
9578 /* We do not rename the debug info representing the
9579 anonymous tagged type because the standard says in
9580 [dcl.typedef] that the naming applies only for
9581 linkage purposes. */
9582 /*debug_hooks->set_name (t, decl);*/
9583 TYPE_NAME (t) = decl;
9584 }
9585
9586 if (TYPE_LANG_SPECIFIC (type))
9587 TYPE_WAS_ANONYMOUS (type) = 1;
9588
9589 /* If this is a typedef within a template class, the nested
9590 type is a (non-primary) template. The name for the
9591 template needs updating as well. */
9592 if (TYPE_LANG_SPECIFIC (type) && CLASSTYPE_TEMPLATE_INFO (type))
9593 DECL_NAME (CLASSTYPE_TI_TEMPLATE (type))
9594 = TYPE_IDENTIFIER (type);
9595
9596 /* Adjust linkage now that we aren't anonymous anymore. */
9597 set_linkage_according_to_type (type, TYPE_MAIN_DECL (type));
9598 determine_visibility (TYPE_MAIN_DECL (type));
9599
9600 /* FIXME remangle member functions; member functions of a
9601 type with external linkage have external linkage. */
9602 }
9603
9604 if (signed_p
9605 || (typedef_decl && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl)))
9606 C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1;
9607
9608 bad_specifiers (decl, BSP_TYPE, virtualp,
9609 memfn_quals != TYPE_UNQUALIFIED,
9610 inlinep, friendp, raises != NULL_TREE);
9611
9612 return decl;
9613 }
9614
9615 /* Detect the case of an array type of unspecified size
9616 which came, as such, direct from a typedef name.
9617 We must copy the type, so that the array's domain can be
9618 individually set by the object's initializer. */
9619
9620 if (type && typedef_type
9621 && TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type)
9622 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (typedef_type))
9623 type = build_cplus_array_type (TREE_TYPE (type), NULL_TREE);
9624
9625 /* Detect where we're using a typedef of function type to declare a
9626 function. PARMS will not be set, so we must create it now. */
9627
9628 if (type == typedef_type && TREE_CODE (type) == FUNCTION_TYPE)
9629 {
9630 tree decls = NULL_TREE;
9631 tree args;
9632
9633 for (args = TYPE_ARG_TYPES (type);
9634 args && args != void_list_node;
9635 args = TREE_CHAIN (args))
9636 {
9637 tree decl = cp_build_parm_decl (NULL_TREE, TREE_VALUE (args));
9638
9639 DECL_CHAIN (decl) = decls;
9640 decls = decl;
9641 }
9642
9643 parms = nreverse (decls);
9644
9645 if (decl_context != TYPENAME)
9646 {
9647 /* A cv-qualifier-seq shall only be part of the function type
9648 for a non-static member function. [8.3.5/4 dcl.fct] */
9649 if (type_memfn_quals (type) != TYPE_UNQUALIFIED
9650 && (current_class_type == NULL_TREE || staticp) )
9651 {
9652 error (staticp
9653 ? G_("qualified function types cannot be used to "
9654 "declare static member functions")
9655 : G_("qualified function types cannot be used to "
9656 "declare free functions"));
9657 type = TYPE_MAIN_VARIANT (type);
9658 }
9659
9660 /* The qualifiers on the function type become the qualifiers on
9661 the non-static member function. */
9662 memfn_quals |= type_memfn_quals (type);
9663 type_quals = TYPE_UNQUALIFIED;
9664 }
9665 }
9666
9667 /* If this is a type name (such as, in a cast or sizeof),
9668 compute the type and return it now. */
9669
9670 if (decl_context == TYPENAME)
9671 {
9672 /* Note that the grammar rejects storage classes
9673 in typenames, fields or parameters. */
9674 if (type_quals != TYPE_UNQUALIFIED)
9675 type_quals = TYPE_UNQUALIFIED;
9676
9677 /* Special case: "friend class foo" looks like a TYPENAME context. */
9678 if (friendp)
9679 {
9680 if (type_quals != TYPE_UNQUALIFIED)
9681 {
9682 error ("type qualifiers specified for friend class declaration");
9683 type_quals = TYPE_UNQUALIFIED;
9684 }
9685 if (inlinep)
9686 {
9687 error ("%<inline%> specified for friend class declaration");
9688 inlinep = 0;
9689 }
9690
9691 if (!current_aggr)
9692 {
9693 /* Don't allow friend declaration without a class-key. */
9694 if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
9695 permerror (input_location, "template parameters cannot be friends");
9696 else if (TREE_CODE (type) == TYPENAME_TYPE)
9697 permerror (input_location, "friend declaration requires class-key, "
9698 "i.e. %<friend class %T::%D%>",
9699 TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type));
9700 else
9701 permerror (input_location, "friend declaration requires class-key, "
9702 "i.e. %<friend %#T%>",
9703 type);
9704 }
9705
9706 /* Only try to do this stuff if we didn't already give up. */
9707 if (type != integer_type_node)
9708 {
9709 /* A friendly class? */
9710 if (current_class_type)
9711 make_friend_class (current_class_type, TYPE_MAIN_VARIANT (type),
9712 /*complain=*/true);
9713 else
9714 error ("trying to make class %qT a friend of global scope",
9715 type);
9716
9717 type = void_type_node;
9718 }
9719 }
9720 else if (memfn_quals)
9721 {
9722 if (ctype == NULL_TREE
9723 && TREE_CODE (type) == METHOD_TYPE)
9724 ctype = TYPE_METHOD_BASETYPE (type);
9725
9726 if (ctype)
9727 type = build_memfn_type (type, ctype, memfn_quals);
9728 /* Core issue #547: need to allow this in template type args. */
9729 else if (template_type_arg && TREE_CODE (type) == FUNCTION_TYPE)
9730 type = apply_memfn_quals (type, memfn_quals);
9731 else
9732 error ("invalid qualifiers on non-member function type");
9733 }
9734
9735 return type;
9736 }
9737 else if (unqualified_id == NULL_TREE && decl_context != PARM
9738 && decl_context != CATCHPARM
9739 && TREE_CODE (type) != UNION_TYPE
9740 && ! bitfield)
9741 {
9742 error ("abstract declarator %qT used as declaration", type);
9743 return error_mark_node;
9744 }
9745
9746 /* Only functions may be declared using an operator-function-id. */
9747 if (unqualified_id
9748 && IDENTIFIER_OPNAME_P (unqualified_id)
9749 && TREE_CODE (type) != FUNCTION_TYPE
9750 && TREE_CODE (type) != METHOD_TYPE)
9751 {
9752 error ("declaration of %qD as non-function", unqualified_id);
9753 return error_mark_node;
9754 }
9755
9756 /* We don't check parameter types here because we can emit a better
9757 error message later. */
9758 if (decl_context != PARM)
9759 {
9760 type = check_var_type (unqualified_id, type);
9761 if (type == error_mark_node)
9762 return error_mark_node;
9763 }
9764
9765 /* Now create the decl, which may be a VAR_DECL, a PARM_DECL
9766 or a FUNCTION_DECL, depending on DECL_CONTEXT and TYPE. */
9767
9768 if (decl_context == PARM || decl_context == CATCHPARM)
9769 {
9770 if (ctype || in_namespace)
9771 error ("cannot use %<::%> in parameter declaration");
9772
9773 if (type_uses_auto (type))
9774 {
9775 error ("parameter declared %<auto%>");
9776 type = error_mark_node;
9777 }
9778
9779 /* A parameter declared as an array of T is really a pointer to T.
9780 One declared as a function is really a pointer to a function.
9781 One declared as a member is really a pointer to member. */
9782
9783 if (TREE_CODE (type) == ARRAY_TYPE)
9784 {
9785 /* Transfer const-ness of array into that of type pointed to. */
9786 type = build_pointer_type (TREE_TYPE (type));
9787 type_quals = TYPE_UNQUALIFIED;
9788 }
9789 else if (TREE_CODE (type) == FUNCTION_TYPE)
9790 type = build_pointer_type (type);
9791 }
9792
9793 if (ctype && TREE_CODE (type) == FUNCTION_TYPE && staticp < 2
9794 && !NEW_DELETE_OPNAME_P (unqualified_id))
9795 {
9796 cp_cv_quals real_quals = memfn_quals;
9797 if (constexpr_p && sfk != sfk_constructor && sfk != sfk_destructor)
9798 real_quals |= TYPE_QUAL_CONST;
9799 type = build_memfn_type (type, ctype, real_quals);
9800 }
9801
9802 {
9803 tree decl;
9804
9805 if (decl_context == PARM)
9806 {
9807 decl = cp_build_parm_decl (unqualified_id, type);
9808
9809 bad_specifiers (decl, BSP_PARM, virtualp,
9810 memfn_quals != TYPE_UNQUALIFIED,
9811 inlinep, friendp, raises != NULL_TREE);
9812 }
9813 else if (decl_context == FIELD)
9814 {
9815 /* The C99 flexible array extension. */
9816 if (!staticp && TREE_CODE (type) == ARRAY_TYPE
9817 && TYPE_DOMAIN (type) == NULL_TREE)
9818 {
9819 tree itype = compute_array_index_type (dname, integer_zero_node,
9820 tf_warning_or_error);
9821 type = build_cplus_array_type (TREE_TYPE (type), itype);
9822 }
9823
9824 if (type == error_mark_node)
9825 {
9826 /* Happens when declaring arrays of sizes which
9827 are error_mark_node, for example. */
9828 decl = NULL_TREE;
9829 }
9830 else if (in_namespace && !friendp)
9831 {
9832 /* Something like struct S { int N::j; }; */
9833 error ("invalid use of %<::%>");
9834 return error_mark_node;
9835 }
9836 else if (TREE_CODE (type) == FUNCTION_TYPE
9837 || TREE_CODE (type) == METHOD_TYPE)
9838 {
9839 int publicp = 0;
9840 tree function_context;
9841
9842 if (friendp == 0)
9843 {
9844 /* This should never happen in pure C++ (the check
9845 could be an assert). It could happen in
9846 Objective-C++ if someone writes invalid code that
9847 uses a function declaration for an instance
9848 variable or property (instance variables and
9849 properties are parsed as FIELD_DECLs, but they are
9850 part of an Objective-C class, not a C++ class).
9851 That code is invalid and is caught by this
9852 check. */
9853 if (!ctype)
9854 {
9855 error ("declaration of function %qD in invalid context",
9856 unqualified_id);
9857 return error_mark_node;
9858 }
9859
9860 /* ``A union may [ ... ] not [ have ] virtual functions.''
9861 ARM 9.5 */
9862 if (virtualp && TREE_CODE (ctype) == UNION_TYPE)
9863 {
9864 error ("function %qD declared virtual inside a union",
9865 unqualified_id);
9866 return error_mark_node;
9867 }
9868
9869 if (NEW_DELETE_OPNAME_P (unqualified_id))
9870 {
9871 if (virtualp)
9872 {
9873 error ("%qD cannot be declared virtual, since it "
9874 "is always static",
9875 unqualified_id);
9876 virtualp = 0;
9877 }
9878 }
9879 }
9880
9881 /* Check that the name used for a destructor makes sense. */
9882 if (sfk == sfk_destructor)
9883 {
9884 tree uqname = id_declarator->u.id.unqualified_name;
9885
9886 if (!ctype)
9887 {
9888 gcc_assert (friendp);
9889 error ("expected qualified name in friend declaration "
9890 "for destructor %qD", uqname);
9891 return error_mark_node;
9892 }
9893
9894 if (!check_dtor_name (ctype, TREE_OPERAND (uqname, 0)))
9895 {
9896 error ("declaration of %qD as member of %qT",
9897 uqname, ctype);
9898 return error_mark_node;
9899 }
9900 if (constexpr_p)
9901 {
9902 error ("a destructor cannot be %<constexpr%>");
9903 return error_mark_node;
9904 }
9905 }
9906 else if (sfk == sfk_constructor && friendp && !ctype)
9907 {
9908 error ("expected qualified name in friend declaration "
9909 "for constructor %qD",
9910 id_declarator->u.id.unqualified_name);
9911 return error_mark_node;
9912 }
9913
9914 /* Tell grokfndecl if it needs to set TREE_PUBLIC on the node. */
9915 function_context = (ctype != NULL_TREE) ?
9916 decl_function_context (TYPE_MAIN_DECL (ctype)) : NULL_TREE;
9917 publicp = (! friendp || ! staticp)
9918 && function_context == NULL_TREE;
9919 decl = grokfndecl (ctype, type,
9920 TREE_CODE (unqualified_id) != TEMPLATE_ID_EXPR
9921 ? unqualified_id : dname,
9922 parms,
9923 unqualified_id,
9924 virtualp, flags, memfn_quals, raises,
9925 friendp ? -1 : 0, friendp, publicp,
9926 inlinep | (2 * constexpr_p),
9927 sfk,
9928 funcdef_flag, template_count, in_namespace,
9929 attrlist, declarator->id_loc);
9930 decl = set_virt_specifiers (decl, virt_specifiers);
9931 if (decl == NULL_TREE)
9932 return error_mark_node;
9933 #if 0
9934 /* This clobbers the attrs stored in `decl' from `attrlist'. */
9935 /* The decl and setting of decl_attr is also turned off. */
9936 decl = build_decl_attribute_variant (decl, decl_attr);
9937 #endif
9938
9939 /* [class.conv.ctor]
9940
9941 A constructor declared without the function-specifier
9942 explicit that can be called with a single parameter
9943 specifies a conversion from the type of its first
9944 parameter to the type of its class. Such a constructor
9945 is called a converting constructor. */
9946 if (explicitp == 2)
9947 DECL_NONCONVERTING_P (decl) = 1;
9948 }
9949 else if (!staticp && !dependent_type_p (type)
9950 && !COMPLETE_TYPE_P (complete_type (type))
9951 && (TREE_CODE (type) != ARRAY_TYPE || initialized == 0))
9952 {
9953 if (unqualified_id)
9954 error ("field %qD has incomplete type", unqualified_id);
9955 else
9956 error ("name %qT has incomplete type", type);
9957
9958 /* If we're instantiating a template, tell them which
9959 instantiation made the field's type be incomplete. */
9960 if (current_class_type
9961 && TYPE_NAME (current_class_type)
9962 && IDENTIFIER_TEMPLATE (current_class_name)
9963 && declspecs->type
9964 && declspecs->type == type)
9965 error (" in instantiation of template %qT",
9966 current_class_type);
9967
9968 return error_mark_node;
9969 }
9970 else
9971 {
9972 if (friendp)
9973 {
9974 error ("%qE is neither function nor member function; "
9975 "cannot be declared friend", unqualified_id);
9976 friendp = 0;
9977 }
9978 decl = NULL_TREE;
9979 }
9980
9981 if (friendp)
9982 {
9983 /* Friends are treated specially. */
9984 if (ctype == current_class_type)
9985 ; /* We already issued a permerror. */
9986 else if (decl && DECL_NAME (decl))
9987 {
9988 if (template_class_depth (current_class_type) == 0)
9989 {
9990 decl = check_explicit_specialization
9991 (unqualified_id, decl, template_count,
9992 2 * funcdef_flag + 4);
9993 if (decl == error_mark_node)
9994 return error_mark_node;
9995 }
9996
9997 decl = do_friend (ctype, unqualified_id, decl,
9998 *attrlist, flags,
9999 funcdef_flag);
10000 return decl;
10001 }
10002 else
10003 return error_mark_node;
10004 }
10005
10006 /* Structure field. It may not be a function, except for C++. */
10007
10008 if (decl == NULL_TREE)
10009 {
10010 if (initialized)
10011 {
10012 if (!staticp)
10013 {
10014 /* An attempt is being made to initialize a non-static
10015 member. But, from [class.mem]:
10016
10017 4 A member-declarator can contain a
10018 constant-initializer only if it declares a static
10019 member (_class.static_) of integral or enumeration
10020 type, see _class.static.data_.
10021
10022 This used to be relatively common practice, but
10023 the rest of the compiler does not correctly
10024 handle the initialization unless the member is
10025 static so we make it static below. */
10026 if (cxx_dialect >= cxx0x)
10027 {
10028 sorry ("non-static data member initializers");
10029 }
10030 else
10031 {
10032 permerror (input_location, "ISO C++ forbids initialization of member %qD",
10033 unqualified_id);
10034 permerror (input_location, "making %qD static", unqualified_id);
10035 staticp = 1;
10036 }
10037 }
10038 }
10039
10040 if (staticp)
10041 {
10042 /* C++ allows static class members. All other work
10043 for this is done by grokfield. */
10044 decl = build_lang_decl (VAR_DECL, unqualified_id, type);
10045 set_linkage_for_static_data_member (decl);
10046 /* Even if there is an in-class initialization, DECL
10047 is considered undefined until an out-of-class
10048 definition is provided. */
10049 DECL_EXTERNAL (decl) = 1;
10050
10051 if (thread_p)
10052 DECL_TLS_MODEL (decl) = decl_default_tls_model (decl);
10053
10054 if (constexpr_p && !initialized)
10055 {
10056 error ("constexpr static data member %qD must have an "
10057 "initializer", decl);
10058 constexpr_p = false;
10059 }
10060 }
10061 else
10062 {
10063 if (constexpr_p)
10064 {
10065 error ("non-static data member %qE declared %<constexpr%>",
10066 unqualified_id);
10067 constexpr_p = false;
10068 }
10069 decl = build_decl (input_location,
10070 FIELD_DECL, unqualified_id, type);
10071 DECL_NONADDRESSABLE_P (decl) = bitfield;
10072 if (bitfield && !unqualified_id)
10073 TREE_NO_WARNING (decl) = 1;
10074
10075 if (storage_class == sc_mutable)
10076 {
10077 DECL_MUTABLE_P (decl) = 1;
10078 storage_class = sc_none;
10079 }
10080 }
10081
10082 bad_specifiers (decl, BSP_FIELD, virtualp,
10083 memfn_quals != TYPE_UNQUALIFIED,
10084 inlinep, friendp, raises != NULL_TREE);
10085 }
10086 }
10087 else if (TREE_CODE (type) == FUNCTION_TYPE
10088 || TREE_CODE (type) == METHOD_TYPE)
10089 {
10090 tree original_name;
10091 int publicp = 0;
10092
10093 if (!unqualified_id)
10094 return error_mark_node;
10095
10096 if (TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR)
10097 original_name = dname;
10098 else
10099 original_name = unqualified_id;
10100
10101 if (storage_class == sc_auto)
10102 error ("storage class %<auto%> invalid for function %qs", name);
10103 else if (storage_class == sc_register)
10104 error ("storage class %<register%> invalid for function %qs", name);
10105 else if (thread_p)
10106 error ("storage class %<__thread%> invalid for function %qs", name);
10107
10108 if (virt_specifiers)
10109 error ("virt-specifiers in %qs not allowed outside a class definition", name);
10110 /* Function declaration not at top level.
10111 Storage classes other than `extern' are not allowed
10112 and `extern' makes no difference. */
10113 if (! toplevel_bindings_p ()
10114 && (storage_class == sc_static
10115 || declspecs->specs[(int)ds_inline])
10116 && pedantic)
10117 {
10118 if (storage_class == sc_static)
10119 pedwarn (input_location, OPT_pedantic,
10120 "%<static%> specified invalid for function %qs "
10121 "declared out of global scope", name);
10122 else
10123 pedwarn (input_location, OPT_pedantic,
10124 "%<inline%> specifier invalid for function %qs "
10125 "declared out of global scope", name);
10126 }
10127
10128 if (ctype != NULL_TREE
10129 && TREE_CODE (ctype) != NAMESPACE_DECL && !MAYBE_CLASS_TYPE_P (ctype))
10130 {
10131 error ("%q#T is not a class or a namespace", ctype);
10132 ctype = NULL_TREE;
10133 }
10134
10135 if (ctype == NULL_TREE)
10136 {
10137 if (virtualp)
10138 {
10139 error ("virtual non-class function %qs", name);
10140 virtualp = 0;
10141 }
10142 else if (sfk == sfk_constructor
10143 || sfk == sfk_destructor)
10144 {
10145 error (funcdef_flag
10146 ? "%qs defined in a non-class scope"
10147 : "%qs declared in a non-class scope", name);
10148 sfk = sfk_none;
10149 }
10150 }
10151
10152 /* Record presence of `static'. */
10153 publicp = (ctype != NULL_TREE
10154 || storage_class == sc_extern
10155 || storage_class != sc_static);
10156
10157 decl = grokfndecl (ctype, type, original_name, parms, unqualified_id,
10158 virtualp, flags, memfn_quals, raises,
10159 1, friendp,
10160 publicp, inlinep | (2 * constexpr_p), sfk,
10161 funcdef_flag,
10162 template_count, in_namespace, attrlist,
10163 declarator->id_loc);
10164 if (decl == NULL_TREE)
10165 return error_mark_node;
10166
10167 if (staticp == 1)
10168 {
10169 int invalid_static = 0;
10170
10171 /* Don't allow a static member function in a class, and forbid
10172 declaring main to be static. */
10173 if (TREE_CODE (type) == METHOD_TYPE)
10174 {
10175 permerror (input_location, "cannot declare member function %qD to have "
10176 "static linkage", decl);
10177 invalid_static = 1;
10178 }
10179 else if (current_function_decl)
10180 {
10181 /* FIXME need arm citation */
10182 error ("cannot declare static function inside another function");
10183 invalid_static = 1;
10184 }
10185
10186 if (invalid_static)
10187 {
10188 staticp = 0;
10189 storage_class = sc_none;
10190 }
10191 }
10192 }
10193 else
10194 {
10195 /* It's a variable. */
10196
10197 /* An uninitialized decl with `extern' is a reference. */
10198 decl = grokvardecl (type, unqualified_id,
10199 declspecs,
10200 initialized,
10201 (type_quals & TYPE_QUAL_CONST) != 0,
10202 ctype ? ctype : in_namespace);
10203 bad_specifiers (decl, BSP_VAR, virtualp,
10204 memfn_quals != TYPE_UNQUALIFIED,
10205 inlinep, friendp, raises != NULL_TREE);
10206
10207 if (ctype)
10208 {
10209 DECL_CONTEXT (decl) = ctype;
10210 if (staticp == 1)
10211 {
10212 permerror (input_location, "%<static%> may not be used when defining "
10213 "(as opposed to declaring) a static data member");
10214 staticp = 0;
10215 storage_class = sc_none;
10216 }
10217 if (storage_class == sc_register && TREE_STATIC (decl))
10218 {
10219 error ("static member %qD declared %<register%>", decl);
10220 storage_class = sc_none;
10221 }
10222 if (storage_class == sc_extern && pedantic)
10223 {
10224 pedwarn (input_location, OPT_pedantic,
10225 "cannot explicitly declare member %q#D to have "
10226 "extern linkage", decl);
10227 storage_class = sc_none;
10228 }
10229 }
10230 else if (constexpr_p && DECL_EXTERNAL (decl))
10231 {
10232 error ("declaration of constexpr variable %qD is not a definition",
10233 decl);
10234 constexpr_p = false;
10235 }
10236 }
10237
10238 if (storage_class == sc_extern && initialized && !funcdef_flag)
10239 {
10240 if (toplevel_bindings_p ())
10241 {
10242 /* It's common practice (and completely valid) to have a const
10243 be initialized and declared extern. */
10244 if (!(type_quals & TYPE_QUAL_CONST))
10245 warning (0, "%qs initialized and declared %<extern%>", name);
10246 }
10247 else
10248 {
10249 error ("%qs has both %<extern%> and initializer", name);
10250 return error_mark_node;
10251 }
10252 }
10253
10254 /* Record `register' declaration for warnings on &
10255 and in case doing stupid register allocation. */
10256
10257 if (storage_class == sc_register)
10258 DECL_REGISTER (decl) = 1;
10259 else if (storage_class == sc_extern)
10260 DECL_THIS_EXTERN (decl) = 1;
10261 else if (storage_class == sc_static)
10262 DECL_THIS_STATIC (decl) = 1;
10263
10264 /* Set constexpr flag on vars (functions got it in grokfndecl). */
10265 if (constexpr_p && TREE_CODE (decl) == VAR_DECL)
10266 DECL_DECLARED_CONSTEXPR_P (decl) = true;
10267
10268 /* Record constancy and volatility on the DECL itself . There's
10269 no need to do this when processing a template; we'll do this
10270 for the instantiated declaration based on the type of DECL. */
10271 if (!processing_template_decl)
10272 cp_apply_type_quals_to_decl (type_quals, decl);
10273
10274 return decl;
10275 }
10276 }
10277 \f
10278 /* Subroutine of start_function. Ensure that each of the parameter
10279 types (as listed in PARMS) is complete, as is required for a
10280 function definition. */
10281
10282 static void
10283 require_complete_types_for_parms (tree parms)
10284 {
10285 for (; parms; parms = DECL_CHAIN (parms))
10286 {
10287 if (dependent_type_p (TREE_TYPE (parms)))
10288 continue;
10289 if (!VOID_TYPE_P (TREE_TYPE (parms))
10290 && complete_type_or_else (TREE_TYPE (parms), parms))
10291 {
10292 relayout_decl (parms);
10293 DECL_ARG_TYPE (parms) = type_passed_as (TREE_TYPE (parms));
10294 }
10295 else
10296 /* grokparms or complete_type_or_else will have already issued
10297 an error. */
10298 TREE_TYPE (parms) = error_mark_node;
10299 }
10300 }
10301
10302 /* Returns nonzero if T is a local variable. */
10303
10304 int
10305 local_variable_p (const_tree t)
10306 {
10307 if ((TREE_CODE (t) == VAR_DECL
10308 /* A VAR_DECL with a context that is a _TYPE is a static data
10309 member. */
10310 && !TYPE_P (CP_DECL_CONTEXT (t))
10311 /* Any other non-local variable must be at namespace scope. */
10312 && !DECL_NAMESPACE_SCOPE_P (t))
10313 || (TREE_CODE (t) == PARM_DECL))
10314 return 1;
10315
10316 return 0;
10317 }
10318
10319 /* Like local_variable_p, but suitable for use as a tree-walking
10320 function. */
10321
10322 static tree
10323 local_variable_p_walkfn (tree *tp, int *walk_subtrees,
10324 void *data ATTRIBUTE_UNUSED)
10325 {
10326 if (local_variable_p (*tp) && !DECL_ARTIFICIAL (*tp))
10327 return *tp;
10328 else if (TYPE_P (*tp))
10329 *walk_subtrees = 0;
10330
10331 return NULL_TREE;
10332 }
10333
10334
10335 /* Check that ARG, which is a default-argument expression for a
10336 parameter DECL, is valid. Returns ARG, or ERROR_MARK_NODE, if
10337 something goes wrong. DECL may also be a _TYPE node, rather than a
10338 DECL, if there is no DECL available. */
10339
10340 tree
10341 check_default_argument (tree decl, tree arg)
10342 {
10343 tree var;
10344 tree decl_type;
10345
10346 if (TREE_CODE (arg) == DEFAULT_ARG)
10347 /* We get a DEFAULT_ARG when looking at an in-class declaration
10348 with a default argument. Ignore the argument for now; we'll
10349 deal with it after the class is complete. */
10350 return arg;
10351
10352 if (TYPE_P (decl))
10353 {
10354 decl_type = decl;
10355 decl = NULL_TREE;
10356 }
10357 else
10358 decl_type = TREE_TYPE (decl);
10359
10360 if (arg == error_mark_node
10361 || decl == error_mark_node
10362 || TREE_TYPE (arg) == error_mark_node
10363 || decl_type == error_mark_node)
10364 /* Something already went wrong. There's no need to check
10365 further. */
10366 return error_mark_node;
10367
10368 /* [dcl.fct.default]
10369
10370 A default argument expression is implicitly converted to the
10371 parameter type. */
10372 if (!TREE_TYPE (arg)
10373 || !can_convert_arg (decl_type, TREE_TYPE (arg), arg, LOOKUP_NORMAL))
10374 {
10375 if (decl)
10376 error ("default argument for %q#D has type %qT",
10377 decl, TREE_TYPE (arg));
10378 else
10379 error ("default argument for parameter of type %qT has type %qT",
10380 decl_type, TREE_TYPE (arg));
10381
10382 return error_mark_node;
10383 }
10384
10385 /* [dcl.fct.default]
10386
10387 Local variables shall not be used in default argument
10388 expressions.
10389
10390 The keyword `this' shall not be used in a default argument of a
10391 member function. */
10392 var = cp_walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL);
10393 if (var)
10394 {
10395 error ("default argument %qE uses local variable %qD", arg, var);
10396 return error_mark_node;
10397 }
10398
10399 /* All is well. */
10400 return arg;
10401 }
10402
10403 /* Returns a deprecated type used within TYPE, or NULL_TREE if none. */
10404
10405 static tree
10406 type_is_deprecated (tree type)
10407 {
10408 enum tree_code code;
10409 if (TREE_DEPRECATED (type))
10410 return type;
10411 if (TYPE_NAME (type)
10412 && TREE_DEPRECATED (TYPE_NAME (type)))
10413 return type;
10414
10415 /* Do warn about using typedefs to a deprecated class. */
10416 if (TAGGED_TYPE_P (type) && type != TYPE_MAIN_VARIANT (type))
10417 return type_is_deprecated (TYPE_MAIN_VARIANT (type));
10418
10419 code = TREE_CODE (type);
10420
10421 if (code == POINTER_TYPE || code == REFERENCE_TYPE
10422 || code == OFFSET_TYPE || code == FUNCTION_TYPE
10423 || code == METHOD_TYPE || code == ARRAY_TYPE)
10424 return type_is_deprecated (TREE_TYPE (type));
10425
10426 if (TYPE_PTRMEMFUNC_P (type))
10427 return type_is_deprecated
10428 (TREE_TYPE (TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type))));
10429
10430 return NULL_TREE;
10431 }
10432
10433 /* Decode the list of parameter types for a function type.
10434 Given the list of things declared inside the parens,
10435 return a list of types.
10436
10437 If this parameter does not end with an ellipsis, we append
10438 void_list_node.
10439
10440 *PARMS is set to the chain of PARM_DECLs created. */
10441
10442 static tree
10443 grokparms (tree parmlist, tree *parms)
10444 {
10445 tree result = NULL_TREE;
10446 tree decls = NULL_TREE;
10447 tree parm;
10448 int any_error = 0;
10449
10450 for (parm = parmlist; parm != NULL_TREE; parm = TREE_CHAIN (parm))
10451 {
10452 tree type = NULL_TREE;
10453 tree init = TREE_PURPOSE (parm);
10454 tree decl = TREE_VALUE (parm);
10455 const char *errmsg;
10456
10457 if (parm == void_list_node)
10458 break;
10459
10460 if (! decl || TREE_TYPE (decl) == error_mark_node)
10461 continue;
10462
10463 type = TREE_TYPE (decl);
10464 if (VOID_TYPE_P (type))
10465 {
10466 if (same_type_p (type, void_type_node)
10467 && DECL_SELF_REFERENCE_P (type)
10468 && !DECL_NAME (decl) && !result && TREE_CHAIN (parm) == void_list_node)
10469 /* this is a parmlist of `(void)', which is ok. */
10470 break;
10471 cxx_incomplete_type_error (decl, type);
10472 /* It's not a good idea to actually create parameters of
10473 type `void'; other parts of the compiler assume that a
10474 void type terminates the parameter list. */
10475 type = error_mark_node;
10476 TREE_TYPE (decl) = error_mark_node;
10477 }
10478
10479 if (type != error_mark_node
10480 && TYPE_FOR_JAVA (type)
10481 && MAYBE_CLASS_TYPE_P (type))
10482 {
10483 error ("parameter %qD has Java class type", decl);
10484 type = error_mark_node;
10485 TREE_TYPE (decl) = error_mark_node;
10486 init = NULL_TREE;
10487 }
10488
10489 if (type != error_mark_node
10490 && (errmsg = targetm.invalid_parameter_type (type)))
10491 {
10492 error (errmsg);
10493 type = error_mark_node;
10494 TREE_TYPE (decl) = error_mark_node;
10495 }
10496
10497 if (type != error_mark_node)
10498 {
10499 if (deprecated_state != DEPRECATED_SUPPRESS)
10500 {
10501 tree deptype = type_is_deprecated (type);
10502 if (deptype)
10503 warn_deprecated_use (deptype, NULL_TREE);
10504 }
10505
10506 /* Top-level qualifiers on the parameters are
10507 ignored for function types. */
10508 type = cp_build_qualified_type (type, 0);
10509 if (TREE_CODE (type) == METHOD_TYPE)
10510 {
10511 error ("parameter %qD invalidly declared method type", decl);
10512 type = build_pointer_type (type);
10513 TREE_TYPE (decl) = type;
10514 }
10515 else if (abstract_virtuals_error (decl, type))
10516 any_error = 1; /* Seems like a good idea. */
10517 else if (POINTER_TYPE_P (type))
10518 {
10519 /* [dcl.fct]/6, parameter types cannot contain pointers
10520 (references) to arrays of unknown bound. */
10521 tree t = TREE_TYPE (type);
10522 int ptr = TYPE_PTR_P (type);
10523
10524 while (1)
10525 {
10526 if (TYPE_PTR_P (t))
10527 ptr = 1;
10528 else if (TREE_CODE (t) != ARRAY_TYPE)
10529 break;
10530 else if (!TYPE_DOMAIN (t))
10531 break;
10532 t = TREE_TYPE (t);
10533 }
10534 if (TREE_CODE (t) == ARRAY_TYPE)
10535 error (ptr
10536 ? G_("parameter %qD includes pointer to array of "
10537 "unknown bound %qT")
10538 : G_("parameter %qD includes reference to array of "
10539 "unknown bound %qT"),
10540 decl, t);
10541 }
10542
10543 if (any_error)
10544 init = NULL_TREE;
10545 else if (init && !processing_template_decl)
10546 init = check_default_argument (decl, init);
10547 }
10548
10549 DECL_CHAIN (decl) = decls;
10550 decls = decl;
10551 result = tree_cons (init, type, result);
10552 }
10553 decls = nreverse (decls);
10554 result = nreverse (result);
10555 if (parm)
10556 result = chainon (result, void_list_node);
10557 *parms = decls;
10558
10559 return result;
10560 }
10561
10562 \f
10563 /* D is a constructor or overloaded `operator='.
10564
10565 Let T be the class in which D is declared. Then, this function
10566 returns:
10567
10568 -1 if D's is an ill-formed constructor or copy assignment operator
10569 whose first parameter is of type `T'.
10570 0 if D is not a copy constructor or copy assignment
10571 operator.
10572 1 if D is a copy constructor or copy assignment operator whose
10573 first parameter is a reference to non-const qualified T.
10574 2 if D is a copy constructor or copy assignment operator whose
10575 first parameter is a reference to const qualified T.
10576
10577 This function can be used as a predicate. Positive values indicate
10578 a copy constructor and nonzero values indicate a copy assignment
10579 operator. */
10580
10581 int
10582 copy_fn_p (const_tree d)
10583 {
10584 tree args;
10585 tree arg_type;
10586 int result = 1;
10587
10588 gcc_assert (DECL_FUNCTION_MEMBER_P (d));
10589
10590 if (TREE_CODE (d) == TEMPLATE_DECL
10591 || (DECL_TEMPLATE_INFO (d)
10592 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (d))))
10593 /* Instantiations of template member functions are never copy
10594 functions. Note that member functions of templated classes are
10595 represented as template functions internally, and we must
10596 accept those as copy functions. */
10597 return 0;
10598
10599 args = FUNCTION_FIRST_USER_PARMTYPE (d);
10600 if (!args)
10601 return 0;
10602
10603 arg_type = TREE_VALUE (args);
10604 if (arg_type == error_mark_node)
10605 return 0;
10606
10607 if (TYPE_MAIN_VARIANT (arg_type) == DECL_CONTEXT (d))
10608 {
10609 /* Pass by value copy assignment operator. */
10610 result = -1;
10611 }
10612 else if (TREE_CODE (arg_type) == REFERENCE_TYPE
10613 && !TYPE_REF_IS_RVALUE (arg_type)
10614 && TYPE_MAIN_VARIANT (TREE_TYPE (arg_type)) == DECL_CONTEXT (d))
10615 {
10616 if (CP_TYPE_CONST_P (TREE_TYPE (arg_type)))
10617 result = 2;
10618 }
10619 else
10620 return 0;
10621
10622 args = TREE_CHAIN (args);
10623
10624 if (args && args != void_list_node && !TREE_PURPOSE (args))
10625 /* There are more non-optional args. */
10626 return 0;
10627
10628 return result;
10629 }
10630
10631 /* D is a constructor or overloaded `operator='.
10632
10633 Let T be the class in which D is declared. Then, this function
10634 returns true when D is a move constructor or move assignment
10635 operator, false otherwise. */
10636
10637 bool
10638 move_fn_p (const_tree d)
10639 {
10640 tree args;
10641 tree arg_type;
10642 bool result = false;
10643
10644 gcc_assert (DECL_FUNCTION_MEMBER_P (d));
10645
10646 if (cxx_dialect == cxx98)
10647 /* There are no move constructors if we are in C++98 mode. */
10648 return false;
10649
10650 if (TREE_CODE (d) == TEMPLATE_DECL
10651 || (DECL_TEMPLATE_INFO (d)
10652 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (d))))
10653 /* Instantiations of template member functions are never copy
10654 functions. Note that member functions of templated classes are
10655 represented as template functions internally, and we must
10656 accept those as copy functions. */
10657 return 0;
10658
10659 args = FUNCTION_FIRST_USER_PARMTYPE (d);
10660 if (!args)
10661 return 0;
10662
10663 arg_type = TREE_VALUE (args);
10664 if (arg_type == error_mark_node)
10665 return 0;
10666
10667 if (TREE_CODE (arg_type) == REFERENCE_TYPE
10668 && TYPE_REF_IS_RVALUE (arg_type)
10669 && same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (arg_type)),
10670 DECL_CONTEXT (d)))
10671 result = true;
10672
10673 args = TREE_CHAIN (args);
10674
10675 if (args && args != void_list_node && !TREE_PURPOSE (args))
10676 /* There are more non-optional args. */
10677 return false;
10678
10679 return result;
10680 }
10681
10682 /* Remember any special properties of member function DECL. */
10683
10684 void
10685 grok_special_member_properties (tree decl)
10686 {
10687 tree class_type;
10688
10689 if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (decl))
10690 return;
10691
10692 class_type = DECL_CONTEXT (decl);
10693 if (DECL_CONSTRUCTOR_P (decl))
10694 {
10695 int ctor = copy_fn_p (decl);
10696
10697 if (!DECL_ARTIFICIAL (decl))
10698 TYPE_HAS_USER_CONSTRUCTOR (class_type) = 1;
10699
10700 if (ctor > 0)
10701 {
10702 /* [class.copy]
10703
10704 A non-template constructor for class X is a copy
10705 constructor if its first parameter is of type X&, const
10706 X&, volatile X& or const volatile X&, and either there
10707 are no other parameters or else all other parameters have
10708 default arguments. */
10709 TYPE_HAS_COPY_CTOR (class_type) = 1;
10710 if (user_provided_p (decl))
10711 TYPE_HAS_COMPLEX_COPY_CTOR (class_type) = 1;
10712 if (ctor > 1)
10713 TYPE_HAS_CONST_COPY_CTOR (class_type) = 1;
10714 }
10715 else if (sufficient_parms_p (FUNCTION_FIRST_USER_PARMTYPE (decl)))
10716 {
10717 TYPE_HAS_DEFAULT_CONSTRUCTOR (class_type) = 1;
10718 if (user_provided_p (decl))
10719 TYPE_HAS_COMPLEX_DFLT (class_type) = 1;
10720 }
10721 else if (move_fn_p (decl) && user_provided_p (decl))
10722 TYPE_HAS_COMPLEX_MOVE_CTOR (class_type) = 1;
10723 else if (is_list_ctor (decl))
10724 TYPE_HAS_LIST_CTOR (class_type) = 1;
10725
10726 if (DECL_DECLARED_CONSTEXPR_P (decl)
10727 && !copy_fn_p (decl) && !move_fn_p (decl))
10728 TYPE_HAS_CONSTEXPR_CTOR (class_type) = 1;
10729 }
10730 else if (DECL_OVERLOADED_OPERATOR_P (decl) == NOP_EXPR)
10731 {
10732 /* [class.copy]
10733
10734 A non-template assignment operator for class X is a copy
10735 assignment operator if its parameter is of type X, X&, const
10736 X&, volatile X& or const volatile X&. */
10737
10738 int assop = copy_fn_p (decl);
10739
10740 if (assop)
10741 {
10742 TYPE_HAS_COPY_ASSIGN (class_type) = 1;
10743 if (user_provided_p (decl))
10744 TYPE_HAS_COMPLEX_COPY_ASSIGN (class_type) = 1;
10745 if (assop != 1)
10746 TYPE_HAS_CONST_COPY_ASSIGN (class_type) = 1;
10747 }
10748 else if (move_fn_p (decl) && user_provided_p (decl))
10749 TYPE_HAS_COMPLEX_MOVE_ASSIGN (class_type) = 1;
10750 }
10751 /* Destructors are handled in check_methods. */
10752 }
10753
10754 /* Check a constructor DECL has the correct form. Complains
10755 if the class has a constructor of the form X(X). */
10756
10757 int
10758 grok_ctor_properties (const_tree ctype, const_tree decl)
10759 {
10760 int ctor_parm = copy_fn_p (decl);
10761
10762 if (ctor_parm < 0)
10763 {
10764 /* [class.copy]
10765
10766 A declaration of a constructor for a class X is ill-formed if
10767 its first parameter is of type (optionally cv-qualified) X
10768 and either there are no other parameters or else all other
10769 parameters have default arguments.
10770
10771 We *don't* complain about member template instantiations that
10772 have this form, though; they can occur as we try to decide
10773 what constructor to use during overload resolution. Since
10774 overload resolution will never prefer such a constructor to
10775 the non-template copy constructor (which is either explicitly
10776 or implicitly defined), there's no need to worry about their
10777 existence. Theoretically, they should never even be
10778 instantiated, but that's hard to forestall. */
10779 error ("invalid constructor; you probably meant %<%T (const %T&)%>",
10780 ctype, ctype);
10781 return 0;
10782 }
10783
10784 return 1;
10785 }
10786
10787 /* An operator with this code is unary, but can also be binary. */
10788
10789 static int
10790 ambi_op_p (enum tree_code code)
10791 {
10792 return (code == INDIRECT_REF
10793 || code == ADDR_EXPR
10794 || code == UNARY_PLUS_EXPR
10795 || code == NEGATE_EXPR
10796 || code == PREINCREMENT_EXPR
10797 || code == PREDECREMENT_EXPR);
10798 }
10799
10800 /* An operator with this name can only be unary. */
10801
10802 static int
10803 unary_op_p (enum tree_code code)
10804 {
10805 return (code == TRUTH_NOT_EXPR
10806 || code == BIT_NOT_EXPR
10807 || code == COMPONENT_REF
10808 || code == TYPE_EXPR);
10809 }
10810
10811 /* DECL is a declaration for an overloaded operator. If COMPLAIN is true,
10812 errors are issued for invalid declarations. */
10813
10814 bool
10815 grok_op_properties (tree decl, bool complain)
10816 {
10817 tree argtypes = TYPE_ARG_TYPES (TREE_TYPE (decl));
10818 tree argtype;
10819 int methodp = (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE);
10820 tree name = DECL_NAME (decl);
10821 enum tree_code operator_code;
10822 int arity;
10823 bool ellipsis_p;
10824 tree class_type;
10825
10826 /* Count the number of arguments and check for ellipsis. */
10827 for (argtype = argtypes, arity = 0;
10828 argtype && argtype != void_list_node;
10829 argtype = TREE_CHAIN (argtype))
10830 ++arity;
10831 ellipsis_p = !argtype;
10832
10833 class_type = DECL_CONTEXT (decl);
10834 if (class_type && !CLASS_TYPE_P (class_type))
10835 class_type = NULL_TREE;
10836
10837 if (DECL_CONV_FN_P (decl))
10838 operator_code = TYPE_EXPR;
10839 else
10840 do
10841 {
10842 #define DEF_OPERATOR(NAME, CODE, MANGLING, ARITY, ASSN_P) \
10843 if (ansi_opname (CODE) == name) \
10844 { \
10845 operator_code = (CODE); \
10846 break; \
10847 } \
10848 else if (ansi_assopname (CODE) == name) \
10849 { \
10850 operator_code = (CODE); \
10851 DECL_ASSIGNMENT_OPERATOR_P (decl) = 1; \
10852 break; \
10853 }
10854
10855 #include "operators.def"
10856 #undef DEF_OPERATOR
10857
10858 gcc_unreachable ();
10859 }
10860 while (0);
10861 gcc_assert (operator_code != MAX_TREE_CODES);
10862 SET_OVERLOADED_OPERATOR_CODE (decl, operator_code);
10863
10864 if (class_type)
10865 switch (operator_code)
10866 {
10867 case NEW_EXPR:
10868 TYPE_HAS_NEW_OPERATOR (class_type) = 1;
10869 break;
10870
10871 case DELETE_EXPR:
10872 TYPE_GETS_DELETE (class_type) |= 1;
10873 break;
10874
10875 case VEC_NEW_EXPR:
10876 TYPE_HAS_ARRAY_NEW_OPERATOR (class_type) = 1;
10877 break;
10878
10879 case VEC_DELETE_EXPR:
10880 TYPE_GETS_DELETE (class_type) |= 2;
10881 break;
10882
10883 default:
10884 break;
10885 }
10886
10887 /* [basic.std.dynamic.allocation]/1:
10888
10889 A program is ill-formed if an allocation function is declared
10890 in a namespace scope other than global scope or declared static
10891 in global scope.
10892
10893 The same also holds true for deallocation functions. */
10894 if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR
10895 || operator_code == DELETE_EXPR || operator_code == VEC_DELETE_EXPR)
10896 {
10897 if (DECL_NAMESPACE_SCOPE_P (decl))
10898 {
10899 if (CP_DECL_CONTEXT (decl) != global_namespace)
10900 {
10901 error ("%qD may not be declared within a namespace", decl);
10902 return false;
10903 }
10904 else if (!TREE_PUBLIC (decl))
10905 {
10906 error ("%qD may not be declared as static", decl);
10907 return false;
10908 }
10909 }
10910 }
10911
10912 if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR)
10913 {
10914 TREE_TYPE (decl) = coerce_new_type (TREE_TYPE (decl));
10915 DECL_IS_OPERATOR_NEW (decl) = 1;
10916 }
10917 else if (operator_code == DELETE_EXPR || operator_code == VEC_DELETE_EXPR)
10918 TREE_TYPE (decl) = coerce_delete_type (TREE_TYPE (decl));
10919 else
10920 {
10921 /* An operator function must either be a non-static member function
10922 or have at least one parameter of a class, a reference to a class,
10923 an enumeration, or a reference to an enumeration. 13.4.0.6 */
10924 if (! methodp || DECL_STATIC_FUNCTION_P (decl))
10925 {
10926 if (operator_code == TYPE_EXPR
10927 || operator_code == CALL_EXPR
10928 || operator_code == COMPONENT_REF
10929 || operator_code == ARRAY_REF
10930 || operator_code == NOP_EXPR)
10931 {
10932 error ("%qD must be a nonstatic member function", decl);
10933 return false;
10934 }
10935 else
10936 {
10937 tree p;
10938
10939 if (DECL_STATIC_FUNCTION_P (decl))
10940 {
10941 error ("%qD must be either a non-static member "
10942 "function or a non-member function", decl);
10943 return false;
10944 }
10945
10946 for (p = argtypes; p && p != void_list_node; p = TREE_CHAIN (p))
10947 {
10948 tree arg = non_reference (TREE_VALUE (p));
10949 if (arg == error_mark_node)
10950 return false;
10951
10952 /* MAYBE_CLASS_TYPE_P, rather than CLASS_TYPE_P, is used
10953 because these checks are performed even on
10954 template functions. */
10955 if (MAYBE_CLASS_TYPE_P (arg)
10956 || TREE_CODE (arg) == ENUMERAL_TYPE)
10957 break;
10958 }
10959
10960 if (!p || p == void_list_node)
10961 {
10962 if (complain)
10963 error ("%qD must have an argument of class or "
10964 "enumerated type", decl);
10965 return false;
10966 }
10967 }
10968 }
10969
10970 /* There are no restrictions on the arguments to an overloaded
10971 "operator ()". */
10972 if (operator_code == CALL_EXPR)
10973 return true;
10974
10975 /* Warn about conversion operators that will never be used. */
10976 if (IDENTIFIER_TYPENAME_P (name)
10977 && ! DECL_TEMPLATE_INFO (decl)
10978 && warn_conversion
10979 /* Warn only declaring the function; there is no need to
10980 warn again about out-of-class definitions. */
10981 && class_type == current_class_type)
10982 {
10983 tree t = TREE_TYPE (name);
10984 int ref = (TREE_CODE (t) == REFERENCE_TYPE);
10985
10986 if (ref)
10987 t = TYPE_MAIN_VARIANT (TREE_TYPE (t));
10988
10989 if (TREE_CODE (t) == VOID_TYPE)
10990 warning (OPT_Wconversion,
10991 ref
10992 ? G_("conversion to a reference to void "
10993 "will never use a type conversion operator")
10994 : G_("conversion to void "
10995 "will never use a type conversion operator"));
10996 else if (class_type)
10997 {
10998 if (t == class_type)
10999 warning (OPT_Wconversion,
11000 ref
11001 ? G_("conversion to a reference to the same type "
11002 "will never use a type conversion operator")
11003 : G_("conversion to the same type "
11004 "will never use a type conversion operator"));
11005 /* Don't force t to be complete here. */
11006 else if (MAYBE_CLASS_TYPE_P (t)
11007 && COMPLETE_TYPE_P (t)
11008 && DERIVED_FROM_P (t, class_type))
11009 warning (OPT_Wconversion,
11010 ref
11011 ? G_("conversion to a reference to a base class "
11012 "will never use a type conversion operator")
11013 : G_("conversion to a base class "
11014 "will never use a type conversion operator"));
11015 }
11016
11017 }
11018
11019 if (operator_code == COND_EXPR)
11020 {
11021 /* 13.4.0.3 */
11022 error ("ISO C++ prohibits overloading operator ?:");
11023 return false;
11024 }
11025 else if (ellipsis_p)
11026 {
11027 error ("%qD must not have variable number of arguments", decl);
11028 return false;
11029 }
11030 else if (ambi_op_p (operator_code))
11031 {
11032 if (arity == 1)
11033 /* We pick the one-argument operator codes by default, so
11034 we don't have to change anything. */
11035 ;
11036 else if (arity == 2)
11037 {
11038 /* If we thought this was a unary operator, we now know
11039 it to be a binary operator. */
11040 switch (operator_code)
11041 {
11042 case INDIRECT_REF:
11043 operator_code = MULT_EXPR;
11044 break;
11045
11046 case ADDR_EXPR:
11047 operator_code = BIT_AND_EXPR;
11048 break;
11049
11050 case UNARY_PLUS_EXPR:
11051 operator_code = PLUS_EXPR;
11052 break;
11053
11054 case NEGATE_EXPR:
11055 operator_code = MINUS_EXPR;
11056 break;
11057
11058 case PREINCREMENT_EXPR:
11059 operator_code = POSTINCREMENT_EXPR;
11060 break;
11061
11062 case PREDECREMENT_EXPR:
11063 operator_code = POSTDECREMENT_EXPR;
11064 break;
11065
11066 default:
11067 gcc_unreachable ();
11068 }
11069
11070 SET_OVERLOADED_OPERATOR_CODE (decl, operator_code);
11071
11072 if ((operator_code == POSTINCREMENT_EXPR
11073 || operator_code == POSTDECREMENT_EXPR)
11074 && ! processing_template_decl
11075 && ! same_type_p (TREE_VALUE (TREE_CHAIN (argtypes)), integer_type_node))
11076 {
11077 if (methodp)
11078 error ("postfix %qD must take %<int%> as its argument",
11079 decl);
11080 else
11081 error ("postfix %qD must take %<int%> as its second "
11082 "argument", decl);
11083 return false;
11084 }
11085 }
11086 else
11087 {
11088 if (methodp)
11089 error ("%qD must take either zero or one argument", decl);
11090 else
11091 error ("%qD must take either one or two arguments", decl);
11092 return false;
11093 }
11094
11095 /* More Effective C++ rule 6. */
11096 if (warn_ecpp
11097 && (operator_code == POSTINCREMENT_EXPR
11098 || operator_code == POSTDECREMENT_EXPR
11099 || operator_code == PREINCREMENT_EXPR
11100 || operator_code == PREDECREMENT_EXPR))
11101 {
11102 tree arg = TREE_VALUE (argtypes);
11103 tree ret = TREE_TYPE (TREE_TYPE (decl));
11104 if (methodp || TREE_CODE (arg) == REFERENCE_TYPE)
11105 arg = TREE_TYPE (arg);
11106 arg = TYPE_MAIN_VARIANT (arg);
11107 if (operator_code == PREINCREMENT_EXPR
11108 || operator_code == PREDECREMENT_EXPR)
11109 {
11110 if (TREE_CODE (ret) != REFERENCE_TYPE
11111 || !same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (ret)),
11112 arg))
11113 warning (OPT_Weffc__, "prefix %qD should return %qT", decl,
11114 build_reference_type (arg));
11115 }
11116 else
11117 {
11118 if (!same_type_p (TYPE_MAIN_VARIANT (ret), arg))
11119 warning (OPT_Weffc__, "postfix %qD should return %qT", decl, arg);
11120 }
11121 }
11122 }
11123 else if (unary_op_p (operator_code))
11124 {
11125 if (arity != 1)
11126 {
11127 if (methodp)
11128 error ("%qD must take %<void%>", decl);
11129 else
11130 error ("%qD must take exactly one argument", decl);
11131 return false;
11132 }
11133 }
11134 else /* if (binary_op_p (operator_code)) */
11135 {
11136 if (arity != 2)
11137 {
11138 if (methodp)
11139 error ("%qD must take exactly one argument", decl);
11140 else
11141 error ("%qD must take exactly two arguments", decl);
11142 return false;
11143 }
11144
11145 /* More Effective C++ rule 7. */
11146 if (warn_ecpp
11147 && (operator_code == TRUTH_ANDIF_EXPR
11148 || operator_code == TRUTH_ORIF_EXPR
11149 || operator_code == COMPOUND_EXPR))
11150 warning (OPT_Weffc__, "user-defined %qD always evaluates both arguments",
11151 decl);
11152 }
11153
11154 /* Effective C++ rule 23. */
11155 if (warn_ecpp
11156 && arity == 2
11157 && !DECL_ASSIGNMENT_OPERATOR_P (decl)
11158 && (operator_code == PLUS_EXPR
11159 || operator_code == MINUS_EXPR
11160 || operator_code == TRUNC_DIV_EXPR
11161 || operator_code == MULT_EXPR
11162 || operator_code == TRUNC_MOD_EXPR)
11163 && TREE_CODE (TREE_TYPE (TREE_TYPE (decl))) == REFERENCE_TYPE)
11164 warning (OPT_Weffc__, "%qD should return by value", decl);
11165
11166 /* [over.oper]/8 */
11167 for (; argtypes && argtypes != void_list_node;
11168 argtypes = TREE_CHAIN (argtypes))
11169 if (TREE_PURPOSE (argtypes))
11170 {
11171 TREE_PURPOSE (argtypes) = NULL_TREE;
11172 if (operator_code == POSTINCREMENT_EXPR
11173 || operator_code == POSTDECREMENT_EXPR)
11174 {
11175 pedwarn (input_location, OPT_pedantic, "%qD cannot have default arguments",
11176 decl);
11177 }
11178 else
11179 {
11180 error ("%qD cannot have default arguments", decl);
11181 return false;
11182 }
11183 }
11184 }
11185 return true;
11186 }
11187 \f
11188 /* Return a string giving the keyword associate with CODE. */
11189
11190 static const char *
11191 tag_name (enum tag_types code)
11192 {
11193 switch (code)
11194 {
11195 case record_type:
11196 return "struct";
11197 case class_type:
11198 return "class";
11199 case union_type:
11200 return "union";
11201 case enum_type:
11202 return "enum";
11203 case typename_type:
11204 return "typename";
11205 default:
11206 gcc_unreachable ();
11207 }
11208 }
11209
11210 /* Name lookup in an elaborated-type-specifier (after the keyword
11211 indicated by TAG_CODE) has found the TYPE_DECL DECL. If the
11212 elaborated-type-specifier is invalid, issue a diagnostic and return
11213 error_mark_node; otherwise, return the *_TYPE to which it referred.
11214 If ALLOW_TEMPLATE_P is true, TYPE may be a class template. */
11215
11216 tree
11217 check_elaborated_type_specifier (enum tag_types tag_code,
11218 tree decl,
11219 bool allow_template_p)
11220 {
11221 tree type;
11222
11223 /* In the case of:
11224
11225 struct S { struct S *p; };
11226
11227 name lookup will find the TYPE_DECL for the implicit "S::S"
11228 typedef. Adjust for that here. */
11229 if (DECL_SELF_REFERENCE_P (decl))
11230 decl = TYPE_NAME (TREE_TYPE (decl));
11231
11232 type = TREE_TYPE (decl);
11233
11234 /* Check TEMPLATE_TYPE_PARM first because DECL_IMPLICIT_TYPEDEF_P
11235 is false for this case as well. */
11236 if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
11237 {
11238 error ("using template type parameter %qT after %qs",
11239 type, tag_name (tag_code));
11240 return error_mark_node;
11241 }
11242 /* [dcl.type.elab]
11243
11244 If the identifier resolves to a typedef-name or a template
11245 type-parameter, the elaborated-type-specifier is ill-formed.
11246
11247 In other words, the only legitimate declaration to use in the
11248 elaborated type specifier is the implicit typedef created when
11249 the type is declared. */
11250 else if (!DECL_IMPLICIT_TYPEDEF_P (decl)
11251 && !DECL_SELF_REFERENCE_P (decl)
11252 && tag_code != typename_type)
11253 {
11254 error ("using typedef-name %qD after %qs", decl, tag_name (tag_code));
11255 error ("%q+D has a previous declaration here", decl);
11256 return error_mark_node;
11257 }
11258 else if (TREE_CODE (type) != RECORD_TYPE
11259 && TREE_CODE (type) != UNION_TYPE
11260 && tag_code != enum_type
11261 && tag_code != typename_type)
11262 {
11263 error ("%qT referred to as %qs", type, tag_name (tag_code));
11264 error ("%q+T has a previous declaration here", type);
11265 return error_mark_node;
11266 }
11267 else if (TREE_CODE (type) != ENUMERAL_TYPE
11268 && tag_code == enum_type)
11269 {
11270 error ("%qT referred to as enum", type);
11271 error ("%q+T has a previous declaration here", type);
11272 return error_mark_node;
11273 }
11274 else if (!allow_template_p
11275 && TREE_CODE (type) == RECORD_TYPE
11276 && CLASSTYPE_IS_TEMPLATE (type))
11277 {
11278 /* If a class template appears as elaborated type specifier
11279 without a template header such as:
11280
11281 template <class T> class C {};
11282 void f(class C); // No template header here
11283
11284 then the required template argument is missing. */
11285 error ("template argument required for %<%s %T%>",
11286 tag_name (tag_code),
11287 DECL_NAME (CLASSTYPE_TI_TEMPLATE (type)));
11288 return error_mark_node;
11289 }
11290
11291 return type;
11292 }
11293
11294 /* Lookup NAME in elaborate type specifier in scope according to
11295 SCOPE and issue diagnostics if necessary.
11296 Return *_TYPE node upon success, NULL_TREE when the NAME is not
11297 found, and ERROR_MARK_NODE for type error. */
11298
11299 static tree
11300 lookup_and_check_tag (enum tag_types tag_code, tree name,
11301 tag_scope scope, bool template_header_p)
11302 {
11303 tree t;
11304 tree decl;
11305 if (scope == ts_global)
11306 {
11307 /* First try ordinary name lookup, ignoring hidden class name
11308 injected via friend declaration. */
11309 decl = lookup_name_prefer_type (name, 2);
11310 /* If that fails, the name will be placed in the smallest
11311 non-class, non-function-prototype scope according to 3.3.1/5.
11312 We may already have a hidden name declared as friend in this
11313 scope. So lookup again but not ignoring hidden names.
11314 If we find one, that name will be made visible rather than
11315 creating a new tag. */
11316 if (!decl)
11317 decl = lookup_type_scope (name, ts_within_enclosing_non_class);
11318 }
11319 else
11320 decl = lookup_type_scope (name, scope);
11321
11322 if (decl && DECL_CLASS_TEMPLATE_P (decl))
11323 decl = DECL_TEMPLATE_RESULT (decl);
11324
11325 if (decl && TREE_CODE (decl) == TYPE_DECL)
11326 {
11327 /* Look for invalid nested type:
11328 class C {
11329 class C {};
11330 }; */
11331 if (scope == ts_current && DECL_SELF_REFERENCE_P (decl))
11332 {
11333 error ("%qD has the same name as the class in which it is "
11334 "declared",
11335 decl);
11336 return error_mark_node;
11337 }
11338
11339 /* Two cases we need to consider when deciding if a class
11340 template is allowed as an elaborated type specifier:
11341 1. It is a self reference to its own class.
11342 2. It comes with a template header.
11343
11344 For example:
11345
11346 template <class T> class C {
11347 class C *c1; // DECL_SELF_REFERENCE_P is true
11348 class D;
11349 };
11350 template <class U> class C; // template_header_p is true
11351 template <class T> class C<T>::D {
11352 class C *c2; // DECL_SELF_REFERENCE_P is true
11353 }; */
11354
11355 t = check_elaborated_type_specifier (tag_code,
11356 decl,
11357 template_header_p
11358 | DECL_SELF_REFERENCE_P (decl));
11359 return t;
11360 }
11361 else if (decl && TREE_CODE (decl) == TREE_LIST)
11362 {
11363 error ("reference to %qD is ambiguous", name);
11364 print_candidates (decl);
11365 return error_mark_node;
11366 }
11367 else
11368 return NULL_TREE;
11369 }
11370
11371 /* Get the struct, enum or union (TAG_CODE says which) with tag NAME.
11372 Define the tag as a forward-reference if it is not defined.
11373
11374 If a declaration is given, process it here, and report an error if
11375 multiple declarations are not identical.
11376
11377 SCOPE is TS_CURRENT when this is also a definition. Only look in
11378 the current frame for the name (since C++ allows new names in any
11379 scope.) It is TS_WITHIN_ENCLOSING_NON_CLASS if this is a friend
11380 declaration. Only look beginning from the current scope outward up
11381 till the nearest non-class scope. Otherwise it is TS_GLOBAL.
11382
11383 TEMPLATE_HEADER_P is true when this declaration is preceded by
11384 a set of template parameters. */
11385
11386 static tree
11387 xref_tag_1 (enum tag_types tag_code, tree name,
11388 tag_scope scope, bool template_header_p)
11389 {
11390 enum tree_code code;
11391 tree t;
11392 tree context = NULL_TREE;
11393
11394 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
11395
11396 switch (tag_code)
11397 {
11398 case record_type:
11399 case class_type:
11400 code = RECORD_TYPE;
11401 break;
11402 case union_type:
11403 code = UNION_TYPE;
11404 break;
11405 case enum_type:
11406 code = ENUMERAL_TYPE;
11407 break;
11408 default:
11409 gcc_unreachable ();
11410 }
11411
11412 /* In case of anonymous name, xref_tag is only called to
11413 make type node and push name. Name lookup is not required. */
11414 if (ANON_AGGRNAME_P (name))
11415 t = NULL_TREE;
11416 else
11417 t = lookup_and_check_tag (tag_code, name,
11418 scope, template_header_p);
11419
11420 if (t == error_mark_node)
11421 return error_mark_node;
11422
11423 if (scope != ts_current && t && current_class_type
11424 && template_class_depth (current_class_type)
11425 && template_header_p)
11426 {
11427 /* Since SCOPE is not TS_CURRENT, we are not looking at a
11428 definition of this tag. Since, in addition, we are currently
11429 processing a (member) template declaration of a template
11430 class, we must be very careful; consider:
11431
11432 template <class X>
11433 struct S1
11434
11435 template <class U>
11436 struct S2
11437 { template <class V>
11438 friend struct S1; };
11439
11440 Here, the S2::S1 declaration should not be confused with the
11441 outer declaration. In particular, the inner version should
11442 have a template parameter of level 2, not level 1. This
11443 would be particularly important if the member declaration
11444 were instead:
11445
11446 template <class V = U> friend struct S1;
11447
11448 say, when we should tsubst into `U' when instantiating
11449 S2. On the other hand, when presented with:
11450
11451 template <class T>
11452 struct S1 {
11453 template <class U>
11454 struct S2 {};
11455 template <class U>
11456 friend struct S2;
11457 };
11458
11459 we must find the inner binding eventually. We
11460 accomplish this by making sure that the new type we
11461 create to represent this declaration has the right
11462 TYPE_CONTEXT. */
11463 context = TYPE_CONTEXT (t);
11464 t = NULL_TREE;
11465 }
11466
11467 if (! t)
11468 {
11469 /* If no such tag is yet defined, create a forward-reference node
11470 and record it as the "definition".
11471 When a real declaration of this type is found,
11472 the forward-reference will be altered into a real type. */
11473 if (code == ENUMERAL_TYPE)
11474 {
11475 error ("use of enum %q#D without previous declaration", name);
11476 return error_mark_node;
11477 }
11478 else
11479 {
11480 t = make_class_type (code);
11481 TYPE_CONTEXT (t) = context;
11482 t = pushtag (name, t, scope);
11483 }
11484 }
11485 else
11486 {
11487 if (template_header_p && MAYBE_CLASS_TYPE_P (t))
11488 {
11489 if (!redeclare_class_template (t, current_template_parms))
11490 return error_mark_node;
11491 }
11492 else if (!processing_template_decl
11493 && CLASS_TYPE_P (t)
11494 && CLASSTYPE_IS_TEMPLATE (t))
11495 {
11496 error ("redeclaration of %qT as a non-template", t);
11497 error ("previous declaration %q+D", t);
11498 return error_mark_node;
11499 }
11500
11501 /* Make injected friend class visible. */
11502 if (scope != ts_within_enclosing_non_class
11503 && hidden_name_p (TYPE_NAME (t)))
11504 {
11505 DECL_ANTICIPATED (TYPE_NAME (t)) = 0;
11506 DECL_FRIEND_P (TYPE_NAME (t)) = 0;
11507
11508 if (TYPE_TEMPLATE_INFO (t))
11509 {
11510 DECL_ANTICIPATED (TYPE_TI_TEMPLATE (t)) = 0;
11511 DECL_FRIEND_P (TYPE_TI_TEMPLATE (t)) = 0;
11512 }
11513 }
11514 }
11515
11516 return t;
11517 }
11518
11519 /* Wrapper for xref_tag_1. */
11520
11521 tree
11522 xref_tag (enum tag_types tag_code, tree name,
11523 tag_scope scope, bool template_header_p)
11524 {
11525 tree ret;
11526 timevar_start (TV_NAME_LOOKUP);
11527 ret = xref_tag_1 (tag_code, name, scope, template_header_p);
11528 timevar_stop (TV_NAME_LOOKUP);
11529 return ret;
11530 }
11531
11532
11533 tree
11534 xref_tag_from_type (tree old, tree id, tag_scope scope)
11535 {
11536 enum tag_types tag_kind;
11537
11538 if (TREE_CODE (old) == RECORD_TYPE)
11539 tag_kind = (CLASSTYPE_DECLARED_CLASS (old) ? class_type : record_type);
11540 else
11541 tag_kind = union_type;
11542
11543 if (id == NULL_TREE)
11544 id = TYPE_IDENTIFIER (old);
11545
11546 return xref_tag (tag_kind, id, scope, false);
11547 }
11548
11549 /* Create the binfo hierarchy for REF with (possibly NULL) base list
11550 BASE_LIST. For each element on BASE_LIST the TREE_PURPOSE is an
11551 access_* node, and the TREE_VALUE is the type of the base-class.
11552 Non-NULL TREE_TYPE indicates virtual inheritance.
11553
11554 Returns true if the binfo hierarchy was successfully created,
11555 false if an error was detected. */
11556
11557 bool
11558 xref_basetypes (tree ref, tree base_list)
11559 {
11560 tree *basep;
11561 tree binfo, base_binfo;
11562 unsigned max_vbases = 0; /* Maximum direct & indirect virtual bases. */
11563 unsigned max_bases = 0; /* Maximum direct bases. */
11564 int i;
11565 tree default_access;
11566 tree igo_prev; /* Track Inheritance Graph Order. */
11567
11568 if (ref == error_mark_node)
11569 return false;
11570
11571 /* The base of a derived class is private by default, all others are
11572 public. */
11573 default_access = (TREE_CODE (ref) == RECORD_TYPE
11574 && CLASSTYPE_DECLARED_CLASS (ref)
11575 ? access_private_node : access_public_node);
11576
11577 /* First, make sure that any templates in base-classes are
11578 instantiated. This ensures that if we call ourselves recursively
11579 we do not get confused about which classes are marked and which
11580 are not. */
11581 basep = &base_list;
11582 while (*basep)
11583 {
11584 tree basetype = TREE_VALUE (*basep);
11585
11586 if (!(processing_template_decl && uses_template_parms (basetype))
11587 && !complete_type_or_else (basetype, NULL))
11588 /* An incomplete type. Remove it from the list. */
11589 *basep = TREE_CHAIN (*basep);
11590 else
11591 {
11592 max_bases++;
11593 if (TREE_TYPE (*basep))
11594 max_vbases++;
11595 if (CLASS_TYPE_P (basetype))
11596 max_vbases += VEC_length (tree, CLASSTYPE_VBASECLASSES (basetype));
11597 basep = &TREE_CHAIN (*basep);
11598 }
11599 }
11600
11601 TYPE_MARKED_P (ref) = 1;
11602
11603 /* The binfo slot should be empty, unless this is an (ill-formed)
11604 redefinition. */
11605 if (TYPE_BINFO (ref) && !TYPE_SIZE (ref))
11606 {
11607 error ("redefinition of %q#T", ref);
11608 return false;
11609 }
11610
11611 gcc_assert (TYPE_MAIN_VARIANT (ref) == ref);
11612
11613 binfo = make_tree_binfo (max_bases);
11614
11615 TYPE_BINFO (ref) = binfo;
11616 BINFO_OFFSET (binfo) = size_zero_node;
11617 BINFO_TYPE (binfo) = ref;
11618
11619 /* Apply base-class info set up to the variants of this type. */
11620 fixup_type_variants (ref);
11621
11622 if (max_bases)
11623 {
11624 BINFO_BASE_ACCESSES (binfo) = VEC_alloc (tree, gc, max_bases);
11625 /* An aggregate cannot have baseclasses. */
11626 CLASSTYPE_NON_AGGREGATE (ref) = 1;
11627
11628 if (TREE_CODE (ref) == UNION_TYPE)
11629 {
11630 error ("derived union %qT invalid", ref);
11631 return false;
11632 }
11633 }
11634
11635 if (max_bases > 1)
11636 {
11637 if (TYPE_FOR_JAVA (ref))
11638 {
11639 error ("Java class %qT cannot have multiple bases", ref);
11640 return false;
11641 }
11642 }
11643
11644 if (max_vbases)
11645 {
11646 CLASSTYPE_VBASECLASSES (ref) = VEC_alloc (tree, gc, max_vbases);
11647
11648 if (TYPE_FOR_JAVA (ref))
11649 {
11650 error ("Java class %qT cannot have virtual bases", ref);
11651 return false;
11652 }
11653 }
11654
11655 for (igo_prev = binfo; base_list; base_list = TREE_CHAIN (base_list))
11656 {
11657 tree access = TREE_PURPOSE (base_list);
11658 int via_virtual = TREE_TYPE (base_list) != NULL_TREE;
11659 tree basetype = TREE_VALUE (base_list);
11660
11661 if (access == access_default_node)
11662 access = default_access;
11663
11664 if (PACK_EXPANSION_P (basetype))
11665 basetype = PACK_EXPANSION_PATTERN (basetype);
11666 if (TREE_CODE (basetype) == TYPE_DECL)
11667 basetype = TREE_TYPE (basetype);
11668 if (!MAYBE_CLASS_TYPE_P (basetype) || TREE_CODE (basetype) == UNION_TYPE)
11669 {
11670 error ("base type %qT fails to be a struct or class type",
11671 basetype);
11672 return false;
11673 }
11674
11675 if (TYPE_FOR_JAVA (basetype) && (current_lang_depth () == 0))
11676 TYPE_FOR_JAVA (ref) = 1;
11677
11678 base_binfo = NULL_TREE;
11679 if (CLASS_TYPE_P (basetype) && !dependent_type_p (basetype))
11680 {
11681 base_binfo = TYPE_BINFO (basetype);
11682 /* The original basetype could have been a typedef'd type. */
11683 basetype = BINFO_TYPE (base_binfo);
11684
11685 /* Inherit flags from the base. */
11686 TYPE_HAS_NEW_OPERATOR (ref)
11687 |= TYPE_HAS_NEW_OPERATOR (basetype);
11688 TYPE_HAS_ARRAY_NEW_OPERATOR (ref)
11689 |= TYPE_HAS_ARRAY_NEW_OPERATOR (basetype);
11690 TYPE_GETS_DELETE (ref) |= TYPE_GETS_DELETE (basetype);
11691 TYPE_HAS_CONVERSION (ref) |= TYPE_HAS_CONVERSION (basetype);
11692 CLASSTYPE_DIAMOND_SHAPED_P (ref)
11693 |= CLASSTYPE_DIAMOND_SHAPED_P (basetype);
11694 CLASSTYPE_REPEATED_BASE_P (ref)
11695 |= CLASSTYPE_REPEATED_BASE_P (basetype);
11696 }
11697
11698 /* We must do this test after we've seen through a typedef
11699 type. */
11700 if (TYPE_MARKED_P (basetype))
11701 {
11702 if (basetype == ref)
11703 error ("recursive type %qT undefined", basetype);
11704 else
11705 error ("duplicate base type %qT invalid", basetype);
11706 return false;
11707 }
11708
11709 if (PACK_EXPANSION_P (TREE_VALUE (base_list)))
11710 /* Regenerate the pack expansion for the bases. */
11711 basetype = make_pack_expansion (basetype);
11712
11713 TYPE_MARKED_P (basetype) = 1;
11714
11715 base_binfo = copy_binfo (base_binfo, basetype, ref,
11716 &igo_prev, via_virtual);
11717 if (!BINFO_INHERITANCE_CHAIN (base_binfo))
11718 BINFO_INHERITANCE_CHAIN (base_binfo) = binfo;
11719
11720 BINFO_BASE_APPEND (binfo, base_binfo);
11721 BINFO_BASE_ACCESS_APPEND (binfo, access);
11722 }
11723
11724 if (VEC_space (tree, CLASSTYPE_VBASECLASSES (ref), 1))
11725 /* If we have space in the vbase vector, we must have shared at
11726 least one of them, and are therefore diamond shaped. */
11727 CLASSTYPE_DIAMOND_SHAPED_P (ref) = 1;
11728
11729 /* Unmark all the types. */
11730 for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
11731 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 0;
11732 TYPE_MARKED_P (ref) = 0;
11733
11734 /* Now see if we have a repeated base type. */
11735 if (!CLASSTYPE_REPEATED_BASE_P (ref))
11736 {
11737 for (base_binfo = binfo; base_binfo;
11738 base_binfo = TREE_CHAIN (base_binfo))
11739 {
11740 if (TYPE_MARKED_P (BINFO_TYPE (base_binfo)))
11741 {
11742 CLASSTYPE_REPEATED_BASE_P (ref) = 1;
11743 break;
11744 }
11745 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 1;
11746 }
11747 for (base_binfo = binfo; base_binfo;
11748 base_binfo = TREE_CHAIN (base_binfo))
11749 if (TYPE_MARKED_P (BINFO_TYPE (base_binfo)))
11750 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 0;
11751 else
11752 break;
11753 }
11754
11755 return true;
11756 }
11757
11758 \f
11759 /* Copies the enum-related properties from type SRC to type DST.
11760 Used with the underlying type of an enum and the enum itself. */
11761 static void
11762 copy_type_enum (tree dst, tree src)
11763 {
11764 TYPE_MIN_VALUE (dst) = TYPE_MIN_VALUE (src);
11765 TYPE_MAX_VALUE (dst) = TYPE_MAX_VALUE (src);
11766 TYPE_SIZE (dst) = TYPE_SIZE (src);
11767 TYPE_SIZE_UNIT (dst) = TYPE_SIZE_UNIT (src);
11768 SET_TYPE_MODE (dst, TYPE_MODE (src));
11769 TYPE_PRECISION (dst) = TYPE_PRECISION (src);
11770 TYPE_ALIGN (dst) = TYPE_ALIGN (src);
11771 TYPE_USER_ALIGN (dst) = TYPE_USER_ALIGN (src);
11772 TYPE_UNSIGNED (dst) = TYPE_UNSIGNED (src);
11773 }
11774
11775 /* Begin compiling the definition of an enumeration type.
11776 NAME is its name,
11777
11778 if ENUMTYPE is not NULL_TREE then the type has alredy been found.
11779
11780 UNDERLYING_TYPE is the type that will be used as the storage for
11781 the enumeration type. This should be NULL_TREE if no storage type
11782 was specified.
11783
11784 SCOPED_ENUM_P is true if this is a scoped enumeration type.
11785
11786 if IS_NEW is not NULL, gets TRUE iff a new type is created.
11787
11788 Returns the type object, as yet incomplete.
11789 Also records info about it so that build_enumerator
11790 may be used to declare the individual values as they are read. */
11791
11792 tree
11793 start_enum (tree name, tree enumtype, tree underlying_type,
11794 bool scoped_enum_p, bool *is_new)
11795 {
11796 tree prevtype = NULL_TREE;
11797 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
11798
11799 if (is_new)
11800 *is_new = false;
11801 /* [C++0x dcl.enum]p5:
11802
11803 If not explicitly specified, the underlying type of a scoped
11804 enumeration type is int. */
11805 if (!underlying_type && scoped_enum_p)
11806 underlying_type = integer_type_node;
11807
11808 if (underlying_type)
11809 underlying_type = cv_unqualified (underlying_type);
11810
11811 /* If this is the real definition for a previous forward reference,
11812 fill in the contents in the same object that used to be the
11813 forward reference. */
11814 if (!enumtype)
11815 enumtype = lookup_and_check_tag (enum_type, name,
11816 /*tag_scope=*/ts_current,
11817 /*template_header_p=*/false);
11818
11819 /* In case of a template_decl, the only check that should be deferred
11820 to instantiation time is the comparison of underlying types. */
11821 if (enumtype && TREE_CODE (enumtype) == ENUMERAL_TYPE)
11822 {
11823 if (scoped_enum_p != SCOPED_ENUM_P (enumtype))
11824 {
11825 error_at (input_location, "scoped/unscoped mismatch "
11826 "in enum %q#T", enumtype);
11827 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)),
11828 "previous definition here");
11829 enumtype = error_mark_node;
11830 }
11831 else if (ENUM_FIXED_UNDERLYING_TYPE_P (enumtype) != !! underlying_type)
11832 {
11833 error_at (input_location, "underlying type mismatch "
11834 "in enum %q#T", enumtype);
11835 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)),
11836 "previous definition here");
11837 enumtype = error_mark_node;
11838 }
11839 else if (underlying_type && ENUM_UNDERLYING_TYPE (enumtype)
11840 && !dependent_type_p (underlying_type)
11841 && !dependent_type_p (ENUM_UNDERLYING_TYPE (enumtype))
11842 && !same_type_p (underlying_type,
11843 ENUM_UNDERLYING_TYPE (enumtype)))
11844 {
11845 error_at (input_location, "different underlying type "
11846 "in enum %q#T", enumtype);
11847 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)),
11848 "previous definition here");
11849 underlying_type = NULL_TREE;
11850 }
11851 }
11852
11853 if (!enumtype || TREE_CODE (enumtype) != ENUMERAL_TYPE
11854 || processing_template_decl)
11855 {
11856 /* In case of error, make a dummy enum to allow parsing to
11857 continue. */
11858 if (enumtype == error_mark_node)
11859 {
11860 name = make_anon_name ();
11861 enumtype = NULL_TREE;
11862 }
11863
11864 /* enumtype may be an ENUMERAL_TYPE if this is a redefinition
11865 of an opaque enum, or an opaque enum of an already defined
11866 enumeration (C++0x only).
11867 In any other case, it'll be NULL_TREE. */
11868 if (!enumtype)
11869 {
11870 if (is_new)
11871 *is_new = true;
11872 }
11873 prevtype = enumtype;
11874 enumtype = cxx_make_type (ENUMERAL_TYPE);
11875 enumtype = pushtag (name, enumtype, /*tag_scope=*/ts_current);
11876 if (enumtype == error_mark_node)
11877 return error_mark_node;
11878
11879 /* The enum is considered opaque until the opening '{' of the
11880 enumerator list. */
11881 SET_OPAQUE_ENUM_P (enumtype, true);
11882 ENUM_FIXED_UNDERLYING_TYPE_P (enumtype) = !! underlying_type;
11883 }
11884
11885 SET_SCOPED_ENUM_P (enumtype, scoped_enum_p);
11886
11887 if (underlying_type)
11888 {
11889 if (CP_INTEGRAL_TYPE_P (underlying_type))
11890 {
11891 copy_type_enum (enumtype, underlying_type);
11892 ENUM_UNDERLYING_TYPE (enumtype) = underlying_type;
11893 }
11894 else if (dependent_type_p (underlying_type))
11895 ENUM_UNDERLYING_TYPE (enumtype) = underlying_type;
11896 else
11897 error ("underlying type %<%T%> of %<%T%> must be an integral type",
11898 underlying_type, enumtype);
11899 }
11900
11901 /* If into a template class, the returned enum is always the first
11902 declaration (opaque or not) seen. This way all the references to
11903 this type will be to the same declaration. The following ones are used
11904 only to check for definition errors. */
11905 if (prevtype && processing_template_decl)
11906 return prevtype;
11907 else
11908 return enumtype;
11909 }
11910
11911 /* After processing and defining all the values of an enumeration type,
11912 install their decls in the enumeration type.
11913 ENUMTYPE is the type object. */
11914
11915 void
11916 finish_enum_value_list (tree enumtype)
11917 {
11918 tree values;
11919 tree underlying_type;
11920 tree decl;
11921 tree value;
11922 tree minnode, maxnode;
11923 tree t;
11924
11925 bool fixed_underlying_type_p
11926 = ENUM_UNDERLYING_TYPE (enumtype) != NULL_TREE;
11927
11928 /* We built up the VALUES in reverse order. */
11929 TYPE_VALUES (enumtype) = nreverse (TYPE_VALUES (enumtype));
11930
11931 /* For an enum defined in a template, just set the type of the values;
11932 all further processing is postponed until the template is
11933 instantiated. We need to set the type so that tsubst of a CONST_DECL
11934 works. */
11935 if (processing_template_decl)
11936 {
11937 for (values = TYPE_VALUES (enumtype);
11938 values;
11939 values = TREE_CHAIN (values))
11940 TREE_TYPE (TREE_VALUE (values)) = enumtype;
11941 return;
11942 }
11943
11944 /* Determine the minimum and maximum values of the enumerators. */
11945 if (TYPE_VALUES (enumtype))
11946 {
11947 minnode = maxnode = NULL_TREE;
11948
11949 for (values = TYPE_VALUES (enumtype);
11950 values;
11951 values = TREE_CHAIN (values))
11952 {
11953 decl = TREE_VALUE (values);
11954
11955 /* [dcl.enum]: Following the closing brace of an enum-specifier,
11956 each enumerator has the type of its enumeration. Prior to the
11957 closing brace, the type of each enumerator is the type of its
11958 initializing value. */
11959 TREE_TYPE (decl) = enumtype;
11960
11961 /* Update the minimum and maximum values, if appropriate. */
11962 value = DECL_INITIAL (decl);
11963 if (value == error_mark_node)
11964 value = integer_zero_node;
11965 /* Figure out what the minimum and maximum values of the
11966 enumerators are. */
11967 if (!minnode)
11968 minnode = maxnode = value;
11969 else if (tree_int_cst_lt (maxnode, value))
11970 maxnode = value;
11971 else if (tree_int_cst_lt (value, minnode))
11972 minnode = value;
11973 }
11974 }
11975 else
11976 /* [dcl.enum]
11977
11978 If the enumerator-list is empty, the underlying type is as if
11979 the enumeration had a single enumerator with value 0. */
11980 minnode = maxnode = integer_zero_node;
11981
11982 if (!fixed_underlying_type_p)
11983 {
11984 /* Compute the number of bits require to represent all values of the
11985 enumeration. We must do this before the type of MINNODE and
11986 MAXNODE are transformed, since tree_int_cst_min_precision relies
11987 on the TREE_TYPE of the value it is passed. */
11988 bool unsignedp = tree_int_cst_sgn (minnode) >= 0;
11989 int lowprec = tree_int_cst_min_precision (minnode, unsignedp);
11990 int highprec = tree_int_cst_min_precision (maxnode, unsignedp);
11991 int precision = MAX (lowprec, highprec);
11992 unsigned int itk;
11993 bool use_short_enum;
11994
11995 /* Determine the underlying type of the enumeration.
11996
11997 [dcl.enum]
11998
11999 The underlying type of an enumeration is an integral type that
12000 can represent all the enumerator values defined in the
12001 enumeration. It is implementation-defined which integral type is
12002 used as the underlying type for an enumeration except that the
12003 underlying type shall not be larger than int unless the value of
12004 an enumerator cannot fit in an int or unsigned int.
12005
12006 We use "int" or an "unsigned int" as the underlying type, even if
12007 a smaller integral type would work, unless the user has
12008 explicitly requested that we use the smallest possible type. The
12009 user can request that for all enumerations with a command line
12010 flag, or for just one enumeration with an attribute. */
12011
12012 use_short_enum = flag_short_enums
12013 || lookup_attribute ("packed", TYPE_ATTRIBUTES (enumtype));
12014
12015 for (itk = (use_short_enum ? itk_char : itk_int);
12016 itk != itk_none;
12017 itk++)
12018 {
12019 underlying_type = integer_types[itk];
12020 if (underlying_type != NULL_TREE
12021 && TYPE_PRECISION (underlying_type) >= precision
12022 && TYPE_UNSIGNED (underlying_type) == unsignedp)
12023 break;
12024 }
12025 if (itk == itk_none)
12026 {
12027 /* DR 377
12028
12029 IF no integral type can represent all the enumerator values, the
12030 enumeration is ill-formed. */
12031 error ("no integral type can represent all of the enumerator values "
12032 "for %qT", enumtype);
12033 precision = TYPE_PRECISION (long_long_integer_type_node);
12034 underlying_type = integer_types[itk_unsigned_long_long];
12035 }
12036
12037 /* [dcl.enum]
12038
12039 The value of sizeof() applied to an enumeration type, an object
12040 of an enumeration type, or an enumerator, is the value of sizeof()
12041 applied to the underlying type. */
12042 copy_type_enum (enumtype, underlying_type);
12043
12044 /* Compute the minimum and maximum values for the type.
12045
12046 [dcl.enum]
12047
12048 For an enumeration where emin is the smallest enumerator and emax
12049 is the largest, the values of the enumeration are the values of the
12050 underlying type in the range bmin to bmax, where bmin and bmax are,
12051 respectively, the smallest and largest values of the smallest bit-
12052 field that can store emin and emax. */
12053
12054 /* The middle-end currently assumes that types with TYPE_PRECISION
12055 narrower than their underlying type are suitably zero or sign
12056 extended to fill their mode. Similarly, it assumes that the front
12057 end assures that a value of a particular type must be within
12058 TYPE_MIN_VALUE and TYPE_MAX_VALUE.
12059
12060 We used to set these fields based on bmin and bmax, but that led
12061 to invalid assumptions like optimizing away bounds checking. So
12062 now we just set the TYPE_PRECISION, TYPE_MIN_VALUE, and
12063 TYPE_MAX_VALUE to the values for the mode above and only restrict
12064 the ENUM_UNDERLYING_TYPE for the benefit of diagnostics. */
12065 ENUM_UNDERLYING_TYPE (enumtype)
12066 = build_distinct_type_copy (underlying_type);
12067 TYPE_PRECISION (ENUM_UNDERLYING_TYPE (enumtype)) = precision;
12068 set_min_and_max_values_for_integral_type
12069 (ENUM_UNDERLYING_TYPE (enumtype), precision, unsignedp);
12070
12071 /* If -fstrict-enums, still constrain TYPE_MIN/MAX_VALUE. */
12072 if (flag_strict_enums)
12073 set_min_and_max_values_for_integral_type (enumtype, precision,
12074 unsignedp);
12075 }
12076 else
12077 underlying_type = ENUM_UNDERLYING_TYPE (enumtype);
12078
12079 /* Convert each of the enumerators to the type of the underlying
12080 type of the enumeration. */
12081 for (values = TYPE_VALUES (enumtype); values; values = TREE_CHAIN (values))
12082 {
12083 location_t saved_location;
12084
12085 decl = TREE_VALUE (values);
12086 saved_location = input_location;
12087 input_location = DECL_SOURCE_LOCATION (decl);
12088 if (fixed_underlying_type_p)
12089 /* If the enumeration type has a fixed underlying type, we
12090 already checked all of the enumerator values. */
12091 value = DECL_INITIAL (decl);
12092 else
12093 value = perform_implicit_conversion (underlying_type,
12094 DECL_INITIAL (decl),
12095 tf_warning_or_error);
12096 input_location = saved_location;
12097
12098 /* Do not clobber shared ints. */
12099 value = copy_node (value);
12100
12101 TREE_TYPE (value) = enumtype;
12102 DECL_INITIAL (decl) = value;
12103 }
12104
12105 /* Fix up all variant types of this enum type. */
12106 for (t = TYPE_MAIN_VARIANT (enumtype); t; t = TYPE_NEXT_VARIANT (t))
12107 TYPE_VALUES (t) = TYPE_VALUES (enumtype);
12108
12109 /* Finish debugging output for this type. */
12110 rest_of_type_compilation (enumtype, namespace_bindings_p ());
12111 }
12112
12113 /* Finishes the enum type. This is called only the first time an
12114 enumeration is seen, be it opaque or odinary.
12115 ENUMTYPE is the type object. */
12116
12117 void
12118 finish_enum (tree enumtype)
12119 {
12120 if (processing_template_decl)
12121 {
12122 if (at_function_scope_p ())
12123 add_stmt (build_min (TAG_DEFN, enumtype));
12124 return;
12125 }
12126
12127 /* Here there should not be any variants of this type. */
12128 gcc_assert (enumtype == TYPE_MAIN_VARIANT (enumtype)
12129 && !TYPE_NEXT_VARIANT (enumtype));
12130 }
12131
12132 /* Build and install a CONST_DECL for an enumeration constant of the
12133 enumeration type ENUMTYPE whose NAME and VALUE (if any) are provided.
12134 LOC is the location of NAME.
12135 Assignment of sequential values by default is handled here. */
12136
12137 void
12138 build_enumerator (tree name, tree value, tree enumtype, location_t loc)
12139 {
12140 tree decl;
12141 tree context;
12142 tree type;
12143
12144 /* If the VALUE was erroneous, pretend it wasn't there; that will
12145 result in the enum being assigned the next value in sequence. */
12146 if (value == error_mark_node)
12147 value = NULL_TREE;
12148
12149 /* Remove no-op casts from the value. */
12150 if (value)
12151 STRIP_TYPE_NOPS (value);
12152
12153 if (! processing_template_decl)
12154 {
12155 /* Validate and default VALUE. */
12156 if (value != NULL_TREE)
12157 {
12158 value = cxx_constant_value (value);
12159
12160 if (TREE_CODE (value) == INTEGER_CST
12161 && INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)))
12162 {
12163 value = perform_integral_promotions (value);
12164 }
12165 else
12166 {
12167 error ("enumerator value for %qD is not an integer constant", name);
12168 value = NULL_TREE;
12169 }
12170 }
12171
12172 /* Default based on previous value. */
12173 if (value == NULL_TREE)
12174 {
12175 if (TYPE_VALUES (enumtype))
12176 {
12177 HOST_WIDE_INT hi;
12178 unsigned HOST_WIDE_INT lo;
12179 tree prev_value;
12180 bool overflowed;
12181
12182 /* C++03 7.2/4: If no initializer is specified for the first
12183 enumerator, the type is an unspecified integral
12184 type. Otherwise the type is the same as the type of the
12185 initializing value of the preceding enumerator unless the
12186 incremented value is not representable in that type, in
12187 which case the type is an unspecified integral type
12188 sufficient to contain the incremented value. */
12189 prev_value = DECL_INITIAL (TREE_VALUE (TYPE_VALUES (enumtype)));
12190 if (error_operand_p (prev_value))
12191 value = error_mark_node;
12192 else
12193 {
12194 overflowed = add_double (TREE_INT_CST_LOW (prev_value),
12195 TREE_INT_CST_HIGH (prev_value),
12196 1, 0, &lo, &hi);
12197 if (!overflowed)
12198 {
12199 double_int di;
12200 tree type = TREE_TYPE (prev_value);
12201 bool pos = (TYPE_UNSIGNED (type) || hi >= 0);
12202 di.low = lo; di.high = hi;
12203 if (!double_int_fits_to_tree_p (type, di))
12204 {
12205 unsigned int itk;
12206 for (itk = itk_int; itk != itk_none; itk++)
12207 {
12208 type = integer_types[itk];
12209 if (type != NULL_TREE
12210 && (pos || !TYPE_UNSIGNED (type))
12211 && double_int_fits_to_tree_p (type, di))
12212 break;
12213 }
12214 if (type && cxx_dialect < cxx0x
12215 && itk > itk_unsigned_long)
12216 pedwarn (input_location, OPT_Wlong_long, pos ? "\
12217 incremented enumerator value is too large for %<unsigned long%>" : "\
12218 incremented enumerator value is too large for %<long%>");
12219 }
12220 if (type == NULL_TREE)
12221 overflowed = true;
12222 else
12223 value = double_int_to_tree (type, di);
12224 }
12225
12226 if (overflowed)
12227 {
12228 error ("overflow in enumeration values at %qD", name);
12229 value = error_mark_node;
12230 }
12231 }
12232 }
12233 else
12234 value = integer_zero_node;
12235 }
12236
12237 /* Remove no-op casts from the value. */
12238 STRIP_TYPE_NOPS (value);
12239
12240 /* If the underlying type of the enum is fixed, check whether
12241 the enumerator values fits in the underlying type. If it
12242 does not fit, the program is ill-formed [C++0x dcl.enum]. */
12243 if (ENUM_UNDERLYING_TYPE (enumtype)
12244 && value
12245 && TREE_CODE (value) == INTEGER_CST
12246 && !int_fits_type_p (value, ENUM_UNDERLYING_TYPE (enumtype)))
12247 {
12248 error ("enumerator value %E is too large for underlying type %<%T%>",
12249 value, ENUM_UNDERLYING_TYPE (enumtype));
12250
12251 /* Silently convert the value so that we can continue. */
12252 value = perform_implicit_conversion (ENUM_UNDERLYING_TYPE (enumtype),
12253 value, tf_none);
12254 }
12255 }
12256
12257 /* C++ associates enums with global, function, or class declarations. */
12258 context = current_scope ();
12259
12260 /* Build the actual enumeration constant. Note that the enumeration
12261 constants have the underlying type of the enum (if it is fixed)
12262 or the type of their initializer (if the underlying type of the
12263 enum is not fixed):
12264
12265 [ C++0x dcl.enum ]
12266
12267 If the underlying type is fixed, the type of each enumerator
12268 prior to the closing brace is the underlying type; if the
12269 initializing value of an enumerator cannot be represented by
12270 the underlying type, the program is ill-formed. If the
12271 underlying type is not fixed, the type of each enumerator is
12272 the type of its initializing value.
12273
12274 If the underlying type is not fixed, it will be computed by
12275 finish_enum and we will reset the type of this enumerator. Of
12276 course, if we're processing a template, there may be no value. */
12277 type = value ? TREE_TYPE (value) : NULL_TREE;
12278
12279 if (context && context == current_class_type)
12280 /* This enum declaration is local to the class. We need the full
12281 lang_decl so that we can record DECL_CLASS_CONTEXT, for example. */
12282 decl = build_lang_decl_loc (loc, CONST_DECL, name, type);
12283 else
12284 /* It's a global enum, or it's local to a function. (Note local to
12285 a function could mean local to a class method. */
12286 decl = build_decl (loc, CONST_DECL, name, type);
12287
12288 DECL_CONTEXT (decl) = FROB_CONTEXT (context);
12289 TREE_CONSTANT (decl) = 1;
12290 TREE_READONLY (decl) = 1;
12291 DECL_INITIAL (decl) = value;
12292
12293 if (context && context == current_class_type && !SCOPED_ENUM_P (enumtype))
12294 /* In something like `struct S { enum E { i = 7 }; };' we put `i'
12295 on the TYPE_FIELDS list for `S'. (That's so that you can say
12296 things like `S::i' later.) */
12297 finish_member_declaration (decl);
12298 else
12299 pushdecl (decl);
12300
12301 /* Add this enumeration constant to the list for this type. */
12302 TYPE_VALUES (enumtype) = tree_cons (name, decl, TYPE_VALUES (enumtype));
12303 }
12304
12305 /* Look for an enumerator with the given NAME within the enumeration
12306 type ENUMTYPE. This routine is used primarily for qualified name
12307 lookup into an enumerator in C++0x, e.g.,
12308
12309 enum class Color { Red, Green, Blue };
12310
12311 Color color = Color::Red;
12312
12313 Returns the value corresponding to the enumerator, or
12314 NULL_TREE if no such enumerator was found. */
12315 tree
12316 lookup_enumerator (tree enumtype, tree name)
12317 {
12318 tree e;
12319 gcc_assert (enumtype && TREE_CODE (enumtype) == ENUMERAL_TYPE);
12320
12321 e = purpose_member (name, TYPE_VALUES (enumtype));
12322 return e? TREE_VALUE (e) : NULL_TREE;
12323 }
12324
12325 \f
12326 /* We're defining DECL. Make sure that its type is OK. */
12327
12328 static void
12329 check_function_type (tree decl, tree current_function_parms)
12330 {
12331 tree fntype = TREE_TYPE (decl);
12332 tree return_type = complete_type (TREE_TYPE (fntype));
12333
12334 /* In a function definition, arg types must be complete. */
12335 require_complete_types_for_parms (current_function_parms);
12336
12337 if (dependent_type_p (return_type))
12338 return;
12339 if (!COMPLETE_OR_VOID_TYPE_P (return_type)
12340 || (TYPE_FOR_JAVA (return_type) && MAYBE_CLASS_TYPE_P (return_type)))
12341 {
12342 tree args = TYPE_ARG_TYPES (fntype);
12343
12344 if (!COMPLETE_OR_VOID_TYPE_P (return_type))
12345 error ("return type %q#T is incomplete", return_type);
12346 else
12347 error ("return type has Java class type %q#T", return_type);
12348
12349 /* Make it return void instead. */
12350 if (TREE_CODE (fntype) == METHOD_TYPE)
12351 fntype = build_method_type_directly (TREE_TYPE (TREE_VALUE (args)),
12352 void_type_node,
12353 TREE_CHAIN (args));
12354 else
12355 fntype = build_function_type (void_type_node, args);
12356 fntype
12357 = build_exception_variant (fntype,
12358 TYPE_RAISES_EXCEPTIONS (TREE_TYPE (decl)));
12359 fntype = (cp_build_type_attribute_variant
12360 (fntype, TYPE_ATTRIBUTES (TREE_TYPE (decl))));
12361 TREE_TYPE (decl) = fntype;
12362 }
12363 else
12364 abstract_virtuals_error (decl, TREE_TYPE (fntype));
12365 }
12366
12367 /* Create the FUNCTION_DECL for a function definition.
12368 DECLSPECS and DECLARATOR are the parts of the declaration;
12369 they describe the function's name and the type it returns,
12370 but twisted together in a fashion that parallels the syntax of C.
12371
12372 FLAGS is a bitwise or of SF_PRE_PARSED (indicating that the
12373 DECLARATOR is really the DECL for the function we are about to
12374 process and that DECLSPECS should be ignored), SF_INCLASS_INLINE
12375 indicating that the function is an inline defined in-class.
12376
12377 This function creates a binding context for the function body
12378 as well as setting up the FUNCTION_DECL in current_function_decl.
12379
12380 For C++, we must first check whether that datum makes any sense.
12381 For example, "class A local_a(1,2);" means that variable local_a
12382 is an aggregate of type A, which should have a constructor
12383 applied to it with the argument list [1, 2].
12384
12385 On entry, DECL_INITIAL (decl1) should be NULL_TREE or error_mark_node,
12386 or may be a BLOCK if the function has been defined previously
12387 in this translation unit. On exit, DECL_INITIAL (decl1) will be
12388 error_mark_node if the function has never been defined, or
12389 a BLOCK if the function has been defined somewhere. */
12390
12391 void
12392 start_preparsed_function (tree decl1, tree attrs, int flags)
12393 {
12394 tree ctype = NULL_TREE;
12395 tree fntype;
12396 tree restype;
12397 int doing_friend = 0;
12398 struct cp_binding_level *bl;
12399 tree current_function_parms;
12400 struct c_fileinfo *finfo
12401 = get_fileinfo (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1)));
12402 bool honor_interface;
12403
12404 /* Sanity check. */
12405 gcc_assert (TREE_CODE (TREE_VALUE (void_list_node)) == VOID_TYPE);
12406 gcc_assert (TREE_CHAIN (void_list_node) == NULL_TREE);
12407
12408 fntype = TREE_TYPE (decl1);
12409 if (TREE_CODE (fntype) == METHOD_TYPE)
12410 ctype = TYPE_METHOD_BASETYPE (fntype);
12411
12412 /* ISO C++ 11.4/5. A friend function defined in a class is in
12413 the (lexical) scope of the class in which it is defined. */
12414 if (!ctype && DECL_FRIEND_P (decl1))
12415 {
12416 ctype = DECL_FRIEND_CONTEXT (decl1);
12417
12418 /* CTYPE could be null here if we're dealing with a template;
12419 for example, `inline friend float foo()' inside a template
12420 will have no CTYPE set. */
12421 if (ctype && TREE_CODE (ctype) != RECORD_TYPE)
12422 ctype = NULL_TREE;
12423 else
12424 doing_friend = 1;
12425 }
12426
12427 if (DECL_DECLARED_INLINE_P (decl1)
12428 && lookup_attribute ("noinline", attrs))
12429 warning (0, "inline function %q+D given attribute noinline", decl1);
12430
12431 /* Handle gnu_inline attribute. */
12432 if (GNU_INLINE_P (decl1))
12433 {
12434 DECL_EXTERNAL (decl1) = 1;
12435 DECL_NOT_REALLY_EXTERN (decl1) = 0;
12436 DECL_INTERFACE_KNOWN (decl1) = 1;
12437 DECL_DISREGARD_INLINE_LIMITS (decl1) = 1;
12438 }
12439
12440 if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl1))
12441 /* This is a constructor, we must ensure that any default args
12442 introduced by this definition are propagated to the clones
12443 now. The clones are used directly in overload resolution. */
12444 adjust_clone_args (decl1);
12445
12446 /* Sometimes we don't notice that a function is a static member, and
12447 build a METHOD_TYPE for it. Fix that up now. */
12448 gcc_assert (!(ctype != NULL_TREE && DECL_STATIC_FUNCTION_P (decl1)
12449 && TREE_CODE (TREE_TYPE (decl1)) == METHOD_TYPE));
12450
12451 /* Set up current_class_type, and enter the scope of the class, if
12452 appropriate. */
12453 if (ctype)
12454 push_nested_class (ctype);
12455 else if (DECL_STATIC_FUNCTION_P (decl1))
12456 push_nested_class (DECL_CONTEXT (decl1));
12457
12458 /* Now that we have entered the scope of the class, we must restore
12459 the bindings for any template parameters surrounding DECL1, if it
12460 is an inline member template. (Order is important; consider the
12461 case where a template parameter has the same name as a field of
12462 the class.) It is not until after this point that
12463 PROCESSING_TEMPLATE_DECL is guaranteed to be set up correctly. */
12464 if (flags & SF_INCLASS_INLINE)
12465 maybe_begin_member_template_processing (decl1);
12466
12467 /* Effective C++ rule 15. */
12468 if (warn_ecpp
12469 && DECL_OVERLOADED_OPERATOR_P (decl1) == NOP_EXPR
12470 && TREE_CODE (TREE_TYPE (fntype)) == VOID_TYPE)
12471 warning (OPT_Weffc__, "%<operator=%> should return a reference to %<*this%>");
12472
12473 /* Make the init_value nonzero so pushdecl knows this is not tentative.
12474 error_mark_node is replaced below (in poplevel) with the BLOCK. */
12475 if (!DECL_INITIAL (decl1))
12476 DECL_INITIAL (decl1) = error_mark_node;
12477
12478 /* This function exists in static storage.
12479 (This does not mean `static' in the C sense!) */
12480 TREE_STATIC (decl1) = 1;
12481
12482 /* We must call push_template_decl after current_class_type is set
12483 up. (If we are processing inline definitions after exiting a
12484 class scope, current_class_type will be NULL_TREE until set above
12485 by push_nested_class.) */
12486 if (processing_template_decl)
12487 {
12488 /* FIXME: Handle error_mark_node more gracefully. */
12489 tree newdecl1 = push_template_decl (decl1);
12490 if (newdecl1 != error_mark_node)
12491 decl1 = newdecl1;
12492 }
12493
12494 /* We are now in the scope of the function being defined. */
12495 current_function_decl = decl1;
12496
12497 /* Save the parm names or decls from this function's declarator
12498 where store_parm_decls will find them. */
12499 current_function_parms = DECL_ARGUMENTS (decl1);
12500
12501 /* Make sure the parameter and return types are reasonable. When
12502 you declare a function, these types can be incomplete, but they
12503 must be complete when you define the function. */
12504 check_function_type (decl1, current_function_parms);
12505
12506 /* Build the return declaration for the function. */
12507 restype = TREE_TYPE (fntype);
12508 if (DECL_RESULT (decl1) == NULL_TREE)
12509 {
12510 tree resdecl;
12511
12512 resdecl = build_decl (input_location, RESULT_DECL, 0, restype);
12513 DECL_ARTIFICIAL (resdecl) = 1;
12514 DECL_IGNORED_P (resdecl) = 1;
12515 DECL_RESULT (decl1) = resdecl;
12516
12517 cp_apply_type_quals_to_decl (cp_type_quals (restype), resdecl);
12518 }
12519
12520 /* Let the user know we're compiling this function. */
12521 announce_function (decl1);
12522
12523 /* Record the decl so that the function name is defined.
12524 If we already have a decl for this name, and it is a FUNCTION_DECL,
12525 use the old decl. */
12526 if (!processing_template_decl && !(flags & SF_PRE_PARSED))
12527 {
12528 /* A specialization is not used to guide overload resolution. */
12529 if (!DECL_FUNCTION_MEMBER_P (decl1)
12530 && !(DECL_USE_TEMPLATE (decl1) &&
12531 PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl1))))
12532 {
12533 tree olddecl = pushdecl (decl1);
12534
12535 if (olddecl == error_mark_node)
12536 /* If something went wrong when registering the declaration,
12537 use DECL1; we have to have a FUNCTION_DECL to use when
12538 parsing the body of the function. */
12539 ;
12540 else
12541 {
12542 /* Otherwise, OLDDECL is either a previous declaration
12543 of the same function or DECL1 itself. */
12544
12545 if (warn_missing_declarations
12546 && olddecl == decl1
12547 && !DECL_MAIN_P (decl1)
12548 && TREE_PUBLIC (decl1)
12549 && !DECL_DECLARED_INLINE_P (decl1))
12550 {
12551 tree context;
12552
12553 /* Check whether DECL1 is in an anonymous
12554 namespace. */
12555 for (context = DECL_CONTEXT (decl1);
12556 context;
12557 context = DECL_CONTEXT (context))
12558 {
12559 if (TREE_CODE (context) == NAMESPACE_DECL
12560 && DECL_NAME (context) == NULL_TREE)
12561 break;
12562 }
12563
12564 if (context == NULL)
12565 warning (OPT_Wmissing_declarations,
12566 "no previous declaration for %q+D", decl1);
12567 }
12568
12569 decl1 = olddecl;
12570 }
12571 }
12572 else
12573 {
12574 /* We need to set the DECL_CONTEXT. */
12575 if (!DECL_CONTEXT (decl1) && DECL_TEMPLATE_INFO (decl1))
12576 DECL_CONTEXT (decl1) = DECL_CONTEXT (DECL_TI_TEMPLATE (decl1));
12577 }
12578 fntype = TREE_TYPE (decl1);
12579
12580 /* If #pragma weak applies, mark the decl appropriately now.
12581 The pragma only applies to global functions. Because
12582 determining whether or not the #pragma applies involves
12583 computing the mangled name for the declaration, we cannot
12584 apply the pragma until after we have merged this declaration
12585 with any previous declarations; if the original declaration
12586 has a linkage specification, that specification applies to
12587 the definition as well, and may affect the mangled name. */
12588 if (DECL_FILE_SCOPE_P (decl1))
12589 maybe_apply_pragma_weak (decl1);
12590 }
12591
12592 /* constexpr functions must have literal argument types and
12593 literal return type. */
12594 validate_constexpr_fundecl (decl1);
12595
12596 /* Reset this in case the call to pushdecl changed it. */
12597 current_function_decl = decl1;
12598
12599 gcc_assert (DECL_INITIAL (decl1));
12600
12601 /* This function may already have been parsed, in which case just
12602 return; our caller will skip over the body without parsing. */
12603 if (DECL_INITIAL (decl1) != error_mark_node)
12604 return;
12605
12606 /* Initialize RTL machinery. We cannot do this until
12607 CURRENT_FUNCTION_DECL and DECL_RESULT are set up. We do this
12608 even when processing a template; this is how we get
12609 CFUN set up, and our per-function variables initialized.
12610 FIXME factor out the non-RTL stuff. */
12611 bl = current_binding_level;
12612 allocate_struct_function (decl1, processing_template_decl);
12613
12614 /* Initialize the language data structures. Whenever we start
12615 a new function, we destroy temporaries in the usual way. */
12616 cfun->language = ggc_alloc_cleared_language_function ();
12617 current_stmt_tree ()->stmts_are_full_exprs_p = 1;
12618 current_binding_level = bl;
12619
12620 /* Start the statement-tree, start the tree now. */
12621 DECL_SAVED_TREE (decl1) = push_stmt_list ();
12622
12623 /* If we are (erroneously) defining a function that we have already
12624 defined before, wipe out what we knew before. */
12625 if (!DECL_PENDING_INLINE_P (decl1))
12626 DECL_SAVED_FUNCTION_DATA (decl1) = NULL;
12627
12628 if (ctype && !doing_friend && !DECL_STATIC_FUNCTION_P (decl1))
12629 {
12630 /* We know that this was set up by `grokclassfn'. We do not
12631 wait until `store_parm_decls', since evil parse errors may
12632 never get us to that point. Here we keep the consistency
12633 between `current_class_type' and `current_class_ptr'. */
12634 tree t = DECL_ARGUMENTS (decl1);
12635
12636 gcc_assert (t != NULL_TREE && TREE_CODE (t) == PARM_DECL);
12637 gcc_assert (TREE_CODE (TREE_TYPE (t)) == POINTER_TYPE);
12638
12639 cp_function_chain->x_current_class_ref
12640 = cp_build_indirect_ref (t, RO_NULL, tf_warning_or_error);
12641 cp_function_chain->x_current_class_ptr = t;
12642
12643 /* Constructors and destructors need to know whether they're "in
12644 charge" of initializing virtual base classes. */
12645 t = DECL_CHAIN (t);
12646 if (DECL_HAS_IN_CHARGE_PARM_P (decl1))
12647 {
12648 current_in_charge_parm = t;
12649 t = DECL_CHAIN (t);
12650 }
12651 if (DECL_HAS_VTT_PARM_P (decl1))
12652 {
12653 gcc_assert (DECL_NAME (t) == vtt_parm_identifier);
12654 current_vtt_parm = t;
12655 }
12656 }
12657
12658 honor_interface = (!DECL_TEMPLATE_INSTANTIATION (decl1)
12659 /* Implicitly-defined methods (like the
12660 destructor for a class in which no destructor
12661 is explicitly declared) must not be defined
12662 until their definition is needed. So, we
12663 ignore interface specifications for
12664 compiler-generated functions. */
12665 && !DECL_ARTIFICIAL (decl1));
12666
12667 if (DECL_INTERFACE_KNOWN (decl1))
12668 {
12669 tree ctx = decl_function_context (decl1);
12670
12671 if (DECL_NOT_REALLY_EXTERN (decl1))
12672 DECL_EXTERNAL (decl1) = 0;
12673
12674 if (ctx != NULL_TREE && DECL_DECLARED_INLINE_P (ctx)
12675 && TREE_PUBLIC (ctx))
12676 /* This is a function in a local class in an extern inline
12677 function. */
12678 comdat_linkage (decl1);
12679 }
12680 /* If this function belongs to an interface, it is public.
12681 If it belongs to someone else's interface, it is also external.
12682 This only affects inlines and template instantiations. */
12683 else if (!finfo->interface_unknown && honor_interface)
12684 {
12685 if (DECL_DECLARED_INLINE_P (decl1)
12686 || DECL_TEMPLATE_INSTANTIATION (decl1)
12687 || processing_template_decl)
12688 {
12689 DECL_EXTERNAL (decl1)
12690 = (finfo->interface_only
12691 || (DECL_DECLARED_INLINE_P (decl1)
12692 && ! flag_implement_inlines
12693 && !DECL_VINDEX (decl1)));
12694
12695 /* For WIN32 we also want to put these in linkonce sections. */
12696 maybe_make_one_only (decl1);
12697 }
12698 else
12699 DECL_EXTERNAL (decl1) = 0;
12700 DECL_INTERFACE_KNOWN (decl1) = 1;
12701 /* If this function is in an interface implemented in this file,
12702 make sure that the back end knows to emit this function
12703 here. */
12704 if (!DECL_EXTERNAL (decl1))
12705 mark_needed (decl1);
12706 }
12707 else if (finfo->interface_unknown && finfo->interface_only
12708 && honor_interface)
12709 {
12710 /* If MULTIPLE_SYMBOL_SPACES is defined and we saw a #pragma
12711 interface, we will have both finfo->interface_unknown and
12712 finfo->interface_only set. In that case, we don't want to
12713 use the normal heuristics because someone will supply a
12714 #pragma implementation elsewhere, and deducing it here would
12715 produce a conflict. */
12716 comdat_linkage (decl1);
12717 DECL_EXTERNAL (decl1) = 0;
12718 DECL_INTERFACE_KNOWN (decl1) = 1;
12719 DECL_DEFER_OUTPUT (decl1) = 1;
12720 }
12721 else
12722 {
12723 /* This is a definition, not a reference.
12724 So clear DECL_EXTERNAL, unless this is a GNU extern inline. */
12725 if (!GNU_INLINE_P (decl1))
12726 DECL_EXTERNAL (decl1) = 0;
12727
12728 if ((DECL_DECLARED_INLINE_P (decl1)
12729 || DECL_TEMPLATE_INSTANTIATION (decl1))
12730 && ! DECL_INTERFACE_KNOWN (decl1))
12731 DECL_DEFER_OUTPUT (decl1) = 1;
12732 else
12733 DECL_INTERFACE_KNOWN (decl1) = 1;
12734 }
12735
12736 /* Determine the ELF visibility attribute for the function. We must not
12737 do this before calling "pushdecl", as we must allow "duplicate_decls"
12738 to merge any attributes appropriately. We also need to wait until
12739 linkage is set. */
12740 if (!DECL_CLONED_FUNCTION_P (decl1))
12741 determine_visibility (decl1);
12742
12743 begin_scope (sk_function_parms, decl1);
12744
12745 ++function_depth;
12746
12747 if (DECL_DESTRUCTOR_P (decl1)
12748 || (DECL_CONSTRUCTOR_P (decl1)
12749 && targetm.cxx.cdtor_returns_this ()))
12750 {
12751 cdtor_label = build_decl (input_location,
12752 LABEL_DECL, NULL_TREE, NULL_TREE);
12753 DECL_CONTEXT (cdtor_label) = current_function_decl;
12754 }
12755
12756 start_fname_decls ();
12757
12758 store_parm_decls (current_function_parms);
12759 }
12760
12761
12762 /* Like start_preparsed_function, except that instead of a
12763 FUNCTION_DECL, this function takes DECLSPECS and DECLARATOR.
12764
12765 Returns 1 on success. If the DECLARATOR is not suitable for a function
12766 (it defines a datum instead), we return 0, which tells
12767 yyparse to report a parse error. */
12768
12769 int
12770 start_function (cp_decl_specifier_seq *declspecs,
12771 const cp_declarator *declarator,
12772 tree attrs)
12773 {
12774 tree decl1;
12775
12776 decl1 = grokdeclarator (declarator, declspecs, FUNCDEF, 1, &attrs);
12777 if (decl1 == error_mark_node)
12778 return 0;
12779 /* If the declarator is not suitable for a function definition,
12780 cause a syntax error. */
12781 if (decl1 == NULL_TREE || TREE_CODE (decl1) != FUNCTION_DECL)
12782 {
12783 error ("invalid function declaration");
12784 return 0;
12785 }
12786
12787 if (DECL_MAIN_P (decl1))
12788 /* main must return int. grokfndecl should have corrected it
12789 (and issued a diagnostic) if the user got it wrong. */
12790 gcc_assert (same_type_p (TREE_TYPE (TREE_TYPE (decl1)),
12791 integer_type_node));
12792
12793 start_preparsed_function (decl1, attrs, /*flags=*/SF_DEFAULT);
12794
12795 return 1;
12796 }
12797 \f
12798 /* Returns true iff an EH_SPEC_BLOCK should be created in the body of
12799 FN. */
12800
12801 static bool
12802 use_eh_spec_block (tree fn)
12803 {
12804 return (flag_exceptions && flag_enforce_eh_specs
12805 && !processing_template_decl
12806 && !type_throw_all_p (TREE_TYPE (fn))
12807 /* We insert the EH_SPEC_BLOCK only in the original
12808 function; then, it is copied automatically to the
12809 clones. */
12810 && !DECL_CLONED_FUNCTION_P (fn)
12811 /* Implicitly-generated constructors and destructors have
12812 exception specifications. However, those specifications
12813 are the union of the possible exceptions specified by the
12814 constructors/destructors for bases and members, so no
12815 unallowed exception will ever reach this function. By
12816 not creating the EH_SPEC_BLOCK we save a little memory,
12817 and we avoid spurious warnings about unreachable
12818 code. */
12819 && !DECL_DEFAULTED_FN (fn));
12820 }
12821
12822 /* Store the parameter declarations into the current function declaration.
12823 This is called after parsing the parameter declarations, before
12824 digesting the body of the function.
12825
12826 Also install to binding contour return value identifier, if any. */
12827
12828 static void
12829 store_parm_decls (tree current_function_parms)
12830 {
12831 tree fndecl = current_function_decl;
12832 tree parm;
12833
12834 /* This is a chain of any other decls that came in among the parm
12835 declarations. If a parm is declared with enum {foo, bar} x;
12836 then CONST_DECLs for foo and bar are put here. */
12837 tree nonparms = NULL_TREE;
12838
12839 if (current_function_parms)
12840 {
12841 /* This case is when the function was defined with an ANSI prototype.
12842 The parms already have decls, so we need not do anything here
12843 except record them as in effect
12844 and complain if any redundant old-style parm decls were written. */
12845
12846 tree specparms = current_function_parms;
12847 tree next;
12848
12849 /* Must clear this because it might contain TYPE_DECLs declared
12850 at class level. */
12851 current_binding_level->names = NULL;
12852
12853 /* If we're doing semantic analysis, then we'll call pushdecl
12854 for each of these. We must do them in reverse order so that
12855 they end in the correct forward order. */
12856 specparms = nreverse (specparms);
12857
12858 for (parm = specparms; parm; parm = next)
12859 {
12860 next = DECL_CHAIN (parm);
12861 if (TREE_CODE (parm) == PARM_DECL)
12862 {
12863 if (DECL_NAME (parm) == NULL_TREE
12864 || TREE_CODE (parm) != VOID_TYPE)
12865 pushdecl (parm);
12866 else
12867 error ("parameter %qD declared void", parm);
12868 }
12869 else
12870 {
12871 /* If we find an enum constant or a type tag,
12872 put it aside for the moment. */
12873 TREE_CHAIN (parm) = NULL_TREE;
12874 nonparms = chainon (nonparms, parm);
12875 }
12876 }
12877
12878 /* Get the decls in their original chain order and record in the
12879 function. This is all and only the PARM_DECLs that were
12880 pushed into scope by the loop above. */
12881 DECL_ARGUMENTS (fndecl) = getdecls ();
12882 }
12883 else
12884 DECL_ARGUMENTS (fndecl) = NULL_TREE;
12885
12886 /* Now store the final chain of decls for the arguments
12887 as the decl-chain of the current lexical scope.
12888 Put the enumerators in as well, at the front so that
12889 DECL_ARGUMENTS is not modified. */
12890 current_binding_level->names = chainon (nonparms, DECL_ARGUMENTS (fndecl));
12891
12892 if (use_eh_spec_block (current_function_decl))
12893 current_eh_spec_block = begin_eh_spec_block ();
12894 }
12895
12896 \f
12897 /* We have finished doing semantic analysis on DECL, but have not yet
12898 generated RTL for its body. Save away our current state, so that
12899 when we want to generate RTL later we know what to do. */
12900
12901 static void
12902 save_function_data (tree decl)
12903 {
12904 struct language_function *f;
12905
12906 /* Save the language-specific per-function data so that we can
12907 get it back when we really expand this function. */
12908 gcc_assert (!DECL_PENDING_INLINE_P (decl));
12909
12910 /* Make a copy. */
12911 f = ggc_alloc_language_function ();
12912 memcpy (f, cp_function_chain, sizeof (struct language_function));
12913 DECL_SAVED_FUNCTION_DATA (decl) = f;
12914
12915 /* Clear out the bits we don't need. */
12916 f->base.x_stmt_tree.x_cur_stmt_list = NULL;
12917 f->bindings = NULL;
12918 f->x_local_names = NULL;
12919 }
12920
12921
12922 /* Set the return value of the constructor (if present). */
12923
12924 static void
12925 finish_constructor_body (void)
12926 {
12927 tree val;
12928 tree exprstmt;
12929
12930 if (targetm.cxx.cdtor_returns_this ()
12931 && (! TYPE_FOR_JAVA (current_class_type)))
12932 {
12933 /* Any return from a constructor will end up here. */
12934 add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label));
12935
12936 val = DECL_ARGUMENTS (current_function_decl);
12937 val = build2 (MODIFY_EXPR, TREE_TYPE (val),
12938 DECL_RESULT (current_function_decl), val);
12939 /* Return the address of the object. */
12940 exprstmt = build_stmt (input_location, RETURN_EXPR, val);
12941 add_stmt (exprstmt);
12942 }
12943 }
12944
12945 /* Do all the processing for the beginning of a destructor; set up the
12946 vtable pointers and cleanups for bases and members. */
12947
12948 static void
12949 begin_destructor_body (void)
12950 {
12951 tree compound_stmt;
12952
12953 /* If the CURRENT_CLASS_TYPE is incomplete, we will have already
12954 issued an error message. We still want to try to process the
12955 body of the function, but initialize_vtbl_ptrs will crash if
12956 TYPE_BINFO is NULL. */
12957 if (COMPLETE_TYPE_P (current_class_type))
12958 {
12959 compound_stmt = begin_compound_stmt (0);
12960 /* Make all virtual function table pointers in non-virtual base
12961 classes point to CURRENT_CLASS_TYPE's virtual function
12962 tables. */
12963 initialize_vtbl_ptrs (current_class_ptr);
12964 finish_compound_stmt (compound_stmt);
12965
12966 /* And insert cleanups for our bases and members so that they
12967 will be properly destroyed if we throw. */
12968 push_base_cleanups ();
12969 }
12970 }
12971
12972 /* At the end of every destructor we generate code to delete the object if
12973 necessary. Do that now. */
12974
12975 static void
12976 finish_destructor_body (void)
12977 {
12978 tree exprstmt;
12979
12980 /* Any return from a destructor will end up here; that way all base
12981 and member cleanups will be run when the function returns. */
12982 add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label));
12983
12984 /* In a virtual destructor, we must call delete. */
12985 if (DECL_VIRTUAL_P (current_function_decl))
12986 {
12987 tree if_stmt;
12988 tree virtual_size = cxx_sizeof (current_class_type);
12989
12990 /* [class.dtor]
12991
12992 At the point of definition of a virtual destructor (including
12993 an implicit definition), non-placement operator delete shall
12994 be looked up in the scope of the destructor's class and if
12995 found shall be accessible and unambiguous. */
12996 exprstmt = build_op_delete_call(DELETE_EXPR, current_class_ptr,
12997 virtual_size,
12998 /*global_p=*/false,
12999 /*placement=*/NULL_TREE,
13000 /*alloc_fn=*/NULL_TREE);
13001
13002 if_stmt = begin_if_stmt ();
13003 finish_if_stmt_cond (build2 (BIT_AND_EXPR, integer_type_node,
13004 current_in_charge_parm,
13005 integer_one_node),
13006 if_stmt);
13007 finish_expr_stmt (exprstmt);
13008 finish_then_clause (if_stmt);
13009 finish_if_stmt (if_stmt);
13010 }
13011
13012 if (targetm.cxx.cdtor_returns_this ())
13013 {
13014 tree val;
13015
13016 val = DECL_ARGUMENTS (current_function_decl);
13017 val = build2 (MODIFY_EXPR, TREE_TYPE (val),
13018 DECL_RESULT (current_function_decl), val);
13019 /* Return the address of the object. */
13020 exprstmt = build_stmt (input_location, RETURN_EXPR, val);
13021 add_stmt (exprstmt);
13022 }
13023 }
13024
13025 /* Do the necessary processing for the beginning of a function body, which
13026 in this case includes member-initializers, but not the catch clauses of
13027 a function-try-block. Currently, this means opening a binding level
13028 for the member-initializers (in a ctor) and member cleanups (in a dtor). */
13029
13030 tree
13031 begin_function_body (void)
13032 {
13033 tree stmt;
13034
13035 if (! FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
13036 return NULL_TREE;
13037
13038 if (processing_template_decl)
13039 /* Do nothing now. */;
13040 else
13041 /* Always keep the BLOCK node associated with the outermost pair of
13042 curly braces of a function. These are needed for correct
13043 operation of dwarfout.c. */
13044 keep_next_level (true);
13045
13046 stmt = begin_compound_stmt (BCS_FN_BODY);
13047
13048 if (processing_template_decl)
13049 /* Do nothing now. */;
13050 else if (DECL_DESTRUCTOR_P (current_function_decl))
13051 begin_destructor_body ();
13052
13053 return stmt;
13054 }
13055
13056 /* Do the processing for the end of a function body. Currently, this means
13057 closing out the cleanups for fully-constructed bases and members, and in
13058 the case of the destructor, deleting the object if desired. Again, this
13059 is only meaningful for [cd]tors, since they are the only functions where
13060 there is a significant distinction between the main body and any
13061 function catch clauses. Handling, say, main() return semantics here
13062 would be wrong, as flowing off the end of a function catch clause for
13063 main() would also need to return 0. */
13064
13065 void
13066 finish_function_body (tree compstmt)
13067 {
13068 if (compstmt == NULL_TREE)
13069 return;
13070
13071 /* Close the block. */
13072 finish_compound_stmt (compstmt);
13073
13074 if (processing_template_decl)
13075 /* Do nothing now. */;
13076 else if (DECL_CONSTRUCTOR_P (current_function_decl))
13077 finish_constructor_body ();
13078 else if (DECL_DESTRUCTOR_P (current_function_decl))
13079 finish_destructor_body ();
13080 }
13081
13082 /* Given a function, returns the BLOCK corresponding to the outermost level
13083 of curly braces, skipping the artificial block created for constructor
13084 initializers. */
13085
13086 tree
13087 outer_curly_brace_block (tree fndecl)
13088 {
13089 tree block = BLOCK_SUBBLOCKS (DECL_INITIAL (fndecl));
13090 if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
13091 /* Skip the artificial function body block. */
13092 block = BLOCK_SUBBLOCKS (block);
13093 return block;
13094 }
13095
13096 /* If FNDECL is a class's key method, add the class to the list of
13097 keyed classes that should be emitted. */
13098
13099 static void
13100 record_key_method_defined (tree fndecl)
13101 {
13102 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fndecl)
13103 && DECL_VIRTUAL_P (fndecl)
13104 && !processing_template_decl)
13105 {
13106 tree fnclass = DECL_CONTEXT (fndecl);
13107 if (fndecl == CLASSTYPE_KEY_METHOD (fnclass))
13108 keyed_classes = tree_cons (NULL_TREE, fnclass, keyed_classes);
13109 }
13110 }
13111
13112 /* Subroutine of finish_function.
13113 Save the body of constexpr functions for possible
13114 future compile time evaluation. */
13115
13116 static void
13117 maybe_save_function_definition (tree fun)
13118 {
13119 if (!processing_template_decl
13120 && DECL_DECLARED_CONSTEXPR_P (fun)
13121 && !DECL_CLONED_FUNCTION_P (fun))
13122 register_constexpr_fundef (fun, DECL_SAVED_TREE (fun));
13123 }
13124
13125 /* Finish up a function declaration and compile that function
13126 all the way to assembler language output. The free the storage
13127 for the function definition.
13128
13129 FLAGS is a bitwise or of the following values:
13130 2 - INCLASS_INLINE
13131 We just finished processing the body of an in-class inline
13132 function definition. (This processing will have taken place
13133 after the class definition is complete.) */
13134
13135 tree
13136 finish_function (int flags)
13137 {
13138 tree fndecl = current_function_decl;
13139 tree fntype, ctype = NULL_TREE;
13140 int inclass_inline = (flags & 2) != 0;
13141
13142 /* When we get some parse errors, we can end up without a
13143 current_function_decl, so cope. */
13144 if (fndecl == NULL_TREE)
13145 return error_mark_node;
13146
13147 if (c_dialect_objc ())
13148 objc_finish_function ();
13149
13150 gcc_assert (!defer_mark_used_calls);
13151 defer_mark_used_calls = true;
13152
13153 record_key_method_defined (fndecl);
13154
13155 fntype = TREE_TYPE (fndecl);
13156
13157 /* TREE_READONLY (fndecl) = 1;
13158 This caused &foo to be of type ptr-to-const-function
13159 which then got a warning when stored in a ptr-to-function variable. */
13160
13161 gcc_assert (building_stmt_list_p ());
13162 /* The current function is being defined, so its DECL_INITIAL should
13163 be set, and unless there's a multiple definition, it should be
13164 error_mark_node. */
13165 gcc_assert (DECL_INITIAL (fndecl) == error_mark_node);
13166
13167 /* For a cloned function, we've already got all the code we need;
13168 there's no need to add any extra bits. */
13169 if (!DECL_CLONED_FUNCTION_P (fndecl))
13170 {
13171 if (DECL_MAIN_P (current_function_decl))
13172 {
13173 tree stmt;
13174
13175 /* Make it so that `main' always returns 0 by default (or
13176 1 for VMS). */
13177 #if VMS_TARGET
13178 stmt = finish_return_stmt (integer_one_node);
13179 #else
13180 stmt = finish_return_stmt (integer_zero_node);
13181 #endif
13182 /* Hack. We don't want the middle-end to warn that this
13183 return is unreachable, so put the statement on the
13184 special line 0. */
13185 {
13186 location_t linezero = linemap_line_start (line_table, 0, 1);
13187 SET_EXPR_LOCATION (stmt, linezero);
13188 }
13189 }
13190
13191 if (use_eh_spec_block (current_function_decl))
13192 finish_eh_spec_block (TYPE_RAISES_EXCEPTIONS
13193 (TREE_TYPE (current_function_decl)),
13194 current_eh_spec_block);
13195 }
13196
13197 /* If we're saving up tree structure, tie off the function now. */
13198 DECL_SAVED_TREE (fndecl) = pop_stmt_list (DECL_SAVED_TREE (fndecl));
13199
13200 finish_fname_decls ();
13201
13202 /* If this function can't throw any exceptions, remember that. */
13203 if (!processing_template_decl
13204 && !cp_function_chain->can_throw
13205 && !flag_non_call_exceptions
13206 && !decl_replaceable_p (fndecl))
13207 TREE_NOTHROW (fndecl) = 1;
13208
13209 /* This must come after expand_function_end because cleanups might
13210 have declarations (from inline functions) that need to go into
13211 this function's blocks. */
13212
13213 /* If the current binding level isn't the outermost binding level
13214 for this function, either there is a bug, or we have experienced
13215 syntax errors and the statement tree is malformed. */
13216 if (current_binding_level->kind != sk_function_parms)
13217 {
13218 /* Make sure we have already experienced errors. */
13219 gcc_assert (errorcount);
13220
13221 /* Throw away the broken statement tree and extra binding
13222 levels. */
13223 DECL_SAVED_TREE (fndecl) = alloc_stmt_list ();
13224
13225 while (current_binding_level->kind != sk_function_parms)
13226 {
13227 if (current_binding_level->kind == sk_class)
13228 pop_nested_class ();
13229 else
13230 poplevel (0, 0, 0);
13231 }
13232 }
13233 poplevel (1, 0, 1);
13234
13235 /* Statements should always be full-expressions at the outermost set
13236 of curly braces for a function. */
13237 gcc_assert (stmts_are_full_exprs_p ());
13238
13239 /* Save constexpr function body before it gets munged by
13240 the NRV transformation. */
13241 maybe_save_function_definition (fndecl);
13242
13243 /* Set up the named return value optimization, if we can. Candidate
13244 variables are selected in check_return_expr. */
13245 if (current_function_return_value)
13246 {
13247 tree r = current_function_return_value;
13248 tree outer;
13249
13250 if (r != error_mark_node
13251 /* This is only worth doing for fns that return in memory--and
13252 simpler, since we don't have to worry about promoted modes. */
13253 && aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl)), fndecl)
13254 /* Only allow this for variables declared in the outer scope of
13255 the function so we know that their lifetime always ends with a
13256 return; see g++.dg/opt/nrv6.C. We could be more flexible if
13257 we were to do this optimization in tree-ssa. */
13258 && (outer = outer_curly_brace_block (fndecl))
13259 && chain_member (r, BLOCK_VARS (outer)))
13260 finalize_nrv (&DECL_SAVED_TREE (fndecl), r, DECL_RESULT (fndecl));
13261
13262 current_function_return_value = NULL_TREE;
13263 }
13264
13265 /* Remember that we were in class scope. */
13266 if (current_class_name)
13267 ctype = current_class_type;
13268
13269 /* Must mark the RESULT_DECL as being in this function. */
13270 DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
13271
13272 /* Set the BLOCK_SUPERCONTEXT of the outermost function scope to point
13273 to the FUNCTION_DECL node itself. */
13274 BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
13275
13276 /* Save away current state, if appropriate. */
13277 if (!processing_template_decl)
13278 save_function_data (fndecl);
13279
13280 /* Complain if there's just no return statement. */
13281 if (warn_return_type
13282 && TREE_CODE (TREE_TYPE (fntype)) != VOID_TYPE
13283 && !dependent_type_p (TREE_TYPE (fntype))
13284 && !current_function_returns_value && !current_function_returns_null
13285 /* Don't complain if we abort or throw. */
13286 && !current_function_returns_abnormally
13287 /* Don't complain if we are declared noreturn. */
13288 && !TREE_THIS_VOLATILE (fndecl)
13289 && !DECL_NAME (DECL_RESULT (fndecl))
13290 && !TREE_NO_WARNING (fndecl)
13291 /* Structor return values (if any) are set by the compiler. */
13292 && !DECL_CONSTRUCTOR_P (fndecl)
13293 && !DECL_DESTRUCTOR_P (fndecl))
13294 {
13295 warning (OPT_Wreturn_type,
13296 "no return statement in function returning non-void");
13297 TREE_NO_WARNING (fndecl) = 1;
13298 }
13299
13300 /* Store the end of the function, so that we get good line number
13301 info for the epilogue. */
13302 cfun->function_end_locus = input_location;
13303
13304 /* Complain about parameters that are only set, but never otherwise used. */
13305 if (warn_unused_but_set_parameter
13306 && !processing_template_decl
13307 && errorcount == unused_but_set_errorcount
13308 && !DECL_CLONED_FUNCTION_P (fndecl))
13309 {
13310 tree decl;
13311
13312 for (decl = DECL_ARGUMENTS (fndecl);
13313 decl;
13314 decl = DECL_CHAIN (decl))
13315 if (TREE_USED (decl)
13316 && TREE_CODE (decl) == PARM_DECL
13317 && !DECL_READ_P (decl)
13318 && DECL_NAME (decl)
13319 && !DECL_ARTIFICIAL (decl)
13320 && !TREE_NO_WARNING (decl)
13321 && !DECL_IN_SYSTEM_HEADER (decl)
13322 && TREE_TYPE (decl) != error_mark_node
13323 && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE
13324 && (!CLASS_TYPE_P (TREE_TYPE (decl))
13325 || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
13326 warning (OPT_Wunused_but_set_parameter,
13327 "parameter %q+D set but not used", decl);
13328 unused_but_set_errorcount = errorcount;
13329 }
13330
13331 /* Genericize before inlining. */
13332 if (!processing_template_decl)
13333 {
13334 struct language_function *f = DECL_SAVED_FUNCTION_DATA (fndecl);
13335 invoke_plugin_callbacks (PLUGIN_PRE_GENERICIZE, fndecl);
13336 cp_genericize (fndecl);
13337 /* Clear out the bits we don't need. */
13338 f->x_current_class_ptr = NULL;
13339 f->x_current_class_ref = NULL;
13340 f->x_eh_spec_block = NULL;
13341 f->x_in_charge_parm = NULL;
13342 f->x_vtt_parm = NULL;
13343 f->x_return_value = NULL;
13344 f->bindings = NULL;
13345 f->extern_decl_map = NULL;
13346 }
13347 /* Clear out the bits we don't need. */
13348 local_names = NULL;
13349
13350 /* We're leaving the context of this function, so zap cfun. It's still in
13351 DECL_STRUCT_FUNCTION, and we'll restore it in tree_rest_of_compilation. */
13352 set_cfun (NULL);
13353 current_function_decl = NULL;
13354
13355 /* If this is an in-class inline definition, we may have to pop the
13356 bindings for the template parameters that we added in
13357 maybe_begin_member_template_processing when start_function was
13358 called. */
13359 if (inclass_inline)
13360 maybe_end_member_template_processing ();
13361
13362 /* Leave the scope of the class. */
13363 if (ctype)
13364 pop_nested_class ();
13365
13366 --function_depth;
13367
13368 /* Clean up. */
13369 current_function_decl = NULL_TREE;
13370
13371 defer_mark_used_calls = false;
13372 if (deferred_mark_used_calls)
13373 {
13374 unsigned int i;
13375 tree decl;
13376
13377 FOR_EACH_VEC_ELT (tree, deferred_mark_used_calls, i, decl)
13378 mark_used (decl);
13379 VEC_free (tree, gc, deferred_mark_used_calls);
13380 }
13381
13382 return fndecl;
13383 }
13384 \f
13385 /* Create the FUNCTION_DECL for a function definition.
13386 DECLSPECS and DECLARATOR are the parts of the declaration;
13387 they describe the return type and the name of the function,
13388 but twisted together in a fashion that parallels the syntax of C.
13389
13390 This function creates a binding context for the function body
13391 as well as setting up the FUNCTION_DECL in current_function_decl.
13392
13393 Returns a FUNCTION_DECL on success.
13394
13395 If the DECLARATOR is not suitable for a function (it defines a datum
13396 instead), we return 0, which tells yyparse to report a parse error.
13397
13398 May return void_type_node indicating that this method is actually
13399 a friend. See grokfield for more details.
13400
13401 Came here with a `.pushlevel' .
13402
13403 DO NOT MAKE ANY CHANGES TO THIS CODE WITHOUT MAKING CORRESPONDING
13404 CHANGES TO CODE IN `grokfield'. */
13405
13406 tree
13407 grokmethod (cp_decl_specifier_seq *declspecs,
13408 const cp_declarator *declarator, tree attrlist)
13409 {
13410 tree fndecl = grokdeclarator (declarator, declspecs, MEMFUNCDEF, 0,
13411 &attrlist);
13412
13413 if (fndecl == error_mark_node)
13414 return error_mark_node;
13415
13416 if (fndecl == NULL || TREE_CODE (fndecl) != FUNCTION_DECL)
13417 {
13418 error ("invalid member function declaration");
13419 return error_mark_node;
13420 }
13421
13422 if (attrlist)
13423 cplus_decl_attributes (&fndecl, attrlist, 0);
13424
13425 /* Pass friends other than inline friend functions back. */
13426 if (fndecl == void_type_node)
13427 return fndecl;
13428
13429 if (DECL_IN_AGGR_P (fndecl))
13430 {
13431 if (DECL_CLASS_SCOPE_P (fndecl))
13432 error ("%qD is already defined in class %qT", fndecl,
13433 DECL_CONTEXT (fndecl));
13434 return error_mark_node;
13435 }
13436
13437 check_template_shadow (fndecl);
13438
13439 DECL_DECLARED_INLINE_P (fndecl) = 1;
13440 DECL_NO_INLINE_WARNING_P (fndecl) = 1;
13441
13442 /* We process method specializations in finish_struct_1. */
13443 if (processing_template_decl && !DECL_TEMPLATE_SPECIALIZATION (fndecl))
13444 {
13445 fndecl = push_template_decl (fndecl);
13446 if (fndecl == error_mark_node)
13447 return fndecl;
13448 }
13449
13450 if (! DECL_FRIEND_P (fndecl))
13451 {
13452 if (DECL_CHAIN (fndecl))
13453 {
13454 fndecl = copy_node (fndecl);
13455 TREE_CHAIN (fndecl) = NULL_TREE;
13456 }
13457 }
13458
13459 cp_finish_decl (fndecl, NULL_TREE, false, NULL_TREE, 0);
13460
13461 DECL_IN_AGGR_P (fndecl) = 1;
13462 return fndecl;
13463 }
13464 \f
13465
13466 /* VAR is a VAR_DECL. If its type is incomplete, remember VAR so that
13467 we can lay it out later, when and if its type becomes complete. */
13468
13469 void
13470 maybe_register_incomplete_var (tree var)
13471 {
13472 gcc_assert (TREE_CODE (var) == VAR_DECL);
13473
13474 /* Keep track of variables with incomplete types. */
13475 if (!processing_template_decl && TREE_TYPE (var) != error_mark_node
13476 && DECL_EXTERNAL (var))
13477 {
13478 tree inner_type = TREE_TYPE (var);
13479
13480 while (TREE_CODE (inner_type) == ARRAY_TYPE)
13481 inner_type = TREE_TYPE (inner_type);
13482 inner_type = TYPE_MAIN_VARIANT (inner_type);
13483
13484 if ((!COMPLETE_TYPE_P (inner_type) && CLASS_TYPE_P (inner_type))
13485 /* RTTI TD entries are created while defining the type_info. */
13486 || (TYPE_LANG_SPECIFIC (inner_type)
13487 && TYPE_BEING_DEFINED (inner_type)))
13488 {
13489 incomplete_var *iv
13490 = VEC_safe_push (incomplete_var, gc, incomplete_vars, NULL);
13491 iv->decl = var;
13492 iv->incomplete_type = inner_type;
13493 }
13494 }
13495 }
13496
13497 /* Called when a class type (given by TYPE) is defined. If there are
13498 any existing VAR_DECLs whose type has been completed by this
13499 declaration, update them now. */
13500
13501 void
13502 complete_vars (tree type)
13503 {
13504 unsigned ix;
13505 incomplete_var *iv;
13506
13507 for (ix = 0; VEC_iterate (incomplete_var, incomplete_vars, ix, iv); )
13508 {
13509 if (same_type_p (type, iv->incomplete_type))
13510 {
13511 tree var = iv->decl;
13512 tree type = TREE_TYPE (var);
13513 /* Complete the type of the variable. The VAR_DECL itself
13514 will be laid out in expand_expr. */
13515 complete_type (type);
13516 cp_apply_type_quals_to_decl (cp_type_quals (type), var);
13517 /* Remove this entry from the list. */
13518 VEC_unordered_remove (incomplete_var, incomplete_vars, ix);
13519 }
13520 else
13521 ix++;
13522 }
13523
13524 /* Check for pending declarations which may have abstract type. */
13525 complete_type_check_abstract (type);
13526 }
13527
13528 /* If DECL is of a type which needs a cleanup, build and return an
13529 expression to perform that cleanup here. Return NULL_TREE if no
13530 cleanup need be done. */
13531
13532 tree
13533 cxx_maybe_build_cleanup (tree decl, tsubst_flags_t complain)
13534 {
13535 tree type;
13536 tree attr;
13537 tree cleanup;
13538
13539 /* Assume no cleanup is required. */
13540 cleanup = NULL_TREE;
13541
13542 if (error_operand_p (decl))
13543 return cleanup;
13544
13545 /* Handle "__attribute__((cleanup))". We run the cleanup function
13546 before the destructor since the destructor is what actually
13547 terminates the lifetime of the object. */
13548 attr = lookup_attribute ("cleanup", DECL_ATTRIBUTES (decl));
13549 if (attr)
13550 {
13551 tree id;
13552 tree fn;
13553 tree arg;
13554
13555 /* Get the name specified by the user for the cleanup function. */
13556 id = TREE_VALUE (TREE_VALUE (attr));
13557 /* Look up the name to find the cleanup function to call. It is
13558 important to use lookup_name here because that is what is
13559 used in c-common.c:handle_cleanup_attribute when performing
13560 initial checks on the attribute. Note that those checks
13561 include ensuring that the function found is not an overloaded
13562 function, or an object with an overloaded call operator,
13563 etc.; we can rely on the fact that the function found is an
13564 ordinary FUNCTION_DECL. */
13565 fn = lookup_name (id);
13566 arg = build_address (decl);
13567 mark_used (decl);
13568 cleanup = cp_build_function_call_nary (fn, complain, arg, NULL_TREE);
13569 if (cleanup == error_mark_node)
13570 return error_mark_node;
13571 }
13572 /* Handle ordinary C++ destructors. */
13573 type = TREE_TYPE (decl);
13574 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
13575 {
13576 int flags = LOOKUP_NORMAL|LOOKUP_DESTRUCTOR;
13577 bool has_vbases = (TREE_CODE (type) == RECORD_TYPE
13578 && CLASSTYPE_VBASECLASSES (type));
13579 tree addr;
13580 tree call;
13581
13582 if (TREE_CODE (type) == ARRAY_TYPE)
13583 addr = decl;
13584 else
13585 addr = build_address (decl);
13586
13587 /* Optimize for space over speed here. */
13588 if (!has_vbases || flag_expensive_optimizations)
13589 flags |= LOOKUP_NONVIRTUAL;
13590
13591 call = build_delete (TREE_TYPE (addr), addr,
13592 sfk_complete_destructor, flags, 0, complain);
13593 if (call == error_mark_node)
13594 cleanup = error_mark_node;
13595 else if (cleanup)
13596 cleanup = cp_build_compound_expr (cleanup, call, complain);
13597 else
13598 cleanup = call;
13599 }
13600
13601 return cleanup;
13602 }
13603 \f
13604 /* When a stmt has been parsed, this function is called. */
13605
13606 void
13607 finish_stmt (void)
13608 {
13609 }
13610
13611 /* Return the FUNCTION_TYPE that corresponds to MEMFNTYPE, which can be a
13612 FUNCTION_DECL, METHOD_TYPE, FUNCTION_TYPE, pointer or reference to
13613 METHOD_TYPE or FUNCTION_TYPE, or pointer to member function. */
13614
13615 tree
13616 static_fn_type (tree memfntype)
13617 {
13618 tree fntype;
13619 tree args;
13620
13621 if (TYPE_PTRMEMFUNC_P (memfntype))
13622 memfntype = TYPE_PTRMEMFUNC_FN_TYPE (memfntype);
13623 if (POINTER_TYPE_P (memfntype)
13624 || TREE_CODE (memfntype) == FUNCTION_DECL)
13625 memfntype = TREE_TYPE (memfntype);
13626 if (TREE_CODE (memfntype) == FUNCTION_TYPE)
13627 return memfntype;
13628 gcc_assert (TREE_CODE (memfntype) == METHOD_TYPE);
13629 args = TYPE_ARG_TYPES (memfntype);
13630 fntype = build_function_type (TREE_TYPE (memfntype), TREE_CHAIN (args));
13631 fntype = apply_memfn_quals (fntype, type_memfn_quals (memfntype));
13632 fntype = (cp_build_type_attribute_variant
13633 (fntype, TYPE_ATTRIBUTES (memfntype)));
13634 fntype = (build_exception_variant
13635 (fntype, TYPE_RAISES_EXCEPTIONS (memfntype)));
13636 return fntype;
13637 }
13638
13639 /* DECL was originally constructed as a non-static member function,
13640 but turned out to be static. Update it accordingly. */
13641
13642 void
13643 revert_static_member_fn (tree decl)
13644 {
13645 tree stype = static_fn_type (decl);
13646 cp_cv_quals quals = type_memfn_quals (stype);
13647
13648 if (quals != TYPE_UNQUALIFIED)
13649 stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED);
13650
13651 TREE_TYPE (decl) = stype;
13652
13653 if (DECL_ARGUMENTS (decl))
13654 DECL_ARGUMENTS (decl) = DECL_CHAIN (DECL_ARGUMENTS (decl));
13655 DECL_STATIC_FUNCTION_P (decl) = 1;
13656 }
13657
13658 /* Return which tree structure is used by T, or TS_CP_GENERIC if T is
13659 one of the language-independent trees. */
13660
13661 enum cp_tree_node_structure_enum
13662 cp_tree_node_structure (union lang_tree_node * t)
13663 {
13664 switch (TREE_CODE (&t->generic))
13665 {
13666 case DEFAULT_ARG: return TS_CP_DEFAULT_ARG;
13667 case IDENTIFIER_NODE: return TS_CP_IDENTIFIER;
13668 case OVERLOAD: return TS_CP_OVERLOAD;
13669 case TEMPLATE_PARM_INDEX: return TS_CP_TPI;
13670 case PTRMEM_CST: return TS_CP_PTRMEM;
13671 case BASELINK: return TS_CP_BASELINK;
13672 case STATIC_ASSERT: return TS_CP_STATIC_ASSERT;
13673 case ARGUMENT_PACK_SELECT: return TS_CP_ARGUMENT_PACK_SELECT;
13674 case TRAIT_EXPR: return TS_CP_TRAIT_EXPR;
13675 case LAMBDA_EXPR: return TS_CP_LAMBDA_EXPR;
13676 case TEMPLATE_INFO: return TS_CP_TEMPLATE_INFO;
13677 default: return TS_CP_GENERIC;
13678 }
13679 }
13680
13681 /* Build the void_list_node (void_type_node having been created). */
13682 tree
13683 build_void_list_node (void)
13684 {
13685 tree t = build_tree_list (NULL_TREE, void_type_node);
13686 return t;
13687 }
13688
13689 bool
13690 cp_missing_noreturn_ok_p (tree decl)
13691 {
13692 /* A missing noreturn is ok for the `main' function. */
13693 return DECL_MAIN_P (decl);
13694 }
13695
13696 /* Return the COMDAT group into which DECL should be placed. */
13697
13698 tree
13699 cxx_comdat_group (tree decl)
13700 {
13701 tree name;
13702
13703 /* Virtual tables, construction virtual tables, and virtual table
13704 tables all go in a single COMDAT group, named after the primary
13705 virtual table. */
13706 if (TREE_CODE (decl) == VAR_DECL && DECL_VTABLE_OR_VTT_P (decl))
13707 name = DECL_ASSEMBLER_NAME (CLASSTYPE_VTABLES (DECL_CONTEXT (decl)));
13708 /* For all other DECLs, the COMDAT group is the mangled name of the
13709 declaration itself. */
13710 else
13711 {
13712 while (DECL_THUNK_P (decl))
13713 {
13714 /* If TARGET_USE_LOCAL_THUNK_ALIAS_P, use_thunk puts the thunk
13715 into the same section as the target function. In that case
13716 we must return target's name. */
13717 tree target = THUNK_TARGET (decl);
13718 if (TARGET_USE_LOCAL_THUNK_ALIAS_P (target)
13719 && DECL_SECTION_NAME (target) != NULL
13720 && DECL_ONE_ONLY (target))
13721 decl = target;
13722 else
13723 break;
13724 }
13725 name = DECL_ASSEMBLER_NAME (decl);
13726 }
13727
13728 return name;
13729 }
13730
13731 #include "gt-cp-decl.h"
This page took 0.627459 seconds and 6 git commands to generate.