1 /* Process declarations and variables for C++ compiler. 2 Copyright (C) 1988-2015 Free Software Foundation, Inc. 3 Contributed by Michael Tiemann (tiemann@cygnus.com) 4 5 This file is part of GCC. 6 7 GCC is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3, or (at your option) 10 any later version. 11 12 GCC is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GCC; see the file COPYING3. If not see 19 <http://www.gnu.org/licenses/>. */ 20 21 22 /* Process declarations and symbol lookup for C++ front end. 23 Also constructs types; the standard scalar types at initialization, 24 and structure, union, array and enum types when they are declared. */ 25 26 /* ??? not all decl nodes are given the most useful possible 27 line numbers. For example, the CONST_DECLs for enum values. */ 28 29 #include "config.h" 30 #include "system.h" 31 #include "coretypes.h" 32 #include "tm.h" 33 #include "hash-set.h" 34 #include "machmode.h" 35 #include "vec.h" 36 #include "double-int.h" 37 #include "input.h" 38 #include "alias.h" 39 #include "symtab.h" 40 #include "wide-int.h" 41 #include "inchash.h" 42 #include "tree.h" 43 #include "tree-hasher.h" 44 #include "stringpool.h" 45 #include "stor-layout.h" 46 #include "varasm.h" 47 #include "attribs.h" 48 #include "calls.h" 49 #include "flags.h" 50 #include "cp-tree.h" 51 #include "tree-iterator.h" 52 #include "tree-inline.h" 53 #include "decl.h" 54 #include "intl.h" 55 #include "toplev.h" 56 #include "hashtab.h" 57 #include "tm_p.h" 58 #include "target.h" 59 #include "c-family/c-common.h" 60 #include "c-family/c-objc.h" 61 #include "c-family/c-pragma.h" 62 #include "c-family/c-target.h" 63 #include "c-family/c-ubsan.h" 64 #include "diagnostic.h" 65 #include "intl.h" 66 #include "debug.h" 67 #include "timevar.h" 68 #include "splay-tree.h" 69 #include "plugin.h" 70 #include "hash-map.h" 71 #include "is-a.h" 72 #include "plugin-api.h" 73 #include "hard-reg-set.h" 74 #include "input.h" 75 #include "function.h" 76 #include "ipa-ref.h" 77 #include "cgraph.h" 78 #include "cilk.h" 79 #include "wide-int.h" 80 #include "builtins.h" 81 82 /* Possible cases of bad specifiers type used by bad_specifiers. */ 83 enum bad_spec_place { 84 BSP_VAR, /* variable */ 85 BSP_PARM, /* parameter */ 86 BSP_TYPE, /* type */ 87 BSP_FIELD /* field */ 88 }; 89 90 static tree grokparms (tree parmlist, tree *); 91 static const char *redeclaration_error_message (tree, tree); 92 93 static int decl_jump_unsafe (tree); 94 static void require_complete_types_for_parms (tree); 95 static int ambi_op_p (enum tree_code); 96 static int unary_op_p (enum tree_code); 97 static void push_local_name (tree); 98 static tree grok_reference_init (tree, tree, tree, int); 99 static tree grokvardecl (tree, tree, tree, const cp_decl_specifier_seq *, 100 int, int, int, tree); 101 static int check_static_variable_definition (tree, tree); 102 static void record_unknown_type (tree, const char *); 103 static tree builtin_function_1 (tree, tree, bool); 104 static int member_function_or_else (tree, tree, enum overload_flags); 105 static void bad_specifiers (tree, enum bad_spec_place, int, int, int, int, 106 int); 107 static void check_for_uninitialized_const_var (tree); 108 static tree local_variable_p_walkfn (tree *, int *, void *); 109 static tree record_builtin_java_type (const char *, int); 110 static const char *tag_name (enum tag_types); 111 static tree lookup_and_check_tag (enum tag_types, tree, tag_scope, bool); 112 static int walk_namespaces_r (tree, walk_namespaces_fn, void *); 113 static void maybe_deduce_size_from_array_init (tree, tree); 114 static void layout_var_decl (tree); 115 static tree check_initializer (tree, tree, int, vec<tree, va_gc> **); 116 static void make_rtl_for_nonlocal_decl (tree, tree, const char *); 117 static void save_function_data (tree); 118 static void copy_type_enum (tree , tree); 119 static void check_function_type (tree, tree); 120 static void finish_constructor_body (void); 121 static void begin_destructor_body (void); 122 static void finish_destructor_body (void); 123 static void record_key_method_defined (tree); 124 static tree create_array_type_for_decl (tree, tree, tree); 125 static tree get_atexit_node (void); 126 static tree get_dso_handle_node (void); 127 static tree start_cleanup_fn (void); 128 static void end_cleanup_fn (void); 129 static tree cp_make_fname_decl (location_t, tree, int); 130 static void initialize_predefined_identifiers (void); 131 static tree check_special_function_return_type 132 (special_function_kind, tree, tree); 133 static tree push_cp_library_fn (enum tree_code, tree, int); 134 static tree build_cp_library_fn (tree, enum tree_code, tree, int); 135 static void store_parm_decls (tree); 136 static void initialize_local_var (tree, tree); 137 static void expand_static_init (tree, tree); 138 139 /* The following symbols are subsumed in the cp_global_trees array, and 140 listed here individually for documentation purposes. 141 142 C++ extensions 143 tree wchar_decl_node; 144 145 tree vtable_entry_type; 146 tree delta_type_node; 147 tree __t_desc_type_node; 148 149 tree class_type_node; 150 tree unknown_type_node; 151 152 Array type `vtable_entry_type[]' 153 154 tree vtbl_type_node; 155 tree vtbl_ptr_type_node; 156 157 Namespaces, 158 159 tree std_node; 160 tree abi_node; 161 162 A FUNCTION_DECL which can call `abort'. Not necessarily the 163 one that the user will declare, but sufficient to be called 164 by routines that want to abort the program. 165 166 tree abort_fndecl; 167 168 Used by RTTI 169 tree type_info_type_node, tinfo_decl_id, tinfo_decl_type; 170 tree tinfo_var_id; */ 171 172 tree cp_global_trees[CPTI_MAX]; 173 174 /* Indicates that there is a type value in some namespace, although 175 that is not necessarily in scope at the moment. */ 176 177 tree global_type_node; 178 179 /* The node that holds the "name" of the global scope. */ 180 tree global_scope_name; 181 182 #define local_names cp_function_chain->x_local_names 183 184 /* A list of objects which have constructors or destructors 185 which reside in the global scope. The decl is stored in 186 the TREE_VALUE slot and the initializer is stored 187 in the TREE_PURPOSE slot. */ 188 tree static_aggregates; 189 190 /* Like static_aggregates, but for thread_local variables. */ 191 tree tls_aggregates; 192 193 /* -- end of C++ */ 194 195 /* A node for the integer constant 2. */ 196 197 tree integer_two_node; 198 199 /* Used only for jumps to as-yet undefined labels, since jumps to 200 defined labels can have their validity checked immediately. */ 201 202 struct GTY((chain_next ("%h.next"))) named_label_use_entry { 203 struct named_label_use_entry *next; 204 /* The binding level to which this entry is *currently* attached. 205 This is initially the binding level in which the goto appeared, 206 but is modified as scopes are closed. */ 207 cp_binding_level *binding_level; 208 /* The head of the names list that was current when the goto appeared, 209 or the inner scope popped. These are the decls that will *not* be 210 skipped when jumping to the label. */ 211 tree names_in_scope; 212 /* The location of the goto, for error reporting. */ 213 location_t o_goto_locus; 214 /* True if an OpenMP structured block scope has been closed since 215 the goto appeared. This means that the branch from the label will 216 illegally exit an OpenMP scope. */ 217 bool in_omp_scope; 218 }; 219 220 /* A list of all LABEL_DECLs in the function that have names. Here so 221 we can clear out their names' definitions at the end of the 222 function, and so we can check the validity of jumps to these labels. */ 223 224 struct GTY((for_user)) named_label_entry { 225 /* The decl itself. */ 226 tree label_decl; 227 228 /* The binding level to which the label is *currently* attached. 229 This is initially set to the binding level in which the label 230 is defined, but is modified as scopes are closed. */ 231 cp_binding_level *binding_level; 232 /* The head of the names list that was current when the label was 233 defined, or the inner scope popped. These are the decls that will 234 be skipped when jumping to the label. */ 235 tree names_in_scope; 236 /* A vector of all decls from all binding levels that would be 237 crossed by a backward branch to the label. */ 238 vec<tree, va_gc> *bad_decls; 239 240 /* A list of uses of the label, before the label is defined. */ 241 struct named_label_use_entry *uses; 242 243 /* The following bits are set after the label is defined, and are 244 updated as scopes are popped. They indicate that a backward jump 245 to the label will illegally enter a scope of the given flavor. */ 246 bool in_try_scope; 247 bool in_catch_scope; 248 bool in_omp_scope; 249 }; 250 251 #define named_labels cp_function_chain->x_named_labels 252 253 /* The number of function bodies which we are currently processing. 254 (Zero if we are at namespace scope, one inside the body of a 255 function, two inside the body of a function in a local class, etc.) */ 256 int function_depth; 257 258 /* To avoid unwanted recursion, finish_function defers all mark_used calls 259 encountered during its execution until it finishes. */ 260 bool defer_mark_used_calls; 261 vec<tree, va_gc> *deferred_mark_used_calls; 262 263 /* States indicating how grokdeclarator() should handle declspecs marked 264 with __attribute__((deprecated)). An object declared as 265 __attribute__((deprecated)) suppresses warnings of uses of other 266 deprecated items. */ 267 enum deprecated_states deprecated_state = DEPRECATED_NORMAL; 268 269 270 /* A list of VAR_DECLs whose type was incomplete at the time the 271 variable was declared. */ 272 273 typedef struct GTY(()) incomplete_var_d { 274 tree decl; 275 tree incomplete_type; 276 } incomplete_var; 277 278 279 static GTY(()) vec<incomplete_var, va_gc> *incomplete_vars; 280 281 /* Returns the kind of template specialization we are currently 282 processing, given that it's declaration contained N_CLASS_SCOPES 283 explicit scope qualifications. */ 284 285 tmpl_spec_kind 286 current_tmpl_spec_kind (int n_class_scopes) 287 { 288 int n_template_parm_scopes = 0; 289 int seen_specialization_p = 0; 290 int innermost_specialization_p = 0; 291 cp_binding_level *b; 292 293 /* Scan through the template parameter scopes. */ 294 for (b = current_binding_level; 295 b->kind == sk_template_parms; 296 b = b->level_chain) 297 { 298 /* If we see a specialization scope inside a parameter scope, 299 then something is wrong. That corresponds to a declaration 300 like: 301 302 template <class T> template <> ... 303 304 which is always invalid since [temp.expl.spec] forbids the 305 specialization of a class member template if the enclosing 306 class templates are not explicitly specialized as well. */ 307 if (b->explicit_spec_p) 308 { 309 if (n_template_parm_scopes == 0) 310 innermost_specialization_p = 1; 311 else 312 seen_specialization_p = 1; 313 } 314 else if (seen_specialization_p == 1) 315 return tsk_invalid_member_spec; 316 317 ++n_template_parm_scopes; 318 } 319 320 /* Handle explicit instantiations. */ 321 if (processing_explicit_instantiation) 322 { 323 if (n_template_parm_scopes != 0) 324 /* We've seen a template parameter list during an explicit 325 instantiation. For example: 326 327 template <class T> template void f(int); 328 329 This is erroneous. */ 330 return tsk_invalid_expl_inst; 331 else 332 return tsk_expl_inst; 333 } 334 335 if (n_template_parm_scopes < n_class_scopes) 336 /* We've not seen enough template headers to match all the 337 specialized classes present. For example: 338 339 template <class T> void R<T>::S<T>::f(int); 340 341 This is invalid; there needs to be one set of template 342 parameters for each class. */ 343 return tsk_insufficient_parms; 344 else if (n_template_parm_scopes == n_class_scopes) 345 /* We're processing a non-template declaration (even though it may 346 be a member of a template class.) For example: 347 348 template <class T> void S<T>::f(int); 349 350 The `class T' matches the `S<T>', leaving no template headers 351 corresponding to the `f'. */ 352 return tsk_none; 353 else if (n_template_parm_scopes > n_class_scopes + 1) 354 /* We've got too many template headers. For example: 355 356 template <> template <class T> void f (T); 357 358 There need to be more enclosing classes. */ 359 return tsk_excessive_parms; 360 else 361 /* This must be a template. It's of the form: 362 363 template <class T> template <class U> void S<T>::f(U); 364 365 This is a specialization if the innermost level was a 366 specialization; otherwise it's just a definition of the 367 template. */ 368 return innermost_specialization_p ? tsk_expl_spec : tsk_template; 369 } 370 371 /* Exit the current scope. */ 372 373 void 374 finish_scope (void) 375 { 376 poplevel (0, 0, 0); 377 } 378 379 /* When a label goes out of scope, check to see if that label was used 380 in a valid manner, and issue any appropriate warnings or errors. */ 381 382 static void 383 pop_label (tree label, tree old_value) 384 { 385 if (!processing_template_decl) 386 { 387 if (DECL_INITIAL (label) == NULL_TREE) 388 { 389 location_t location; 390 391 error ("label %q+D used but not defined", label); 392 location = input_location; 393 /* FIXME want (LOCATION_FILE (input_location), (line)0) */ 394 /* Avoid crashing later. */ 395 define_label (location, DECL_NAME (label)); 396 } 397 else 398 warn_for_unused_label (label); 399 } 400 401 SET_IDENTIFIER_LABEL_VALUE (DECL_NAME (label), old_value); 402 } 403 404 /* At the end of a function, all labels declared within the function 405 go out of scope. BLOCK is the top-level block for the 406 function. */ 407 408 int 409 pop_labels_1 (named_label_entry **slot, tree block) 410 { 411 struct named_label_entry *ent = *slot; 412 413 pop_label (ent->label_decl, NULL_TREE); 414 415 /* Put the labels into the "variables" of the top-level block, 416 so debugger can see them. */ 417 DECL_CHAIN (ent->label_decl) = BLOCK_VARS (block); 418 BLOCK_VARS (block) = ent->label_decl; 419 420 named_labels->clear_slot (slot); 421 422 return 1; 423 } 424 425 static void 426 pop_labels (tree block) 427 { 428 if (named_labels) 429 { 430 named_labels->traverse<tree, pop_labels_1> (block); 431 named_labels = NULL; 432 } 433 } 434 435 /* At the end of a block with local labels, restore the outer definition. */ 436 437 static void 438 pop_local_label (tree label, tree old_value) 439 { 440 struct named_label_entry dummy; 441 442 pop_label (label, old_value); 443 444 dummy.label_decl = label; 445 named_label_entry **slot = named_labels->find_slot (&dummy, NO_INSERT); 446 named_labels->clear_slot (slot); 447 } 448 449 /* The following two routines are used to interface to Objective-C++. 450 The binding level is purposely treated as an opaque type. */ 451 452 void * 453 objc_get_current_scope (void) 454 { 455 return current_binding_level; 456 } 457 458 /* The following routine is used by the NeXT-style SJLJ exceptions; 459 variables get marked 'volatile' so as to not be clobbered by 460 _setjmp()/_longjmp() calls. All variables in the current scope, 461 as well as parent scopes up to (but not including) ENCLOSING_BLK 462 shall be thusly marked. */ 463 464 void 465 objc_mark_locals_volatile (void *enclosing_blk) 466 { 467 cp_binding_level *scope; 468 469 for (scope = current_binding_level; 470 scope && scope != enclosing_blk; 471 scope = scope->level_chain) 472 { 473 tree decl; 474 475 for (decl = scope->names; decl; decl = TREE_CHAIN (decl)) 476 objc_volatilize_decl (decl); 477 478 /* Do not climb up past the current function. */ 479 if (scope->kind == sk_function_parms) 480 break; 481 } 482 } 483 484 /* Update data for defined and undefined labels when leaving a scope. */ 485 486 int 487 poplevel_named_label_1 (named_label_entry **slot, cp_binding_level *bl) 488 { 489 named_label_entry *ent = *slot; 490 cp_binding_level *obl = bl->level_chain; 491 492 if (ent->binding_level == bl) 493 { 494 tree decl; 495 496 /* ENT->NAMES_IN_SCOPE may contain a mixture of DECLs and 497 TREE_LISTs representing OVERLOADs, so be careful. */ 498 for (decl = ent->names_in_scope; decl; decl = (DECL_P (decl) 499 ? DECL_CHAIN (decl) 500 : TREE_CHAIN (decl))) 501 if (decl_jump_unsafe (decl)) 502 vec_safe_push (ent->bad_decls, decl); 503 504 ent->binding_level = obl; 505 ent->names_in_scope = obl->names; 506 switch (bl->kind) 507 { 508 case sk_try: 509 ent->in_try_scope = true; 510 break; 511 case sk_catch: 512 ent->in_catch_scope = true; 513 break; 514 case sk_omp: 515 ent->in_omp_scope = true; 516 break; 517 default: 518 break; 519 } 520 } 521 else if (ent->uses) 522 { 523 struct named_label_use_entry *use; 524 525 for (use = ent->uses; use ; use = use->next) 526 if (use->binding_level == bl) 527 { 528 use->binding_level = obl; 529 use->names_in_scope = obl->names; 530 if (bl->kind == sk_omp) 531 use->in_omp_scope = true; 532 } 533 } 534 535 return 1; 536 } 537 538 /* Saved errorcount to avoid -Wunused-but-set-{parameter,variable} warnings 539 when errors were reported, except for -Werror-unused-but-set-*. */ 540 static int unused_but_set_errorcount; 541 542 /* Exit a binding level. 543 Pop the level off, and restore the state of the identifier-decl mappings 544 that were in effect when this level was entered. 545 546 If KEEP == 1, this level had explicit declarations, so 547 and create a "block" (a BLOCK node) for the level 548 to record its declarations and subblocks for symbol table output. 549 550 If FUNCTIONBODY is nonzero, this level is the body of a function, 551 so create a block as if KEEP were set and also clear out all 552 label names. 553 554 If REVERSE is nonzero, reverse the order of decls before putting 555 them into the BLOCK. */ 556 557 tree 558 poplevel (int keep, int reverse, int functionbody) 559 { 560 tree link; 561 /* The chain of decls was accumulated in reverse order. 562 Put it into forward order, just for cleanliness. */ 563 tree decls; 564 tree subblocks; 565 tree block; 566 tree decl; 567 int leaving_for_scope; 568 scope_kind kind; 569 unsigned ix; 570 cp_label_binding *label_bind; 571 572 bool subtime = timevar_cond_start (TV_NAME_LOOKUP); 573 restart: 574 575 block = NULL_TREE; 576 577 gcc_assert (current_binding_level->kind != sk_class); 578 579 if (current_binding_level->kind == sk_cleanup) 580 functionbody = 0; 581 subblocks = functionbody >= 0 ? current_binding_level->blocks : 0; 582 583 gcc_assert (!vec_safe_length (current_binding_level->class_shadowed)); 584 585 /* We used to use KEEP == 2 to indicate that the new block should go 586 at the beginning of the list of blocks at this binding level, 587 rather than the end. This hack is no longer used. */ 588 gcc_assert (keep == 0 || keep == 1); 589 590 if (current_binding_level->keep) 591 keep = 1; 592 593 /* Any uses of undefined labels, and any defined labels, now operate 594 under constraints of next binding contour. */ 595 if (cfun && !functionbody && named_labels) 596 named_labels->traverse<cp_binding_level *, poplevel_named_label_1> 597 (current_binding_level); 598 599 /* Get the decls in the order they were written. 600 Usually current_binding_level->names is in reverse order. 601 But parameter decls were previously put in forward order. */ 602 603 if (reverse) 604 current_binding_level->names 605 = decls = nreverse (current_binding_level->names); 606 else 607 decls = current_binding_level->names; 608 609 /* If there were any declarations or structure tags in that level, 610 or if this level is a function body, 611 create a BLOCK to record them for the life of this function. */ 612 block = NULL_TREE; 613 /* Avoid function body block if possible. */ 614 if (functionbody && subblocks && BLOCK_CHAIN (subblocks) == NULL_TREE) 615 keep = 0; 616 else if (keep == 1 || functionbody) 617 block = make_node (BLOCK); 618 if (block != NULL_TREE) 619 { 620 BLOCK_VARS (block) = decls; 621 BLOCK_SUBBLOCKS (block) = subblocks; 622 } 623 624 /* In each subblock, record that this is its superior. */ 625 if (keep >= 0) 626 for (link = subblocks; link; link = BLOCK_CHAIN (link)) 627 BLOCK_SUPERCONTEXT (link) = block; 628 629 /* We still support the old for-scope rules, whereby the variables 630 in a for-init statement were in scope after the for-statement 631 ended. We only use the new rules if flag_new_for_scope is 632 nonzero. */ 633 leaving_for_scope 634 = current_binding_level->kind == sk_for && flag_new_for_scope == 1; 635 636 /* Before we remove the declarations first check for unused variables. */ 637 if ((warn_unused_variable || warn_unused_but_set_variable) 638 && current_binding_level->kind != sk_template_parms 639 && !processing_template_decl) 640 for (tree d = getdecls (); d; d = TREE_CHAIN (d)) 641 { 642 /* There are cases where D itself is a TREE_LIST. See in 643 push_local_binding where the list of decls returned by 644 getdecls is built. */ 645 decl = TREE_CODE (d) == TREE_LIST ? TREE_VALUE (d) : d; 646 tree type = TREE_TYPE (decl); 647 if (VAR_P (decl) 648 && (! TREE_USED (decl) || !DECL_READ_P (decl)) 649 && ! DECL_IN_SYSTEM_HEADER (decl) 650 && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl) 651 && type != error_mark_node 652 && (!CLASS_TYPE_P (type) 653 || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) 654 || lookup_attribute ("warn_unused", 655 TYPE_ATTRIBUTES (TREE_TYPE (decl))))) 656 { 657 if (! TREE_USED (decl)) 658 warning (OPT_Wunused_variable, "unused variable %q+D", decl); 659 else if (DECL_CONTEXT (decl) == current_function_decl 660 // For -Wunused-but-set-variable leave references alone. 661 && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE 662 && errorcount == unused_but_set_errorcount) 663 { 664 warning (OPT_Wunused_but_set_variable, 665 "variable %q+D set but not used", decl); 666 unused_but_set_errorcount = errorcount; 667 } 668 } 669 } 670 671 /* Remove declarations for all the DECLs in this level. */ 672 for (link = decls; link; link = TREE_CHAIN (link)) 673 { 674 if (leaving_for_scope && VAR_P (link) 675 /* It's hard to make this ARM compatibility hack play nicely with 676 lambdas, and it really isn't necessary in C++11 mode. */ 677 && cxx_dialect < cxx11 678 && DECL_NAME (link)) 679 { 680 tree name = DECL_NAME (link); 681 cxx_binding *ob; 682 tree ns_binding; 683 684 ob = outer_binding (name, 685 IDENTIFIER_BINDING (name), 686 /*class_p=*/true); 687 if (!ob) 688 ns_binding = IDENTIFIER_NAMESPACE_VALUE (name); 689 else 690 ns_binding = NULL_TREE; 691 692 if (ob && ob->scope == current_binding_level->level_chain) 693 /* We have something like: 694 695 int i; 696 for (int i; ;); 697 698 and we are leaving the `for' scope. There's no reason to 699 keep the binding of the inner `i' in this case. */ 700 pop_binding (name, link); 701 else if ((ob && (TREE_CODE (ob->value) == TYPE_DECL)) 702 || (ns_binding && TREE_CODE (ns_binding) == TYPE_DECL)) 703 /* Here, we have something like: 704 705 typedef int I; 706 707 void f () { 708 for (int I; ;); 709 } 710 711 We must pop the for-scope binding so we know what's a 712 type and what isn't. */ 713 pop_binding (name, link); 714 else 715 { 716 /* Mark this VAR_DECL as dead so that we can tell we left it 717 there only for backward compatibility. */ 718 DECL_DEAD_FOR_LOCAL (link) = 1; 719 720 /* Keep track of what should have happened when we 721 popped the binding. */ 722 if (ob && ob->value) 723 { 724 SET_DECL_SHADOWED_FOR_VAR (link, ob->value); 725 DECL_HAS_SHADOWED_FOR_VAR_P (link) = 1; 726 } 727 728 /* Add it to the list of dead variables in the next 729 outermost binding to that we can remove these when we 730 leave that binding. */ 731 vec_safe_push ( 732 current_binding_level->level_chain->dead_vars_from_for, 733 link); 734 735 /* Although we don't pop the cxx_binding, we do clear 736 its SCOPE since the scope is going away now. */ 737 IDENTIFIER_BINDING (name)->scope 738 = current_binding_level->level_chain; 739 } 740 } 741 else 742 { 743 tree name; 744 745 /* Remove the binding. */ 746 decl = link; 747 748 if (TREE_CODE (decl) == TREE_LIST) 749 decl = TREE_VALUE (decl); 750 name = decl; 751 752 if (TREE_CODE (name) == OVERLOAD) 753 name = OVL_FUNCTION (name); 754 755 gcc_assert (DECL_P (name)); 756 pop_binding (DECL_NAME (name), decl); 757 } 758 } 759 760 /* Remove declarations for any `for' variables from inner scopes 761 that we kept around. */ 762 FOR_EACH_VEC_SAFE_ELT_REVERSE (current_binding_level->dead_vars_from_for, 763 ix, decl) 764 pop_binding (DECL_NAME (decl), decl); 765 766 /* Restore the IDENTIFIER_TYPE_VALUEs. */ 767 for (link = current_binding_level->type_shadowed; 768 link; link = TREE_CHAIN (link)) 769 SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (link), TREE_VALUE (link)); 770 771 /* Restore the IDENTIFIER_LABEL_VALUEs for local labels. */ 772 FOR_EACH_VEC_SAFE_ELT_REVERSE (current_binding_level->shadowed_labels, 773 ix, label_bind) 774 pop_local_label (label_bind->label, label_bind->prev_value); 775 776 /* There may be OVERLOADs (wrapped in TREE_LISTs) on the BLOCK_VARs 777 list if a `using' declaration put them there. The debugging 778 back ends won't understand OVERLOAD, so we remove them here. 779 Because the BLOCK_VARS are (temporarily) shared with 780 CURRENT_BINDING_LEVEL->NAMES we must do this fixup after we have 781 popped all the bindings. */ 782 if (block) 783 { 784 tree* d; 785 786 for (d = &BLOCK_VARS (block); *d; ) 787 { 788 if (TREE_CODE (*d) == TREE_LIST) 789 *d = TREE_CHAIN (*d); 790 else 791 d = &DECL_CHAIN (*d); 792 } 793 } 794 795 /* If the level being exited is the top level of a function, 796 check over all the labels. */ 797 if (functionbody) 798 { 799 if (block) 800 { 801 /* Since this is the top level block of a function, the vars are 802 the function's parameters. Don't leave them in the BLOCK 803 because they are found in the FUNCTION_DECL instead. */ 804 BLOCK_VARS (block) = 0; 805 pop_labels (block); 806 } 807 else 808 pop_labels (subblocks); 809 } 810 811 kind = current_binding_level->kind; 812 if (kind == sk_cleanup) 813 { 814 tree stmt; 815 816 /* If this is a temporary binding created for a cleanup, then we'll 817 have pushed a statement list level. Pop that, create a new 818 BIND_EXPR for the block, and insert it into the stream. */ 819 stmt = pop_stmt_list (current_binding_level->statement_list); 820 stmt = c_build_bind_expr (input_location, block, stmt); 821 add_stmt (stmt); 822 } 823 824 leave_scope (); 825 if (functionbody) 826 { 827 /* The current function is being defined, so its DECL_INITIAL 828 should be error_mark_node. */ 829 gcc_assert (DECL_INITIAL (current_function_decl) == error_mark_node); 830 DECL_INITIAL (current_function_decl) = block ? block : subblocks; 831 if (subblocks) 832 { 833 if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)) 834 { 835 if (BLOCK_SUBBLOCKS (subblocks)) 836 BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks)) = 1; 837 } 838 else 839 BLOCK_OUTER_CURLY_BRACE_P (subblocks) = 1; 840 } 841 } 842 else if (block) 843 current_binding_level->blocks 844 = block_chainon (current_binding_level->blocks, block); 845 846 /* If we did not make a block for the level just exited, 847 any blocks made for inner levels 848 (since they cannot be recorded as subblocks in that level) 849 must be carried forward so they will later become subblocks 850 of something else. */ 851 else if (subblocks) 852 current_binding_level->blocks 853 = block_chainon (current_binding_level->blocks, subblocks); 854 855 /* Each and every BLOCK node created here in `poplevel' is important 856 (e.g. for proper debugging information) so if we created one 857 earlier, mark it as "used". */ 858 if (block) 859 TREE_USED (block) = 1; 860 861 /* All temporary bindings created for cleanups are popped silently. */ 862 if (kind == sk_cleanup) 863 goto restart; 864 865 timevar_cond_stop (TV_NAME_LOOKUP, subtime); 866 return block; 867 } 868 869 /* Walk all the namespaces contained NAMESPACE, including NAMESPACE 870 itself, calling F for each. The DATA is passed to F as well. */ 871 872 static int 873 walk_namespaces_r (tree name_space, walk_namespaces_fn f, void* data) 874 { 875 int result = 0; 876 tree current = NAMESPACE_LEVEL (name_space)->namespaces; 877 878 result |= (*f) (name_space, data); 879 880 for (; current; current = DECL_CHAIN (current)) 881 result |= walk_namespaces_r (current, f, data); 882 883 return result; 884 } 885 886 /* Walk all the namespaces, calling F for each. The DATA is passed to 887 F as well. */ 888 889 int 890 walk_namespaces (walk_namespaces_fn f, void* data) 891 { 892 return walk_namespaces_r (global_namespace, f, data); 893 } 894 895 /* Call wrapup_globals_declarations for the globals in NAMESPACE. If 896 DATA is non-NULL, this is the last time we will call 897 wrapup_global_declarations for this NAMESPACE. */ 898 899 int 900 wrapup_globals_for_namespace (tree name_space, void* data) 901 { 902 cp_binding_level *level = NAMESPACE_LEVEL (name_space); 903 vec<tree, va_gc> *statics = level->static_decls; 904 tree *vec = statics->address (); 905 int len = statics->length (); 906 int last_time = (data != 0); 907 908 if (last_time) 909 { 910 check_global_declarations (vec, len); 911 emit_debug_global_declarations (vec, len); 912 return 0; 913 } 914 915 /* Write out any globals that need to be output. */ 916 return wrapup_global_declarations (vec, len); 917 } 918 919 920 /* In C++, you don't have to write `struct S' to refer to `S'; you 921 can just use `S'. We accomplish this by creating a TYPE_DECL as 922 if the user had written `typedef struct S S'. Create and return 923 the TYPE_DECL for TYPE. */ 924 925 tree 926 create_implicit_typedef (tree name, tree type) 927 { 928 tree decl; 929 930 decl = build_decl (input_location, TYPE_DECL, name, type); 931 DECL_ARTIFICIAL (decl) = 1; 932 /* There are other implicit type declarations, like the one *within* 933 a class that allows you to write `S::S'. We must distinguish 934 amongst these. */ 935 SET_DECL_IMPLICIT_TYPEDEF_P (decl); 936 TYPE_NAME (type) = decl; 937 TYPE_STUB_DECL (type) = decl; 938 939 return decl; 940 } 941 942 /* Remember a local name for name-mangling purposes. */ 943 944 static void 945 push_local_name (tree decl) 946 { 947 size_t i, nelts; 948 tree t, name; 949 950 timevar_start (TV_NAME_LOOKUP); 951 952 name = DECL_NAME (decl); 953 954 nelts = vec_safe_length (local_names); 955 for (i = 0; i < nelts; i++) 956 { 957 t = (*local_names)[i]; 958 if (DECL_NAME (t) == name) 959 { 960 if (!DECL_LANG_SPECIFIC (decl)) 961 retrofit_lang_decl (decl); 962 DECL_LANG_SPECIFIC (decl)->u.base.u2sel = 1; 963 if (DECL_DISCRIMINATOR_SET_P (t)) 964 DECL_DISCRIMINATOR (decl) = DECL_DISCRIMINATOR (t) + 1; 965 else 966 DECL_DISCRIMINATOR (decl) = 1; 967 968 (*local_names)[i] = decl; 969 timevar_stop (TV_NAME_LOOKUP); 970 return; 971 } 972 } 973 974 vec_safe_push (local_names, decl); 975 timevar_stop (TV_NAME_LOOKUP); 976 } 977 978 /* Subroutine of duplicate_decls: return truthvalue of whether 979 or not types of these decls match. 980 981 For C++, we must compare the parameter list so that `int' can match 982 `int&' in a parameter position, but `int&' is not confused with 983 `const int&'. */ 984 985 int 986 decls_match (tree newdecl, tree olddecl) 987 { 988 int types_match; 989 990 if (newdecl == olddecl) 991 return 1; 992 993 if (TREE_CODE (newdecl) != TREE_CODE (olddecl)) 994 /* If the two DECLs are not even the same kind of thing, we're not 995 interested in their types. */ 996 return 0; 997 998 gcc_assert (DECL_P (newdecl)); 999 1000 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1001 { 1002 tree f1 = TREE_TYPE (newdecl); 1003 tree f2 = TREE_TYPE (olddecl); 1004 tree p1 = TYPE_ARG_TYPES (f1); 1005 tree p2 = TYPE_ARG_TYPES (f2); 1006 tree r2; 1007 1008 /* Specializations of different templates are different functions 1009 even if they have the same type. */ 1010 tree t1 = (DECL_USE_TEMPLATE (newdecl) 1011 ? DECL_TI_TEMPLATE (newdecl) 1012 : NULL_TREE); 1013 tree t2 = (DECL_USE_TEMPLATE (olddecl) 1014 ? DECL_TI_TEMPLATE (olddecl) 1015 : NULL_TREE); 1016 if (t1 != t2) 1017 return 0; 1018 1019 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl) 1020 && ! (DECL_EXTERN_C_P (newdecl) 1021 && DECL_EXTERN_C_P (olddecl))) 1022 return 0; 1023 1024 /* A new declaration doesn't match a built-in one unless it 1025 is also extern "C". */ 1026 if (DECL_IS_BUILTIN (olddecl) 1027 && DECL_EXTERN_C_P (olddecl) && !DECL_EXTERN_C_P (newdecl)) 1028 return 0; 1029 1030 if (TREE_CODE (f1) != TREE_CODE (f2)) 1031 return 0; 1032 1033 /* A declaration with deduced return type should use its pre-deduction 1034 type for declaration matching. */ 1035 r2 = fndecl_declared_return_type (olddecl); 1036 1037 if (same_type_p (TREE_TYPE (f1), r2)) 1038 { 1039 if (!prototype_p (f2) && DECL_EXTERN_C_P (olddecl) 1040 && (DECL_BUILT_IN (olddecl) 1041 #ifndef NO_IMPLICIT_EXTERN_C 1042 || (DECL_IN_SYSTEM_HEADER (newdecl) && !DECL_CLASS_SCOPE_P (newdecl)) 1043 || (DECL_IN_SYSTEM_HEADER (olddecl) && !DECL_CLASS_SCOPE_P (olddecl)) 1044 #endif 1045 )) 1046 { 1047 types_match = self_promoting_args_p (p1); 1048 if (p1 == void_list_node) 1049 TREE_TYPE (newdecl) = TREE_TYPE (olddecl); 1050 } 1051 #ifndef NO_IMPLICIT_EXTERN_C 1052 else if (!prototype_p (f1) 1053 && (DECL_EXTERN_C_P (olddecl) 1054 && DECL_IN_SYSTEM_HEADER (olddecl) 1055 && !DECL_CLASS_SCOPE_P (olddecl)) 1056 && (DECL_EXTERN_C_P (newdecl) 1057 && DECL_IN_SYSTEM_HEADER (newdecl) 1058 && !DECL_CLASS_SCOPE_P (newdecl))) 1059 { 1060 types_match = self_promoting_args_p (p2); 1061 TREE_TYPE (newdecl) = TREE_TYPE (olddecl); 1062 } 1063 #endif 1064 else 1065 types_match = 1066 compparms (p1, p2) 1067 && type_memfn_rqual (f1) == type_memfn_rqual (f2) 1068 && (TYPE_ATTRIBUTES (TREE_TYPE (newdecl)) == NULL_TREE 1069 || comp_type_attributes (TREE_TYPE (newdecl), 1070 TREE_TYPE (olddecl)) != 0); 1071 } 1072 else 1073 types_match = 0; 1074 1075 /* The decls dont match if they correspond to two different versions 1076 of the same function. Disallow extern "C" functions to be 1077 versions for now. */ 1078 if (types_match 1079 && !DECL_EXTERN_C_P (newdecl) 1080 && !DECL_EXTERN_C_P (olddecl) 1081 && targetm.target_option.function_versions (newdecl, olddecl)) 1082 { 1083 /* Mark functions as versions if necessary. Modify the mangled decl 1084 name if necessary. */ 1085 if (DECL_FUNCTION_VERSIONED (newdecl) 1086 && DECL_FUNCTION_VERSIONED (olddecl)) 1087 return 0; 1088 if (!DECL_FUNCTION_VERSIONED (newdecl)) 1089 { 1090 DECL_FUNCTION_VERSIONED (newdecl) = 1; 1091 if (DECL_ASSEMBLER_NAME_SET_P (newdecl)) 1092 mangle_decl (newdecl); 1093 } 1094 if (!DECL_FUNCTION_VERSIONED (olddecl)) 1095 { 1096 DECL_FUNCTION_VERSIONED (olddecl) = 1; 1097 if (DECL_ASSEMBLER_NAME_SET_P (olddecl)) 1098 mangle_decl (olddecl); 1099 } 1100 cgraph_node::record_function_versions (olddecl, newdecl); 1101 return 0; 1102 } 1103 } 1104 else if (TREE_CODE (newdecl) == TEMPLATE_DECL) 1105 { 1106 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) 1107 != TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))) 1108 return 0; 1109 1110 if (!comp_template_parms (DECL_TEMPLATE_PARMS (newdecl), 1111 DECL_TEMPLATE_PARMS (olddecl))) 1112 return 0; 1113 1114 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL) 1115 types_match = same_type_p (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl)), 1116 TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl))); 1117 else 1118 types_match = decls_match (DECL_TEMPLATE_RESULT (olddecl), 1119 DECL_TEMPLATE_RESULT (newdecl)); 1120 } 1121 else 1122 { 1123 /* Need to check scope for variable declaration (VAR_DECL). 1124 For typedef (TYPE_DECL), scope is ignored. */ 1125 if (VAR_P (newdecl) 1126 && CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl) 1127 /* [dcl.link] 1128 Two declarations for an object with C language linkage 1129 with the same name (ignoring the namespace that qualify 1130 it) that appear in different namespace scopes refer to 1131 the same object. */ 1132 && !(DECL_EXTERN_C_P (olddecl) && DECL_EXTERN_C_P (newdecl))) 1133 return 0; 1134 1135 if (TREE_TYPE (newdecl) == error_mark_node) 1136 types_match = TREE_TYPE (olddecl) == error_mark_node; 1137 else if (TREE_TYPE (olddecl) == NULL_TREE) 1138 types_match = TREE_TYPE (newdecl) == NULL_TREE; 1139 else if (TREE_TYPE (newdecl) == NULL_TREE) 1140 types_match = 0; 1141 else 1142 types_match = comptypes (TREE_TYPE (newdecl), 1143 TREE_TYPE (olddecl), 1144 COMPARE_REDECLARATION); 1145 } 1146 1147 return types_match; 1148 } 1149 1150 /* If NEWDECL is `static' and an `extern' was seen previously, 1151 warn about it. OLDDECL is the previous declaration. 1152 1153 Note that this does not apply to the C++ case of declaring 1154 a variable `extern const' and then later `const'. 1155 1156 Don't complain about built-in functions, since they are beyond 1157 the user's control. */ 1158 1159 void 1160 warn_extern_redeclared_static (tree newdecl, tree olddecl) 1161 { 1162 if (TREE_CODE (newdecl) == TYPE_DECL 1163 || TREE_CODE (newdecl) == TEMPLATE_DECL 1164 || TREE_CODE (newdecl) == CONST_DECL 1165 || TREE_CODE (newdecl) == NAMESPACE_DECL) 1166 return; 1167 1168 /* Don't get confused by static member functions; that's a different 1169 use of `static'. */ 1170 if (TREE_CODE (newdecl) == FUNCTION_DECL 1171 && DECL_STATIC_FUNCTION_P (newdecl)) 1172 return; 1173 1174 /* If the old declaration was `static', or the new one isn't, then 1175 everything is OK. */ 1176 if (DECL_THIS_STATIC (olddecl) || !DECL_THIS_STATIC (newdecl)) 1177 return; 1178 1179 /* It's OK to declare a builtin function as `static'. */ 1180 if (TREE_CODE (olddecl) == FUNCTION_DECL 1181 && DECL_ARTIFICIAL (olddecl)) 1182 return; 1183 1184 if (permerror (input_location, 1185 "%qD was declared %<extern%> and later %<static%>", newdecl)) 1186 inform (input_location, "previous declaration of %q+D", olddecl); 1187 } 1188 1189 /* NEW_DECL is a redeclaration of OLD_DECL; both are functions or 1190 function templates. If their exception specifications do not 1191 match, issue a diagnostic. */ 1192 1193 static void 1194 check_redeclaration_exception_specification (tree new_decl, 1195 tree old_decl) 1196 { 1197 tree new_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (new_decl)); 1198 tree old_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (old_decl)); 1199 1200 /* Two default specs are equivalent, don't force evaluation. */ 1201 if (UNEVALUATED_NOEXCEPT_SPEC_P (new_exceptions) 1202 && UNEVALUATED_NOEXCEPT_SPEC_P (old_exceptions)) 1203 return; 1204 1205 maybe_instantiate_noexcept (new_decl); 1206 maybe_instantiate_noexcept (old_decl); 1207 new_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (new_decl)); 1208 old_exceptions = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (old_decl)); 1209 1210 /* [except.spec] 1211 1212 If any declaration of a function has an exception-specification, 1213 all declarations, including the definition and an explicit 1214 specialization, of that function shall have an 1215 exception-specification with the same set of type-ids. */ 1216 if ((pedantic || ! DECL_IN_SYSTEM_HEADER (old_decl)) 1217 && ! DECL_IS_BUILTIN (old_decl) 1218 && flag_exceptions 1219 && !comp_except_specs (new_exceptions, old_exceptions, ce_normal)) 1220 { 1221 error ("declaration of %qF has a different exception specifier", 1222 new_decl); 1223 error ("from previous declaration %q+F", old_decl); 1224 } 1225 } 1226 1227 /* Return true if OLD_DECL and NEW_DECL agree on constexprness. 1228 Otherwise issue diagnostics. */ 1229 1230 static bool 1231 validate_constexpr_redeclaration (tree old_decl, tree new_decl) 1232 { 1233 old_decl = STRIP_TEMPLATE (old_decl); 1234 new_decl = STRIP_TEMPLATE (new_decl); 1235 if (!VAR_OR_FUNCTION_DECL_P (old_decl) 1236 || !VAR_OR_FUNCTION_DECL_P (new_decl)) 1237 return true; 1238 if (DECL_DECLARED_CONSTEXPR_P (old_decl) 1239 == DECL_DECLARED_CONSTEXPR_P (new_decl)) 1240 return true; 1241 if (TREE_CODE (old_decl) == FUNCTION_DECL) 1242 { 1243 if (DECL_BUILT_IN (old_decl)) 1244 { 1245 /* Hide a built-in declaration. */ 1246 DECL_DECLARED_CONSTEXPR_P (old_decl) 1247 = DECL_DECLARED_CONSTEXPR_P (new_decl); 1248 return true; 1249 } 1250 /* 7.1.5 [dcl.constexpr] 1251 Note: An explicit specialization can differ from the template 1252 declaration with respect to the constexpr specifier. */ 1253 if (! DECL_TEMPLATE_SPECIALIZATION (old_decl) 1254 && DECL_TEMPLATE_SPECIALIZATION (new_decl)) 1255 return true; 1256 1257 error ("redeclaration %qD differs in %<constexpr%>", new_decl); 1258 error ("from previous declaration %q+D", old_decl); 1259 return false; 1260 } 1261 return true; 1262 } 1263 1264 /* DECL is a redeclaration of a function or function template. If 1265 it does have default arguments issue a diagnostic. Note: this 1266 function is used to enforce the requirements in C++11 8.3.6 about 1267 no default arguments in redeclarations. */ 1268 1269 static void 1270 check_redeclaration_no_default_args (tree decl) 1271 { 1272 gcc_assert (DECL_DECLARES_FUNCTION_P (decl)); 1273 1274 for (tree t = FUNCTION_FIRST_USER_PARMTYPE (decl); 1275 t && t != void_list_node; t = TREE_CHAIN (t)) 1276 if (TREE_PURPOSE (t)) 1277 { 1278 permerror (input_location, 1279 "redeclaration of %q#D may not have default " 1280 "arguments", decl); 1281 return; 1282 } 1283 } 1284 1285 #define GNU_INLINE_P(fn) (DECL_DECLARED_INLINE_P (fn) \ 1286 && lookup_attribute ("gnu_inline", \ 1287 DECL_ATTRIBUTES (fn))) 1288 1289 /* If NEWDECL is a redeclaration of OLDDECL, merge the declarations. 1290 If the redeclaration is invalid, a diagnostic is issued, and the 1291 error_mark_node is returned. Otherwise, OLDDECL is returned. 1292 1293 If NEWDECL is not a redeclaration of OLDDECL, NULL_TREE is 1294 returned. 1295 1296 NEWDECL_IS_FRIEND is true if NEWDECL was declared as a friend. */ 1297 1298 tree 1299 duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) 1300 { 1301 unsigned olddecl_uid = DECL_UID (olddecl); 1302 int olddecl_friend = 0, types_match = 0, hidden_friend = 0; 1303 int new_defines_function = 0; 1304 tree new_template_info; 1305 1306 if (newdecl == olddecl) 1307 return olddecl; 1308 1309 types_match = decls_match (newdecl, olddecl); 1310 1311 /* If either the type of the new decl or the type of the old decl is an 1312 error_mark_node, then that implies that we have already issued an 1313 error (earlier) for some bogus type specification, and in that case, 1314 it is rather pointless to harass the user with yet more error message 1315 about the same declaration, so just pretend the types match here. */ 1316 if (TREE_TYPE (newdecl) == error_mark_node 1317 || TREE_TYPE (olddecl) == error_mark_node) 1318 return error_mark_node; 1319 1320 if (UDLIT_OPER_P (DECL_NAME (newdecl)) 1321 && UDLIT_OPER_P (DECL_NAME (olddecl))) 1322 { 1323 if (TREE_CODE (newdecl) == TEMPLATE_DECL 1324 && TREE_CODE (olddecl) != TEMPLATE_DECL 1325 && check_raw_literal_operator (olddecl)) 1326 error ("literal operator template %q+D conflicts with" 1327 " raw literal operator %qD", newdecl, olddecl); 1328 else if (TREE_CODE (newdecl) != TEMPLATE_DECL 1329 && TREE_CODE (olddecl) == TEMPLATE_DECL 1330 && check_raw_literal_operator (newdecl)) 1331 error ("raw literal operator %q+D conflicts with" 1332 " literal operator template %qD", newdecl, olddecl); 1333 } 1334 1335 if (DECL_P (olddecl) 1336 && TREE_CODE (newdecl) == FUNCTION_DECL 1337 && TREE_CODE (olddecl) == FUNCTION_DECL 1338 && (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl))) 1339 { 1340 if (DECL_DECLARED_INLINE_P (newdecl) 1341 && DECL_UNINLINABLE (newdecl) 1342 && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl))) 1343 /* Already warned elsewhere. */; 1344 else if (DECL_DECLARED_INLINE_P (olddecl) 1345 && DECL_UNINLINABLE (olddecl) 1346 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl))) 1347 /* Already warned. */; 1348 else if (DECL_DECLARED_INLINE_P (newdecl) 1349 && DECL_UNINLINABLE (olddecl) 1350 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl))) 1351 { 1352 if (warning (OPT_Wattributes, "function %q+D redeclared as inline", 1353 newdecl)) 1354 inform (DECL_SOURCE_LOCATION (olddecl), 1355 "previous declaration of %qD with attribute noinline", 1356 olddecl); 1357 } 1358 else if (DECL_DECLARED_INLINE_P (olddecl) 1359 && DECL_UNINLINABLE (newdecl) 1360 && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl))) 1361 { 1362 if (warning (OPT_Wattributes, "function %q+D redeclared with " 1363 "attribute noinline", newdecl)) 1364 inform (DECL_SOURCE_LOCATION (olddecl), 1365 "previous declaration of %qD was inline", 1366 olddecl); 1367 } 1368 } 1369 1370 /* Check for redeclaration and other discrepancies. */ 1371 if (TREE_CODE (olddecl) == FUNCTION_DECL 1372 && DECL_ARTIFICIAL (olddecl)) 1373 { 1374 gcc_assert (!DECL_HIDDEN_FRIEND_P (olddecl)); 1375 if (TREE_CODE (newdecl) != FUNCTION_DECL) 1376 { 1377 /* Avoid warnings redeclaring built-ins which have not been 1378 explicitly declared. */ 1379 if (DECL_ANTICIPATED (olddecl)) 1380 return NULL_TREE; 1381 1382 /* If you declare a built-in or predefined function name as static, 1383 the old definition is overridden, but optionally warn this was a 1384 bad choice of name. */ 1385 if (! TREE_PUBLIC (newdecl)) 1386 { 1387 warning (OPT_Wshadow, 1388 DECL_BUILT_IN (olddecl) 1389 ? G_("shadowing built-in function %q#D") 1390 : G_("shadowing library function %q#D"), olddecl); 1391 /* Discard the old built-in function. */ 1392 return NULL_TREE; 1393 } 1394 /* If the built-in is not ansi, then programs can override 1395 it even globally without an error. */ 1396 else if (! DECL_BUILT_IN (olddecl)) 1397 warning (0, "library function %q#D redeclared as non-function %q#D", 1398 olddecl, newdecl); 1399 else 1400 error ("declaration of %q#D conflicts with built-in " 1401 "declaration %q#D", newdecl, olddecl); 1402 return NULL_TREE; 1403 } 1404 else if (DECL_OMP_DECLARE_REDUCTION_P (olddecl)) 1405 { 1406 gcc_assert (DECL_OMP_DECLARE_REDUCTION_P (newdecl)); 1407 error_at (DECL_SOURCE_LOCATION (newdecl), 1408 "redeclaration of %<pragma omp declare reduction%>"); 1409 inform (DECL_SOURCE_LOCATION (olddecl), 1410 "previous %<pragma omp declare reduction%> declaration"); 1411 return error_mark_node; 1412 } 1413 else if (!types_match) 1414 { 1415 /* Avoid warnings redeclaring built-ins which have not been 1416 explicitly declared. */ 1417 if (DECL_ANTICIPATED (olddecl)) 1418 { 1419 /* Deal with fileptr_type_node. FILE type is not known 1420 at the time we create the builtins. */ 1421 tree t1, t2; 1422 1423 for (t1 = TYPE_ARG_TYPES (TREE_TYPE (newdecl)), 1424 t2 = TYPE_ARG_TYPES (TREE_TYPE (olddecl)); 1425 t1 || t2; 1426 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2)) 1427 if (!t1 || !t2) 1428 break; 1429 else if (TREE_VALUE (t2) == fileptr_type_node) 1430 { 1431 tree t = TREE_VALUE (t1); 1432 1433 if (TYPE_PTR_P (t) 1434 && TYPE_IDENTIFIER (TREE_TYPE (t)) 1435 == get_identifier ("FILE") 1436 && compparms (TREE_CHAIN (t1), TREE_CHAIN (t2))) 1437 { 1438 tree oldargs = TYPE_ARG_TYPES (TREE_TYPE (olddecl)); 1439 1440 TYPE_ARG_TYPES (TREE_TYPE (olddecl)) 1441 = TYPE_ARG_TYPES (TREE_TYPE (newdecl)); 1442 types_match = decls_match (newdecl, olddecl); 1443 if (types_match) 1444 return duplicate_decls (newdecl, olddecl, 1445 newdecl_is_friend); 1446 TYPE_ARG_TYPES (TREE_TYPE (olddecl)) = oldargs; 1447 } 1448 } 1449 else if (! same_type_p (TREE_VALUE (t1), TREE_VALUE (t2))) 1450 break; 1451 } 1452 else if ((DECL_EXTERN_C_P (newdecl) 1453 && DECL_EXTERN_C_P (olddecl)) 1454 || compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)), 1455 TYPE_ARG_TYPES (TREE_TYPE (olddecl)))) 1456 { 1457 /* A near match; override the builtin. */ 1458 1459 if (TREE_PUBLIC (newdecl)) 1460 warning (0, "new declaration %q#D ambiguates built-in " 1461 "declaration %q#D", newdecl, olddecl); 1462 else 1463 warning (OPT_Wshadow, 1464 DECL_BUILT_IN (olddecl) 1465 ? G_("shadowing built-in function %q#D") 1466 : G_("shadowing library function %q#D"), olddecl); 1467 } 1468 else 1469 /* Discard the old built-in function. */ 1470 return NULL_TREE; 1471 1472 /* Replace the old RTL to avoid problems with inlining. */ 1473 COPY_DECL_RTL (newdecl, olddecl); 1474 } 1475 /* Even if the types match, prefer the new declarations type for 1476 built-ins which have not been explicitly declared, for 1477 exception lists, etc... */ 1478 else if (DECL_IS_BUILTIN (olddecl)) 1479 { 1480 tree type = TREE_TYPE (newdecl); 1481 tree attribs = (*targetm.merge_type_attributes) 1482 (TREE_TYPE (olddecl), type); 1483 1484 type = cp_build_type_attribute_variant (type, attribs); 1485 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = type; 1486 } 1487 1488 /* If a function is explicitly declared "throw ()", propagate that to 1489 the corresponding builtin. */ 1490 if (DECL_BUILT_IN_CLASS (olddecl) == BUILT_IN_NORMAL 1491 && DECL_ANTICIPATED (olddecl) 1492 && TREE_NOTHROW (newdecl) 1493 && !TREE_NOTHROW (olddecl)) 1494 { 1495 enum built_in_function fncode = DECL_FUNCTION_CODE (olddecl); 1496 tree tmpdecl = builtin_decl_explicit (fncode); 1497 if (tmpdecl && tmpdecl != olddecl && types_match) 1498 TREE_NOTHROW (tmpdecl) = 1; 1499 } 1500 1501 /* Whether or not the builtin can throw exceptions has no 1502 bearing on this declarator. */ 1503 TREE_NOTHROW (olddecl) = 0; 1504 1505 if (DECL_THIS_STATIC (newdecl) && !DECL_THIS_STATIC (olddecl)) 1506 { 1507 /* If a builtin function is redeclared as `static', merge 1508 the declarations, but make the original one static. */ 1509 DECL_THIS_STATIC (olddecl) = 1; 1510 TREE_PUBLIC (olddecl) = 0; 1511 1512 /* Make the old declaration consistent with the new one so 1513 that all remnants of the builtin-ness of this function 1514 will be banished. */ 1515 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl)); 1516 COPY_DECL_RTL (newdecl, olddecl); 1517 } 1518 } 1519 else if (TREE_CODE (olddecl) != TREE_CODE (newdecl)) 1520 { 1521 /* C++ Standard, 3.3, clause 4: 1522 "[Note: a namespace name or a class template name must be unique 1523 in its declarative region (7.3.2, clause 14). ]" */ 1524 if (TREE_CODE (olddecl) != NAMESPACE_DECL 1525 && TREE_CODE (newdecl) != NAMESPACE_DECL 1526 && (TREE_CODE (olddecl) != TEMPLATE_DECL 1527 || TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) != TYPE_DECL) 1528 && (TREE_CODE (newdecl) != TEMPLATE_DECL 1529 || TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != TYPE_DECL)) 1530 { 1531 if ((TREE_CODE (olddecl) == TYPE_DECL && DECL_ARTIFICIAL (olddecl) 1532 && TREE_CODE (newdecl) != TYPE_DECL) 1533 || (TREE_CODE (newdecl) == TYPE_DECL && DECL_ARTIFICIAL (newdecl) 1534 && TREE_CODE (olddecl) != TYPE_DECL)) 1535 { 1536 /* We do nothing special here, because C++ does such nasty 1537 things with TYPE_DECLs. Instead, just let the TYPE_DECL 1538 get shadowed, and know that if we need to find a TYPE_DECL 1539 for a given name, we can look in the IDENTIFIER_TYPE_VALUE 1540 slot of the identifier. */ 1541 return NULL_TREE; 1542 } 1543 1544 if ((TREE_CODE (newdecl) == FUNCTION_DECL 1545 && DECL_FUNCTION_TEMPLATE_P (olddecl)) 1546 || (TREE_CODE (olddecl) == FUNCTION_DECL 1547 && DECL_FUNCTION_TEMPLATE_P (newdecl))) 1548 return NULL_TREE; 1549 } 1550 1551 error ("%q#D redeclared as different kind of symbol", newdecl); 1552 if (TREE_CODE (olddecl) == TREE_LIST) 1553 olddecl = TREE_VALUE (olddecl); 1554 inform (DECL_SOURCE_LOCATION (olddecl), 1555 "previous declaration %q#D", olddecl); 1556 1557 return error_mark_node; 1558 } 1559 else if (!types_match) 1560 { 1561 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl)) 1562 /* These are certainly not duplicate declarations; they're 1563 from different scopes. */ 1564 return NULL_TREE; 1565 1566 if (TREE_CODE (newdecl) == TEMPLATE_DECL) 1567 { 1568 /* The name of a class template may not be declared to refer to 1569 any other template, class, function, object, namespace, value, 1570 or type in the same scope. */ 1571 if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == TYPE_DECL 1572 || TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL) 1573 { 1574 error ("conflicting declaration of template %q#D", newdecl); 1575 inform (DECL_SOURCE_LOCATION (olddecl), 1576 "previous declaration %q#D", olddecl); 1577 return error_mark_node; 1578 } 1579 else if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL 1580 && TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL 1581 && compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))), 1582 TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl)))) 1583 && comp_template_parms (DECL_TEMPLATE_PARMS (newdecl), 1584 DECL_TEMPLATE_PARMS (olddecl)) 1585 /* Template functions can be disambiguated by 1586 return type. */ 1587 && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)), 1588 TREE_TYPE (TREE_TYPE (olddecl)))) 1589 { 1590 error ("ambiguating new declaration %q#D", newdecl); 1591 inform (DECL_SOURCE_LOCATION (olddecl), 1592 "old declaration %q#D", olddecl); 1593 } 1594 return NULL_TREE; 1595 } 1596 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1597 { 1598 if (DECL_EXTERN_C_P (newdecl) && DECL_EXTERN_C_P (olddecl)) 1599 { 1600 error ("conflicting declaration of C function %q#D", 1601 newdecl); 1602 inform (DECL_SOURCE_LOCATION (olddecl), 1603 "previous declaration %q#D", olddecl); 1604 return NULL_TREE; 1605 } 1606 /* For function versions, params and types match, but they 1607 are not ambiguous. */ 1608 else if ((!DECL_FUNCTION_VERSIONED (newdecl) 1609 && !DECL_FUNCTION_VERSIONED (olddecl)) 1610 && compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)), 1611 TYPE_ARG_TYPES (TREE_TYPE (olddecl)))) 1612 { 1613 error ("ambiguating new declaration of %q#D", newdecl); 1614 inform (DECL_SOURCE_LOCATION (olddecl), 1615 "old declaration %q#D", olddecl); 1616 return error_mark_node; 1617 } 1618 else 1619 return NULL_TREE; 1620 } 1621 else 1622 { 1623 error ("conflicting declaration %q#D", newdecl); 1624 inform (DECL_SOURCE_LOCATION (olddecl), 1625 "previous declaration as %q#D", olddecl); 1626 return error_mark_node; 1627 } 1628 } 1629 else if (TREE_CODE (newdecl) == FUNCTION_DECL 1630 && ((DECL_TEMPLATE_SPECIALIZATION (olddecl) 1631 && (!DECL_TEMPLATE_INFO (newdecl) 1632 || (DECL_TI_TEMPLATE (newdecl) 1633 != DECL_TI_TEMPLATE (olddecl)))) 1634 || (DECL_TEMPLATE_SPECIALIZATION (newdecl) 1635 && (!DECL_TEMPLATE_INFO (olddecl) 1636 || (DECL_TI_TEMPLATE (olddecl) 1637 != DECL_TI_TEMPLATE (newdecl)))))) 1638 /* It's OK to have a template specialization and a non-template 1639 with the same type, or to have specializations of two 1640 different templates with the same type. Note that if one is a 1641 specialization, and the other is an instantiation of the same 1642 template, that we do not exit at this point. That situation 1643 can occur if we instantiate a template class, and then 1644 specialize one of its methods. This situation is valid, but 1645 the declarations must be merged in the usual way. */ 1646 return NULL_TREE; 1647 else if (TREE_CODE (newdecl) == FUNCTION_DECL 1648 && ((DECL_TEMPLATE_INSTANTIATION (olddecl) 1649 && !DECL_USE_TEMPLATE (newdecl)) 1650 || (DECL_TEMPLATE_INSTANTIATION (newdecl) 1651 && !DECL_USE_TEMPLATE (olddecl)))) 1652 /* One of the declarations is a template instantiation, and the 1653 other is not a template at all. That's OK. */ 1654 return NULL_TREE; 1655 else if (TREE_CODE (newdecl) == NAMESPACE_DECL) 1656 { 1657 /* In [namespace.alias] we have: 1658 1659 In a declarative region, a namespace-alias-definition can be 1660 used to redefine a namespace-alias declared in that declarative 1661 region to refer only to the namespace to which it already 1662 refers. 1663 1664 Therefore, if we encounter a second alias directive for the same 1665 alias, we can just ignore the second directive. */ 1666 if (DECL_NAMESPACE_ALIAS (newdecl) 1667 && (DECL_NAMESPACE_ALIAS (newdecl) 1668 == DECL_NAMESPACE_ALIAS (olddecl))) 1669 return olddecl; 1670 /* [namespace.alias] 1671 1672 A namespace-name or namespace-alias shall not be declared as 1673 the name of any other entity in the same declarative region. 1674 A namespace-name defined at global scope shall not be 1675 declared as the name of any other entity in any global scope 1676 of the program. */ 1677 error ("conflicting declaration of namespace %qD", newdecl); 1678 inform (DECL_SOURCE_LOCATION (olddecl), 1679 "previous declaration of namespace %qD here", olddecl); 1680 return error_mark_node; 1681 } 1682 else 1683 { 1684 const char *errmsg = redeclaration_error_message (newdecl, olddecl); 1685 if (errmsg) 1686 { 1687 error_at (DECL_SOURCE_LOCATION (newdecl), errmsg, newdecl); 1688 if (DECL_NAME (olddecl) != NULL_TREE) 1689 inform (input_location, 1690 (DECL_INITIAL (olddecl) && namespace_bindings_p ()) 1691 ? G_("%q+#D previously defined here") 1692 : G_("%q+#D previously declared here"), olddecl); 1693 return error_mark_node; 1694 } 1695 else if (TREE_CODE (olddecl) == FUNCTION_DECL 1696 && DECL_INITIAL (olddecl) != NULL_TREE 1697 && !prototype_p (TREE_TYPE (olddecl)) 1698 && prototype_p (TREE_TYPE (newdecl))) 1699 { 1700 /* Prototype decl follows defn w/o prototype. */ 1701 if (warning_at (DECL_SOURCE_LOCATION (newdecl), 0, 1702 "prototype specified for %q#D", newdecl)) 1703 inform (DECL_SOURCE_LOCATION (olddecl), 1704 "previous non-prototype definition here"); 1705 } 1706 else if (VAR_OR_FUNCTION_DECL_P (olddecl) 1707 && DECL_LANGUAGE (newdecl) != DECL_LANGUAGE (olddecl)) 1708 { 1709 /* [dcl.link] 1710 If two declarations of the same function or object 1711 specify different linkage-specifications ..., the program 1712 is ill-formed.... Except for functions with C++ linkage, 1713 a function declaration without a linkage specification 1714 shall not precede the first linkage specification for 1715 that function. A function can be declared without a 1716 linkage specification after an explicit linkage 1717 specification has been seen; the linkage explicitly 1718 specified in the earlier declaration is not affected by 1719 such a function declaration. 1720 1721 DR 563 raises the question why the restrictions on 1722 functions should not also apply to objects. Older 1723 versions of G++ silently ignore the linkage-specification 1724 for this example: 1725 1726 namespace N { 1727 extern int i; 1728 extern "C" int i; 1729 } 1730 1731 which is clearly wrong. Therefore, we now treat objects 1732 like functions. */ 1733 if (current_lang_depth () == 0) 1734 { 1735 /* There is no explicit linkage-specification, so we use 1736 the linkage from the previous declaration. */ 1737 if (!DECL_LANG_SPECIFIC (newdecl)) 1738 retrofit_lang_decl (newdecl); 1739 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl)); 1740 } 1741 else 1742 { 1743 error ("conflicting declaration of %q#D with %qL linkage", 1744 newdecl, DECL_LANGUAGE (newdecl)); 1745 inform (DECL_SOURCE_LOCATION (olddecl), 1746 "previous declaration with %qL linkage", 1747 DECL_LANGUAGE (olddecl)); 1748 } 1749 } 1750 1751 if (DECL_LANG_SPECIFIC (olddecl) && DECL_USE_TEMPLATE (olddecl)) 1752 ; 1753 else if (TREE_CODE (olddecl) == FUNCTION_DECL) 1754 { 1755 /* Note: free functions, as TEMPLATE_DECLs, are handled below. */ 1756 if (DECL_FUNCTION_MEMBER_P (olddecl) 1757 && (/* grokfndecl passes member function templates too 1758 as FUNCTION_DECLs. */ 1759 DECL_TEMPLATE_INFO (olddecl) 1760 /* C++11 8.3.6/6. 1761 Default arguments for a member function of a class 1762 template shall be specified on the initial declaration 1763 of the member function within the class template. */ 1764 || CLASSTYPE_TEMPLATE_INFO (CP_DECL_CONTEXT (olddecl)))) 1765 check_redeclaration_no_default_args (newdecl); 1766 else 1767 { 1768 tree t1 = FUNCTION_FIRST_USER_PARMTYPE (olddecl); 1769 tree t2 = FUNCTION_FIRST_USER_PARMTYPE (newdecl); 1770 int i = 1; 1771 1772 for (; t1 && t1 != void_list_node; 1773 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2), i++) 1774 if (TREE_PURPOSE (t1) && TREE_PURPOSE (t2)) 1775 { 1776 if (1 == simple_cst_equal (TREE_PURPOSE (t1), 1777 TREE_PURPOSE (t2))) 1778 { 1779 if (permerror (input_location, 1780 "default argument given for parameter " 1781 "%d of %q#D", i, newdecl)) 1782 inform (DECL_SOURCE_LOCATION (olddecl), 1783 "previous specification in %q#D here", 1784 olddecl); 1785 } 1786 else 1787 { 1788 error ("default argument given for parameter %d " 1789 "of %q#D", i, newdecl); 1790 inform (DECL_SOURCE_LOCATION (olddecl), 1791 "previous specification in %q#D here", 1792 olddecl); 1793 } 1794 } 1795 } 1796 } 1797 } 1798 1799 /* Do not merge an implicit typedef with an explicit one. In: 1800 1801 class A; 1802 ... 1803 typedef class A A __attribute__ ((foo)); 1804 1805 the attribute should apply only to the typedef. */ 1806 if (TREE_CODE (olddecl) == TYPE_DECL 1807 && (DECL_IMPLICIT_TYPEDEF_P (olddecl) 1808 || DECL_IMPLICIT_TYPEDEF_P (newdecl))) 1809 return NULL_TREE; 1810 1811 /* If new decl is `static' and an `extern' was seen previously, 1812 warn about it. */ 1813 warn_extern_redeclared_static (newdecl, olddecl); 1814 1815 if (!validate_constexpr_redeclaration (olddecl, newdecl)) 1816 return error_mark_node; 1817 1818 /* We have committed to returning 1 at this point. */ 1819 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1820 { 1821 /* Now that functions must hold information normally held 1822 by field decls, there is extra work to do so that 1823 declaration information does not get destroyed during 1824 definition. */ 1825 if (DECL_VINDEX (olddecl)) 1826 DECL_VINDEX (newdecl) = DECL_VINDEX (olddecl); 1827 if (DECL_CONTEXT (olddecl)) 1828 DECL_CONTEXT (newdecl) = DECL_CONTEXT (olddecl); 1829 DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl); 1830 DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl); 1831 DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl); 1832 DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl); 1833 DECL_INVALID_OVERRIDER_P (newdecl) |= DECL_INVALID_OVERRIDER_P (olddecl); 1834 DECL_FINAL_P (newdecl) |= DECL_FINAL_P (olddecl); 1835 DECL_OVERRIDE_P (newdecl) |= DECL_OVERRIDE_P (olddecl); 1836 DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl); 1837 if (DECL_OVERLOADED_OPERATOR_P (olddecl) != ERROR_MARK) 1838 SET_OVERLOADED_OPERATOR_CODE 1839 (newdecl, DECL_OVERLOADED_OPERATOR_P (olddecl)); 1840 new_defines_function = DECL_INITIAL (newdecl) != NULL_TREE; 1841 1842 /* Optionally warn about more than one declaration for the same 1843 name, but don't warn about a function declaration followed by a 1844 definition. */ 1845 if (warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl) 1846 && !(new_defines_function && DECL_INITIAL (olddecl) == NULL_TREE) 1847 /* Don't warn about extern decl followed by definition. */ 1848 && !(DECL_EXTERNAL (olddecl) && ! DECL_EXTERNAL (newdecl)) 1849 /* Don't warn about friends, let add_friend take care of it. */ 1850 && ! (newdecl_is_friend || DECL_FRIEND_P (olddecl)) 1851 /* Don't warn about declaration followed by specialization. */ 1852 && (! DECL_TEMPLATE_SPECIALIZATION (newdecl) 1853 || DECL_TEMPLATE_SPECIALIZATION (olddecl))) 1854 { 1855 if (warning (OPT_Wredundant_decls, 1856 "redundant redeclaration of %qD in same scope", 1857 newdecl)) 1858 inform (DECL_SOURCE_LOCATION (olddecl), 1859 "previous declaration of %qD", olddecl); 1860 } 1861 1862 if (!(DECL_TEMPLATE_INSTANTIATION (olddecl) 1863 && DECL_TEMPLATE_SPECIALIZATION (newdecl))) 1864 { 1865 if (DECL_DELETED_FN (newdecl)) 1866 { 1867 error ("deleted definition of %qD", newdecl); 1868 inform (DECL_SOURCE_LOCATION (olddecl), 1869 "previous declaration of %qD", olddecl); 1870 } 1871 DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl); 1872 } 1873 } 1874 1875 /* Deal with C++: must preserve virtual function table size. */ 1876 if (TREE_CODE (olddecl) == TYPE_DECL) 1877 { 1878 tree newtype = TREE_TYPE (newdecl); 1879 tree oldtype = TREE_TYPE (olddecl); 1880 1881 if (newtype != error_mark_node && oldtype != error_mark_node 1882 && TYPE_LANG_SPECIFIC (newtype) && TYPE_LANG_SPECIFIC (oldtype)) 1883 CLASSTYPE_FRIEND_CLASSES (newtype) 1884 = CLASSTYPE_FRIEND_CLASSES (oldtype); 1885 1886 DECL_ORIGINAL_TYPE (newdecl) = DECL_ORIGINAL_TYPE (olddecl); 1887 } 1888 1889 /* Copy all the DECL_... slots specified in the new decl 1890 except for any that we copy here from the old type. */ 1891 DECL_ATTRIBUTES (newdecl) 1892 = (*targetm.merge_decl_attributes) (olddecl, newdecl); 1893 1894 if (DECL_DECLARES_FUNCTION_P (olddecl) && DECL_DECLARES_FUNCTION_P (newdecl)) 1895 { 1896 olddecl_friend = DECL_FRIEND_P (olddecl); 1897 hidden_friend = (DECL_ANTICIPATED (olddecl) 1898 && DECL_HIDDEN_FRIEND_P (olddecl) 1899 && newdecl_is_friend); 1900 if (!hidden_friend) 1901 { 1902 DECL_ANTICIPATED (olddecl) = 0; 1903 DECL_HIDDEN_FRIEND_P (olddecl) = 0; 1904 } 1905 } 1906 1907 if (TREE_CODE (newdecl) == TEMPLATE_DECL) 1908 { 1909 tree old_result; 1910 tree new_result; 1911 old_result = DECL_TEMPLATE_RESULT (olddecl); 1912 new_result = DECL_TEMPLATE_RESULT (newdecl); 1913 TREE_TYPE (olddecl) = TREE_TYPE (old_result); 1914 DECL_TEMPLATE_SPECIALIZATIONS (olddecl) 1915 = chainon (DECL_TEMPLATE_SPECIALIZATIONS (olddecl), 1916 DECL_TEMPLATE_SPECIALIZATIONS (newdecl)); 1917 1918 DECL_ATTRIBUTES (old_result) 1919 = (*targetm.merge_decl_attributes) (old_result, new_result); 1920 1921 if (DECL_FUNCTION_TEMPLATE_P (newdecl)) 1922 { 1923 /* Per C++11 8.3.6/4, default arguments cannot be added in later 1924 declarations of a function template. */ 1925 if (DECL_SOURCE_LOCATION (newdecl) 1926 != DECL_SOURCE_LOCATION (olddecl)) 1927 check_redeclaration_no_default_args (newdecl); 1928 1929 check_default_args (newdecl); 1930 1931 if (GNU_INLINE_P (old_result) != GNU_INLINE_P (new_result) 1932 && DECL_INITIAL (new_result)) 1933 { 1934 if (DECL_INITIAL (old_result)) 1935 DECL_UNINLINABLE (old_result) = 1; 1936 else 1937 DECL_UNINLINABLE (old_result) = DECL_UNINLINABLE (new_result); 1938 DECL_EXTERNAL (old_result) = DECL_EXTERNAL (new_result); 1939 DECL_NOT_REALLY_EXTERN (old_result) 1940 = DECL_NOT_REALLY_EXTERN (new_result); 1941 DECL_INTERFACE_KNOWN (old_result) 1942 = DECL_INTERFACE_KNOWN (new_result); 1943 DECL_DECLARED_INLINE_P (old_result) 1944 = DECL_DECLARED_INLINE_P (new_result); 1945 DECL_DISREGARD_INLINE_LIMITS (old_result) 1946 |= DECL_DISREGARD_INLINE_LIMITS (new_result); 1947 1948 } 1949 else 1950 { 1951 DECL_DECLARED_INLINE_P (old_result) 1952 |= DECL_DECLARED_INLINE_P (new_result); 1953 DECL_DISREGARD_INLINE_LIMITS (old_result) 1954 |= DECL_DISREGARD_INLINE_LIMITS (new_result); 1955 check_redeclaration_exception_specification (newdecl, olddecl); 1956 } 1957 } 1958 1959 /* If the new declaration is a definition, update the file and 1960 line information on the declaration, and also make 1961 the old declaration the same definition. */ 1962 if (DECL_INITIAL (new_result) != NULL_TREE) 1963 { 1964 DECL_SOURCE_LOCATION (olddecl) 1965 = DECL_SOURCE_LOCATION (old_result) 1966 = DECL_SOURCE_LOCATION (newdecl); 1967 DECL_INITIAL (old_result) = DECL_INITIAL (new_result); 1968 if (DECL_FUNCTION_TEMPLATE_P (newdecl)) 1969 { 1970 tree parm; 1971 DECL_ARGUMENTS (old_result) 1972 = DECL_ARGUMENTS (new_result); 1973 for (parm = DECL_ARGUMENTS (old_result); parm; 1974 parm = DECL_CHAIN (parm)) 1975 DECL_CONTEXT (parm) = old_result; 1976 } 1977 } 1978 1979 return olddecl; 1980 } 1981 1982 if (types_match) 1983 { 1984 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1985 check_redeclaration_exception_specification (newdecl, olddecl); 1986 1987 /* Automatically handles default parameters. */ 1988 tree oldtype = TREE_TYPE (olddecl); 1989 tree newtype; 1990 1991 /* For typedefs use the old type, as the new type's DECL_NAME points 1992 at newdecl, which will be ggc_freed. */ 1993 if (TREE_CODE (newdecl) == TYPE_DECL) 1994 { 1995 /* But NEWTYPE might have an attribute, honor that. */ 1996 tree tem = TREE_TYPE (newdecl); 1997 newtype = oldtype; 1998 1999 if (TYPE_USER_ALIGN (tem)) 2000 { 2001 if (TYPE_ALIGN (tem) > TYPE_ALIGN (newtype)) 2002 TYPE_ALIGN (newtype) = TYPE_ALIGN (tem); 2003 TYPE_USER_ALIGN (newtype) = true; 2004 } 2005 2006 /* And remove the new type from the variants list. */ 2007 if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) 2008 { 2009 tree remove = TREE_TYPE (newdecl); 2010 for (tree t = TYPE_MAIN_VARIANT (remove); ; 2011 t = TYPE_NEXT_VARIANT (t)) 2012 if (TYPE_NEXT_VARIANT (t) == remove) 2013 { 2014 TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); 2015 break; 2016 } 2017 } 2018 } 2019 else 2020 /* Merge the data types specified in the two decls. */ 2021 newtype = merge_types (TREE_TYPE (newdecl), TREE_TYPE (olddecl)); 2022 2023 if (VAR_P (newdecl)) 2024 { 2025 DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl); 2026 /* For already initialized vars, TREE_READONLY could have been 2027 cleared in cp_finish_decl, because the var needs runtime 2028 initialization or destruction. Make sure not to set 2029 TREE_READONLY on it again. */ 2030 if (DECL_INITIALIZED_P (olddecl) 2031 && !DECL_EXTERNAL (olddecl) 2032 && !TREE_READONLY (olddecl)) 2033 TREE_READONLY (newdecl) = 0; 2034 DECL_INITIALIZED_P (newdecl) |= DECL_INITIALIZED_P (olddecl); 2035 DECL_NONTRIVIALLY_INITIALIZED_P (newdecl) 2036 |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl); 2037 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (newdecl) 2038 |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl); 2039 2040 /* Merge the threadprivate attribute from OLDDECL into NEWDECL. */ 2041 if (DECL_LANG_SPECIFIC (olddecl) 2042 && CP_DECL_THREADPRIVATE_P (olddecl)) 2043 { 2044 /* Allocate a LANG_SPECIFIC structure for NEWDECL, if needed. */ 2045 if (!DECL_LANG_SPECIFIC (newdecl)) 2046 retrofit_lang_decl (newdecl); 2047 2048 CP_DECL_THREADPRIVATE_P (newdecl) = 1; 2049 } 2050 } 2051 2052 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = newtype; 2053 2054 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2055 check_default_args (newdecl); 2056 2057 /* Lay the type out, unless already done. */ 2058 if (! same_type_p (newtype, oldtype) 2059 && TREE_TYPE (newdecl) != error_mark_node 2060 && !(processing_template_decl && uses_template_parms (newdecl))) 2061 layout_type (TREE_TYPE (newdecl)); 2062 2063 if ((VAR_P (newdecl) 2064 || TREE_CODE (newdecl) == PARM_DECL 2065 || TREE_CODE (newdecl) == RESULT_DECL 2066 || TREE_CODE (newdecl) == FIELD_DECL 2067 || TREE_CODE (newdecl) == TYPE_DECL) 2068 && !(processing_template_decl && uses_template_parms (newdecl))) 2069 layout_decl (newdecl, 0); 2070 2071 /* Merge the type qualifiers. */ 2072 if (TREE_READONLY (newdecl)) 2073 TREE_READONLY (olddecl) = 1; 2074 if (TREE_THIS_VOLATILE (newdecl)) 2075 TREE_THIS_VOLATILE (olddecl) = 1; 2076 if (TREE_NOTHROW (newdecl)) 2077 TREE_NOTHROW (olddecl) = 1; 2078 2079 /* Merge deprecatedness. */ 2080 if (TREE_DEPRECATED (newdecl)) 2081 TREE_DEPRECATED (olddecl) = 1; 2082 2083 /* Preserve function specific target and optimization options */ 2084 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2085 { 2086 if (DECL_FUNCTION_SPECIFIC_TARGET (olddecl) 2087 && !DECL_FUNCTION_SPECIFIC_TARGET (newdecl)) 2088 DECL_FUNCTION_SPECIFIC_TARGET (newdecl) 2089 = DECL_FUNCTION_SPECIFIC_TARGET (olddecl); 2090 2091 if (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl) 2092 && !DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)) 2093 DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl) 2094 = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl); 2095 } 2096 2097 /* Merge the initialization information. */ 2098 if (DECL_INITIAL (newdecl) == NULL_TREE 2099 && DECL_INITIAL (olddecl) != NULL_TREE) 2100 { 2101 DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl); 2102 DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl); 2103 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2104 { 2105 DECL_SAVED_TREE (newdecl) = DECL_SAVED_TREE (olddecl); 2106 DECL_STRUCT_FUNCTION (newdecl) = DECL_STRUCT_FUNCTION (olddecl); 2107 } 2108 } 2109 2110 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2111 { 2112 DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (newdecl) 2113 |= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl); 2114 DECL_NO_LIMIT_STACK (newdecl) |= DECL_NO_LIMIT_STACK (olddecl); 2115 TREE_THIS_VOLATILE (newdecl) |= TREE_THIS_VOLATILE (olddecl); 2116 TREE_NOTHROW (newdecl) |= TREE_NOTHROW (olddecl); 2117 DECL_IS_MALLOC (newdecl) |= DECL_IS_MALLOC (olddecl); 2118 DECL_IS_OPERATOR_NEW (newdecl) |= DECL_IS_OPERATOR_NEW (olddecl); 2119 DECL_PURE_P (newdecl) |= DECL_PURE_P (olddecl); 2120 TREE_READONLY (newdecl) |= TREE_READONLY (olddecl); 2121 DECL_LOOPING_CONST_OR_PURE_P (newdecl) 2122 |= DECL_LOOPING_CONST_OR_PURE_P (olddecl); 2123 /* Keep the old RTL. */ 2124 COPY_DECL_RTL (olddecl, newdecl); 2125 } 2126 else if (VAR_P (newdecl) 2127 && (DECL_SIZE (olddecl) || !DECL_SIZE (newdecl))) 2128 { 2129 /* Keep the old RTL. We cannot keep the old RTL if the old 2130 declaration was for an incomplete object and the new 2131 declaration is not since many attributes of the RTL will 2132 change. */ 2133 COPY_DECL_RTL (olddecl, newdecl); 2134 } 2135 } 2136 /* If cannot merge, then use the new type and qualifiers, 2137 and don't preserve the old rtl. */ 2138 else 2139 { 2140 /* Clean out any memory we had of the old declaration. */ 2141 tree oldstatic = value_member (olddecl, static_aggregates); 2142 if (oldstatic) 2143 TREE_VALUE (oldstatic) = error_mark_node; 2144 2145 TREE_TYPE (olddecl) = TREE_TYPE (newdecl); 2146 TREE_READONLY (olddecl) = TREE_READONLY (newdecl); 2147 TREE_THIS_VOLATILE (olddecl) = TREE_THIS_VOLATILE (newdecl); 2148 TREE_SIDE_EFFECTS (olddecl) = TREE_SIDE_EFFECTS (newdecl); 2149 } 2150 2151 /* Merge the storage class information. */ 2152 merge_weak (newdecl, olddecl); 2153 2154 DECL_DEFER_OUTPUT (newdecl) |= DECL_DEFER_OUTPUT (olddecl); 2155 TREE_PUBLIC (newdecl) = TREE_PUBLIC (olddecl); 2156 TREE_STATIC (olddecl) = TREE_STATIC (newdecl) |= TREE_STATIC (olddecl); 2157 if (! DECL_EXTERNAL (olddecl)) 2158 DECL_EXTERNAL (newdecl) = 0; 2159 2160 new_template_info = NULL_TREE; 2161 if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl)) 2162 { 2163 bool new_redefines_gnu_inline = false; 2164 2165 if (new_defines_function 2166 && ((DECL_INTERFACE_KNOWN (olddecl) 2167 && TREE_CODE (olddecl) == FUNCTION_DECL) 2168 || (TREE_CODE (olddecl) == TEMPLATE_DECL 2169 && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) 2170 == FUNCTION_DECL)))) 2171 { 2172 tree fn = olddecl; 2173 2174 if (TREE_CODE (fn) == TEMPLATE_DECL) 2175 fn = DECL_TEMPLATE_RESULT (olddecl); 2176 2177 new_redefines_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn); 2178 } 2179 2180 if (!new_redefines_gnu_inline) 2181 { 2182 DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl); 2183 DECL_NOT_REALLY_EXTERN (newdecl) |= DECL_NOT_REALLY_EXTERN (olddecl); 2184 DECL_COMDAT (newdecl) |= DECL_COMDAT (olddecl); 2185 } 2186 DECL_TEMPLATE_INSTANTIATED (newdecl) 2187 |= DECL_TEMPLATE_INSTANTIATED (olddecl); 2188 DECL_ODR_USED (newdecl) |= DECL_ODR_USED (olddecl); 2189 2190 /* If the OLDDECL is an instantiation and/or specialization, 2191 then the NEWDECL must be too. But, it may not yet be marked 2192 as such if the caller has created NEWDECL, but has not yet 2193 figured out that it is a redeclaration. */ 2194 if (!DECL_USE_TEMPLATE (newdecl)) 2195 DECL_USE_TEMPLATE (newdecl) = DECL_USE_TEMPLATE (olddecl); 2196 2197 /* Don't really know how much of the language-specific 2198 values we should copy from old to new. */ 2199 DECL_IN_AGGR_P (newdecl) = DECL_IN_AGGR_P (olddecl); 2200 DECL_REPO_AVAILABLE_P (newdecl) = DECL_REPO_AVAILABLE_P (olddecl); 2201 DECL_INITIALIZED_IN_CLASS_P (newdecl) 2202 |= DECL_INITIALIZED_IN_CLASS_P (olddecl); 2203 2204 if (LANG_DECL_HAS_MIN (newdecl)) 2205 { 2206 DECL_LANG_SPECIFIC (newdecl)->u.min.u2 = 2207 DECL_LANG_SPECIFIC (olddecl)->u.min.u2; 2208 if (DECL_TEMPLATE_INFO (newdecl)) 2209 { 2210 new_template_info = DECL_TEMPLATE_INFO (newdecl); 2211 if (DECL_TEMPLATE_INSTANTIATION (olddecl) 2212 && DECL_TEMPLATE_SPECIALIZATION (newdecl)) 2213 /* Remember the presence of explicit specialization args. */ 2214 TINFO_USED_TEMPLATE_ID (DECL_TEMPLATE_INFO (olddecl)) 2215 = TINFO_USED_TEMPLATE_ID (new_template_info); 2216 } 2217 DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl); 2218 } 2219 /* Only functions have these fields. */ 2220 if (DECL_DECLARES_FUNCTION_P (newdecl)) 2221 { 2222 DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl); 2223 DECL_BEFRIENDING_CLASSES (newdecl) 2224 = chainon (DECL_BEFRIENDING_CLASSES (newdecl), 2225 DECL_BEFRIENDING_CLASSES (olddecl)); 2226 /* DECL_THUNKS is only valid for virtual functions, 2227 otherwise it is a DECL_FRIEND_CONTEXT. */ 2228 if (DECL_VIRTUAL_P (newdecl)) 2229 SET_DECL_THUNKS (newdecl, DECL_THUNKS (olddecl)); 2230 } 2231 /* Only variables have this field. */ 2232 else if (VAR_P (newdecl) 2233 && VAR_HAD_UNKNOWN_BOUND (olddecl)) 2234 SET_VAR_HAD_UNKNOWN_BOUND (newdecl); 2235 } 2236 2237 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2238 { 2239 tree parm; 2240 2241 /* Merge parameter attributes. */ 2242 tree oldarg, newarg; 2243 for (oldarg = DECL_ARGUMENTS(olddecl), 2244 newarg = DECL_ARGUMENTS(newdecl); 2245 oldarg && newarg; 2246 oldarg = DECL_CHAIN(oldarg), newarg = DECL_CHAIN(newarg)) { 2247 DECL_ATTRIBUTES (newarg) 2248 = (*targetm.merge_decl_attributes) (oldarg, newarg); 2249 DECL_ATTRIBUTES (oldarg) = DECL_ATTRIBUTES (newarg); 2250 } 2251 2252 if (DECL_TEMPLATE_INSTANTIATION (olddecl) 2253 && !DECL_TEMPLATE_INSTANTIATION (newdecl)) 2254 { 2255 /* If newdecl is not a specialization, then it is not a 2256 template-related function at all. And that means that we 2257 should have exited above, returning 0. */ 2258 gcc_assert (DECL_TEMPLATE_SPECIALIZATION (newdecl)); 2259 2260 if (DECL_ODR_USED (olddecl)) 2261 /* From [temp.expl.spec]: 2262 2263 If a template, a member template or the member of a class 2264 template is explicitly specialized then that 2265 specialization shall be declared before the first use of 2266 that specialization that would cause an implicit 2267 instantiation to take place, in every translation unit in 2268 which such a use occurs. */ 2269 error ("explicit specialization of %qD after first use", 2270 olddecl); 2271 2272 SET_DECL_TEMPLATE_SPECIALIZATION (olddecl); 2273 DECL_COMDAT (newdecl) = (TREE_PUBLIC (newdecl) 2274 && DECL_DECLARED_INLINE_P (newdecl)); 2275 2276 /* Don't propagate visibility from the template to the 2277 specialization here. We'll do that in determine_visibility if 2278 appropriate. */ 2279 DECL_VISIBILITY_SPECIFIED (olddecl) = 0; 2280 2281 /* [temp.expl.spec/14] We don't inline explicit specialization 2282 just because the primary template says so. */ 2283 2284 /* But still keep DECL_DISREGARD_INLINE_LIMITS in sync with 2285 the always_inline attribute. */ 2286 if (DECL_DISREGARD_INLINE_LIMITS (olddecl) 2287 && !DECL_DISREGARD_INLINE_LIMITS (newdecl)) 2288 { 2289 if (DECL_DECLARED_INLINE_P (newdecl)) 2290 DECL_DISREGARD_INLINE_LIMITS (newdecl) = true; 2291 else 2292 DECL_ATTRIBUTES (newdecl) 2293 = remove_attribute ("always_inline", 2294 DECL_ATTRIBUTES (newdecl)); 2295 } 2296 } 2297 else if (new_defines_function && DECL_INITIAL (olddecl)) 2298 { 2299 /* Never inline re-defined extern inline functions. 2300 FIXME: this could be better handled by keeping both 2301 function as separate declarations. */ 2302 DECL_UNINLINABLE (newdecl) = 1; 2303 } 2304 else 2305 { 2306 if (DECL_PENDING_INLINE_INFO (newdecl) == 0) 2307 DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl); 2308 2309 DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl); 2310 2311 DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl) 2312 = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl)); 2313 2314 DECL_DISREGARD_INLINE_LIMITS (newdecl) 2315 = DECL_DISREGARD_INLINE_LIMITS (olddecl) 2316 = (DECL_DISREGARD_INLINE_LIMITS (newdecl) 2317 || DECL_DISREGARD_INLINE_LIMITS (olddecl)); 2318 } 2319 2320 /* Preserve abstractness on cloned [cd]tors. */ 2321 DECL_ABSTRACT_P (newdecl) = DECL_ABSTRACT_P (olddecl); 2322 2323 /* Update newdecl's parms to point at olddecl. */ 2324 for (parm = DECL_ARGUMENTS (newdecl); parm; 2325 parm = DECL_CHAIN (parm)) 2326 DECL_CONTEXT (parm) = olddecl; 2327 2328 if (! types_match) 2329 { 2330 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl)); 2331 COPY_DECL_ASSEMBLER_NAME (newdecl, olddecl); 2332 COPY_DECL_RTL (newdecl, olddecl); 2333 } 2334 if (! types_match || new_defines_function) 2335 { 2336 /* These need to be copied so that the names are available. 2337 Note that if the types do match, we'll preserve inline 2338 info and other bits, but if not, we won't. */ 2339 DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl); 2340 DECL_RESULT (olddecl) = DECL_RESULT (newdecl); 2341 } 2342 /* If redeclaring a builtin function, it stays built in 2343 if newdecl is a gnu_inline definition, or if newdecl is just 2344 a declaration. */ 2345 if (DECL_BUILT_IN (olddecl) 2346 && (new_defines_function ? GNU_INLINE_P (newdecl) : types_match)) 2347 { 2348 DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl); 2349 DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl); 2350 /* If we're keeping the built-in definition, keep the rtl, 2351 regardless of declaration matches. */ 2352 COPY_DECL_RTL (olddecl, newdecl); 2353 if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL) 2354 { 2355 enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl); 2356 switch (fncode) 2357 { 2358 /* If a compatible prototype of these builtin functions 2359 is seen, assume the runtime implements it with the 2360 expected semantics. */ 2361 case BUILT_IN_STPCPY: 2362 if (builtin_decl_explicit_p (fncode)) 2363 set_builtin_decl_implicit_p (fncode, true); 2364 break; 2365 default: 2366 if (builtin_decl_explicit_p (fncode)) 2367 set_builtin_decl_declared_p (fncode, true); 2368 break; 2369 } 2370 } 2371 } 2372 if (new_defines_function) 2373 /* If defining a function declared with other language 2374 linkage, use the previously declared language linkage. */ 2375 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl)); 2376 else if (types_match) 2377 { 2378 DECL_RESULT (newdecl) = DECL_RESULT (olddecl); 2379 /* Don't clear out the arguments if we're just redeclaring a 2380 function. */ 2381 if (DECL_ARGUMENTS (olddecl)) 2382 DECL_ARGUMENTS (newdecl) = DECL_ARGUMENTS (olddecl); 2383 } 2384 } 2385 else if (TREE_CODE (newdecl) == NAMESPACE_DECL) 2386 NAMESPACE_LEVEL (newdecl) = NAMESPACE_LEVEL (olddecl); 2387 2388 /* Now preserve various other info from the definition. */ 2389 TREE_ADDRESSABLE (newdecl) = TREE_ADDRESSABLE (olddecl); 2390 TREE_ASM_WRITTEN (newdecl) = TREE_ASM_WRITTEN (olddecl); 2391 DECL_COMMON (newdecl) = DECL_COMMON (olddecl); 2392 COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl); 2393 2394 /* Warn about conflicting visibility specifications. */ 2395 if (DECL_VISIBILITY_SPECIFIED (olddecl) 2396 && DECL_VISIBILITY_SPECIFIED (newdecl) 2397 && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) 2398 { 2399 if (warning_at (DECL_SOURCE_LOCATION (newdecl), OPT_Wattributes, 2400 "%qD: visibility attribute ignored because it " 2401 "conflicts with previous declaration", newdecl)) 2402 inform (DECL_SOURCE_LOCATION (olddecl), 2403 "previous declaration of %qD", olddecl); 2404 } 2405 /* Choose the declaration which specified visibility. */ 2406 if (DECL_VISIBILITY_SPECIFIED (olddecl)) 2407 { 2408 DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); 2409 DECL_VISIBILITY_SPECIFIED (newdecl) = 1; 2410 } 2411 /* Init priority used to be merged from newdecl to olddecl by the memcpy, 2412 so keep this behavior. */ 2413 if (VAR_P (newdecl) && DECL_HAS_INIT_PRIORITY_P (newdecl)) 2414 { 2415 SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl)); 2416 DECL_HAS_INIT_PRIORITY_P (olddecl) = 1; 2417 } 2418 /* Likewise for DECL_ALIGN, DECL_USER_ALIGN and DECL_PACKED. */ 2419 if (DECL_ALIGN (olddecl) > DECL_ALIGN (newdecl)) 2420 { 2421 DECL_ALIGN (newdecl) = DECL_ALIGN (olddecl); 2422 DECL_USER_ALIGN (newdecl) |= DECL_USER_ALIGN (olddecl); 2423 } 2424 DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); 2425 if (TREE_CODE (newdecl) == FIELD_DECL) 2426 DECL_PACKED (olddecl) = DECL_PACKED (newdecl); 2427 2428 /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced 2429 with that from NEWDECL below. */ 2430 if (DECL_LANG_SPECIFIC (olddecl)) 2431 { 2432 gcc_assert (DECL_LANG_SPECIFIC (olddecl) 2433 != DECL_LANG_SPECIFIC (newdecl)); 2434 ggc_free (DECL_LANG_SPECIFIC (olddecl)); 2435 } 2436 2437 /* Merge the USED information. */ 2438 if (TREE_USED (olddecl)) 2439 TREE_USED (newdecl) = 1; 2440 else if (TREE_USED (newdecl)) 2441 TREE_USED (olddecl) = 1; 2442 if (VAR_P (newdecl)) 2443 { 2444 if (DECL_READ_P (olddecl)) 2445 DECL_READ_P (newdecl) = 1; 2446 else if (DECL_READ_P (newdecl)) 2447 DECL_READ_P (olddecl) = 1; 2448 } 2449 if (DECL_PRESERVE_P (olddecl)) 2450 DECL_PRESERVE_P (newdecl) = 1; 2451 else if (DECL_PRESERVE_P (newdecl)) 2452 DECL_PRESERVE_P (olddecl) = 1; 2453 2454 /* Merge the DECL_FUNCTION_VERSIONED information. newdecl will be copied 2455 to olddecl and deleted. */ 2456 if (TREE_CODE (newdecl) == FUNCTION_DECL 2457 && DECL_FUNCTION_VERSIONED (olddecl)) 2458 { 2459 /* Set the flag for newdecl so that it gets copied to olddecl. */ 2460 DECL_FUNCTION_VERSIONED (newdecl) = 1; 2461 /* newdecl will be purged after copying to olddecl and is no longer 2462 a version. */ 2463 cgraph_node::delete_function_version (newdecl); 2464 } 2465 2466 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2467 { 2468 int function_size; 2469 struct symtab_node *snode = symtab_node::get (olddecl); 2470 2471 function_size = sizeof (struct tree_decl_common); 2472 2473 memcpy ((char *) olddecl + sizeof (struct tree_common), 2474 (char *) newdecl + sizeof (struct tree_common), 2475 function_size - sizeof (struct tree_common)); 2476 2477 memcpy ((char *) olddecl + sizeof (struct tree_decl_common), 2478 (char *) newdecl + sizeof (struct tree_decl_common), 2479 sizeof (struct tree_function_decl) - sizeof (struct tree_decl_common)); 2480 2481 /* Preserve symtab node mapping. */ 2482 olddecl->decl_with_vis.symtab_node = snode; 2483 2484 if (new_template_info) 2485 /* If newdecl is a template instantiation, it is possible that 2486 the following sequence of events has occurred: 2487 2488 o A friend function was declared in a class template. The 2489 class template was instantiated. 2490 2491 o The instantiation of the friend declaration was 2492 recorded on the instantiation list, and is newdecl. 2493 2494 o Later, however, instantiate_class_template called pushdecl 2495 on the newdecl to perform name injection. But, pushdecl in 2496 turn called duplicate_decls when it discovered that another 2497 declaration of a global function with the same name already 2498 existed. 2499 2500 o Here, in duplicate_decls, we decided to clobber newdecl. 2501 2502 If we're going to do that, we'd better make sure that 2503 olddecl, and not newdecl, is on the list of 2504 instantiations so that if we try to do the instantiation 2505 again we won't get the clobbered declaration. */ 2506 reregister_specialization (newdecl, 2507 new_template_info, 2508 olddecl); 2509 } 2510 else 2511 { 2512 size_t size = tree_code_size (TREE_CODE (newdecl)); 2513 2514 memcpy ((char *) olddecl + sizeof (struct tree_common), 2515 (char *) newdecl + sizeof (struct tree_common), 2516 sizeof (struct tree_decl_common) - sizeof (struct tree_common)); 2517 switch (TREE_CODE (newdecl)) 2518 { 2519 case LABEL_DECL: 2520 case VAR_DECL: 2521 case RESULT_DECL: 2522 case PARM_DECL: 2523 case FIELD_DECL: 2524 case TYPE_DECL: 2525 case CONST_DECL: 2526 { 2527 struct symtab_node *snode = NULL; 2528 2529 if (TREE_CODE (newdecl) == VAR_DECL 2530 && (TREE_STATIC (olddecl) || TREE_PUBLIC (olddecl) || DECL_EXTERNAL (olddecl))) 2531 snode = symtab_node::get (olddecl); 2532 memcpy ((char *) olddecl + sizeof (struct tree_decl_common), 2533 (char *) newdecl + sizeof (struct tree_decl_common), 2534 size - sizeof (struct tree_decl_common) 2535 + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *)); 2536 if (TREE_CODE (newdecl) == VAR_DECL) 2537 olddecl->decl_with_vis.symtab_node = snode; 2538 } 2539 break; 2540 default: 2541 memcpy ((char *) olddecl + sizeof (struct tree_decl_common), 2542 (char *) newdecl + sizeof (struct tree_decl_common), 2543 sizeof (struct tree_decl_non_common) - sizeof (struct tree_decl_common) 2544 + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *)); 2545 break; 2546 } 2547 } 2548 2549 if (TREE_CODE (newdecl) == FUNCTION_DECL 2550 || TREE_CODE (newdecl) == VAR_DECL) 2551 { 2552 if (DECL_EXTERNAL (olddecl) 2553 || TREE_PUBLIC (olddecl) 2554 || TREE_STATIC (olddecl)) 2555 { 2556 /* Merge the section attribute. 2557 We want to issue an error if the sections conflict but that must be 2558 done later in decl_attributes since we are called before attributes 2559 are assigned. */ 2560 if (DECL_SECTION_NAME (newdecl) != NULL) 2561 set_decl_section_name (olddecl, DECL_SECTION_NAME (newdecl)); 2562 2563 if (DECL_ONE_ONLY (newdecl)) 2564 { 2565 struct symtab_node *oldsym, *newsym; 2566 if (TREE_CODE (olddecl) == FUNCTION_DECL) 2567 oldsym = cgraph_node::get_create (olddecl); 2568 else 2569 oldsym = varpool_node::get_create (olddecl); 2570 newsym = symtab_node::get (newdecl); 2571 oldsym->set_comdat_group (newsym->get_comdat_group ()); 2572 } 2573 } 2574 2575 if (TREE_CODE (newdecl) == VAR_DECL 2576 && DECL_THREAD_LOCAL_P (newdecl)) 2577 set_decl_tls_model (olddecl, DECL_TLS_MODEL (newdecl)); 2578 } 2579 2580 DECL_UID (olddecl) = olddecl_uid; 2581 if (olddecl_friend) 2582 DECL_FRIEND_P (olddecl) = 1; 2583 if (hidden_friend) 2584 { 2585 DECL_ANTICIPATED (olddecl) = 1; 2586 DECL_HIDDEN_FRIEND_P (olddecl) = 1; 2587 } 2588 2589 /* NEWDECL contains the merged attribute lists. 2590 Update OLDDECL to be the same. */ 2591 DECL_ATTRIBUTES (olddecl) = DECL_ATTRIBUTES (newdecl); 2592 2593 /* If OLDDECL had its DECL_RTL instantiated, re-invoke make_decl_rtl 2594 so that encode_section_info has a chance to look at the new decl 2595 flags and attributes. */ 2596 if (DECL_RTL_SET_P (olddecl) 2597 && (TREE_CODE (olddecl) == FUNCTION_DECL 2598 || (VAR_P (olddecl) 2599 && TREE_STATIC (olddecl)))) 2600 make_decl_rtl (olddecl); 2601 2602 /* The NEWDECL will no longer be needed. Because every out-of-class 2603 declaration of a member results in a call to duplicate_decls, 2604 freeing these nodes represents in a significant savings. 2605 2606 Before releasing the node, be sore to remove function from symbol 2607 table that might have been inserted there to record comdat group. 2608 Be sure to however do not free DECL_STRUCT_FUNCTION becuase this 2609 structure is shared in between newdecl and oldecl. */ 2610 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2611 DECL_STRUCT_FUNCTION (newdecl) = NULL; 2612 if (TREE_CODE (newdecl) == FUNCTION_DECL 2613 || TREE_CODE (newdecl) == VAR_DECL) 2614 { 2615 struct symtab_node *snode = symtab_node::get (newdecl); 2616 if (snode) 2617 snode->remove (); 2618 } 2619 ggc_free (newdecl); 2620 2621 return olddecl; 2622 } 2623 2624 /* Return zero if the declaration NEWDECL is valid 2625 when the declaration OLDDECL (assumed to be for the same name) 2626 has already been seen. 2627 Otherwise return an error message format string with a %s 2628 where the identifier should go. */ 2629 2630 static const char * 2631 redeclaration_error_message (tree newdecl, tree olddecl) 2632 { 2633 if (TREE_CODE (newdecl) == TYPE_DECL) 2634 { 2635 /* Because C++ can put things into name space for free, 2636 constructs like "typedef struct foo { ... } foo" 2637 would look like an erroneous redeclaration. */ 2638 if (same_type_p (TREE_TYPE (newdecl), TREE_TYPE (olddecl))) 2639 return NULL; 2640 else 2641 return G_("redefinition of %q#D"); 2642 } 2643 else if (TREE_CODE (newdecl) == FUNCTION_DECL) 2644 { 2645 /* If this is a pure function, its olddecl will actually be 2646 the original initialization to `0' (which we force to call 2647 abort()). Don't complain about redefinition in this case. */ 2648 if (DECL_LANG_SPECIFIC (olddecl) && DECL_PURE_VIRTUAL_P (olddecl) 2649 && DECL_INITIAL (olddecl) == NULL_TREE) 2650 return NULL; 2651 2652 /* If both functions come from different namespaces, this is not 2653 a redeclaration - this is a conflict with a used function. */ 2654 if (DECL_NAMESPACE_SCOPE_P (olddecl) 2655 && DECL_CONTEXT (olddecl) != DECL_CONTEXT (newdecl) 2656 && ! decls_match (olddecl, newdecl)) 2657 return G_("%qD conflicts with used function"); 2658 2659 /* We'll complain about linkage mismatches in 2660 warn_extern_redeclared_static. */ 2661 2662 /* Defining the same name twice is no good. */ 2663 if (DECL_INITIAL (olddecl) != NULL_TREE 2664 && DECL_INITIAL (newdecl) != NULL_TREE) 2665 { 2666 if (DECL_NAME (olddecl) == NULL_TREE) 2667 return G_("%q#D not declared in class"); 2668 else if (!GNU_INLINE_P (olddecl) 2669 || GNU_INLINE_P (newdecl)) 2670 return G_("redefinition of %q#D"); 2671 } 2672 2673 if (DECL_DECLARED_INLINE_P (olddecl) && DECL_DECLARED_INLINE_P (newdecl)) 2674 { 2675 bool olda = GNU_INLINE_P (olddecl); 2676 bool newa = GNU_INLINE_P (newdecl); 2677 2678 if (olda != newa) 2679 { 2680 if (newa) 2681 return G_("%q+D redeclared inline with " 2682 "%<gnu_inline%> attribute"); 2683 else 2684 return G_("%q+D redeclared inline without " 2685 "%<gnu_inline%> attribute"); 2686 } 2687 } 2688 2689 check_abi_tag_redeclaration 2690 (olddecl, lookup_attribute ("abi_tag", DECL_ATTRIBUTES (olddecl)), 2691 lookup_attribute ("abi_tag", DECL_ATTRIBUTES (newdecl))); 2692 2693 return NULL; 2694 } 2695 else if (TREE_CODE (newdecl) == TEMPLATE_DECL) 2696 { 2697 tree nt, ot; 2698 2699 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL) 2700 { 2701 if (COMPLETE_TYPE_P (TREE_TYPE (newdecl)) 2702 && COMPLETE_TYPE_P (TREE_TYPE (olddecl))) 2703 return G_("redefinition of %q#D"); 2704 return NULL; 2705 } 2706 2707 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != FUNCTION_DECL 2708 || (DECL_TEMPLATE_RESULT (newdecl) 2709 == DECL_TEMPLATE_RESULT (olddecl))) 2710 return NULL; 2711 2712 nt = DECL_TEMPLATE_RESULT (newdecl); 2713 if (DECL_TEMPLATE_INFO (nt)) 2714 nt = DECL_TEMPLATE_RESULT (template_for_substitution (nt)); 2715 ot = DECL_TEMPLATE_RESULT (olddecl); 2716 if (DECL_TEMPLATE_INFO (ot)) 2717 ot = DECL_TEMPLATE_RESULT (template_for_substitution (ot)); 2718 if (DECL_INITIAL (nt) && DECL_INITIAL (ot) 2719 && (!GNU_INLINE_P (ot) || GNU_INLINE_P (nt))) 2720 return G_("redefinition of %q#D"); 2721 2722 if (DECL_DECLARED_INLINE_P (ot) && DECL_DECLARED_INLINE_P (nt)) 2723 { 2724 bool olda = GNU_INLINE_P (ot); 2725 bool newa = GNU_INLINE_P (nt); 2726 2727 if (olda != newa) 2728 { 2729 if (newa) 2730 return G_("%q+D redeclared inline with " 2731 "%<gnu_inline%> attribute"); 2732 else 2733 return G_("%q+D redeclared inline without " 2734 "%<gnu_inline%> attribute"); 2735 } 2736 } 2737 2738 /* Core issue #226 (C++0x): 2739 2740 If a friend function template declaration specifies a 2741 default template-argument, that declaration shall be a 2742 definition and shall be the only declaration of the 2743 function template in the translation unit. */ 2744 if ((cxx_dialect != cxx98) 2745 && TREE_CODE (ot) == FUNCTION_DECL && DECL_FRIEND_P (ot) 2746 && !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl), 2747 /*is_primary=*/true, 2748 /*is_partial=*/false, 2749 /*is_friend_decl=*/2)) 2750 return G_("redeclaration of friend %q#D " 2751 "may not have default template arguments"); 2752 2753 return NULL; 2754 } 2755 else if (VAR_P (newdecl) 2756 && DECL_THREAD_LOCAL_P (newdecl) != DECL_THREAD_LOCAL_P (olddecl) 2757 && (! DECL_LANG_SPECIFIC (olddecl) 2758 || ! CP_DECL_THREADPRIVATE_P (olddecl) 2759 || DECL_THREAD_LOCAL_P (newdecl))) 2760 { 2761 /* Only variables can be thread-local, and all declarations must 2762 agree on this property. */ 2763 if (DECL_THREAD_LOCAL_P (newdecl)) 2764 return G_("thread-local declaration of %q#D follows " 2765 "non-thread-local declaration"); 2766 else 2767 return G_("non-thread-local declaration of %q#D follows " 2768 "thread-local declaration"); 2769 } 2770 else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl)) 2771 { 2772 /* The objects have been declared at namespace scope. If either 2773 is a member of an anonymous union, then this is an invalid 2774 redeclaration. For example: 2775 2776 int i; 2777 union { int i; }; 2778 2779 is invalid. */ 2780 if ((VAR_P (newdecl) && DECL_ANON_UNION_VAR_P (newdecl)) 2781 || (VAR_P (olddecl) && DECL_ANON_UNION_VAR_P (olddecl))) 2782 return G_("redeclaration of %q#D"); 2783 /* If at least one declaration is a reference, there is no 2784 conflict. For example: 2785 2786 int i = 3; 2787 extern int i; 2788 2789 is valid. */ 2790 if (DECL_EXTERNAL (newdecl) || DECL_EXTERNAL (olddecl)) 2791 return NULL; 2792 /* Reject two definitions. */ 2793 return G_("redefinition of %q#D"); 2794 } 2795 else 2796 { 2797 /* Objects declared with block scope: */ 2798 /* Reject two definitions, and reject a definition 2799 together with an external reference. */ 2800 if (!(DECL_EXTERNAL (newdecl) && DECL_EXTERNAL (olddecl))) 2801 return G_("redeclaration of %q#D"); 2802 return NULL; 2803 } 2804 } 2805 2806 /* Hash and equality functions for the named_label table. */ 2807 2808 hashval_t 2809 named_label_hasher::hash (named_label_entry *ent) 2810 { 2811 return DECL_UID (ent->label_decl); 2812 } 2813 2814 bool 2815 named_label_hasher::equal (named_label_entry *a, named_label_entry *b) 2816 { 2817 return a->label_decl == b->label_decl; 2818 } 2819 2820 /* Create a new label, named ID. */ 2821 2822 static tree 2823 make_label_decl (tree id, int local_p) 2824 { 2825 struct named_label_entry *ent; 2826 tree decl; 2827 2828 decl = build_decl (input_location, LABEL_DECL, id, void_type_node); 2829 2830 DECL_CONTEXT (decl) = current_function_decl; 2831 DECL_MODE (decl) = VOIDmode; 2832 C_DECLARED_LABEL_FLAG (decl) = local_p; 2833 2834 /* Say where one reference is to the label, for the sake of the 2835 error if it is not defined. */ 2836 DECL_SOURCE_LOCATION (decl) = input_location; 2837 2838 /* Record the fact that this identifier is bound to this label. */ 2839 SET_IDENTIFIER_LABEL_VALUE (id, decl); 2840 2841 /* Create the label htab for the function on demand. */ 2842 if (!named_labels) 2843 named_labels = hash_table<named_label_hasher>::create_ggc (13); 2844 2845 /* Record this label on the list of labels used in this function. 2846 We do this before calling make_label_decl so that we get the 2847 IDENTIFIER_LABEL_VALUE before the new label is declared. */ 2848 ent = ggc_cleared_alloc<named_label_entry> (); 2849 ent->label_decl = decl; 2850 2851 named_label_entry **slot = named_labels->find_slot (ent, INSERT); 2852 gcc_assert (*slot == NULL); 2853 *slot = ent; 2854 2855 return decl; 2856 } 2857 2858 /* Look for a label named ID in the current function. If one cannot 2859 be found, create one. (We keep track of used, but undefined, 2860 labels, and complain about them at the end of a function.) */ 2861 2862 static tree 2863 lookup_label_1 (tree id) 2864 { 2865 tree decl; 2866 2867 /* You can't use labels at global scope. */ 2868 if (current_function_decl == NULL_TREE) 2869 { 2870 error ("label %qE referenced outside of any function", id); 2871 return NULL_TREE; 2872 } 2873 2874 /* See if we've already got this label. */ 2875 decl = IDENTIFIER_LABEL_VALUE (id); 2876 if (decl != NULL_TREE && DECL_CONTEXT (decl) == current_function_decl) 2877 return decl; 2878 2879 decl = make_label_decl (id, /*local_p=*/0); 2880 return decl; 2881 } 2882 2883 /* Wrapper for lookup_label_1. */ 2884 2885 tree 2886 lookup_label (tree id) 2887 { 2888 tree ret; 2889 bool subtime = timevar_cond_start (TV_NAME_LOOKUP); 2890 ret = lookup_label_1 (id); 2891 timevar_cond_stop (TV_NAME_LOOKUP, subtime); 2892 return ret; 2893 } 2894 2895 /* Declare a local label named ID. */ 2896 2897 tree 2898 declare_local_label (tree id) 2899 { 2900 tree decl; 2901 cp_label_binding bind; 2902 2903 /* Add a new entry to the SHADOWED_LABELS list so that when we leave 2904 this scope we can restore the old value of IDENTIFIER_TYPE_VALUE. */ 2905 bind.prev_value = IDENTIFIER_LABEL_VALUE (id); 2906 2907 decl = make_label_decl (id, /*local_p=*/1); 2908 bind.label = decl; 2909 vec_safe_push (current_binding_level->shadowed_labels, bind); 2910 2911 return decl; 2912 } 2913 2914 /* Returns nonzero if it is ill-formed to jump past the declaration of 2915 DECL. Returns 2 if it's also a real problem. */ 2916 2917 static int 2918 decl_jump_unsafe (tree decl) 2919 { 2920 /* [stmt.dcl]/3: A program that jumps from a point where a local variable 2921 with automatic storage duration is not in scope to a point where it is 2922 in scope is ill-formed unless the variable has scalar type, class type 2923 with a trivial default constructor and a trivial destructor, a 2924 cv-qualified version of one of these types, or an array of one of the 2925 preceding types and is declared without an initializer (8.5). */ 2926 tree type = TREE_TYPE (decl); 2927 2928 if (!VAR_P (decl) || TREE_STATIC (decl) 2929 || type == error_mark_node) 2930 return 0; 2931 2932 if (DECL_NONTRIVIALLY_INITIALIZED_P (decl) 2933 || variably_modified_type_p (type, NULL_TREE)) 2934 return 2; 2935 2936 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) 2937 return 1; 2938 2939 return 0; 2940 } 2941 2942 /* A subroutine of check_previous_goto_1 and check_goto to identify a branch 2943 to the user. */ 2944 2945 static bool 2946 identify_goto (tree decl, location_t loc, const location_t *locus, 2947 diagnostic_t diag_kind) 2948 { 2949 bool complained 2950 = (decl ? emit_diagnostic (diag_kind, loc, 0, "jump to label %qD", decl) 2951 : emit_diagnostic (diag_kind, loc, 0, "jump to case label")); 2952 if (complained && locus) 2953 inform (*locus, " from here"); 2954 return complained; 2955 } 2956 2957 /* Check that a single previously seen jump to a newly defined label 2958 is OK. DECL is the LABEL_DECL or 0; LEVEL is the binding_level for 2959 the jump context; NAMES are the names in scope in LEVEL at the jump 2960 context; LOCUS is the source position of the jump or 0. Returns 2961 true if all is well. */ 2962 2963 static bool 2964 check_previous_goto_1 (tree decl, cp_binding_level* level, tree names, 2965 bool exited_omp, const location_t *locus) 2966 { 2967 cp_binding_level *b; 2968 bool complained = false; 2969 int identified = 0; 2970 bool saw_eh = false, saw_omp = false; 2971 2972 if (exited_omp) 2973 { 2974 complained = identify_goto (decl, input_location, locus, DK_ERROR); 2975 if (complained) 2976 inform (input_location, " exits OpenMP structured block"); 2977 saw_omp = true; 2978 identified = 2; 2979 } 2980 2981 for (b = current_binding_level; b ; b = b->level_chain) 2982 { 2983 tree new_decls, old_decls = (b == level ? names : NULL_TREE); 2984 2985 for (new_decls = b->names; new_decls != old_decls; 2986 new_decls = (DECL_P (new_decls) ? DECL_CHAIN (new_decls) 2987 : TREE_CHAIN (new_decls))) 2988 { 2989 int problem = decl_jump_unsafe (new_decls); 2990 if (! problem) 2991 continue; 2992 2993 if (!identified) 2994 { 2995 complained = identify_goto (decl, input_location, locus, 2996 DK_PERMERROR); 2997 identified = 1; 2998 } 2999 if (complained) 3000 { 3001 if (problem > 1) 3002 inform (input_location, 3003 " crosses initialization of %q+#D", new_decls); 3004 else 3005 inform (input_location, " enters scope of %q+#D which has " 3006 "non-trivial destructor", new_decls); 3007 } 3008 } 3009 3010 if (b == level) 3011 break; 3012 if ((b->kind == sk_try || b->kind == sk_catch) && !saw_eh) 3013 { 3014 if (identified < 2) 3015 { 3016 complained = identify_goto (decl, input_location, locus, 3017 DK_ERROR); 3018 identified = 2; 3019 } 3020 if (complained) 3021 { 3022 if (b->kind == sk_try) 3023 inform (input_location, " enters try block"); 3024 else 3025 inform (input_location, " enters catch block"); 3026 } 3027 saw_eh = true; 3028 } 3029 if (b->kind == sk_omp && !saw_omp) 3030 { 3031 if (identified < 2) 3032 { 3033 complained = identify_goto (decl, input_location, locus, 3034 DK_ERROR); 3035 identified = 2; 3036 } 3037 if (complained) 3038 inform (input_location, " enters OpenMP structured block"); 3039 saw_omp = true; 3040 } 3041 } 3042 3043 return !identified; 3044 } 3045 3046 static void 3047 check_previous_goto (tree decl, struct named_label_use_entry *use) 3048 { 3049 check_previous_goto_1 (decl, use->binding_level, 3050 use->names_in_scope, use->in_omp_scope, 3051 &use->o_goto_locus); 3052 } 3053 3054 static bool 3055 check_switch_goto (cp_binding_level* level) 3056 { 3057 return check_previous_goto_1 (NULL_TREE, level, level->names, false, NULL); 3058 } 3059 3060 /* Check that a new jump to a label DECL is OK. Called by 3061 finish_goto_stmt. */ 3062 3063 void 3064 check_goto (tree decl) 3065 { 3066 struct named_label_entry *ent, dummy; 3067 bool saw_catch = false, complained = false; 3068 int identified = 0; 3069 tree bad; 3070 unsigned ix; 3071 3072 /* We can't know where a computed goto is jumping. 3073 So we assume that it's OK. */ 3074 if (TREE_CODE (decl) != LABEL_DECL) 3075 return; 3076 3077 /* We didn't record any information about this label when we created it, 3078 and there's not much point since it's trivial to analyze as a return. */ 3079 if (decl == cdtor_label) 3080 return; 3081 3082 dummy.label_decl = decl; 3083 ent = named_labels->find (&dummy); 3084 gcc_assert (ent != NULL); 3085 3086 /* If the label hasn't been defined yet, defer checking. */ 3087 if (! DECL_INITIAL (decl)) 3088 { 3089 struct named_label_use_entry *new_use; 3090 3091 /* Don't bother creating another use if the last goto had the 3092 same data, and will therefore create the same set of errors. */ 3093 if (ent->uses 3094 && ent->uses->names_in_scope == current_binding_level->names) 3095 return; 3096 3097 new_use = ggc_alloc<named_label_use_entry> (); 3098 new_use->binding_level = current_binding_level; 3099 new_use->names_in_scope = current_binding_level->names; 3100 new_use->o_goto_locus = input_location; 3101 new_use->in_omp_scope = false; 3102 3103 new_use->next = ent->uses; 3104 ent->uses = new_use; 3105 return; 3106 } 3107 3108 if (ent->in_try_scope || ent->in_catch_scope 3109 || ent->in_omp_scope || !vec_safe_is_empty (ent->bad_decls)) 3110 { 3111 diagnostic_t diag_kind = DK_PERMERROR; 3112 if (ent->in_try_scope || ent->in_catch_scope || ent->in_omp_scope) 3113 diag_kind = DK_ERROR; 3114 complained = identify_goto (decl, DECL_SOURCE_LOCATION (decl), 3115 &input_location, diag_kind); 3116 identified = 1 + (diag_kind == DK_ERROR); 3117 } 3118 3119 FOR_EACH_VEC_SAFE_ELT (ent->bad_decls, ix, bad) 3120 { 3121 int u = decl_jump_unsafe (bad); 3122 3123 if (u > 1 && DECL_ARTIFICIAL (bad)) 3124 { 3125 /* Can't skip init of __exception_info. */ 3126 if (identified == 1) 3127 { 3128 complained = identify_goto (decl, DECL_SOURCE_LOCATION (decl), 3129 &input_location, DK_ERROR); 3130 identified = 2; 3131 } 3132 if (complained) 3133 inform (DECL_SOURCE_LOCATION (bad), " enters catch block"); 3134 saw_catch = true; 3135 } 3136 else if (complained) 3137 { 3138 if (u > 1) 3139 inform (input_location, " skips initialization of %q+#D", bad); 3140 else 3141 inform (input_location, " enters scope of %q+#D which has " 3142 "non-trivial destructor", bad); 3143 } 3144 } 3145 3146 if (complained) 3147 { 3148 if (ent->in_try_scope) 3149 inform (input_location, " enters try block"); 3150 else if (ent->in_catch_scope && !saw_catch) 3151 inform (input_location, " enters catch block"); 3152 } 3153 3154 if (ent->in_omp_scope) 3155 { 3156 if (complained) 3157 inform (input_location, " enters OpenMP structured block"); 3158 } 3159 else if (flag_openmp) 3160 { 3161 cp_binding_level *b; 3162 for (b = current_binding_level; b ; b = b->level_chain) 3163 { 3164 if (b == ent->binding_level) 3165 break; 3166 if (b->kind == sk_omp) 3167 { 3168 if (identified < 2) 3169 { 3170 complained = identify_goto (decl, 3171 DECL_SOURCE_LOCATION (decl), 3172 &input_location, DK_ERROR); 3173 identified = 2; 3174 } 3175 if (complained) 3176 inform (input_location, " exits OpenMP structured block"); 3177 break; 3178 } 3179 } 3180 } 3181 } 3182 3183 /* Check that a return is ok wrt OpenMP structured blocks. 3184 Called by finish_return_stmt. Returns true if all is well. */ 3185 3186 bool 3187 check_omp_return (void) 3188 { 3189 cp_binding_level *b; 3190 for (b = current_binding_level; b ; b = b->level_chain) 3191 if (b->kind == sk_omp) 3192 { 3193 error ("invalid exit from OpenMP structured block"); 3194 return false; 3195 } 3196 else if (b->kind == sk_function_parms) 3197 break; 3198 return true; 3199 } 3200 3201 /* Define a label, specifying the location in the source file. 3202 Return the LABEL_DECL node for the label. */ 3203 3204 static tree 3205 define_label_1 (location_t location, tree name) 3206 { 3207 struct named_label_entry *ent, dummy; 3208 cp_binding_level *p; 3209 tree decl; 3210 3211 decl = lookup_label (name); 3212 3213 dummy.label_decl = decl; 3214 ent = named_labels->find (&dummy); 3215 gcc_assert (ent != NULL); 3216 3217 /* After labels, make any new cleanups in the function go into their 3218 own new (temporary) binding contour. */ 3219 for (p = current_binding_level; 3220 p->kind != sk_function_parms; 3221 p = p->level_chain) 3222 p->more_cleanups_ok = 0; 3223 3224 if (name == get_identifier ("wchar_t")) 3225 permerror (input_location, "label named wchar_t"); 3226 3227 if (DECL_INITIAL (decl) != NULL_TREE) 3228 { 3229 error ("duplicate label %qD", decl); 3230 return error_mark_node; 3231 } 3232 else 3233 { 3234 struct named_label_use_entry *use; 3235 3236 /* Mark label as having been defined. */ 3237 DECL_INITIAL (decl) = error_mark_node; 3238 /* Say where in the source. */ 3239 DECL_SOURCE_LOCATION (decl) = location; 3240 3241 ent->binding_level = current_binding_level; 3242 ent->names_in_scope = current_binding_level->names; 3243 3244 for (use = ent->uses; use ; use = use->next) 3245 check_previous_goto (decl, use); 3246 ent->uses = NULL; 3247 } 3248 3249 return decl; 3250 } 3251 3252 /* Wrapper for define_label_1. */ 3253 3254 tree 3255 define_label (location_t location, tree name) 3256 { 3257 tree ret; 3258 bool running = timevar_cond_start (TV_NAME_LOOKUP); 3259 ret = define_label_1 (location, name); 3260 timevar_cond_stop (TV_NAME_LOOKUP, running); 3261 return ret; 3262 } 3263 3264 3265 struct cp_switch 3266 { 3267 cp_binding_level *level; 3268 struct cp_switch *next; 3269 /* The SWITCH_STMT being built. */ 3270 tree switch_stmt; 3271 /* A splay-tree mapping the low element of a case range to the high 3272 element, or NULL_TREE if there is no high element. Used to 3273 determine whether or not a new case label duplicates an old case 3274 label. We need a tree, rather than simply a hash table, because 3275 of the GNU case range extension. */ 3276 splay_tree cases; 3277 }; 3278 3279 /* A stack of the currently active switch statements. The innermost 3280 switch statement is on the top of the stack. There is no need to 3281 mark the stack for garbage collection because it is only active 3282 during the processing of the body of a function, and we never 3283 collect at that point. */ 3284 3285 static struct cp_switch *switch_stack; 3286 3287 /* Called right after a switch-statement condition is parsed. 3288 SWITCH_STMT is the switch statement being parsed. */ 3289 3290 void 3291 push_switch (tree switch_stmt) 3292 { 3293 struct cp_switch *p = XNEW (struct cp_switch); 3294 p->level = current_binding_level; 3295 p->next = switch_stack; 3296 p->switch_stmt = switch_stmt; 3297 p->cases = splay_tree_new (case_compare, NULL, NULL); 3298 switch_stack = p; 3299 } 3300 3301 void 3302 pop_switch (void) 3303 { 3304 struct cp_switch *cs = switch_stack; 3305 location_t switch_location; 3306 3307 /* Emit warnings as needed. */ 3308 switch_location = EXPR_LOC_OR_LOC (cs->switch_stmt, input_location); 3309 if (!processing_template_decl) 3310 c_do_switch_warnings (cs->cases, switch_location, 3311 SWITCH_STMT_TYPE (cs->switch_stmt), 3312 SWITCH_STMT_COND (cs->switch_stmt)); 3313 3314 splay_tree_delete (cs->cases); 3315 switch_stack = switch_stack->next; 3316 free (cs); 3317 } 3318 3319 /* Convert a case constant VALUE in a switch to the type TYPE of the switch 3320 condition. Note that if TYPE and VALUE are already integral we don't 3321 really do the conversion because the language-independent 3322 warning/optimization code will work better that way. */ 3323 3324 static tree 3325 case_conversion (tree type, tree value) 3326 { 3327 if (value == NULL_TREE) 3328 return value; 3329 3330 if (cxx_dialect >= cxx11 3331 && (SCOPED_ENUM_P (type) 3332 || !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (value)))) 3333 { 3334 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) 3335 type = type_promotes_to (type); 3336 value = (perform_implicit_conversion_flags 3337 (type, value, tf_warning_or_error, 3338 LOOKUP_IMPLICIT | LOOKUP_NO_NON_INTEGRAL)); 3339 } 3340 return cxx_constant_value (value); 3341 } 3342 3343 /* Note that we've seen a definition of a case label, and complain if this 3344 is a bad place for one. */ 3345 3346 tree 3347 finish_case_label (location_t loc, tree low_value, tree high_value) 3348 { 3349 tree cond, r; 3350 cp_binding_level *p; 3351 tree type; 3352 3353 if (processing_template_decl) 3354 { 3355 tree label; 3356 3357 /* For templates, just add the case label; we'll do semantic 3358 analysis at instantiation-time. */ 3359 label = build_decl (loc, LABEL_DECL, NULL_TREE, NULL_TREE); 3360 return add_stmt (build_case_label (low_value, high_value, label)); 3361 } 3362 3363 /* Find the condition on which this switch statement depends. */ 3364 cond = SWITCH_STMT_COND (switch_stack->switch_stmt); 3365 if (cond && TREE_CODE (cond) == TREE_LIST) 3366 cond = TREE_VALUE (cond); 3367 3368 if (!check_switch_goto (switch_stack->level)) 3369 return error_mark_node; 3370 3371 type = SWITCH_STMT_TYPE (switch_stack->switch_stmt); 3372 3373 low_value = case_conversion (type, low_value); 3374 high_value = case_conversion (type, high_value); 3375 3376 r = c_add_case_label (loc, switch_stack->cases, cond, type, 3377 low_value, high_value); 3378 3379 /* After labels, make any new cleanups in the function go into their 3380 own new (temporary) binding contour. */ 3381 for (p = current_binding_level; 3382 p->kind != sk_function_parms; 3383 p = p->level_chain) 3384 p->more_cleanups_ok = 0; 3385 3386 return r; 3387 } 3388 3389 struct typename_info { 3390 tree scope; 3391 tree name; 3392 tree template_id; 3393 bool enum_p; 3394 bool class_p; 3395 }; 3396 3397 struct typename_hasher : ggc_hasher<tree> 3398 { 3399 typedef typename_info *compare_type; 3400 3401 /* Hash a TYPENAME_TYPE. */ 3402 3403 static hashval_t 3404 hash (tree t) 3405 { 3406 hashval_t hash; 3407 3408 hash = (htab_hash_pointer (TYPE_CONTEXT (t)) 3409 ^ htab_hash_pointer (TYPE_IDENTIFIER (t))); 3410 3411 return hash; 3412 } 3413 3414 /* Compare two TYPENAME_TYPEs. */ 3415 3416 static bool 3417 equal (tree t1, const typename_info *t2) 3418 { 3419 return (TYPE_IDENTIFIER (t1) == t2->name 3420 && TYPE_CONTEXT (t1) == t2->scope 3421 && TYPENAME_TYPE_FULLNAME (t1) == t2->template_id 3422 && TYPENAME_IS_ENUM_P (t1) == t2->enum_p 3423 && TYPENAME_IS_CLASS_P (t1) == t2->class_p); 3424 } 3425 }; 3426 3427 /* Build a TYPENAME_TYPE. If the type is `typename T::t', CONTEXT is 3428 the type of `T', NAME is the IDENTIFIER_NODE for `t'. 3429 3430 Returns the new TYPENAME_TYPE. */ 3431 3432 static GTY (()) hash_table<typename_hasher> *typename_htab; 3433 3434 static tree 3435 build_typename_type (tree context, tree name, tree fullname, 3436 enum tag_types tag_type) 3437 { 3438 tree t; 3439 tree d; 3440 typename_info ti; 3441 tree *e; 3442 hashval_t hash; 3443 3444 if (typename_htab == NULL) 3445 typename_htab = hash_table<typename_hasher>::create_ggc (61); 3446 3447 ti.scope = FROB_CONTEXT (context); 3448 ti.name = name; 3449 ti.template_id = fullname; 3450 ti.enum_p = tag_type == enum_type; 3451 ti.class_p = (tag_type == class_type 3452 || tag_type == record_type 3453 || tag_type == union_type); 3454 hash = (htab_hash_pointer (ti.scope) 3455 ^ htab_hash_pointer (ti.name)); 3456 3457 /* See if we already have this type. */ 3458 e = typename_htab->find_slot_with_hash (&ti, hash, INSERT); 3459 if (*e) 3460 t = *e; 3461 else 3462 { 3463 /* Build the TYPENAME_TYPE. */ 3464 t = cxx_make_type (TYPENAME_TYPE); 3465 TYPE_CONTEXT (t) = ti.scope; 3466 TYPENAME_TYPE_FULLNAME (t) = ti.template_id; 3467 TYPENAME_IS_ENUM_P (t) = ti.enum_p; 3468 TYPENAME_IS_CLASS_P (t) = ti.class_p; 3469 3470 /* Build the corresponding TYPE_DECL. */ 3471 d = build_decl (input_location, TYPE_DECL, name, t); 3472 TYPE_NAME (TREE_TYPE (d)) = d; 3473 TYPE_STUB_DECL (TREE_TYPE (d)) = d; 3474 DECL_CONTEXT (d) = FROB_CONTEXT (context); 3475 DECL_ARTIFICIAL (d) = 1; 3476 3477 /* Store it in the hash table. */ 3478 *e = t; 3479 3480 /* TYPENAME_TYPEs must always be compared structurally, because 3481 they may or may not resolve down to another type depending on 3482 the currently open classes. */ 3483 SET_TYPE_STRUCTURAL_EQUALITY (t); 3484 } 3485 3486 return t; 3487 } 3488 3489 /* Resolve `typename CONTEXT::NAME'. TAG_TYPE indicates the tag 3490 provided to name the type. Returns an appropriate type, unless an 3491 error occurs, in which case error_mark_node is returned. If we 3492 locate a non-artificial TYPE_DECL and TF_KEEP_TYPE_DECL is set, we 3493 return that, rather than the _TYPE it corresponds to, in other 3494 cases we look through the type decl. If TF_ERROR is set, complain 3495 about errors, otherwise be quiet. */ 3496 3497 tree 3498 make_typename_type (tree context, tree name, enum tag_types tag_type, 3499 tsubst_flags_t complain) 3500 { 3501 tree fullname; 3502 tree t; 3503 bool want_template; 3504 3505 if (name == error_mark_node 3506 || context == NULL_TREE 3507 || context == error_mark_node) 3508 return error_mark_node; 3509 3510 if (TYPE_P (name)) 3511 { 3512 if (!(TYPE_LANG_SPECIFIC (name) 3513 && (CLASSTYPE_IS_TEMPLATE (name) 3514 || CLASSTYPE_USE_TEMPLATE (name)))) 3515 name = TYPE_IDENTIFIER (name); 3516 else 3517 /* Create a TEMPLATE_ID_EXPR for the type. */ 3518 name = build_nt (TEMPLATE_ID_EXPR, 3519 CLASSTYPE_TI_TEMPLATE (name), 3520 CLASSTYPE_TI_ARGS (name)); 3521 } 3522 else if (TREE_CODE (name) == TYPE_DECL) 3523 name = DECL_NAME (name); 3524 3525 fullname = name; 3526 3527 if (TREE_CODE (name) == TEMPLATE_ID_EXPR) 3528 { 3529 name = TREE_OPERAND (name, 0); 3530 if (DECL_TYPE_TEMPLATE_P (name)) 3531 name = TREE_OPERAND (fullname, 0) = DECL_NAME (name); 3532 if (TREE_CODE (name) != IDENTIFIER_NODE) 3533 { 3534 if (complain & tf_error) 3535 error ("%qD is not a type", name); 3536 return error_mark_node; 3537 } 3538 } 3539 if (TREE_CODE (name) == TEMPLATE_DECL) 3540 { 3541 if (complain & tf_error) 3542 error ("%qD used without template parameters", name); 3543 return error_mark_node; 3544 } 3545 gcc_assert (identifier_p (name)); 3546 gcc_assert (TYPE_P (context)); 3547 3548 if (!MAYBE_CLASS_TYPE_P (context)) 3549 { 3550 if (complain & tf_error) 3551 error ("%q#T is not a class", context); 3552 return error_mark_node; 3553 } 3554 3555 /* When the CONTEXT is a dependent type, NAME could refer to a 3556 dependent base class of CONTEXT. But look inside it anyway 3557 if CONTEXT is a currently open scope, in case it refers to a 3558 member of the current instantiation or a non-dependent base; 3559 lookup will stop when we hit a dependent base. */ 3560 if (!dependent_scope_p (context)) 3561 /* We should only set WANT_TYPE when we're a nested typename type. 3562 Then we can give better diagnostics if we find a non-type. */ 3563 t = lookup_field (context, name, 2, /*want_type=*/true); 3564 else 3565 t = NULL_TREE; 3566 3567 if ((!t || TREE_CODE (t) == TREE_LIST) && dependent_type_p (context)) 3568 return build_typename_type (context, name, fullname, tag_type); 3569 3570 want_template = TREE_CODE (fullname) == TEMPLATE_ID_EXPR; 3571 3572 if (!t) 3573 { 3574 if (complain & tf_error) 3575 error (want_template ? G_("no class template named %q#T in %q#T") 3576 : G_("no type named %q#T in %q#T"), name, context); 3577 return error_mark_node; 3578 } 3579 3580 /* Pull out the template from an injected-class-name (or multiple). */ 3581 if (want_template) 3582 t = maybe_get_template_decl_from_type_decl (t); 3583 3584 if (TREE_CODE (t) == TREE_LIST) 3585 { 3586 if (complain & tf_error) 3587 { 3588 error ("lookup of %qT in %qT is ambiguous", name, context); 3589 print_candidates (t); 3590 } 3591 return error_mark_node; 3592 } 3593 3594 if (want_template && !DECL_TYPE_TEMPLATE_P (t)) 3595 { 3596 if (complain & tf_error) 3597 error ("%<typename %T::%D%> names %q#T, which is not a class template", 3598 context, name, t); 3599 return error_mark_node; 3600 } 3601 if (!want_template && TREE_CODE (t) != TYPE_DECL) 3602 { 3603 if (complain & tf_error) 3604 error ("%<typename %T::%D%> names %q#T, which is not a type", 3605 context, name, t); 3606 return error_mark_node; 3607 } 3608 3609 if (!perform_or_defer_access_check (TYPE_BINFO (context), t, t, complain)) 3610 return error_mark_node; 3611 3612 /* If we are currently parsing a template and if T is a typedef accessed 3613 through CONTEXT then we need to remember and check access of T at 3614 template instantiation time. */ 3615 add_typedef_to_current_template_for_access_check (t, context, input_location); 3616 3617 if (want_template) 3618 return lookup_template_class (t, TREE_OPERAND (fullname, 1), 3619 NULL_TREE, context, 3620 /*entering_scope=*/0, 3621 complain | tf_user); 3622 3623 if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl)) 3624 t = TREE_TYPE (t); 3625 3626 maybe_record_typedef_use (t); 3627 3628 return t; 3629 } 3630 3631 /* Resolve `CONTEXT::template NAME'. Returns a TEMPLATE_DECL if the name 3632 can be resolved or an UNBOUND_CLASS_TEMPLATE, unless an error occurs, 3633 in which case error_mark_node is returned. 3634 3635 If PARM_LIST is non-NULL, also make sure that the template parameter 3636 list of TEMPLATE_DECL matches. 3637 3638 If COMPLAIN zero, don't complain about any errors that occur. */ 3639 3640 tree 3641 make_unbound_class_template (tree context, tree name, tree parm_list, 3642 tsubst_flags_t complain) 3643 { 3644 tree t; 3645 tree d; 3646 3647 if (TYPE_P (name)) 3648 name = TYPE_IDENTIFIER (name); 3649 else if (DECL_P (name)) 3650 name = DECL_NAME (name); 3651 gcc_assert (identifier_p (name)); 3652 3653 if (!dependent_type_p (context) 3654 || currently_open_class (context)) 3655 { 3656 tree tmpl = NULL_TREE; 3657 3658 if (MAYBE_CLASS_TYPE_P (context)) 3659 tmpl = lookup_field (context, name, 0, false); 3660 3661 if (tmpl && TREE_CODE (tmpl) == TYPE_DECL) 3662 tmpl = maybe_get_template_decl_from_type_decl (tmpl); 3663 3664 if (!tmpl || !DECL_TYPE_TEMPLATE_P (tmpl)) 3665 { 3666 if (complain & tf_error) 3667 error ("no class template named %q#T in %q#T", name, context); 3668 return error_mark_node; 3669 } 3670 3671 if (parm_list 3672 && !comp_template_parms (DECL_TEMPLATE_PARMS (tmpl), parm_list)) 3673 { 3674 if (complain & tf_error) 3675 { 3676 error ("template parameters do not match template %qD", tmpl); 3677 inform (DECL_SOURCE_LOCATION (tmpl), 3678 "%qD declared here", tmpl); 3679 } 3680 return error_mark_node; 3681 } 3682 3683 if (!perform_or_defer_access_check (TYPE_BINFO (context), tmpl, tmpl, 3684 complain)) 3685 return error_mark_node; 3686 3687 return tmpl; 3688 } 3689 3690 /* Build the UNBOUND_CLASS_TEMPLATE. */ 3691 t = cxx_make_type (UNBOUND_CLASS_TEMPLATE); 3692 TYPE_CONTEXT (t) = FROB_CONTEXT (context); 3693 TREE_TYPE (t) = NULL_TREE; 3694 SET_TYPE_STRUCTURAL_EQUALITY (t); 3695 3696 /* Build the corresponding TEMPLATE_DECL. */ 3697 d = build_decl (input_location, TEMPLATE_DECL, name, t); 3698 TYPE_NAME (TREE_TYPE (d)) = d; 3699 TYPE_STUB_DECL (TREE_TYPE (d)) = d; 3700 DECL_CONTEXT (d) = FROB_CONTEXT (context); 3701 DECL_ARTIFICIAL (d) = 1; 3702 DECL_TEMPLATE_PARMS (d) = parm_list; 3703 3704 return t; 3705 } 3706 3707 3708 3709 /* Push the declarations of builtin types into the namespace. 3710 RID_INDEX is the index of the builtin type in the array 3711 RID_POINTERS. NAME is the name used when looking up the builtin 3712 type. TYPE is the _TYPE node for the builtin type. */ 3713 3714 void 3715 record_builtin_type (enum rid rid_index, 3716 const char* name, 3717 tree type) 3718 { 3719 tree rname = NULL_TREE, tname = NULL_TREE; 3720 tree tdecl = NULL_TREE; 3721 3722 if ((int) rid_index < (int) RID_MAX) 3723 rname = ridpointers[(int) rid_index]; 3724 if (name) 3725 tname = get_identifier (name); 3726 3727 /* The calls to SET_IDENTIFIER_GLOBAL_VALUE below should be 3728 eliminated. Built-in types should not be looked up name; their 3729 names are keywords that the parser can recognize. However, there 3730 is code in c-common.c that uses identifier_global_value to look 3731 up built-in types by name. */ 3732 if (tname) 3733 { 3734 tdecl = build_decl (BUILTINS_LOCATION, TYPE_DECL, tname, type); 3735 DECL_ARTIFICIAL (tdecl) = 1; 3736 SET_IDENTIFIER_GLOBAL_VALUE (tname, tdecl); 3737 } 3738 if (rname) 3739 { 3740 if (!tdecl) 3741 { 3742 tdecl = build_decl (BUILTINS_LOCATION, TYPE_DECL, rname, type); 3743 DECL_ARTIFICIAL (tdecl) = 1; 3744 } 3745 SET_IDENTIFIER_GLOBAL_VALUE (rname, tdecl); 3746 } 3747 3748 if (!TYPE_NAME (type)) 3749 TYPE_NAME (type) = tdecl; 3750 3751 if (tdecl) 3752 debug_hooks->type_decl (tdecl, 0); 3753 } 3754 3755 /* Record one of the standard Java types. 3756 * Declare it as having the given NAME. 3757 * If SIZE > 0, it is the size of one of the integral types; 3758 * otherwise it is the negative of the size of one of the other types. */ 3759 3760 static tree 3761 record_builtin_java_type (const char* name, int size) 3762 { 3763 tree type, decl; 3764 if (size > 0) 3765 { 3766 type = build_nonstandard_integer_type (size, 0); 3767 type = build_distinct_type_copy (type); 3768 } 3769 else if (size > -32) 3770 { 3771 tree stype; 3772 /* "__java_char" or ""__java_boolean". */ 3773 type = build_nonstandard_integer_type (-size, 1); 3774 type = build_distinct_type_copy (type); 3775 /* Get the signed type cached and attached to the unsigned type, 3776 so it doesn't get garbage-collected at "random" times, 3777 causing potential codegen differences out of different UIDs 3778 and different alias set numbers. */ 3779 stype = build_nonstandard_integer_type (-size, 0); 3780 stype = build_distinct_type_copy (stype); 3781 TREE_CHAIN (type) = stype; 3782 /*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/ 3783 } 3784 else 3785 { /* "__java_float" or ""__java_double". */ 3786 type = make_node (REAL_TYPE); 3787 TYPE_PRECISION (type) = - size; 3788 layout_type (type); 3789 } 3790 record_builtin_type (RID_MAX, name, type); 3791 decl = TYPE_NAME (type); 3792 3793 /* Suppress generate debug symbol entries for these types, 3794 since for normal C++ they are just clutter. 3795 However, push_lang_context undoes this if extern "Java" is seen. */ 3796 DECL_IGNORED_P (decl) = 1; 3797 3798 TYPE_FOR_JAVA (type) = 1; 3799 return type; 3800 } 3801 3802 /* Push a type into the namespace so that the back ends ignore it. */ 3803 3804 static void 3805 record_unknown_type (tree type, const char* name) 3806 { 3807 tree decl = pushdecl (build_decl (UNKNOWN_LOCATION, 3808 TYPE_DECL, get_identifier (name), type)); 3809 /* Make sure the "unknown type" typedecl gets ignored for debug info. */ 3810 DECL_IGNORED_P (decl) = 1; 3811 TYPE_DECL_SUPPRESS_DEBUG (decl) = 1; 3812 TYPE_SIZE (type) = TYPE_SIZE (void_type_node); 3813 TYPE_ALIGN (type) = 1; 3814 TYPE_USER_ALIGN (type) = 0; 3815 SET_TYPE_MODE (type, TYPE_MODE (void_type_node)); 3816 } 3817 3818 /* A string for which we should create an IDENTIFIER_NODE at 3819 startup. */ 3820 3821 typedef struct predefined_identifier 3822 { 3823 /* The name of the identifier. */ 3824 const char *const name; 3825 /* The place where the IDENTIFIER_NODE should be stored. */ 3826 tree *const node; 3827 /* Nonzero if this is the name of a constructor or destructor. */ 3828 const int ctor_or_dtor_p; 3829 } predefined_identifier; 3830 3831 /* Create all the predefined identifiers. */ 3832 3833 static void 3834 initialize_predefined_identifiers (void) 3835 { 3836 const predefined_identifier *pid; 3837 3838 /* A table of identifiers to create at startup. */ 3839 static const predefined_identifier predefined_identifiers[] = { 3840 { "C++", &lang_name_cplusplus, 0 }, 3841 { "C", &lang_name_c, 0 }, 3842 { "Java", &lang_name_java, 0 }, 3843 /* Some of these names have a trailing space so that it is 3844 impossible for them to conflict with names written by users. */ 3845 { "__ct ", &ctor_identifier, 1 }, 3846 { "__base_ctor ", &base_ctor_identifier, 1 }, 3847 { "__comp_ctor ", &complete_ctor_identifier, 1 }, 3848 { "__dt ", &dtor_identifier, 1 }, 3849 { "__comp_dtor ", &complete_dtor_identifier, 1 }, 3850 { "__base_dtor ", &base_dtor_identifier, 1 }, 3851 { "__deleting_dtor ", &deleting_dtor_identifier, 1 }, 3852 { IN_CHARGE_NAME, &in_charge_identifier, 0 }, 3853 { "nelts", &nelts_identifier, 0 }, 3854 { THIS_NAME, &this_identifier, 0 }, 3855 { VTABLE_DELTA_NAME, &delta_identifier, 0 }, 3856 { VTABLE_PFN_NAME, &pfn_identifier, 0 }, 3857 { "_vptr", &vptr_identifier, 0 }, 3858 { "__vtt_parm", &vtt_parm_identifier, 0 }, 3859 { "::", &global_scope_name, 0 }, 3860 { "std", &std_identifier, 0 }, 3861 { NULL, NULL, 0 } 3862 }; 3863 3864 for (pid = predefined_identifiers; pid->name; ++pid) 3865 { 3866 *pid->node = get_identifier (pid->name); 3867 if (pid->ctor_or_dtor_p) 3868 IDENTIFIER_CTOR_OR_DTOR_P (*pid->node) = 1; 3869 } 3870 } 3871 3872 /* Create the predefined scalar types of C, 3873 and some nodes representing standard constants (0, 1, (void *)0). 3874 Initialize the global binding level. 3875 Make definitions for built-in primitive functions. */ 3876 3877 void 3878 cxx_init_decl_processing (void) 3879 { 3880 tree void_ftype; 3881 tree void_ftype_ptr; 3882 3883 /* Create all the identifiers we need. */ 3884 initialize_predefined_identifiers (); 3885 3886 /* Create the global variables. */ 3887 push_to_top_level (); 3888 3889 current_function_decl = NULL_TREE; 3890 current_binding_level = NULL; 3891 /* Enter the global namespace. */ 3892 gcc_assert (global_namespace == NULL_TREE); 3893 global_namespace = build_lang_decl (NAMESPACE_DECL, global_scope_name, 3894 void_type_node); 3895 DECL_CONTEXT (global_namespace) = build_translation_unit_decl (NULL_TREE); 3896 debug_hooks->register_main_translation_unit 3897 (DECL_CONTEXT (global_namespace)); 3898 TREE_PUBLIC (global_namespace) = 1; 3899 begin_scope (sk_namespace, global_namespace); 3900 3901 if (flag_visibility_ms_compat) 3902 default_visibility = VISIBILITY_HIDDEN; 3903 3904 /* Initially, C. */ 3905 current_lang_name = lang_name_c; 3906 3907 /* Create the `std' namespace. */ 3908 push_namespace (std_identifier); 3909 std_node = current_namespace; 3910 pop_namespace (); 3911 3912 c_common_nodes_and_builtins (); 3913 3914 java_byte_type_node = record_builtin_java_type ("__java_byte", 8); 3915 java_short_type_node = record_builtin_java_type ("__java_short", 16); 3916 java_int_type_node = record_builtin_java_type ("__java_int", 32); 3917 java_long_type_node = record_builtin_java_type ("__java_long", 64); 3918 java_float_type_node = record_builtin_java_type ("__java_float", -32); 3919 java_double_type_node = record_builtin_java_type ("__java_double", -64); 3920 java_char_type_node = record_builtin_java_type ("__java_char", -16); 3921 java_boolean_type_node = record_builtin_java_type ("__java_boolean", -1); 3922 3923 integer_two_node = build_int_cst (NULL_TREE, 2); 3924 3925 record_builtin_type (RID_BOOL, "bool", boolean_type_node); 3926 truthvalue_type_node = boolean_type_node; 3927 truthvalue_false_node = boolean_false_node; 3928 truthvalue_true_node = boolean_true_node; 3929 3930 empty_except_spec = build_tree_list (NULL_TREE, NULL_TREE); 3931 noexcept_true_spec = build_tree_list (boolean_true_node, NULL_TREE); 3932 noexcept_false_spec = build_tree_list (boolean_false_node, NULL_TREE); 3933 3934 #if 0 3935 record_builtin_type (RID_MAX, NULL, string_type_node); 3936 #endif 3937 3938 delta_type_node = ptrdiff_type_node; 3939 vtable_index_type = ptrdiff_type_node; 3940 3941 vtt_parm_type = build_pointer_type (const_ptr_type_node); 3942 void_ftype = build_function_type_list (void_type_node, NULL_TREE); 3943 void_ftype_ptr = build_function_type_list (void_type_node, 3944 ptr_type_node, NULL_TREE); 3945 void_ftype_ptr 3946 = build_exception_variant (void_ftype_ptr, empty_except_spec); 3947 3948 /* C++ extensions */ 3949 3950 unknown_type_node = make_node (LANG_TYPE); 3951 record_unknown_type (unknown_type_node, "unknown type"); 3952 3953 /* Indirecting an UNKNOWN_TYPE node yields an UNKNOWN_TYPE node. */ 3954 TREE_TYPE (unknown_type_node) = unknown_type_node; 3955 3956 /* Looking up TYPE_POINTER_TO and TYPE_REFERENCE_TO yield the same 3957 result. */ 3958 TYPE_POINTER_TO (unknown_type_node) = unknown_type_node; 3959 TYPE_REFERENCE_TO (unknown_type_node) = unknown_type_node; 3960 3961 init_list_type_node = make_node (LANG_TYPE); 3962 record_unknown_type (init_list_type_node, "init list"); 3963 3964 { 3965 /* Make sure we get a unique function type, so we can give 3966 its pointer type a name. (This wins for gdb.) */ 3967 tree vfunc_type = make_node (FUNCTION_TYPE); 3968 TREE_TYPE (vfunc_type) = integer_type_node; 3969 TYPE_ARG_TYPES (vfunc_type) = NULL_TREE; 3970 layout_type (vfunc_type); 3971 3972 vtable_entry_type = build_pointer_type (vfunc_type); 3973 } 3974 record_builtin_type (RID_MAX, VTBL_PTR_TYPE, vtable_entry_type); 3975 3976 vtbl_type_node 3977 = build_cplus_array_type (vtable_entry_type, NULL_TREE); 3978 layout_type (vtbl_type_node); 3979 vtbl_type_node = cp_build_qualified_type (vtbl_type_node, TYPE_QUAL_CONST); 3980 record_builtin_type (RID_MAX, NULL, vtbl_type_node); 3981 vtbl_ptr_type_node = build_pointer_type (vtable_entry_type); 3982 layout_type (vtbl_ptr_type_node); 3983 record_builtin_type (RID_MAX, NULL, vtbl_ptr_type_node); 3984 3985 push_namespace (get_identifier ("__cxxabiv1")); 3986 abi_node = current_namespace; 3987 pop_namespace (); 3988 3989 global_type_node = make_node (LANG_TYPE); 3990 record_unknown_type (global_type_node, "global type"); 3991 3992 /* Now, C++. */ 3993 current_lang_name = lang_name_cplusplus; 3994 3995 { 3996 tree newattrs, extvisattr; 3997 tree newtype, deltype; 3998 tree ptr_ftype_sizetype; 3999 tree new_eh_spec; 4000 4001 ptr_ftype_sizetype 4002 = build_function_type_list (ptr_type_node, size_type_node, NULL_TREE); 4003 if (cxx_dialect == cxx98) 4004 { 4005 tree bad_alloc_id; 4006 tree bad_alloc_type_node; 4007 tree bad_alloc_decl; 4008 4009 push_namespace (std_identifier); 4010 bad_alloc_id = get_identifier ("bad_alloc"); 4011 bad_alloc_type_node = make_class_type (RECORD_TYPE); 4012 TYPE_CONTEXT (bad_alloc_type_node) = current_namespace; 4013 bad_alloc_decl 4014 = create_implicit_typedef (bad_alloc_id, bad_alloc_type_node); 4015 DECL_CONTEXT (bad_alloc_decl) = current_namespace; 4016 pop_namespace (); 4017 4018 new_eh_spec 4019 = add_exception_specifier (NULL_TREE, bad_alloc_type_node, -1); 4020 } 4021 else 4022 new_eh_spec = noexcept_false_spec; 4023 4024 /* Ensure attribs.c is initialized. */ 4025 init_attributes (); 4026 extvisattr = build_tree_list (get_identifier ("externally_visible"), 4027 NULL_TREE); 4028 newattrs = tree_cons (get_identifier ("alloc_size"), 4029 build_tree_list (NULL_TREE, integer_one_node), 4030 extvisattr); 4031 newtype = cp_build_type_attribute_variant (ptr_ftype_sizetype, newattrs); 4032 newtype = build_exception_variant (newtype, new_eh_spec); 4033 deltype = cp_build_type_attribute_variant (void_ftype_ptr, extvisattr); 4034 deltype = build_exception_variant (deltype, empty_except_spec); 4035 tree opnew = push_cp_library_fn (NEW_EXPR, newtype, 0); 4036 DECL_IS_MALLOC (opnew) = 1; 4037 DECL_IS_OPERATOR_NEW (opnew) = 1; 4038 opnew = push_cp_library_fn (VEC_NEW_EXPR, newtype, 0); 4039 DECL_IS_MALLOC (opnew) = 1; 4040 DECL_IS_OPERATOR_NEW (opnew) = 1; 4041 push_cp_library_fn (DELETE_EXPR, deltype, ECF_NOTHROW); 4042 push_cp_library_fn (VEC_DELETE_EXPR, deltype, ECF_NOTHROW); 4043 if (flag_sized_deallocation) 4044 { 4045 /* Also push the sized deallocation variants: 4046 void operator delete(void*, std::size_t) throw(); 4047 void operator delete[](void*, std::size_t) throw(); */ 4048 tree void_ftype_ptr_size 4049 = build_function_type_list (void_type_node, ptr_type_node, 4050 size_type_node, NULL_TREE); 4051 deltype = cp_build_type_attribute_variant (void_ftype_ptr_size, 4052 extvisattr); 4053 deltype = build_exception_variant (deltype, empty_except_spec); 4054 push_cp_library_fn (DELETE_EXPR, deltype, ECF_NOTHROW); 4055 push_cp_library_fn (VEC_DELETE_EXPR, deltype, ECF_NOTHROW); 4056 } 4057 4058 nullptr_type_node = make_node (NULLPTR_TYPE); 4059 TYPE_SIZE (nullptr_type_node) = bitsize_int (GET_MODE_BITSIZE (ptr_mode)); 4060 TYPE_SIZE_UNIT (nullptr_type_node) = size_int (GET_MODE_SIZE (ptr_mode)); 4061 TYPE_UNSIGNED (nullptr_type_node) = 1; 4062 TYPE_PRECISION (nullptr_type_node) = GET_MODE_BITSIZE (ptr_mode); 4063 if (abi_version_at_least (9)) 4064 TYPE_ALIGN (nullptr_type_node) = GET_MODE_ALIGNMENT (ptr_mode); 4065 SET_TYPE_MODE (nullptr_type_node, ptr_mode); 4066 record_builtin_type (RID_MAX, "decltype(nullptr)", nullptr_type_node); 4067 nullptr_node = build_int_cst (nullptr_type_node, 0); 4068 } 4069 4070 abort_fndecl 4071 = build_library_fn_ptr ("__cxa_pure_virtual", void_ftype, 4072 ECF_NORETURN | ECF_NOTHROW); 4073 4074 /* Perform other language dependent initializations. */ 4075 init_class_processing (); 4076 init_rtti_processing (); 4077 init_template_processing (); 4078 4079 if (flag_exceptions) 4080 init_exception_processing (); 4081 4082 if (! supports_one_only ()) 4083 flag_weak = 0; 4084 4085 make_fname_decl = cp_make_fname_decl; 4086 start_fname_decls (); 4087 4088 /* Show we use EH for cleanups. */ 4089 if (flag_exceptions) 4090 using_eh_for_cleanups (); 4091 } 4092 4093 /* Generate an initializer for a function naming variable from 4094 NAME. NAME may be NULL, to indicate a dependent name. TYPE_P is 4095 filled in with the type of the init. */ 4096 4097 tree 4098 cp_fname_init (const char* name, tree *type_p) 4099 { 4100 tree domain = NULL_TREE; 4101 tree type; 4102 tree init = NULL_TREE; 4103 size_t length = 0; 4104 4105 if (name) 4106 { 4107 length = strlen (name); 4108 domain = build_index_type (size_int (length)); 4109 init = build_string (length + 1, name); 4110 } 4111 4112 type = cp_build_qualified_type (char_type_node, TYPE_QUAL_CONST); 4113 type = build_cplus_array_type (type, domain); 4114 4115 *type_p = type; 4116 4117 if (init) 4118 TREE_TYPE (init) = type; 4119 else 4120 init = error_mark_node; 4121 4122 return init; 4123 } 4124 4125 /* Create the VAR_DECL for __FUNCTION__ etc. ID is the name to give 4126 the decl, LOC is the location to give the decl, NAME is the 4127 initialization string and TYPE_DEP indicates whether NAME depended 4128 on the type of the function. We make use of that to detect 4129 __PRETTY_FUNCTION__ inside a template fn. This is being done lazily 4130 at the point of first use, so we mustn't push the decl now. */ 4131 4132 static tree 4133 cp_make_fname_decl (location_t loc, tree id, int type_dep) 4134 { 4135 const char *const name = (type_dep && processing_template_decl 4136 ? NULL : fname_as_string (type_dep)); 4137 tree type; 4138 tree init = cp_fname_init (name, &type); 4139 tree decl = build_decl (loc, VAR_DECL, id, type); 4140 4141 if (name) 4142 free (CONST_CAST (char *, name)); 4143 4144 /* As we're using pushdecl_with_scope, we must set the context. */ 4145 DECL_CONTEXT (decl) = current_function_decl; 4146 4147 TREE_STATIC (decl) = 1; 4148 TREE_READONLY (decl) = 1; 4149 DECL_ARTIFICIAL (decl) = 1; 4150 4151 TREE_USED (decl) = 1; 4152 4153 if (current_function_decl) 4154 { 4155 cp_binding_level *b = current_binding_level; 4156 if (b->kind == sk_function_parms) 4157 return error_mark_node; 4158 while (b->level_chain->kind != sk_function_parms) 4159 b = b->level_chain; 4160 pushdecl_with_scope (decl, b, /*is_friend=*/false); 4161 cp_finish_decl (decl, init, /*init_const_expr_p=*/false, NULL_TREE, 4162 LOOKUP_ONLYCONVERTING); 4163 } 4164 else 4165 { 4166 DECL_THIS_STATIC (decl) = true; 4167 pushdecl_top_level_and_finish (decl, init); 4168 } 4169 4170 return decl; 4171 } 4172 4173 static tree 4174 builtin_function_1 (tree decl, tree context, bool is_global) 4175 { 4176 tree id = DECL_NAME (decl); 4177 const char *name = IDENTIFIER_POINTER (id); 4178 4179 retrofit_lang_decl (decl); 4180 4181 DECL_ARTIFICIAL (decl) = 1; 4182 SET_OVERLOADED_OPERATOR_CODE (decl, ERROR_MARK); 4183 SET_DECL_LANGUAGE (decl, lang_c); 4184 /* Runtime library routines are, by definition, available in an 4185 external shared object. */ 4186 DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; 4187 DECL_VISIBILITY_SPECIFIED (decl) = 1; 4188 4189 DECL_CONTEXT (decl) = context; 4190 4191 if (is_global) 4192 pushdecl_top_level (decl); 4193 else 4194 pushdecl (decl); 4195 4196 /* A function in the user's namespace should have an explicit 4197 declaration before it is used. Mark the built-in function as 4198 anticipated but not actually declared. */ 4199 if (name[0] != '_' || name[1] != '_') 4200 DECL_ANTICIPATED (decl) = 1; 4201 else if (strncmp (name + 2, "builtin_", strlen ("builtin_")) != 0) 4202 { 4203 size_t len = strlen (name); 4204 4205 /* Treat __*_chk fortification functions as anticipated as well, 4206 unless they are __builtin_*. */ 4207 if (len > strlen ("___chk") 4208 && memcmp (name + len - strlen ("_chk"), 4209 "_chk", strlen ("_chk") + 1) == 0) 4210 DECL_ANTICIPATED (decl) = 1; 4211 } 4212 4213 return decl; 4214 } 4215 4216 tree 4217 cxx_builtin_function (tree decl) 4218 { 4219 tree id = DECL_NAME (decl); 4220 const char *name = IDENTIFIER_POINTER (id); 4221 /* All builtins that don't begin with an '_' should additionally 4222 go in the 'std' namespace. */ 4223 if (name[0] != '_') 4224 { 4225 tree decl2 = copy_node(decl); 4226 push_namespace (std_identifier); 4227 builtin_function_1 (decl2, std_node, false); 4228 pop_namespace (); 4229 } 4230 4231 return builtin_function_1 (decl, NULL_TREE, false); 4232 } 4233 4234 /* Like cxx_builtin_function, but guarantee the function is added to the global 4235 scope. This is to allow function specific options to add new machine 4236 dependent builtins when the target ISA changes via attribute((target(...))) 4237 which saves space on program startup if the program does not use non-generic 4238 ISAs. */ 4239 4240 tree 4241 cxx_builtin_function_ext_scope (tree decl) 4242 { 4243 4244 tree id = DECL_NAME (decl); 4245 const char *name = IDENTIFIER_POINTER (id); 4246 /* All builtins that don't begin with an '_' should additionally 4247 go in the 'std' namespace. */ 4248 if (name[0] != '_') 4249 { 4250 tree decl2 = copy_node(decl); 4251 push_namespace (std_identifier); 4252 builtin_function_1 (decl2, std_node, true); 4253 pop_namespace (); 4254 } 4255 4256 return builtin_function_1 (decl, NULL_TREE, true); 4257 } 4258 4259 /* Generate a FUNCTION_DECL with the typical flags for a runtime library 4260 function. Not called directly. */ 4261 4262 static tree 4263 build_library_fn (tree name, enum tree_code operator_code, tree type, 4264 int ecf_flags) 4265 { 4266 tree fn = build_lang_decl (FUNCTION_DECL, name, type); 4267 DECL_EXTERNAL (fn) = 1; 4268 TREE_PUBLIC (fn) = 1; 4269 DECL_ARTIFICIAL (fn) = 1; 4270 SET_OVERLOADED_OPERATOR_CODE (fn, operator_code); 4271 SET_DECL_LANGUAGE (fn, lang_c); 4272 /* Runtime library routines are, by definition, available in an 4273 external shared object. */ 4274 DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT; 4275 DECL_VISIBILITY_SPECIFIED (fn) = 1; 4276 set_call_expr_flags (fn, ecf_flags); 4277 return fn; 4278 } 4279 4280 /* Returns the _DECL for a library function with C++ linkage. */ 4281 4282 static tree 4283 build_cp_library_fn (tree name, enum tree_code operator_code, tree type, 4284 int ecf_flags) 4285 { 4286 tree fn = build_library_fn (name, operator_code, type, ecf_flags); 4287 DECL_CONTEXT (fn) = FROB_CONTEXT (current_namespace); 4288 SET_DECL_LANGUAGE (fn, lang_cplusplus); 4289 return fn; 4290 } 4291 4292 /* Like build_library_fn, but takes a C string instead of an 4293 IDENTIFIER_NODE. */ 4294 4295 tree 4296 build_library_fn_ptr (const char* name, tree type, int ecf_flags) 4297 { 4298 return build_library_fn (get_identifier (name), ERROR_MARK, type, ecf_flags); 4299 } 4300 4301 /* Like build_cp_library_fn, but takes a C string instead of an 4302 IDENTIFIER_NODE. */ 4303 4304 tree 4305 build_cp_library_fn_ptr (const char* name, tree type, int ecf_flags) 4306 { 4307 return build_cp_library_fn (get_identifier (name), ERROR_MARK, type, 4308 ecf_flags); 4309 } 4310 4311 /* Like build_library_fn, but also pushes the function so that we will 4312 be able to find it via IDENTIFIER_GLOBAL_VALUE. Also, the function 4313 may throw exceptions listed in RAISES. */ 4314 4315 tree 4316 push_library_fn (tree name, tree type, tree raises, int ecf_flags) 4317 { 4318 tree fn; 4319 4320 if (raises) 4321 type = build_exception_variant (type, raises); 4322 4323 fn = build_library_fn (name, ERROR_MARK, type, ecf_flags); 4324 pushdecl_top_level (fn); 4325 return fn; 4326 } 4327 4328 /* Like build_cp_library_fn, but also pushes the function so that it 4329 will be found by normal lookup. */ 4330 4331 static tree 4332 push_cp_library_fn (enum tree_code operator_code, tree type, 4333 int ecf_flags) 4334 { 4335 tree fn = build_cp_library_fn (ansi_opname (operator_code), 4336 operator_code, 4337 type, ecf_flags); 4338 pushdecl (fn); 4339 if (flag_tm) 4340 apply_tm_attr (fn, get_identifier ("transaction_safe")); 4341 return fn; 4342 } 4343 4344 /* Like push_library_fn, but takes a TREE_LIST of parm types rather than 4345 a FUNCTION_TYPE. */ 4346 4347 tree 4348 push_void_library_fn (tree name, tree parmtypes, int ecf_flags) 4349 { 4350 tree type = build_function_type (void_type_node, parmtypes); 4351 return push_library_fn (name, type, NULL_TREE, ecf_flags); 4352 } 4353 4354 /* Like push_library_fn, but also note that this function throws 4355 and does not return. Used for __throw_foo and the like. */ 4356 4357 tree 4358 push_throw_library_fn (tree name, tree type) 4359 { 4360 tree fn = push_library_fn (name, type, NULL_TREE, ECF_NORETURN); 4361 return fn; 4362 } 4363 4364 /* When we call finish_struct for an anonymous union, we create 4365 default copy constructors and such. But, an anonymous union 4366 shouldn't have such things; this function undoes the damage to the 4367 anonymous union type T. 4368 4369 (The reason that we create the synthesized methods is that we don't 4370 distinguish `union { int i; }' from `typedef union { int i; } U'. 4371 The first is an anonymous union; the second is just an ordinary 4372 union type.) */ 4373 4374 void 4375 fixup_anonymous_aggr (tree t) 4376 { 4377 tree *q; 4378 4379 /* Wipe out memory of synthesized methods. */ 4380 TYPE_HAS_USER_CONSTRUCTOR (t) = 0; 4381 TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0; 4382 TYPE_HAS_COPY_CTOR (t) = 0; 4383 TYPE_HAS_CONST_COPY_CTOR (t) = 0; 4384 TYPE_HAS_COPY_ASSIGN (t) = 0; 4385 TYPE_HAS_CONST_COPY_ASSIGN (t) = 0; 4386 4387 /* Splice the implicitly generated functions out of the TYPE_METHODS 4388 list. */ 4389 q = &TYPE_METHODS (t); 4390 while (*q) 4391 { 4392 if (DECL_ARTIFICIAL (*q)) 4393 *q = TREE_CHAIN (*q); 4394 else 4395 q = &DECL_CHAIN (*q); 4396 } 4397 4398 /* ISO C++ 9.5.3. Anonymous unions may not have function members. */ 4399 if (TYPE_METHODS (t)) 4400 { 4401 tree decl = TYPE_MAIN_DECL (t); 4402 4403 if (TREE_CODE (t) != UNION_TYPE) 4404 error_at (DECL_SOURCE_LOCATION (decl), 4405 "an anonymous struct cannot have function members"); 4406 else 4407 error_at (DECL_SOURCE_LOCATION (decl), 4408 "an anonymous union cannot have function members"); 4409 } 4410 4411 /* Anonymous aggregates cannot have fields with ctors, dtors or complex 4412 assignment operators (because they cannot have these methods themselves). 4413 For anonymous unions this is already checked because they are not allowed 4414 in any union, otherwise we have to check it. */ 4415 if (TREE_CODE (t) != UNION_TYPE) 4416 { 4417 tree field, type; 4418 4419 for (field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field)) 4420 if (TREE_CODE (field) == FIELD_DECL) 4421 { 4422 type = TREE_TYPE (field); 4423 if (CLASS_TYPE_P (type)) 4424 { 4425 if (TYPE_NEEDS_CONSTRUCTING (type)) 4426 error ("member %q+#D with constructor not allowed " 4427 "in anonymous aggregate", field); 4428 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) 4429 error ("member %q+#D with destructor not allowed " 4430 "in anonymous aggregate", field); 4431 if (TYPE_HAS_COMPLEX_COPY_ASSIGN (type)) 4432 error ("member %q+#D with copy assignment operator " 4433 "not allowed in anonymous aggregate", field); 4434 } 4435 } 4436 } 4437 } 4438 4439 /* Warn for an attribute located at LOCATION that appertains to the 4440 class type CLASS_TYPE that has not been properly placed after its 4441 class-key, in it class-specifier. */ 4442 4443 void 4444 warn_misplaced_attr_for_class_type (source_location location, 4445 tree class_type) 4446 { 4447 gcc_assert (OVERLOAD_TYPE_P (class_type)); 4448 4449 if (warning_at (location, OPT_Wattributes, 4450 "attribute ignored in declaration " 4451 "of %q#T", class_type)) 4452 inform (location, 4453 "attribute for %q#T must follow the %qs keyword", 4454 class_type, class_key_or_enum_as_string (class_type)); 4455 } 4456 4457 /* Make sure that a declaration with no declarator is well-formed, i.e. 4458 just declares a tagged type or anonymous union. 4459 4460 Returns the type declared; or NULL_TREE if none. */ 4461 4462 tree 4463 check_tag_decl (cp_decl_specifier_seq *declspecs, 4464 bool explicit_type_instantiation_p) 4465 { 4466 int saw_friend = decl_spec_seq_has_spec_p (declspecs, ds_friend); 4467 int saw_typedef = decl_spec_seq_has_spec_p (declspecs, ds_typedef); 4468 /* If a class, struct, or enum type is declared by the DECLSPECS 4469 (i.e, if a class-specifier, enum-specifier, or non-typename 4470 elaborated-type-specifier appears in the DECLSPECS), 4471 DECLARED_TYPE is set to the corresponding type. */ 4472 tree declared_type = NULL_TREE; 4473 bool error_p = false; 4474 4475 if (declspecs->multiple_types_p) 4476 error ("multiple types in one declaration"); 4477 else if (declspecs->redefined_builtin_type) 4478 { 4479 if (!in_system_header_at (input_location)) 4480 permerror (declspecs->locations[ds_redefined_builtin_type_spec], 4481 "redeclaration of C++ built-in type %qT", 4482 declspecs->redefined_builtin_type); 4483 return NULL_TREE; 4484 } 4485 4486 if (declspecs->type 4487 && TYPE_P (declspecs->type) 4488 && ((TREE_CODE (declspecs->type) != TYPENAME_TYPE 4489 && MAYBE_CLASS_TYPE_P (declspecs->type)) 4490 || TREE_CODE (declspecs->type) == ENUMERAL_TYPE)) 4491 declared_type = declspecs->type; 4492 else if (declspecs->type == error_mark_node) 4493 error_p = true; 4494 if (declared_type == NULL_TREE && ! saw_friend && !error_p) 4495 permerror (input_location, "declaration does not declare anything"); 4496 else if (declared_type != NULL_TREE && type_uses_auto (declared_type)) 4497 { 4498 error ("%<auto%> can only be specified for variables " 4499 "or function declarations"); 4500 return error_mark_node; 4501 } 4502 /* Check for an anonymous union. */ 4503 else if (declared_type && RECORD_OR_UNION_CODE_P (TREE_CODE (declared_type)) 4504 && TYPE_ANONYMOUS_P (declared_type)) 4505 { 4506 /* 7/3 In a simple-declaration, the optional init-declarator-list 4507 can be omitted only when declaring a class (clause 9) or 4508 enumeration (7.2), that is, when the decl-specifier-seq contains 4509 either a class-specifier, an elaborated-type-specifier with 4510 a class-key (9.1), or an enum-specifier. In these cases and 4511 whenever a class-specifier or enum-specifier is present in the 4512 decl-specifier-seq, the identifiers in these specifiers are among 4513 the names being declared by the declaration (as class-name, 4514 enum-names, or enumerators, depending on the syntax). In such 4515 cases, and except for the declaration of an unnamed bit-field (9.6), 4516 the decl-specifier-seq shall introduce one or more names into the 4517 program, or shall redeclare a name introduced by a previous 4518 declaration. [Example: 4519 enum { }; // ill-formed 4520 typedef class { }; // ill-formed 4521 --end example] */ 4522 if (saw_typedef) 4523 { 4524 error ("missing type-name in typedef-declaration"); 4525 return NULL_TREE; 4526 } 4527 /* Anonymous unions are objects, so they can have specifiers. */; 4528 SET_ANON_AGGR_TYPE_P (declared_type); 4529 4530 if (TREE_CODE (declared_type) != UNION_TYPE 4531 && !in_system_header_at (input_location)) 4532 pedwarn (input_location, OPT_Wpedantic, "ISO C++ prohibits anonymous structs"); 4533 } 4534 4535 else 4536 { 4537 if (decl_spec_seq_has_spec_p (declspecs, ds_inline) 4538 || decl_spec_seq_has_spec_p (declspecs, ds_virtual)) 4539 error ("%qs can only be specified for functions", 4540 decl_spec_seq_has_spec_p (declspecs, ds_inline) 4541 ? "inline" : "virtual"); 4542 else if (saw_friend 4543 && (!current_class_type 4544 || current_scope () != current_class_type)) 4545 error ("%<friend%> can only be specified inside a class"); 4546 else if (decl_spec_seq_has_spec_p (declspecs, ds_explicit)) 4547 error ("%<explicit%> can only be specified for constructors"); 4548 else if (declspecs->storage_class) 4549 error ("a storage class can only be specified for objects " 4550 "and functions"); 4551 else if (decl_spec_seq_has_spec_p (declspecs, ds_const) 4552 || decl_spec_seq_has_spec_p (declspecs, ds_volatile) 4553 || decl_spec_seq_has_spec_p (declspecs, ds_restrict) 4554 || decl_spec_seq_has_spec_p (declspecs, ds_thread)) 4555 error ("qualifiers can only be specified for objects " 4556 "and functions"); 4557 else if (saw_typedef) 4558 warning (0, "%<typedef%> was ignored in this declaration"); 4559 else if (decl_spec_seq_has_spec_p (declspecs, ds_constexpr)) 4560 error ("%<constexpr%> cannot be used for type declarations"); 4561 } 4562 4563 if (declspecs->attributes && warn_attributes && declared_type) 4564 { 4565 location_t loc; 4566 if (!CLASS_TYPE_P (declared_type) 4567 || !CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type)) 4568 /* For a non-template class, use the name location. */ 4569 loc = location_of (declared_type); 4570 else 4571 /* For a template class (an explicit instantiation), use the 4572 current location. */ 4573 loc = input_location; 4574 4575 if (explicit_type_instantiation_p) 4576 /* [dcl.attr.grammar]/4: 4577 4578 No attribute-specifier-seq shall appertain to an explicit 4579 instantiation. */ 4580 { 4581 if (warning_at (loc, OPT_Wattributes, 4582 "attribute ignored in explicit instantiation %q#T", 4583 declared_type)) 4584 inform (loc, 4585 "no attribute can be applied to " 4586 "an explicit instantiation"); 4587 } 4588 else 4589 warn_misplaced_attr_for_class_type (loc, declared_type); 4590 } 4591 4592 return declared_type; 4593 } 4594 4595 /* Called when a declaration is seen that contains no names to declare. 4596 If its type is a reference to a structure, union or enum inherited 4597 from a containing scope, shadow that tag name for the current scope 4598 with a forward reference. 4599 If its type defines a new named structure or union 4600 or defines an enum, it is valid but we need not do anything here. 4601 Otherwise, it is an error. 4602 4603 C++: may have to grok the declspecs to learn about static, 4604 complain for anonymous unions. 4605 4606 Returns the TYPE declared -- or NULL_TREE if none. */ 4607 4608 tree 4609 shadow_tag (cp_decl_specifier_seq *declspecs) 4610 { 4611 tree t = check_tag_decl (declspecs, 4612 /*explicit_type_instantiation_p=*/false); 4613 4614 if (!t) 4615 return NULL_TREE; 4616 4617 if (maybe_process_partial_specialization (t) == error_mark_node) 4618 return NULL_TREE; 4619 4620 /* This is where the variables in an anonymous union are 4621 declared. An anonymous union declaration looks like: 4622 union { ... } ; 4623 because there is no declarator after the union, the parser 4624 sends that declaration here. */ 4625 if (ANON_AGGR_TYPE_P (t)) 4626 { 4627 fixup_anonymous_aggr (t); 4628 4629 if (TYPE_FIELDS (t)) 4630 { 4631 tree decl = grokdeclarator (/*declarator=*/NULL, 4632 declspecs, NORMAL, 0, NULL); 4633 finish_anon_union (decl); 4634 } 4635 } 4636 4637 return t; 4638 } 4639 4640 /* Decode a "typename", such as "int **", returning a ..._TYPE node. */ 4641 4642 tree 4643 groktypename (cp_decl_specifier_seq *type_specifiers, 4644 const cp_declarator *declarator, 4645 bool is_template_arg) 4646 { 4647 tree attrs; 4648 tree type; 4649 enum decl_context context 4650 = is_template_arg ? TEMPLATE_TYPE_ARG : TYPENAME; 4651 attrs = type_specifiers->attributes; 4652 type_specifiers->attributes = NULL_TREE; 4653 type = grokdeclarator (declarator, type_specifiers, context, 0, &attrs); 4654 if (attrs && type != error_mark_node) 4655 { 4656 if (CLASS_TYPE_P (type)) 4657 warning (OPT_Wattributes, "ignoring attributes applied to class type %qT " 4658 "outside of definition", type); 4659 else if (MAYBE_CLASS_TYPE_P (type)) 4660 /* A template type parameter or other dependent type. */ 4661 warning (OPT_Wattributes, "ignoring attributes applied to dependent " 4662 "type %qT without an associated declaration", type); 4663 else 4664 cplus_decl_attributes (&type, attrs, 0); 4665 } 4666 return type; 4667 } 4668 4669 /* Process a DECLARATOR for a function-scope variable declaration, 4670 namespace-scope variable declaration, or function declaration. 4671 (Function definitions go through start_function; class member 4672 declarations appearing in the body of the class go through 4673 grokfield.) The DECL corresponding to the DECLARATOR is returned. 4674 If an error occurs, the error_mark_node is returned instead. 4675 4676 DECLSPECS are the decl-specifiers for the declaration. INITIALIZED is 4677 SD_INITIALIZED if an explicit initializer is present, or SD_DEFAULTED 4678 for an explicitly defaulted function, or SD_DELETED for an explicitly 4679 deleted function, but 0 (SD_UNINITIALIZED) if this is a variable 4680 implicitly initialized via a default constructor. ATTRIBUTES and 4681 PREFIX_ATTRIBUTES are GNU attributes associated with this declaration. 4682 4683 The scope represented by the context of the returned DECL is pushed 4684 (if it is not the global namespace) and is assigned to 4685 *PUSHED_SCOPE_P. The caller is then responsible for calling 4686 pop_scope on *PUSHED_SCOPE_P if it is set. */ 4687 4688 tree 4689 start_decl (const cp_declarator *declarator, 4690 cp_decl_specifier_seq *declspecs, 4691 int initialized, 4692 tree attributes, 4693 tree prefix_attributes, 4694 tree *pushed_scope_p) 4695 { 4696 tree decl; 4697 tree context; 4698 bool was_public; 4699 int flags; 4700 bool alias; 4701 4702 *pushed_scope_p = NULL_TREE; 4703 4704 /* An object declared as __attribute__((deprecated)) suppresses 4705 warnings of uses of other deprecated items. */ 4706 if (lookup_attribute ("deprecated", attributes)) 4707 deprecated_state = DEPRECATED_SUPPRESS; 4708 4709 attributes = chainon (attributes, prefix_attributes); 4710 4711 decl = grokdeclarator (declarator, declspecs, NORMAL, initialized, 4712 &attributes); 4713 4714 deprecated_state = DEPRECATED_NORMAL; 4715 4716 if (decl == NULL_TREE || VOID_TYPE_P (decl) 4717 || decl == error_mark_node) 4718 return error_mark_node; 4719 4720 context = CP_DECL_CONTEXT (decl); 4721 if (context != global_namespace) 4722 *pushed_scope_p = push_scope (context); 4723 4724 /* Is it valid for this decl to have an initializer at all? 4725 If not, set INITIALIZED to zero, which will indirectly 4726 tell `cp_finish_decl' to ignore the initializer once it is parsed. */ 4727 if (initialized 4728 && TREE_CODE (decl) == TYPE_DECL) 4729 { 4730 error ("typedef %qD is initialized (use decltype instead)", decl); 4731 return error_mark_node; 4732 } 4733 4734 if (initialized) 4735 { 4736 if (! toplevel_bindings_p () 4737 && DECL_EXTERNAL (decl)) 4738 warning (0, "declaration of %q#D has %<extern%> and is initialized", 4739 decl); 4740 DECL_EXTERNAL (decl) = 0; 4741 if (toplevel_bindings_p ()) 4742 TREE_STATIC (decl) = 1; 4743 } 4744 alias = lookup_attribute ("alias", DECL_ATTRIBUTES (decl)) != 0; 4745 4746 if (alias && TREE_CODE (decl) == FUNCTION_DECL) 4747 record_key_method_defined (decl); 4748 4749 /* If this is a typedef that names the class for linkage purposes 4750 (7.1.3p8), apply any attributes directly to the type. */ 4751 if (TREE_CODE (decl) == TYPE_DECL 4752 && OVERLOAD_TYPE_P (TREE_TYPE (decl)) 4753 && decl == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (decl)))) 4754 flags = ATTR_FLAG_TYPE_IN_PLACE; 4755 else 4756 flags = 0; 4757 4758 /* Set attributes here so if duplicate decl, will have proper attributes. */ 4759 cplus_decl_attributes (&decl, attributes, flags); 4760 4761 /* Dllimported symbols cannot be defined. Static data members (which 4762 can be initialized in-class and dllimported) go through grokfield, 4763 not here, so we don't need to exclude those decls when checking for 4764 a definition. */ 4765 if (initialized && DECL_DLLIMPORT_P (decl)) 4766 { 4767 error ("definition of %q#D is marked %<dllimport%>", decl); 4768 DECL_DLLIMPORT_P (decl) = 0; 4769 } 4770 4771 /* If #pragma weak was used, mark the decl weak now. */ 4772 if (!processing_template_decl) 4773 maybe_apply_pragma_weak (decl); 4774 4775 if (TREE_CODE (decl) == FUNCTION_DECL 4776 && DECL_DECLARED_INLINE_P (decl) 4777 && DECL_UNINLINABLE (decl) 4778 && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl))) 4779 warning (0, "inline function %q+D given attribute noinline", decl); 4780 4781 if (TYPE_P (context) && COMPLETE_TYPE_P (complete_type (context))) 4782 { 4783 bool this_tmpl = (processing_template_decl 4784 > template_class_depth (context)); 4785 if (VAR_P (decl)) 4786 { 4787 tree field = lookup_field (context, DECL_NAME (decl), 0, false); 4788 if (field == NULL_TREE 4789 || !(VAR_P (field) || variable_template_p (field))) 4790 error ("%q+#D is not a static data member of %q#T", decl, context); 4791 else if (variable_template_p (field) && !this_tmpl) 4792 { 4793 if (DECL_LANG_SPECIFIC (decl) 4794 && DECL_TEMPLATE_SPECIALIZATION (decl)) 4795 /* OK, specialization was already checked. */; 4796 else 4797 { 4798 error_at (DECL_SOURCE_LOCATION (decl), 4799 "non-member-template declaration of %qD", decl); 4800 inform (DECL_SOURCE_LOCATION (field), "does not match " 4801 "member template declaration here"); 4802 return error_mark_node; 4803 } 4804 } 4805 else 4806 { 4807 if (variable_template_p (field)) 4808 field = DECL_TEMPLATE_RESULT (field); 4809 4810 if (DECL_CONTEXT (field) != context) 4811 { 4812 if (!same_type_p (DECL_CONTEXT (field), context)) 4813 permerror (input_location, "ISO C++ does not permit %<%T::%D%> " 4814 "to be defined as %<%T::%D%>", 4815 DECL_CONTEXT (field), DECL_NAME (decl), 4816 context, DECL_NAME (decl)); 4817 DECL_CONTEXT (decl) = DECL_CONTEXT (field); 4818 } 4819 /* Static data member are tricky; an in-class initialization 4820 still doesn't provide a definition, so the in-class 4821 declaration will have DECL_EXTERNAL set, but will have an 4822 initialization. Thus, duplicate_decls won't warn 4823 about this situation, and so we check here. */ 4824 if (initialized && DECL_INITIALIZED_IN_CLASS_P (field)) 4825 error ("duplicate initialization of %qD", decl); 4826 if (duplicate_decls (decl, field, /*newdecl_is_friend=*/false)) 4827 decl = field; 4828 if (decl_spec_seq_has_spec_p (declspecs, ds_constexpr) 4829 && !DECL_DECLARED_CONSTEXPR_P (field)) 4830 error ("%qD declared %<constexpr%> outside its class", field); 4831 } 4832 } 4833 else 4834 { 4835 tree field = check_classfn (context, decl, 4836 this_tmpl 4837 ? current_template_parms 4838 : NULL_TREE); 4839 if (field && field != error_mark_node 4840 && duplicate_decls (decl, field, 4841 /*newdecl_is_friend=*/false)) 4842 decl = field; 4843 } 4844 4845 /* cp_finish_decl sets DECL_EXTERNAL if DECL_IN_AGGR_P is set. */ 4846 DECL_IN_AGGR_P (decl) = 0; 4847 /* Do not mark DECL as an explicit specialization if it was not 4848 already marked as an instantiation; a declaration should 4849 never be marked as a specialization unless we know what 4850 template is being specialized. */ 4851 if (DECL_LANG_SPECIFIC (decl) && DECL_USE_TEMPLATE (decl)) 4852 { 4853 SET_DECL_TEMPLATE_SPECIALIZATION (decl); 4854 if (TREE_CODE (decl) == FUNCTION_DECL) 4855 DECL_COMDAT (decl) = (TREE_PUBLIC (decl) 4856 && DECL_DECLARED_INLINE_P (decl)); 4857 else 4858 DECL_COMDAT (decl) = false; 4859 4860 /* [temp.expl.spec] An explicit specialization of a static data 4861 member of a template is a definition if the declaration 4862 includes an initializer; otherwise, it is a declaration. 4863 4864 We check for processing_specialization so this only applies 4865 to the new specialization syntax. */ 4866 if (!initialized && processing_specialization) 4867 DECL_EXTERNAL (decl) = 1; 4868 } 4869 4870 if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl) 4871 /* Aliases are definitions. */ 4872 && !alias) 4873 permerror (input_location, "declaration of %q#D outside of class is not definition", 4874 decl); 4875 } 4876 4877 was_public = TREE_PUBLIC (decl); 4878 4879 /* Enter this declaration into the symbol table. Don't push the plain 4880 VAR_DECL for a variable template. */ 4881 if (!template_parm_scope_p () 4882 || TREE_CODE (decl) != VAR_DECL) 4883 decl = maybe_push_decl (decl); 4884 4885 if (processing_template_decl) 4886 decl = push_template_decl (decl); 4887 if (decl == error_mark_node) 4888 return error_mark_node; 4889 4890 if (VAR_P (decl) 4891 && DECL_NAMESPACE_SCOPE_P (decl) && !TREE_PUBLIC (decl) && !was_public 4892 && !DECL_THIS_STATIC (decl) && !DECL_ARTIFICIAL (decl)) 4893 { 4894 /* This is a const variable with implicit 'static'. Set 4895 DECL_THIS_STATIC so we can tell it from variables that are 4896 !TREE_PUBLIC because of the anonymous namespace. */ 4897 gcc_assert (CP_TYPE_CONST_P (TREE_TYPE (decl)) || errorcount); 4898 DECL_THIS_STATIC (decl) = 1; 4899 } 4900 4901 if (current_function_decl && VAR_P (decl) 4902 && DECL_DECLARED_CONSTEXPR_P (current_function_decl)) 4903 { 4904 bool ok = false; 4905 if (DECL_THREAD_LOCAL_P (decl)) 4906 error ("%qD declared %<thread_local%> in %<constexpr%> function", 4907 decl); 4908 else if (TREE_STATIC (decl)) 4909 error ("%qD declared %<static%> in %<constexpr%> function", decl); 4910 else 4911 ok = true; 4912 if (!ok) 4913 cp_function_chain->invalid_constexpr = true; 4914 } 4915 4916 if (!processing_template_decl && VAR_P (decl)) 4917 start_decl_1 (decl, initialized); 4918 4919 return decl; 4920 } 4921 4922 /* Process the declaration of a variable DECL. INITIALIZED is true 4923 iff DECL is explicitly initialized. (INITIALIZED is false if the 4924 variable is initialized via an implicitly-called constructor.) 4925 This function must be called for ordinary variables (including, for 4926 example, implicit instantiations of templates), but must not be 4927 called for template declarations. */ 4928 4929 void 4930 start_decl_1 (tree decl, bool initialized) 4931 { 4932 tree type; 4933 bool complete_p; 4934 bool aggregate_definition_p; 4935 4936 gcc_assert (!processing_template_decl); 4937 4938 if (error_operand_p (decl)) 4939 return; 4940 4941 gcc_assert (VAR_P (decl)); 4942 4943 type = TREE_TYPE (decl); 4944 complete_p = COMPLETE_TYPE_P (type); 4945 aggregate_definition_p = MAYBE_CLASS_TYPE_P (type) && !DECL_EXTERNAL (decl); 4946 4947 /* If an explicit initializer is present, or if this is a definition 4948 of an aggregate, then we need a complete type at this point. 4949 (Scalars are always complete types, so there is nothing to 4950 check.) This code just sets COMPLETE_P; errors (if necessary) 4951 are issued below. */ 4952 if ((initialized || aggregate_definition_p) 4953 && !complete_p 4954 && COMPLETE_TYPE_P (complete_type (type))) 4955 { 4956 complete_p = true; 4957 /* We will not yet have set TREE_READONLY on DECL if the type 4958 was "const", but incomplete, before this point. But, now, we 4959 have a complete type, so we can try again. */ 4960 cp_apply_type_quals_to_decl (cp_type_quals (type), decl); 4961 } 4962 4963 if (initialized) 4964 /* Is it valid for this decl to have an initializer at all? */ 4965 { 4966 /* Don't allow initializations for incomplete types except for 4967 arrays which might be completed by the initialization. */ 4968 if (complete_p) 4969 ; /* A complete type is ok. */ 4970 else if (type_uses_auto (type)) 4971 ; /* An auto type is ok. */ 4972 else if (TREE_CODE (type) != ARRAY_TYPE) 4973 { 4974 error ("variable %q#D has initializer but incomplete type", decl); 4975 type = TREE_TYPE (decl) = error_mark_node; 4976 } 4977 else if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (type)))) 4978 { 4979 if (DECL_LANG_SPECIFIC (decl) && DECL_TEMPLATE_INFO (decl)) 4980 error ("elements of array %q#D have incomplete type", decl); 4981 /* else we already gave an error in start_decl. */ 4982 } 4983 } 4984 else if (aggregate_definition_p && !complete_p) 4985 { 4986 if (type_uses_auto (type)) 4987 error ("declaration of %q#D has no initializer", decl); 4988 else 4989 error ("aggregate %q#D has incomplete type and cannot be defined", 4990 decl); 4991 /* Change the type so that assemble_variable will give 4992 DECL an rtl we can live with: (mem (const_int 0)). */ 4993 type = TREE_TYPE (decl) = error_mark_node; 4994 } 4995 4996 /* Create a new scope to hold this declaration if necessary. 4997 Whether or not a new scope is necessary cannot be determined 4998 until after the type has been completed; if the type is a 4999 specialization of a class template it is not until after 5000 instantiation has occurred that TYPE_HAS_NONTRIVIAL_DESTRUCTOR 5001 will be set correctly. */ 5002 maybe_push_cleanup_level (type); 5003 } 5004 5005 /* Handle initialization of references. DECL, TYPE, and INIT have the 5006 same meaning as in cp_finish_decl. *CLEANUP must be NULL on entry, 5007 but will be set to a new CLEANUP_STMT if a temporary is created 5008 that must be destroyed subsequently. 5009 5010 Returns an initializer expression to use to initialize DECL, or 5011 NULL if the initialization can be performed statically. 5012 5013 Quotes on semantics can be found in ARM 8.4.3. */ 5014 5015 static tree 5016 grok_reference_init (tree decl, tree type, tree init, int flags) 5017 { 5018 if (init == NULL_TREE) 5019 { 5020 if ((DECL_LANG_SPECIFIC (decl) == 0 5021 || DECL_IN_AGGR_P (decl) == 0) 5022 && ! DECL_THIS_EXTERN (decl)) 5023 error ("%qD declared as reference but not initialized", decl); 5024 return NULL_TREE; 5025 } 5026 5027 if (TREE_CODE (init) == TREE_LIST) 5028 init = build_x_compound_expr_from_list (init, ELK_INIT, 5029 tf_warning_or_error); 5030 5031 tree ttype = TREE_TYPE (type); 5032 if (TREE_CODE (ttype) != ARRAY_TYPE 5033 && TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE) 5034 /* Note: default conversion is only called in very special cases. */ 5035 init = decay_conversion (init, tf_warning_or_error); 5036 5037 /* check_initializer handles this for non-reference variables, but for 5038 references we need to do it here or the initializer will get the 5039 incomplete array type and confuse later calls to 5040 cp_complete_array_type. */ 5041 if (TREE_CODE (ttype) == ARRAY_TYPE 5042 && TYPE_DOMAIN (ttype) == NULL_TREE 5043 && (BRACE_ENCLOSED_INITIALIZER_P (init) 5044 || TREE_CODE (init) == STRING_CST)) 5045 { 5046 cp_complete_array_type (&ttype, init, false); 5047 if (ttype != TREE_TYPE (type)) 5048 type = cp_build_reference_type (ttype, TYPE_REF_IS_RVALUE (type)); 5049 } 5050 5051 /* Convert INIT to the reference type TYPE. This may involve the 5052 creation of a temporary, whose lifetime must be the same as that 5053 of the reference. If so, a DECL_EXPR for the temporary will be 5054 added just after the DECL_EXPR for DECL. That's why we don't set 5055 DECL_INITIAL for local references (instead assigning to them 5056 explicitly); we need to allow the temporary to be initialized 5057 first. */ 5058 return initialize_reference (type, init, flags, 5059 tf_warning_or_error); 5060 } 5061 5062 /* Designated initializers in arrays are not supported in GNU C++. 5063 The parser cannot detect this error since it does not know whether 5064 a given brace-enclosed initializer is for a class type or for an 5065 array. This function checks that CE does not use a designated 5066 initializer. If it does, an error is issued. Returns true if CE 5067 is valid, i.e., does not have a designated initializer. */ 5068 5069 static bool 5070 check_array_designated_initializer (constructor_elt *ce, 5071 unsigned HOST_WIDE_INT index) 5072 { 5073 /* Designated initializers for array elements are not supported. */ 5074 if (ce->index) 5075 { 5076 /* The parser only allows identifiers as designated 5077 initializers. */ 5078 if (ce->index == error_mark_node) 5079 { 5080 error ("name used in a GNU-style designated " 5081 "initializer for an array"); 5082 return false; 5083 } 5084 else if (identifier_p (ce->index)) 5085 { 5086 error ("name %qD used in a GNU-style designated " 5087 "initializer for an array", ce->index); 5088 return false; 5089 } 5090 5091 tree ce_index = build_expr_type_conversion (WANT_INT | WANT_ENUM, 5092 ce->index, true); 5093 if (ce_index 5094 && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (ce_index)) 5095 && (TREE_CODE (ce_index = maybe_constant_value (ce_index)) 5096 == INTEGER_CST)) 5097 { 5098 /* A C99 designator is OK if it matches the current index. */ 5099 if (wi::eq_p (ce_index, index)) 5100 return true; 5101 else 5102 sorry ("non-trivial designated initializers not supported"); 5103 } 5104 else 5105 error ("C99 designator %qE is not an integral constant-expression", 5106 ce->index); 5107 5108 return false; 5109 } 5110 5111 return true; 5112 } 5113 5114 /* When parsing `int a[] = {1, 2};' we don't know the size of the 5115 array until we finish parsing the initializer. If that's the 5116 situation we're in, update DECL accordingly. */ 5117 5118 static void 5119 maybe_deduce_size_from_array_init (tree decl, tree init) 5120 { 5121 tree type = TREE_TYPE (decl); 5122 5123 if (TREE_CODE (type) == ARRAY_TYPE 5124 && TYPE_DOMAIN (type) == NULL_TREE 5125 && TREE_CODE (decl) != TYPE_DECL) 5126 { 5127 /* do_default is really a C-ism to deal with tentative definitions. 5128 But let's leave it here to ease the eventual merge. */ 5129 int do_default = !DECL_EXTERNAL (decl); 5130 tree initializer = init ? init : DECL_INITIAL (decl); 5131 int failure = 0; 5132 5133 /* Check that there are no designated initializers in INIT, as 5134 those are not supported in GNU C++, and as the middle-end 5135 will crash if presented with a non-numeric designated 5136 initializer. */ 5137 if (initializer && BRACE_ENCLOSED_INITIALIZER_P (initializer)) 5138 { 5139 vec<constructor_elt, va_gc> *v = CONSTRUCTOR_ELTS (initializer); 5140 constructor_elt *ce; 5141 HOST_WIDE_INT i; 5142 FOR_EACH_VEC_SAFE_ELT (v, i, ce) 5143 if (!check_array_designated_initializer (ce, i)) 5144 failure = 1; 5145 } 5146 5147 if (!failure) 5148 { 5149 failure = cp_complete_array_type (&TREE_TYPE (decl), initializer, 5150 do_default); 5151 if (failure == 1) 5152 { 5153 error ("initializer fails to determine size of %qD", decl); 5154 } 5155 else if (failure == 2) 5156 { 5157 if (do_default) 5158 { 5159 error ("array size missing in %qD", decl); 5160 } 5161 /* If a `static' var's size isn't known, make it extern as 5162 well as static, so it does not get allocated. If it's not 5163 `static', then don't mark it extern; finish_incomplete_decl 5164 will give it a default size and it will get allocated. */ 5165 else if (!pedantic && TREE_STATIC (decl) && !TREE_PUBLIC (decl)) 5166 DECL_EXTERNAL (decl) = 1; 5167 } 5168 else if (failure == 3) 5169 { 5170 error ("zero-size array %qD", decl); 5171 } 5172 } 5173 5174 cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl); 5175 5176 relayout_decl (decl); 5177 } 5178 } 5179 5180 /* Set DECL_SIZE, DECL_ALIGN, etc. for DECL (a VAR_DECL), and issue 5181 any appropriate error messages regarding the layout. */ 5182 5183 static void 5184 layout_var_decl (tree decl) 5185 { 5186 tree type; 5187 5188 type = TREE_TYPE (decl); 5189 if (type == error_mark_node) 5190 return; 5191 5192 /* If we haven't already laid out this declaration, do so now. 5193 Note that we must not call complete type for an external object 5194 because it's type might involve templates that we are not 5195 supposed to instantiate yet. (And it's perfectly valid to say 5196 `extern X x' for some incomplete type `X'.) */ 5197 if (!DECL_EXTERNAL (decl)) 5198 complete_type (type); 5199 if (!DECL_SIZE (decl) 5200 && TREE_TYPE (decl) != error_mark_node 5201 && (COMPLETE_TYPE_P (type) 5202 || (TREE_CODE (type) == ARRAY_TYPE 5203 && !TYPE_DOMAIN (type) 5204 && COMPLETE_TYPE_P (TREE_TYPE (type))))) 5205 layout_decl (decl, 0); 5206 5207 if (!DECL_EXTERNAL (decl) && DECL_SIZE (decl) == NULL_TREE) 5208 { 5209 /* An automatic variable with an incomplete type: that is an error. 5210 Don't talk about array types here, since we took care of that 5211 message in grokdeclarator. */ 5212 error ("storage size of %qD isn%'t known", decl); 5213 TREE_TYPE (decl) = error_mark_node; 5214 } 5215 #if 0 5216 /* Keep this code around in case we later want to control debug info 5217 based on whether a type is "used". (jason 1999-11-11) */ 5218 5219 else if (!DECL_EXTERNAL (decl) && MAYBE_CLASS_TYPE_P (ttype)) 5220 /* Let debugger know it should output info for this type. */ 5221 note_debug_info_needed (ttype); 5222 5223 if (TREE_STATIC (decl) && DECL_CLASS_SCOPE_P (decl)) 5224 note_debug_info_needed (DECL_CONTEXT (decl)); 5225 #endif 5226 5227 if ((DECL_EXTERNAL (decl) || TREE_STATIC (decl)) 5228 && DECL_SIZE (decl) != NULL_TREE 5229 && ! TREE_CONSTANT (DECL_SIZE (decl))) 5230 { 5231 if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST) 5232 constant_expression_warning (DECL_SIZE (decl)); 5233 else 5234 { 5235 error ("storage size of %qD isn%'t constant", decl); 5236 TREE_TYPE (decl) = error_mark_node; 5237 } 5238 } 5239 } 5240 5241 /* If a local static variable is declared in an inline function, or if 5242 we have a weak definition, we must endeavor to create only one 5243 instance of the variable at link-time. */ 5244 5245 void 5246 maybe_commonize_var (tree decl) 5247 { 5248 /* Static data in a function with comdat linkage also has comdat 5249 linkage. */ 5250 if (TREE_STATIC (decl) 5251 /* Don't mess with __FUNCTION__. */ 5252 && ! DECL_ARTIFICIAL (decl) 5253 && DECL_FUNCTION_SCOPE_P (decl) 5254 && vague_linkage_p (DECL_CONTEXT (decl))) 5255 { 5256 if (flag_weak) 5257 { 5258 /* With weak symbols, we simply make the variable COMDAT; 5259 that will cause copies in multiple translations units to 5260 be merged. */ 5261 comdat_linkage (decl); 5262 } 5263 else 5264 { 5265 if (DECL_INITIAL (decl) == NULL_TREE 5266 || DECL_INITIAL (decl) == error_mark_node) 5267 { 5268 /* Without weak symbols, we can use COMMON to merge 5269 uninitialized variables. */ 5270 TREE_PUBLIC (decl) = 1; 5271 DECL_COMMON (decl) = 1; 5272 } 5273 else 5274 { 5275 /* While for initialized variables, we must use internal 5276 linkage -- which means that multiple copies will not 5277 be merged. */ 5278 TREE_PUBLIC (decl) = 0; 5279 DECL_COMMON (decl) = 0; 5280 if (warning_at (DECL_SOURCE_LOCATION (decl), 0, 5281 "sorry: semantics of inline function static " 5282 "data %q#D are wrong (you%'ll wind up " 5283 "with multiple copies)", decl)) 5284 inform (DECL_SOURCE_LOCATION (decl), 5285 "you can work around this by removing the initializer"); 5286 } 5287 } 5288 } 5289 } 5290 5291 /* Issue an error message if DECL is an uninitialized const variable. */ 5292 5293 static void 5294 check_for_uninitialized_const_var (tree decl) 5295 { 5296 tree type = strip_array_types (TREE_TYPE (decl)); 5297 5298 /* ``Unless explicitly declared extern, a const object does not have 5299 external linkage and must be initialized. ($8.4; $12.1)'' ARM 5300 7.1.6 */ 5301 if (VAR_P (decl) 5302 && TREE_CODE (type) != REFERENCE_TYPE 5303 && (CP_TYPE_CONST_P (type) || var_in_constexpr_fn (decl)) 5304 && !DECL_INITIAL (decl)) 5305 { 5306 tree field = default_init_uninitialized_part (type); 5307 if (!field) 5308 return; 5309 5310 if (CP_TYPE_CONST_P (type)) 5311 permerror (DECL_SOURCE_LOCATION (decl), 5312 "uninitialized const %qD", decl); 5313 else 5314 { 5315 error_at (DECL_SOURCE_LOCATION (decl), 5316 "uninitialized variable %qD in %<constexpr%> function", 5317 decl); 5318 cp_function_chain->invalid_constexpr = true; 5319 } 5320 5321 if (CLASS_TYPE_P (type)) 5322 { 5323 tree defaulted_ctor; 5324 5325 inform (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (type)), 5326 "%q#T has no user-provided default constructor", type); 5327 defaulted_ctor = in_class_defaulted_default_constructor (type); 5328 if (defaulted_ctor) 5329 inform (DECL_SOURCE_LOCATION (defaulted_ctor), 5330 "constructor is not user-provided because it is " 5331 "explicitly defaulted in the class body"); 5332 inform (0, "and the implicitly-defined constructor does not " 5333 "initialize %q+#D", field); 5334 } 5335 } 5336 } 5337 5338 /* Structure holding the current initializer being processed by reshape_init. 5339 CUR is a pointer to the current element being processed, END is a pointer 5340 after the last element present in the initializer. */ 5341 typedef struct reshape_iterator_t 5342 { 5343 constructor_elt *cur; 5344 constructor_elt *end; 5345 } reshape_iter; 5346 5347 static tree reshape_init_r (tree, reshape_iter *, bool, tsubst_flags_t); 5348 5349 /* FIELD is a FIELD_DECL or NULL. In the former case, the value 5350 returned is the next FIELD_DECL (possibly FIELD itself) that can be 5351 initialized. If there are no more such fields, the return value 5352 will be NULL. */ 5353 5354 tree 5355 next_initializable_field (tree field) 5356 { 5357 while (field 5358 && (TREE_CODE (field) != FIELD_DECL 5359 || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field)) 5360 || DECL_ARTIFICIAL (field))) 5361 field = DECL_CHAIN (field); 5362 5363 return field; 5364 } 5365 5366 /* Subroutine of reshape_init_array and reshape_init_vector, which does 5367 the actual work. ELT_TYPE is the element type of the array. MAX_INDEX is an 5368 INTEGER_CST representing the size of the array minus one (the maximum index), 5369 or NULL_TREE if the array was declared without specifying the size. D is 5370 the iterator within the constructor. */ 5371 5372 static tree 5373 reshape_init_array_1 (tree elt_type, tree max_index, reshape_iter *d, 5374 tsubst_flags_t complain) 5375 { 5376 tree new_init; 5377 bool sized_array_p = (max_index && TREE_CONSTANT (max_index)); 5378 unsigned HOST_WIDE_INT max_index_cst = 0; 5379 unsigned HOST_WIDE_INT index; 5380 5381 /* The initializer for an array is always a CONSTRUCTOR. */ 5382 new_init = build_constructor (init_list_type_node, NULL); 5383 5384 if (sized_array_p) 5385 { 5386 /* Minus 1 is used for zero sized arrays. */ 5387 if (integer_all_onesp (max_index)) 5388 return new_init; 5389 5390 if (tree_fits_uhwi_p (max_index)) 5391 max_index_cst = tree_to_uhwi (max_index); 5392 /* sizetype is sign extended, not zero extended. */ 5393 else 5394 max_index_cst = tree_to_uhwi (fold_convert (size_type_node, max_index)); 5395 } 5396 5397 /* Loop until there are no more initializers. */ 5398 for (index = 0; 5399 d->cur != d->end && (!sized_array_p || index <= max_index_cst); 5400 ++index) 5401 { 5402 tree elt_init; 5403 constructor_elt *old_cur = d->cur; 5404 5405 check_array_designated_initializer (d->cur, index); 5406 elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false, 5407 complain); 5408 if (elt_init == error_mark_node) 5409 return error_mark_node; 5410 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), 5411 size_int (index), elt_init); 5412 if (!TREE_CONSTANT (elt_init)) 5413 TREE_CONSTANT (new_init) = false; 5414 5415 /* This can happen with an invalid initializer (c++/54501). */ 5416 if (d->cur == old_cur && !sized_array_p) 5417 break; 5418 } 5419 5420 return new_init; 5421 } 5422 5423 /* Subroutine of reshape_init_r, processes the initializers for arrays. 5424 Parameters are the same of reshape_init_r. */ 5425 5426 static tree 5427 reshape_init_array (tree type, reshape_iter *d, tsubst_flags_t complain) 5428 { 5429 tree max_index = NULL_TREE; 5430 5431 gcc_assert (TREE_CODE (type) == ARRAY_TYPE); 5432 5433 if (TYPE_DOMAIN (type)) 5434 max_index = array_type_nelts (type); 5435 5436 return reshape_init_array_1 (TREE_TYPE (type), max_index, d, complain); 5437 } 5438 5439 /* Subroutine of reshape_init_r, processes the initializers for vectors. 5440 Parameters are the same of reshape_init_r. */ 5441 5442 static tree 5443 reshape_init_vector (tree type, reshape_iter *d, tsubst_flags_t complain) 5444 { 5445 tree max_index = NULL_TREE; 5446 5447 gcc_assert (TREE_CODE (type) == VECTOR_TYPE); 5448 5449 if (COMPOUND_LITERAL_P (d->cur->value)) 5450 { 5451 tree value = d->cur->value; 5452 if (!same_type_p (TREE_TYPE (value), type)) 5453 { 5454 if (complain & tf_error) 5455 error ("invalid type %qT as initializer for a vector of type %qT", 5456 TREE_TYPE (d->cur->value), type); 5457 value = error_mark_node; 5458 } 5459 ++d->cur; 5460 return value; 5461 } 5462 5463 /* For a vector, we initialize it as an array of the appropriate size. */ 5464 if (TREE_CODE (type) == VECTOR_TYPE) 5465 max_index = size_int (TYPE_VECTOR_SUBPARTS (type) - 1); 5466 5467 return reshape_init_array_1 (TREE_TYPE (type), max_index, d, complain); 5468 } 5469 5470 /* Subroutine of reshape_init_r, processes the initializers for classes 5471 or union. Parameters are the same of reshape_init_r. */ 5472 5473 static tree 5474 reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p, 5475 tsubst_flags_t complain) 5476 { 5477 tree field; 5478 tree new_init; 5479 5480 gcc_assert (CLASS_TYPE_P (type)); 5481 5482 /* The initializer for a class is always a CONSTRUCTOR. */ 5483 new_init = build_constructor (init_list_type_node, NULL); 5484 field = next_initializable_field (TYPE_FIELDS (type)); 5485 5486 if (!field) 5487 { 5488 /* [dcl.init.aggr] 5489 5490 An initializer for an aggregate member that is an 5491 empty class shall have the form of an empty 5492 initializer-list {}. */ 5493 if (!first_initializer_p) 5494 { 5495 if (complain & tf_error) 5496 error ("initializer for %qT must be brace-enclosed", type); 5497 return error_mark_node; 5498 } 5499 return new_init; 5500 } 5501 5502 /* Loop through the initializable fields, gathering initializers. */ 5503 while (d->cur != d->end) 5504 { 5505 tree field_init; 5506 constructor_elt *old_cur = d->cur; 5507 5508 /* Handle designated initializers, as an extension. */ 5509 if (d->cur->index) 5510 { 5511 if (d->cur->index == error_mark_node) 5512 return error_mark_node; 5513 5514 if (TREE_CODE (d->cur->index) == FIELD_DECL) 5515 /* We already reshaped this. */ 5516 gcc_assert (d->cur->index == field); 5517 else if (TREE_CODE (d->cur->index) == IDENTIFIER_NODE) 5518 field = lookup_field_1 (type, d->cur->index, /*want_type=*/false); 5519 else 5520 { 5521 if (complain & tf_error) 5522 error ("%<[%E] =%> used in a GNU-style designated initializer" 5523 " for class %qT", d->cur->index, type); 5524 return error_mark_node; 5525 } 5526 5527 if (!field || TREE_CODE (field) != FIELD_DECL) 5528 { 5529 if (complain & tf_error) 5530 error ("%qT has no non-static data member named %qD", type, 5531 d->cur->index); 5532 return error_mark_node; 5533 } 5534 } 5535 5536 /* If we processed all the member of the class, we are done. */ 5537 if (!field) 5538 break; 5539 5540 field_init = reshape_init_r (TREE_TYPE (field), d, 5541 /*first_initializer_p=*/false, complain); 5542 if (field_init == error_mark_node) 5543 return error_mark_node; 5544 5545 if (d->cur == old_cur && d->cur->index) 5546 { 5547 /* This can happen with an invalid initializer for a flexible 5548 array member (c++/54441). */ 5549 if (complain & tf_error) 5550 error ("invalid initializer for %q#D", field); 5551 return error_mark_node; 5552 } 5553 5554 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), field, field_init); 5555 5556 /* [dcl.init.aggr] 5557 5558 When a union is initialized with a brace-enclosed 5559 initializer, the braces shall only contain an 5560 initializer for the first member of the union. */ 5561 if (TREE_CODE (type) == UNION_TYPE) 5562 break; 5563 5564 field = next_initializable_field (DECL_CHAIN (field)); 5565 } 5566 5567 return new_init; 5568 } 5569 5570 /* Subroutine of reshape_init_r. We're in a context where C99 initializer 5571 designators are not valid; either complain or return true to indicate 5572 that reshape_init_r should return error_mark_node. */ 5573 5574 static bool 5575 has_designator_problem (reshape_iter *d, tsubst_flags_t complain) 5576 { 5577 if (d->cur->index) 5578 { 5579 if (complain & tf_error) 5580 error ("C99 designator %qE outside aggregate initializer", 5581 d->cur->index); 5582 else 5583 return true; 5584 } 5585 return false; 5586 } 5587 5588 /* Subroutine of reshape_init, which processes a single initializer (part of 5589 a CONSTRUCTOR). TYPE is the type of the variable being initialized, D is the 5590 iterator within the CONSTRUCTOR which points to the initializer to process. 5591 FIRST_INITIALIZER_P is true if this is the first initializer of the 5592 outermost CONSTRUCTOR node. */ 5593 5594 static tree 5595 reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p, 5596 tsubst_flags_t complain) 5597 { 5598 tree init = d->cur->value; 5599 5600 if (error_operand_p (init)) 5601 return error_mark_node; 5602 5603 if (first_initializer_p && !CP_AGGREGATE_TYPE_P (type) 5604 && has_designator_problem (d, complain)) 5605 return error_mark_node; 5606 5607 if (TREE_CODE (type) == COMPLEX_TYPE) 5608 { 5609 /* A complex type can be initialized from one or two initializers, 5610 but braces are not elided. */ 5611 d->cur++; 5612 if (BRACE_ENCLOSED_INITIALIZER_P (init)) 5613 { 5614 if (CONSTRUCTOR_NELTS (init) > 2) 5615 { 5616 if (complain & tf_error) 5617 error ("too many initializers for %qT", type); 5618 else 5619 return error_mark_node; 5620 } 5621 } 5622 else if (first_initializer_p && d->cur != d->end) 5623 { 5624 vec<constructor_elt, va_gc> *v = 0; 5625 CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init); 5626 CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, d->cur->value); 5627 if (has_designator_problem (d, complain)) 5628 return error_mark_node; 5629 d->cur++; 5630 init = build_constructor (init_list_type_node, v); 5631 } 5632 return init; 5633 } 5634 5635 /* A non-aggregate type is always initialized with a single 5636 initializer. */ 5637 if (!CP_AGGREGATE_TYPE_P (type)) 5638 { 5639 /* It is invalid to initialize a non-aggregate type with a 5640 brace-enclosed initializer before C++0x. 5641 We need to check for BRACE_ENCLOSED_INITIALIZER_P here because 5642 of g++.old-deja/g++.mike/p7626.C: a pointer-to-member constant is 5643 a CONSTRUCTOR (with a record type). */ 5644 if (TREE_CODE (init) == CONSTRUCTOR 5645 /* Don't complain about a capture-init. */ 5646 && !CONSTRUCTOR_IS_DIRECT_INIT (init) 5647 && BRACE_ENCLOSED_INITIALIZER_P (init)) /* p7626.C */ 5648 { 5649 if (SCALAR_TYPE_P (type)) 5650 { 5651 if (cxx_dialect < cxx11 5652 /* Isn't value-initialization. */ 5653 || CONSTRUCTOR_NELTS (init) > 0) 5654 { 5655 if (complain & tf_error) 5656 error ("braces around scalar initializer for type %qT", 5657 type); 5658 init = error_mark_node; 5659 } 5660 } 5661 else 5662 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); 5663 } 5664 5665 d->cur++; 5666 return init; 5667 } 5668 5669 /* "If T is a class type and the initializer list has a single element of 5670 type cv U, where U is T or a class derived from T, the object is 5671 initialized from that element." Even if T is an aggregate. */ 5672 if (cxx_dialect >= cxx11 && (CLASS_TYPE_P (type) || VECTOR_TYPE_P (type)) 5673 && first_initializer_p 5674 && d->end - d->cur == 1 5675 && reference_related_p (type, TREE_TYPE (init))) 5676 { 5677 d->cur++; 5678 return init; 5679 } 5680 5681 /* [dcl.init.aggr] 5682 5683 All implicit type conversions (clause _conv_) are considered when 5684 initializing the aggregate member with an initializer from an 5685 initializer-list. If the initializer can initialize a member, 5686 the member is initialized. Otherwise, if the member is itself a 5687 non-empty subaggregate, brace elision is assumed and the 5688 initializer is considered for the initialization of the first 5689 member of the subaggregate. */ 5690 if (TREE_CODE (init) != CONSTRUCTOR 5691 /* But don't try this for the first initializer, since that would be 5692 looking through the outermost braces; A a2 = { a1 }; is not a 5693 valid aggregate initialization. */ 5694 && !first_initializer_p 5695 && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (init)) 5696 || can_convert_arg (type, TREE_TYPE (init), init, LOOKUP_NORMAL, 5697 complain))) 5698 { 5699 d->cur++; 5700 return init; 5701 } 5702 5703 /* [dcl.init.string] 5704 5705 A char array (whether plain char, signed char, or unsigned char) 5706 can be initialized by a string-literal (optionally enclosed in 5707 braces); a wchar_t array can be initialized by a wide 5708 string-literal (optionally enclosed in braces). */ 5709 if (TREE_CODE (type) == ARRAY_TYPE 5710 && char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (type)))) 5711 { 5712 tree str_init = init; 5713 5714 /* Strip one level of braces if and only if they enclose a single 5715 element (as allowed by [dcl.init.string]). */ 5716 if (!first_initializer_p 5717 && TREE_CODE (str_init) == CONSTRUCTOR 5718 && vec_safe_length (CONSTRUCTOR_ELTS (str_init)) == 1) 5719 { 5720 str_init = (*CONSTRUCTOR_ELTS (str_init))[0].value; 5721 } 5722 5723 /* If it's a string literal, then it's the initializer for the array 5724 as a whole. Otherwise, continue with normal initialization for 5725 array types (one value per array element). */ 5726 if (TREE_CODE (str_init) == STRING_CST) 5727 { 5728 if (has_designator_problem (d, complain)) 5729 return error_mark_node; 5730 d->cur++; 5731 return str_init; 5732 } 5733 } 5734 5735 /* The following cases are about aggregates. If we are not within a full 5736 initializer already, and there is not a CONSTRUCTOR, it means that there 5737 is a missing set of braces (that is, we are processing the case for 5738 which reshape_init exists). */ 5739 if (!first_initializer_p) 5740 { 5741 if (TREE_CODE (init) == CONSTRUCTOR) 5742 { 5743 if (TREE_TYPE (init) && TYPE_PTRMEMFUNC_P (TREE_TYPE (init))) 5744 /* There is no need to reshape pointer-to-member function 5745 initializers, as they are always constructed correctly 5746 by the front end. */ 5747 ; 5748 else if (COMPOUND_LITERAL_P (init)) 5749 /* For a nested compound literal, there is no need to reshape since 5750 brace elision is not allowed. Even if we decided to allow it, 5751 we should add a call to reshape_init in finish_compound_literal, 5752 before calling digest_init, so changing this code would still 5753 not be necessary. */ 5754 gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init)); 5755 else 5756 { 5757 ++d->cur; 5758 gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init)); 5759 return reshape_init (type, init, complain); 5760 } 5761 } 5762 5763 warning (OPT_Wmissing_braces, "missing braces around initializer for %qT", 5764 type); 5765 } 5766 5767 /* Dispatch to specialized routines. */ 5768 if (CLASS_TYPE_P (type)) 5769 return reshape_init_class (type, d, first_initializer_p, complain); 5770 else if (TREE_CODE (type) == ARRAY_TYPE) 5771 return reshape_init_array (type, d, complain); 5772 else if (TREE_CODE (type) == VECTOR_TYPE) 5773 return reshape_init_vector (type, d, complain); 5774 else 5775 gcc_unreachable(); 5776 } 5777 5778 /* Undo the brace-elision allowed by [dcl.init.aggr] in a 5779 brace-enclosed aggregate initializer. 5780 5781 INIT is the CONSTRUCTOR containing the list of initializers describing 5782 a brace-enclosed initializer for an entity of the indicated aggregate TYPE. 5783 It may not presently match the shape of the TYPE; for example: 5784 5785 struct S { int a; int b; }; 5786 struct S a[] = { 1, 2, 3, 4 }; 5787 5788 Here INIT will hold a vector of four elements, rather than a 5789 vector of two elements, each itself a vector of two elements. This 5790 routine transforms INIT from the former form into the latter. The 5791 revised CONSTRUCTOR node is returned. */ 5792 5793 tree 5794 reshape_init (tree type, tree init, tsubst_flags_t complain) 5795 { 5796 vec<constructor_elt, va_gc> *v; 5797 reshape_iter d; 5798 tree new_init; 5799 5800 gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init)); 5801 5802 v = CONSTRUCTOR_ELTS (init); 5803 5804 /* An empty constructor does not need reshaping, and it is always a valid 5805 initializer. */ 5806 if (vec_safe_is_empty (v)) 5807 return init; 5808 5809 /* Recurse on this CONSTRUCTOR. */ 5810 d.cur = &(*v)[0]; 5811 d.end = d.cur + v->length (); 5812 5813 new_init = reshape_init_r (type, &d, true, complain); 5814 if (new_init == error_mark_node) 5815 return error_mark_node; 5816 5817 /* Make sure all the element of the constructor were used. Otherwise, 5818 issue an error about exceeding initializers. */ 5819 if (d.cur != d.end) 5820 { 5821 if (complain & tf_error) 5822 error ("too many initializers for %qT", type); 5823 else 5824 return error_mark_node; 5825 } 5826 5827 return new_init; 5828 } 5829 5830 /* Verify array initializer. Returns true if errors have been reported. */ 5831 5832 bool 5833 check_array_initializer (tree decl, tree type, tree init) 5834 { 5835 tree element_type = TREE_TYPE (type); 5836 5837 /* The array type itself need not be complete, because the 5838 initializer may tell us how many elements are in the array. 5839 But, the elements of the array must be complete. */ 5840 if (!COMPLETE_TYPE_P (complete_type (element_type))) 5841 { 5842 if (decl) 5843 error ("elements of array %q#D have incomplete type", decl); 5844 else 5845 error ("elements of array %q#T have incomplete type", type); 5846 return true; 5847 } 5848 /* A compound literal can't have variable size. */ 5849 if (init && !decl 5850 && ((COMPLETE_TYPE_P (type) && !TREE_CONSTANT (TYPE_SIZE (type))) 5851 || !TREE_CONSTANT (TYPE_SIZE (element_type)))) 5852 { 5853 error ("variable-sized compound literal"); 5854 return true; 5855 } 5856 return false; 5857 } 5858 5859 /* Subroutine of check_initializer; args are passed down from that function. 5860 Set stmts_are_full_exprs_p to 1 across a call to build_aggr_init. */ 5861 5862 static tree 5863 build_aggr_init_full_exprs (tree decl, tree init, int flags) 5864 5865 { 5866 gcc_assert (stmts_are_full_exprs_p ()); 5867 return build_aggr_init (decl, init, flags, tf_warning_or_error); 5868 } 5869 5870 /* Verify INIT (the initializer for DECL), and record the 5871 initialization in DECL_INITIAL, if appropriate. CLEANUP is as for 5872 grok_reference_init. 5873 5874 If the return value is non-NULL, it is an expression that must be 5875 evaluated dynamically to initialize DECL. */ 5876 5877 static tree 5878 check_initializer (tree decl, tree init, int flags, vec<tree, va_gc> **cleanups) 5879 { 5880 tree type = TREE_TYPE (decl); 5881 tree init_code = NULL; 5882 tree core_type; 5883 5884 /* Things that are going to be initialized need to have complete 5885 type. */ 5886 TREE_TYPE (decl) = type = complete_type (TREE_TYPE (decl)); 5887 5888 if (DECL_HAS_VALUE_EXPR_P (decl)) 5889 { 5890 /* A variable with DECL_HAS_VALUE_EXPR_P set is just a placeholder, 5891 it doesn't have storage to be initialized. */ 5892 gcc_assert (init == NULL_TREE); 5893 return NULL_TREE; 5894 } 5895 5896 if (type == error_mark_node) 5897 /* We will have already complained. */ 5898 return NULL_TREE; 5899 5900 if (TREE_CODE (type) == ARRAY_TYPE) 5901 { 5902 if (check_array_initializer (decl, type, init)) 5903 return NULL_TREE; 5904 } 5905 else if (!COMPLETE_TYPE_P (type)) 5906 { 5907 error ("%q#D has incomplete type", decl); 5908 TREE_TYPE (decl) = error_mark_node; 5909 return NULL_TREE; 5910 } 5911 else 5912 /* There is no way to make a variable-sized class type in GNU C++. */ 5913 gcc_assert (TREE_CONSTANT (TYPE_SIZE (type))); 5914 5915 if (init && BRACE_ENCLOSED_INITIALIZER_P (init)) 5916 { 5917 int init_len = vec_safe_length (CONSTRUCTOR_ELTS (init)); 5918 if (SCALAR_TYPE_P (type)) 5919 { 5920 if (init_len == 0) 5921 { 5922 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); 5923 init = build_zero_init (type, NULL_TREE, false); 5924 } 5925 else if (init_len != 1 && TREE_CODE (type) != COMPLEX_TYPE) 5926 { 5927 error ("scalar object %qD requires one element in initializer", 5928 decl); 5929 TREE_TYPE (decl) = error_mark_node; 5930 return NULL_TREE; 5931 } 5932 } 5933 } 5934 5935 if (TREE_CODE (decl) == CONST_DECL) 5936 { 5937 gcc_assert (TREE_CODE (type) != REFERENCE_TYPE); 5938 5939 DECL_INITIAL (decl) = init; 5940 5941 gcc_assert (init != NULL_TREE); 5942 init = NULL_TREE; 5943 } 5944 else if (!init && DECL_REALLY_EXTERN (decl)) 5945 ; 5946 else if (init || type_build_ctor_call (type) 5947 || TREE_CODE (type) == REFERENCE_TYPE) 5948 { 5949 if (TREE_CODE (type) == REFERENCE_TYPE) 5950 { 5951 init = grok_reference_init (decl, type, init, flags); 5952 flags |= LOOKUP_ALREADY_DIGESTED; 5953 } 5954 else if (!init) 5955 check_for_uninitialized_const_var (decl); 5956 /* Do not reshape constructors of vectors (they don't need to be 5957 reshaped. */ 5958 else if (BRACE_ENCLOSED_INITIALIZER_P (init)) 5959 { 5960 if (is_std_init_list (type)) 5961 { 5962 init = perform_implicit_conversion (type, init, 5963 tf_warning_or_error); 5964 flags |= LOOKUP_ALREADY_DIGESTED; 5965 } 5966 else if (TYPE_NON_AGGREGATE_CLASS (type)) 5967 { 5968 /* Don't reshape if the class has constructors. */ 5969 if (cxx_dialect == cxx98) 5970 error ("in C++98 %qD must be initialized by constructor, " 5971 "not by %<{...}%>", 5972 decl); 5973 } 5974 else if (TREE_CODE (type) == VECTOR_TYPE && TYPE_VECTOR_OPAQUE (type)) 5975 { 5976 error ("opaque vector types cannot be initialized"); 5977 init = error_mark_node; 5978 } 5979 else 5980 { 5981 init = reshape_init (type, init, tf_warning_or_error); 5982 flags |= LOOKUP_NO_NARROWING; 5983 } 5984 } 5985 else if (TREE_CODE (init) == TREE_LIST 5986 && TREE_TYPE (init) != unknown_type_node 5987 && !MAYBE_CLASS_TYPE_P (type)) 5988 { 5989 gcc_assert (TREE_CODE (decl) != RESULT_DECL); 5990 5991 /* We get here with code like `int a (2);' */ 5992 init = build_x_compound_expr_from_list (init, ELK_INIT, 5993 tf_warning_or_error); 5994 } 5995 5996 /* If DECL has an array type without a specific bound, deduce the 5997 array size from the initializer. */ 5998 maybe_deduce_size_from_array_init (decl, init); 5999 type = TREE_TYPE (decl); 6000 if (type == error_mark_node) 6001 return NULL_TREE; 6002 6003 if ((type_build_ctor_call (type) || CLASS_TYPE_P (type)) 6004 && !(flags & LOOKUP_ALREADY_DIGESTED) 6005 && !(init && BRACE_ENCLOSED_INITIALIZER_P (init) 6006 && CP_AGGREGATE_TYPE_P (type) 6007 && (CLASS_TYPE_P (type) 6008 || !TYPE_NEEDS_CONSTRUCTING (type) 6009 || type_has_extended_temps (type)))) 6010 { 6011 init_code = build_aggr_init_full_exprs (decl, init, flags); 6012 6013 /* A constructor call is a non-trivial initializer even if 6014 it isn't explicitly written. */ 6015 if (TREE_SIDE_EFFECTS (init_code)) 6016 DECL_NONTRIVIALLY_INITIALIZED_P (decl) = true; 6017 6018 /* If this is a constexpr initializer, expand_default_init will 6019 have returned an INIT_EXPR rather than a CALL_EXPR. In that 6020 case, pull the initializer back out and pass it down into 6021 store_init_value. */ 6022 while (TREE_CODE (init_code) == EXPR_STMT 6023 || TREE_CODE (init_code) == CONVERT_EXPR) 6024 init_code = TREE_OPERAND (init_code, 0); 6025 if (TREE_CODE (init_code) == INIT_EXPR) 6026 { 6027 init = TREE_OPERAND (init_code, 1); 6028 init_code = NULL_TREE; 6029 /* Don't call digest_init; it's unnecessary and will complain 6030 about aggregate initialization of non-aggregate classes. */ 6031 flags |= LOOKUP_ALREADY_DIGESTED; 6032 } 6033 else if (DECL_DECLARED_CONSTEXPR_P (decl)) 6034 { 6035 /* Declared constexpr, but no suitable initializer; massage 6036 init appropriately so we can pass it into store_init_value 6037 for the error. */ 6038 if (CLASS_TYPE_P (type) 6039 && (!init || TREE_CODE (init) == TREE_LIST)) 6040 { 6041 init = build_functional_cast (type, init, tf_none); 6042 if (TREE_CODE (init) == TARGET_EXPR) 6043 TARGET_EXPR_DIRECT_INIT_P (init) = true; 6044 } 6045 init_code = NULL_TREE; 6046 } 6047 else 6048 init = NULL_TREE; 6049 } 6050 6051 if (init && TREE_CODE (init) != TREE_VEC) 6052 { 6053 /* In aggregate initialization of a variable, each element 6054 initialization is a full-expression because there is no 6055 enclosing expression. */ 6056 gcc_assert (stmts_are_full_exprs_p ()); 6057 6058 init_code = store_init_value (decl, init, cleanups, flags); 6059 6060 if (pedantic && TREE_CODE (type) == ARRAY_TYPE 6061 && DECL_INITIAL (decl) 6062 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST 6063 && PAREN_STRING_LITERAL_P (DECL_INITIAL (decl))) 6064 warning (0, "array %qD initialized by parenthesized string literal %qE", 6065 decl, DECL_INITIAL (decl)); 6066 init = NULL; 6067 } 6068 } 6069 else 6070 { 6071 if (CLASS_TYPE_P (core_type = strip_array_types (type)) 6072 && (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type) 6073 || CLASSTYPE_REF_FIELDS_NEED_INIT (core_type))) 6074 diagnose_uninitialized_cst_or_ref_member (core_type, /*using_new=*/false, 6075 /*complain=*/true); 6076 6077 check_for_uninitialized_const_var (decl); 6078 } 6079 6080 if (init && init != error_mark_node) 6081 init_code = build2 (INIT_EXPR, type, decl, init); 6082 6083 if (init_code) 6084 { 6085 /* We might have set these in cp_finish_decl. */ 6086 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = false; 6087 TREE_CONSTANT (decl) = false; 6088 } 6089 6090 if (init_code && DECL_IN_AGGR_P (decl)) 6091 { 6092 static int explained = 0; 6093 6094 if (cxx_dialect < cxx11) 6095 error ("initializer invalid for static member with constructor"); 6096 else 6097 error ("non-constant in-class initialization invalid for static " 6098 "member %qD", decl); 6099 if (!explained) 6100 { 6101 inform (input_location, 6102 "(an out of class initialization is required)"); 6103 explained = 1; 6104 } 6105 return NULL_TREE; 6106 } 6107 6108 return init_code; 6109 } 6110 6111 /* If DECL is not a local variable, give it RTL. */ 6112 6113 static void 6114 make_rtl_for_nonlocal_decl (tree decl, tree init, const char* asmspec) 6115 { 6116 int toplev = toplevel_bindings_p (); 6117 int defer_p; 6118 6119 /* Set the DECL_ASSEMBLER_NAME for the object. */ 6120 if (asmspec) 6121 { 6122 /* The `register' keyword, when used together with an 6123 asm-specification, indicates that the variable should be 6124 placed in a particular register. */ 6125 if (VAR_P (decl) && DECL_REGISTER (decl)) 6126 { 6127 set_user_assembler_name (decl, asmspec); 6128 DECL_HARD_REGISTER (decl) = 1; 6129 } 6130 else 6131 { 6132 if (TREE_CODE (decl) == FUNCTION_DECL 6133 && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL) 6134 set_builtin_user_assembler_name (decl, asmspec); 6135 set_user_assembler_name (decl, asmspec); 6136 } 6137 } 6138 6139 /* Handle non-variables up front. */ 6140 if (!VAR_P (decl)) 6141 { 6142 rest_of_decl_compilation (decl, toplev, at_eof); 6143 return; 6144 } 6145 6146 /* If we see a class member here, it should be a static data 6147 member. */ 6148 if (DECL_LANG_SPECIFIC (decl) && DECL_IN_AGGR_P (decl)) 6149 { 6150 gcc_assert (TREE_STATIC (decl)); 6151 /* An in-class declaration of a static data member should be 6152 external; it is only a declaration, and not a definition. */ 6153 if (init == NULL_TREE) 6154 gcc_assert (DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl)); 6155 } 6156 6157 /* We don't create any RTL for local variables. */ 6158 if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl)) 6159 return; 6160 6161 /* We defer emission of local statics until the corresponding 6162 DECL_EXPR is expanded. But with constexpr its function might never 6163 be expanded, so go ahead and tell cgraph about the variable now. */ 6164 defer_p = ((DECL_FUNCTION_SCOPE_P (decl) 6165 && !DECL_DECLARED_CONSTEXPR_P (DECL_CONTEXT (decl))) 6166 || DECL_VIRTUAL_P (decl)); 6167 6168 /* Defer template instantiations. */ 6169 if (DECL_LANG_SPECIFIC (decl) 6170 && DECL_IMPLICIT_INSTANTIATION (decl)) 6171 defer_p = 1; 6172 6173 /* If we're not deferring, go ahead and assemble the variable. */ 6174 if (!defer_p) 6175 rest_of_decl_compilation (decl, toplev, at_eof); 6176 } 6177 6178 /* walk_tree helper for wrap_temporary_cleanups, below. */ 6179 6180 static tree 6181 wrap_cleanups_r (tree *stmt_p, int *walk_subtrees, void *data) 6182 { 6183 /* Stop at types or full-expression boundaries. */ 6184 if (TYPE_P (*stmt_p) 6185 || TREE_CODE (*stmt_p) == CLEANUP_POINT_EXPR) 6186 { 6187 *walk_subtrees = 0; 6188 return NULL_TREE; 6189 } 6190 6191 if (TREE_CODE (*stmt_p) == TARGET_EXPR) 6192 { 6193 tree guard = (tree)data; 6194 tree tcleanup = TARGET_EXPR_CLEANUP (*stmt_p); 6195 6196 tcleanup = build2 (TRY_CATCH_EXPR, void_type_node, tcleanup, guard); 6197 /* Tell honor_protect_cleanup_actions to handle this as a separate 6198 cleanup. */ 6199 TRY_CATCH_IS_CLEANUP (tcleanup) = 1; 6200 6201 TARGET_EXPR_CLEANUP (*stmt_p) = tcleanup; 6202 } 6203 6204 return NULL_TREE; 6205 } 6206 6207 /* We're initializing a local variable which has a cleanup GUARD. If there 6208 are any temporaries used in the initializer INIT of this variable, we 6209 need to wrap their cleanups with TRY_CATCH_EXPR (, GUARD) so that the 6210 variable will be cleaned up properly if one of them throws. 6211 6212 Unfortunately, there's no way to express this properly in terms of 6213 nesting, as the regions for the temporaries overlap the region for the 6214 variable itself; if there are two temporaries, the variable needs to be 6215 the first thing destroyed if either of them throws. However, we only 6216 want to run the variable's cleanup if it actually got constructed. So 6217 we need to guard the temporary cleanups with the variable's cleanup if 6218 they are run on the normal path, but not if they are run on the 6219 exceptional path. We implement this by telling 6220 honor_protect_cleanup_actions to strip the variable cleanup from the 6221 exceptional path. */ 6222 6223 static void 6224 wrap_temporary_cleanups (tree init, tree guard) 6225 { 6226 cp_walk_tree_without_duplicates (&init, wrap_cleanups_r, (void *)guard); 6227 } 6228 6229 /* Generate code to initialize DECL (a local variable). */ 6230 6231 static void 6232 initialize_local_var (tree decl, tree init) 6233 { 6234 tree type = TREE_TYPE (decl); 6235 tree cleanup; 6236 int already_used; 6237 6238 gcc_assert (VAR_P (decl) 6239 || TREE_CODE (decl) == RESULT_DECL); 6240 gcc_assert (!TREE_STATIC (decl)); 6241 6242 if (DECL_SIZE (decl) == NULL_TREE) 6243 { 6244 /* If we used it already as memory, it must stay in memory. */ 6245 DECL_INITIAL (decl) = NULL_TREE; 6246 TREE_ADDRESSABLE (decl) = TREE_USED (decl); 6247 return; 6248 } 6249 6250 if (type == error_mark_node) 6251 return; 6252 6253 /* Compute and store the initial value. */ 6254 already_used = TREE_USED (decl) || TREE_USED (type); 6255 if (TREE_USED (type)) 6256 DECL_READ_P (decl) = 1; 6257 6258 /* Generate a cleanup, if necessary. */ 6259 cleanup = cxx_maybe_build_cleanup (decl, tf_warning_or_error); 6260 6261 /* Perform the initialization. */ 6262 if (init) 6263 { 6264 tree rinit = (TREE_CODE (init) == INIT_EXPR 6265 ? TREE_OPERAND (init, 1) : NULL_TREE); 6266 if (rinit && !TREE_SIDE_EFFECTS (rinit)) 6267 { 6268 /* Stick simple initializers in DECL_INITIAL so that 6269 -Wno-init-self works (c++/34772). */ 6270 gcc_assert (TREE_OPERAND (init, 0) == decl); 6271 DECL_INITIAL (decl) = rinit; 6272 6273 if (warn_init_self && TREE_CODE (type) == REFERENCE_TYPE) 6274 { 6275 STRIP_NOPS (rinit); 6276 if (rinit == decl) 6277 warning_at (DECL_SOURCE_LOCATION (decl), 6278 OPT_Winit_self, 6279 "reference %qD is initialized with itself", decl); 6280 } 6281 } 6282 else 6283 { 6284 int saved_stmts_are_full_exprs_p; 6285 6286 /* If we're only initializing a single object, guard the 6287 destructors of any temporaries used in its initializer with 6288 its destructor. This isn't right for arrays because each 6289 element initialization is a full-expression. */ 6290 if (cleanup && TREE_CODE (type) != ARRAY_TYPE) 6291 wrap_temporary_cleanups (init, cleanup); 6292 6293 gcc_assert (building_stmt_list_p ()); 6294 saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p (); 6295 current_stmt_tree ()->stmts_are_full_exprs_p = 1; 6296 finish_expr_stmt (init); 6297 current_stmt_tree ()->stmts_are_full_exprs_p = 6298 saved_stmts_are_full_exprs_p; 6299 } 6300 } 6301 6302 /* Set this to 0 so we can tell whether an aggregate which was 6303 initialized was ever used. Don't do this if it has a 6304 destructor, so we don't complain about the 'resource 6305 allocation is initialization' idiom. Now set 6306 attribute((unused)) on types so decls of that type will be 6307 marked used. (see TREE_USED, above.) */ 6308 if (TYPE_NEEDS_CONSTRUCTING (type) 6309 && ! already_used 6310 && TYPE_HAS_TRIVIAL_DESTRUCTOR (type) 6311 && DECL_NAME (decl)) 6312 TREE_USED (decl) = 0; 6313 else if (already_used) 6314 TREE_USED (decl) = 1; 6315 6316 if (cleanup) 6317 finish_decl_cleanup (decl, cleanup); 6318 } 6319 6320 /* DECL is a VAR_DECL for a compiler-generated variable with static 6321 storage duration (like a virtual table) whose initializer is a 6322 compile-time constant. Initialize the variable and provide it to the 6323 back end. */ 6324 6325 void 6326 initialize_artificial_var (tree decl, vec<constructor_elt, va_gc> *v) 6327 { 6328 tree init; 6329 gcc_assert (DECL_ARTIFICIAL (decl)); 6330 init = build_constructor (TREE_TYPE (decl), v); 6331 gcc_assert (TREE_CODE (init) == CONSTRUCTOR); 6332 DECL_INITIAL (decl) = init; 6333 DECL_INITIALIZED_P (decl) = 1; 6334 determine_visibility (decl); 6335 layout_var_decl (decl); 6336 maybe_commonize_var (decl); 6337 make_rtl_for_nonlocal_decl (decl, init, /*asmspec=*/NULL); 6338 } 6339 6340 /* INIT is the initializer for a variable, as represented by the 6341 parser. Returns true iff INIT is type-dependent. */ 6342 6343 static bool 6344 type_dependent_init_p (tree init) 6345 { 6346 if (TREE_CODE (init) == TREE_LIST) 6347 /* A parenthesized initializer, e.g.: int i (3, 2); ? */ 6348 return any_type_dependent_elements_p (init); 6349 else if (TREE_CODE (init) == CONSTRUCTOR) 6350 /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */ 6351 { 6352 if (dependent_type_p (TREE_TYPE (init))) 6353 return true; 6354 6355 vec<constructor_elt, va_gc> *elts; 6356 size_t nelts; 6357 size_t i; 6358 6359 elts = CONSTRUCTOR_ELTS (init); 6360 nelts = vec_safe_length (elts); 6361 for (i = 0; i < nelts; ++i) 6362 if (type_dependent_init_p ((*elts)[i].value)) 6363 return true; 6364 } 6365 else 6366 /* It must be a simple expression, e.g., int i = 3; */ 6367 return type_dependent_expression_p (init); 6368 6369 return false; 6370 } 6371 6372 /* INIT is the initializer for a variable, as represented by the 6373 parser. Returns true iff INIT is value-dependent. */ 6374 6375 static bool 6376 value_dependent_init_p (tree init) 6377 { 6378 if (TREE_CODE (init) == TREE_LIST) 6379 /* A parenthesized initializer, e.g.: int i (3, 2); ? */ 6380 return any_value_dependent_elements_p (init); 6381 else if (TREE_CODE (init) == CONSTRUCTOR) 6382 /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */ 6383 { 6384 vec<constructor_elt, va_gc> *elts; 6385 size_t nelts; 6386 size_t i; 6387 6388 elts = CONSTRUCTOR_ELTS (init); 6389 nelts = vec_safe_length (elts); 6390 for (i = 0; i < nelts; ++i) 6391 if (value_dependent_init_p ((*elts)[i].value)) 6392 return true; 6393 } 6394 else 6395 /* It must be a simple expression, e.g., int i = 3; */ 6396 return value_dependent_expression_p (init); 6397 6398 return false; 6399 } 6400 6401 /* Finish processing of a declaration; 6402 install its line number and initial value. 6403 If the length of an array type is not known before, 6404 it must be determined now, from the initial value, or it is an error. 6405 6406 INIT is the initializer (if any) for DECL. If INIT_CONST_EXPR_P is 6407 true, then INIT is an integral constant expression. 6408 6409 FLAGS is LOOKUP_ONLYCONVERTING if the = init syntax was used, else 0 6410 if the (init) syntax was used. */ 6411 6412 void 6413 cp_finish_decl (tree decl, tree init, bool init_const_expr_p, 6414 tree asmspec_tree, int flags) 6415 { 6416 tree type; 6417 vec<tree, va_gc> *cleanups = NULL; 6418 const char *asmspec = NULL; 6419 int was_readonly = 0; 6420 bool var_definition_p = false; 6421 tree auto_node; 6422 6423 if (decl == error_mark_node) 6424 return; 6425 else if (! decl) 6426 { 6427 if (init) 6428 error ("assignment (not initialization) in declaration"); 6429 return; 6430 } 6431 6432 gcc_assert (TREE_CODE (decl) != RESULT_DECL); 6433 /* Parameters are handled by store_parm_decls, not cp_finish_decl. */ 6434 gcc_assert (TREE_CODE (decl) != PARM_DECL); 6435 6436 type = TREE_TYPE (decl); 6437 if (type == error_mark_node) 6438 return; 6439 6440 /* If a name was specified, get the string. */ 6441 if (at_namespace_scope_p ()) 6442 asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree); 6443 if (asmspec_tree && asmspec_tree != error_mark_node) 6444 asmspec = TREE_STRING_POINTER (asmspec_tree); 6445 6446 if (current_class_type 6447 && CP_DECL_CONTEXT (decl) == current_class_type 6448 && TYPE_BEING_DEFINED (current_class_type) 6449 && !CLASSTYPE_TEMPLATE_INSTANTIATION (current_class_type) 6450 && (DECL_INITIAL (decl) || init)) 6451 DECL_INITIALIZED_IN_CLASS_P (decl) = 1; 6452 6453 if (TREE_CODE (decl) != FUNCTION_DECL 6454 && (auto_node = type_uses_auto (type))) 6455 { 6456 tree d_init; 6457 if (init == NULL_TREE) 6458 { 6459 if (DECL_LANG_SPECIFIC (decl) 6460 && DECL_TEMPLATE_INSTANTIATION (decl) 6461 && !DECL_TEMPLATE_INSTANTIATED (decl)) 6462 { 6463 /* init is null because we're deferring instantiating the 6464 initializer until we need it. Well, we need it now. */ 6465 instantiate_decl (decl, /*defer_ok*/true, /*expl*/false); 6466 return; 6467 } 6468 6469 error ("declaration of %q#D has no initializer", decl); 6470 TREE_TYPE (decl) = error_mark_node; 6471 return; 6472 } 6473 d_init = init; 6474 if (TREE_CODE (d_init) == TREE_LIST) 6475 d_init = build_x_compound_expr_from_list (d_init, ELK_INIT, 6476 tf_warning_or_error); 6477 d_init = resolve_nondeduced_context (d_init, tf_warning_or_error); 6478 type = TREE_TYPE (decl) = do_auto_deduction (type, d_init, 6479 auto_node); 6480 if (type == error_mark_node) 6481 return; 6482 cp_apply_type_quals_to_decl (cp_type_quals (type), decl); 6483 } 6484 6485 if (!ensure_literal_type_for_constexpr_object (decl)) 6486 DECL_DECLARED_CONSTEXPR_P (decl) = 0; 6487 6488 if (VAR_P (decl) 6489 && DECL_CLASS_SCOPE_P (decl) 6490 && DECL_INITIALIZED_IN_CLASS_P (decl)) 6491 check_static_variable_definition (decl, type); 6492 6493 if (init && TREE_CODE (decl) == FUNCTION_DECL) 6494 { 6495 tree clone; 6496 if (init == ridpointers[(int)RID_DELETE]) 6497 { 6498 /* FIXME check this is 1st decl. */ 6499 DECL_DELETED_FN (decl) = 1; 6500 DECL_DECLARED_INLINE_P (decl) = 1; 6501 DECL_INITIAL (decl) = error_mark_node; 6502 FOR_EACH_CLONE (clone, decl) 6503 { 6504 DECL_DELETED_FN (clone) = 1; 6505 DECL_DECLARED_INLINE_P (clone) = 1; 6506 DECL_INITIAL (clone) = error_mark_node; 6507 } 6508 init = NULL_TREE; 6509 } 6510 else if (init == ridpointers[(int)RID_DEFAULT]) 6511 { 6512 if (defaultable_fn_check (decl)) 6513 DECL_DEFAULTED_FN (decl) = 1; 6514 else 6515 DECL_INITIAL (decl) = NULL_TREE; 6516 } 6517 } 6518 6519 if (init && VAR_P (decl)) 6520 { 6521 DECL_NONTRIVIALLY_INITIALIZED_P (decl) = 1; 6522 /* If DECL is a reference, then we want to know whether init is a 6523 reference constant; init_const_expr_p as passed tells us whether 6524 it's an rvalue constant. */ 6525 if (TREE_CODE (type) == REFERENCE_TYPE) 6526 init_const_expr_p = potential_constant_expression (init); 6527 if (init_const_expr_p) 6528 { 6529 /* Set these flags now for templates. We'll update the flags in 6530 store_init_value for instantiations. */ 6531 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = 1; 6532 if (decl_maybe_constant_var_p (decl)) 6533 TREE_CONSTANT (decl) = 1; 6534 } 6535 } 6536 6537 if (processing_template_decl) 6538 { 6539 bool type_dependent_p; 6540 6541 /* Add this declaration to the statement-tree. */ 6542 if (at_function_scope_p ()) 6543 add_decl_expr (decl); 6544 6545 type_dependent_p = dependent_type_p (type); 6546 6547 if (check_for_bare_parameter_packs (init)) 6548 { 6549 init = NULL_TREE; 6550 DECL_INITIAL (decl) = NULL_TREE; 6551 } 6552 6553 /* Generally, initializers in templates are expanded when the 6554 template is instantiated. But, if DECL is a variable constant 6555 then it can be used in future constant expressions, so its value 6556 must be available. */ 6557 6558 if (!VAR_P (decl) || dependent_type_p (type)) 6559 /* We can't do anything if the decl has dependent type. */; 6560 else if (init 6561 && init_const_expr_p 6562 && !type_dependent_p 6563 && TREE_CODE (type) != REFERENCE_TYPE 6564 && decl_maybe_constant_var_p (decl) 6565 && !type_dependent_init_p (init) 6566 && !value_dependent_init_p (init)) 6567 { 6568 /* This variable seems to be a non-dependent constant, so process 6569 its initializer. If check_initializer returns non-null the 6570 initialization wasn't constant after all. */ 6571 tree init_code; 6572 cleanups = make_tree_vector (); 6573 init_code = check_initializer (decl, init, flags, &cleanups); 6574 if (init_code == NULL_TREE) 6575 init = NULL_TREE; 6576 release_tree_vector (cleanups); 6577 } 6578 else if (!DECL_PRETTY_FUNCTION_P (decl)) 6579 { 6580 /* Deduce array size even if the initializer is dependent. */ 6581 maybe_deduce_size_from_array_init (decl, init); 6582 /* And complain about multiple initializers. */ 6583 if (init && TREE_CODE (init) == TREE_LIST && TREE_CHAIN (init) 6584 && !MAYBE_CLASS_TYPE_P (type)) 6585 init = build_x_compound_expr_from_list (init, ELK_INIT, 6586 tf_warning_or_error); 6587 } 6588 6589 if (init) 6590 DECL_INITIAL (decl) = init; 6591 return; 6592 } 6593 6594 /* Just store non-static data member initializers for later. */ 6595 if (init && TREE_CODE (decl) == FIELD_DECL) 6596 DECL_INITIAL (decl) = init; 6597 6598 /* Take care of TYPE_DECLs up front. */ 6599 if (TREE_CODE (decl) == TYPE_DECL) 6600 { 6601 if (type != error_mark_node 6602 && MAYBE_CLASS_TYPE_P (type) && DECL_NAME (decl)) 6603 { 6604 if (TREE_TYPE (DECL_NAME (decl)) && TREE_TYPE (decl) != type) 6605 warning (0, "shadowing previous type declaration of %q#D", decl); 6606 set_identifier_type_value (DECL_NAME (decl), decl); 6607 } 6608 6609 /* If we have installed this as the canonical typedef for this 6610 type, and that type has not been defined yet, delay emitting 6611 the debug information for it, as we will emit it later. */ 6612 if (TYPE_MAIN_DECL (TREE_TYPE (decl)) == decl 6613 && !COMPLETE_TYPE_P (TREE_TYPE (decl))) 6614 TYPE_DECL_SUPPRESS_DEBUG (decl) = 1; 6615 6616 rest_of_decl_compilation (decl, DECL_FILE_SCOPE_P (decl), 6617 at_eof); 6618 return; 6619 } 6620 6621 /* A reference will be modified here, as it is initialized. */ 6622 if (! DECL_EXTERNAL (decl) 6623 && TREE_READONLY (decl) 6624 && TREE_CODE (type) == REFERENCE_TYPE) 6625 { 6626 was_readonly = 1; 6627 TREE_READONLY (decl) = 0; 6628 } 6629 6630 if (VAR_P (decl)) 6631 { 6632 /* If this is a local variable that will need a mangled name, 6633 register it now. We must do this before processing the 6634 initializer for the variable, since the initialization might 6635 require a guard variable, and since the mangled name of the 6636 guard variable will depend on the mangled name of this 6637 variable. */ 6638 if (DECL_FUNCTION_SCOPE_P (decl) 6639 && TREE_STATIC (decl) 6640 && !DECL_ARTIFICIAL (decl)) 6641 { 6642 push_local_name (decl); 6643 if (DECL_CONSTRUCTOR_P (current_function_decl) 6644 || DECL_DESTRUCTOR_P (current_function_decl)) 6645 /* Normally local_decls is populated during GIMPLE lowering, 6646 but [cd]tors are never actually compiled directly. We need 6647 to put statics on the list so we can deal with the label 6648 address extension. FIXME. */ 6649 add_local_decl (cfun, decl); 6650 } 6651 6652 /* Convert the initializer to the type of DECL, if we have not 6653 already initialized DECL. */ 6654 if (!DECL_INITIALIZED_P (decl) 6655 /* If !DECL_EXTERNAL then DECL is being defined. In the 6656 case of a static data member initialized inside the 6657 class-specifier, there can be an initializer even if DECL 6658 is *not* defined. */ 6659 && (!DECL_EXTERNAL (decl) || init)) 6660 { 6661 if (TYPE_FOR_JAVA (type) && MAYBE_CLASS_TYPE_P (type)) 6662 { 6663 tree jclass 6664 = IDENTIFIER_GLOBAL_VALUE (get_identifier ("jclass")); 6665 /* Allow libjava/prims.cc define primitive classes. */ 6666 if (init != NULL_TREE 6667 || jclass == NULL_TREE 6668 || TREE_CODE (jclass) != TYPE_DECL 6669 || !POINTER_TYPE_P (TREE_TYPE (jclass)) 6670 || !same_type_ignoring_top_level_qualifiers_p 6671 (type, TREE_TYPE (TREE_TYPE (jclass)))) 6672 error ("Java object %qD not allocated with %<new%>", decl); 6673 init = NULL_TREE; 6674 } 6675 cleanups = make_tree_vector (); 6676 init = check_initializer (decl, init, flags, &cleanups); 6677 6678 /* Handle: 6679 6680 [dcl.init] 6681 6682 The memory occupied by any object of static storage 6683 duration is zero-initialized at program startup before 6684 any other initialization takes place. 6685 6686 We cannot create an appropriate initializer until after 6687 the type of DECL is finalized. If DECL_INITIAL is set, 6688 then the DECL is statically initialized, and any 6689 necessary zero-initialization has already been performed. */ 6690 if (TREE_STATIC (decl) && !DECL_INITIAL (decl)) 6691 DECL_INITIAL (decl) = build_zero_init (TREE_TYPE (decl), 6692 /*nelts=*/NULL_TREE, 6693 /*static_storage_p=*/true); 6694 /* Remember that the initialization for this variable has 6695 taken place. */ 6696 DECL_INITIALIZED_P (decl) = 1; 6697 /* This declaration is the definition of this variable, 6698 unless we are initializing a static data member within 6699 the class specifier. */ 6700 if (!DECL_EXTERNAL (decl)) 6701 var_definition_p = true; 6702 } 6703 /* If the variable has an array type, lay out the type, even if 6704 there is no initializer. It is valid to index through the 6705 array, and we must get TYPE_ALIGN set correctly on the array 6706 type. */ 6707 else if (TREE_CODE (type) == ARRAY_TYPE) 6708 layout_type (type); 6709 6710 if (TREE_STATIC (decl) 6711 && !at_function_scope_p () 6712 && current_function_decl == NULL) 6713 /* So decl is a global variable or a static member of a 6714 non local class. Record the types it uses 6715 so that we can decide later to emit debug info for them. */ 6716 record_types_used_by_current_var_decl (decl); 6717 } 6718 else if (TREE_CODE (decl) == FIELD_DECL 6719 && TYPE_FOR_JAVA (type) && MAYBE_CLASS_TYPE_P (type)) 6720 error ("non-static data member %qD has Java class type", decl); 6721 6722 /* Add this declaration to the statement-tree. This needs to happen 6723 after the call to check_initializer so that the DECL_EXPR for a 6724 reference temp is added before the DECL_EXPR for the reference itself. */ 6725 if (DECL_FUNCTION_SCOPE_P (decl)) 6726 { 6727 /* If we're building a variable sized type, and we might be 6728 reachable other than via the top of the current binding 6729 level, then create a new BIND_EXPR so that we deallocate 6730 the object at the right time. */ 6731 if (VAR_P (decl) 6732 && DECL_SIZE (decl) 6733 && !TREE_CONSTANT (DECL_SIZE (decl)) 6734 && STATEMENT_LIST_HAS_LABEL (cur_stmt_list)) 6735 { 6736 tree bind; 6737 bind = build3 (BIND_EXPR, void_type_node, NULL, NULL, NULL); 6738 TREE_SIDE_EFFECTS (bind) = 1; 6739 add_stmt (bind); 6740 BIND_EXPR_BODY (bind) = push_stmt_list (); 6741 } 6742 add_decl_expr (decl); 6743 } 6744 6745 /* Let the middle end know about variables and functions -- but not 6746 static data members in uninstantiated class templates. */ 6747 if (VAR_OR_FUNCTION_DECL_P (decl)) 6748 { 6749 if (VAR_P (decl)) 6750 { 6751 layout_var_decl (decl); 6752 maybe_commonize_var (decl); 6753 } 6754 6755 /* This needs to happen after the linkage is set. */ 6756 determine_visibility (decl); 6757 6758 if (var_definition_p && TREE_STATIC (decl)) 6759 { 6760 /* If a TREE_READONLY variable needs initialization 6761 at runtime, it is no longer readonly and we need to 6762 avoid MEM_READONLY_P being set on RTL created for it. */ 6763 if (init) 6764 { 6765 if (TREE_READONLY (decl)) 6766 TREE_READONLY (decl) = 0; 6767 was_readonly = 0; 6768 } 6769 else if (was_readonly) 6770 TREE_READONLY (decl) = 1; 6771 6772 /* Likewise if it needs destruction. */ 6773 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) 6774 TREE_READONLY (decl) = 0; 6775 } 6776 6777 make_rtl_for_nonlocal_decl (decl, init, asmspec); 6778 6779 /* Check for abstractness of the type. Notice that there is no 6780 need to strip array types here since the check for those types 6781 is already done within create_array_type_for_decl. */ 6782 abstract_virtuals_error (decl, type); 6783 6784 if (TREE_TYPE (decl) == error_mark_node) 6785 /* No initialization required. */ 6786 ; 6787 else if (TREE_CODE (decl) == FUNCTION_DECL) 6788 { 6789 if (init) 6790 { 6791 if (init == ridpointers[(int)RID_DEFAULT]) 6792 { 6793 /* An out-of-class default definition is defined at 6794 the point where it is explicitly defaulted. */ 6795 if (DECL_DELETED_FN (decl)) 6796 maybe_explain_implicit_delete (decl); 6797 else if (DECL_INITIAL (decl) == error_mark_node) 6798 synthesize_method (decl); 6799 } 6800 else 6801 error ("function %q#D is initialized like a variable", decl); 6802 } 6803 /* else no initialization required. */ 6804 } 6805 else if (DECL_EXTERNAL (decl) 6806 && ! (DECL_LANG_SPECIFIC (decl) 6807 && DECL_NOT_REALLY_EXTERN (decl))) 6808 { 6809 if (init) 6810 DECL_INITIAL (decl) = init; 6811 } 6812 /* A variable definition. */ 6813 else if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl)) 6814 /* Initialize the local variable. */ 6815 initialize_local_var (decl, init); 6816 6817 /* If a variable is defined, and then a subsequent 6818 definition with external linkage is encountered, we will 6819 get here twice for the same variable. We want to avoid 6820 calling expand_static_init more than once. For variables 6821 that are not static data members, we can call 6822 expand_static_init only when we actually process the 6823 initializer. It is not legal to redeclare a static data 6824 member, so this issue does not arise in that case. */ 6825 else if (var_definition_p && TREE_STATIC (decl)) 6826 expand_static_init (decl, init); 6827 } 6828 6829 /* If a CLEANUP_STMT was created to destroy a temporary bound to a 6830 reference, insert it in the statement-tree now. */ 6831 if (cleanups) 6832 { 6833 unsigned i; tree t; 6834 FOR_EACH_VEC_ELT (*cleanups, i, t) 6835 push_cleanup (decl, t, false); 6836 release_tree_vector (cleanups); 6837 } 6838 6839 if (was_readonly) 6840 TREE_READONLY (decl) = 1; 6841 6842 invoke_plugin_callbacks (PLUGIN_FINISH_DECL, decl); 6843 } 6844 6845 /* Returns a declaration for a VAR_DECL as if: 6846 6847 extern "C" TYPE NAME; 6848 6849 had been seen. Used to create compiler-generated global 6850 variables. */ 6851 6852 static tree 6853 declare_global_var (tree name, tree type) 6854 { 6855 tree decl; 6856 6857 push_to_top_level (); 6858 decl = build_decl (input_location, VAR_DECL, name, type); 6859 TREE_PUBLIC (decl) = 1; 6860 DECL_EXTERNAL (decl) = 1; 6861 DECL_ARTIFICIAL (decl) = 1; 6862 /* If the user has explicitly declared this variable (perhaps 6863 because the code we are compiling is part of a low-level runtime 6864 library), then it is possible that our declaration will be merged 6865 with theirs by pushdecl. */ 6866 decl = pushdecl (decl); 6867 cp_finish_decl (decl, NULL_TREE, false, NULL_TREE, 0); 6868 pop_from_top_level (); 6869 6870 return decl; 6871 } 6872 6873 /* Returns the type for the argument to "__cxa_atexit" (or "atexit", 6874 if "__cxa_atexit" is not being used) corresponding to the function 6875 to be called when the program exits. */ 6876 6877 static tree 6878 get_atexit_fn_ptr_type (void) 6879 { 6880 tree fn_type; 6881 6882 if (!atexit_fn_ptr_type_node) 6883 { 6884 tree arg_type; 6885 if (flag_use_cxa_atexit 6886 && !targetm.cxx.use_atexit_for_cxa_atexit ()) 6887 /* The parameter to "__cxa_atexit" is "void (*)(void *)". */ 6888 arg_type = ptr_type_node; 6889 else 6890 /* The parameter to "atexit" is "void (*)(void)". */ 6891 arg_type = NULL_TREE; 6892 6893 fn_type = build_function_type_list (void_type_node, 6894 arg_type, NULL_TREE); 6895 atexit_fn_ptr_type_node = build_pointer_type (fn_type); 6896 } 6897 6898 return atexit_fn_ptr_type_node; 6899 } 6900 6901 /* Returns a pointer to the `atexit' function. Note that if 6902 FLAG_USE_CXA_ATEXIT is nonzero, then this will actually be the new 6903 `__cxa_atexit' function specified in the IA64 C++ ABI. */ 6904 6905 static tree 6906 get_atexit_node (void) 6907 { 6908 tree atexit_fndecl; 6909 tree fn_type; 6910 tree fn_ptr_type; 6911 const char *name; 6912 bool use_aeabi_atexit; 6913 6914 if (atexit_node) 6915 return atexit_node; 6916 6917 if (flag_use_cxa_atexit && !targetm.cxx.use_atexit_for_cxa_atexit ()) 6918 { 6919 /* The declaration for `__cxa_atexit' is: 6920 6921 int __cxa_atexit (void (*)(void *), void *, void *) 6922 6923 We build up the argument types and then the function type 6924 itself. */ 6925 tree argtype0, argtype1, argtype2; 6926 6927 use_aeabi_atexit = targetm.cxx.use_aeabi_atexit (); 6928 /* First, build the pointer-to-function type for the first 6929 argument. */ 6930 fn_ptr_type = get_atexit_fn_ptr_type (); 6931 /* Then, build the rest of the argument types. */ 6932 argtype2 = ptr_type_node; 6933 if (use_aeabi_atexit) 6934 { 6935 argtype1 = fn_ptr_type; 6936 argtype0 = ptr_type_node; 6937 } 6938 else 6939 { 6940 argtype1 = ptr_type_node; 6941 argtype0 = fn_ptr_type; 6942 } 6943 /* And the final __cxa_atexit type. */ 6944 fn_type = build_function_type_list (integer_type_node, 6945 argtype0, argtype1, argtype2, 6946 NULL_TREE); 6947 if (use_aeabi_atexit) 6948 name = "__aeabi_atexit"; 6949 else 6950 name = "__cxa_atexit"; 6951 } 6952 else 6953 { 6954 /* The declaration for `atexit' is: 6955 6956 int atexit (void (*)()); 6957 6958 We build up the argument types and then the function type 6959 itself. */ 6960 fn_ptr_type = get_atexit_fn_ptr_type (); 6961 /* Build the final atexit type. */ 6962 fn_type = build_function_type_list (integer_type_node, 6963 fn_ptr_type, NULL_TREE); 6964 name = "atexit"; 6965 } 6966 6967 /* Now, build the function declaration. */ 6968 push_lang_context (lang_name_c); 6969 atexit_fndecl = build_library_fn_ptr (name, fn_type, ECF_LEAF | ECF_NOTHROW); 6970 mark_used (atexit_fndecl); 6971 pop_lang_context (); 6972 atexit_node = decay_conversion (atexit_fndecl, tf_warning_or_error); 6973 6974 return atexit_node; 6975 } 6976 6977 /* Like get_atexit_node, but for thread-local cleanups. */ 6978 6979 static tree 6980 get_thread_atexit_node (void) 6981 { 6982 /* The declaration for `__cxa_thread_atexit' is: 6983 6984 int __cxa_thread_atexit (void (*)(void *), void *, void *) */ 6985 tree fn_type = build_function_type_list (integer_type_node, 6986 get_atexit_fn_ptr_type (), 6987 ptr_type_node, ptr_type_node, 6988 NULL_TREE); 6989 6990 /* Now, build the function declaration. */ 6991 tree atexit_fndecl = build_library_fn_ptr ("__cxa_thread_atexit", fn_type, 6992 ECF_LEAF | ECF_NOTHROW); 6993 return decay_conversion (atexit_fndecl, tf_warning_or_error); 6994 } 6995 6996 /* Returns the __dso_handle VAR_DECL. */ 6997 6998 static tree 6999 get_dso_handle_node (void) 7000 { 7001 if (dso_handle_node) 7002 return dso_handle_node; 7003 7004 /* Declare the variable. */ 7005 dso_handle_node = declare_global_var (get_identifier ("__dso_handle"), 7006 ptr_type_node); 7007 7008 #ifdef HAVE_GAS_HIDDEN 7009 if (dso_handle_node != error_mark_node) 7010 { 7011 DECL_VISIBILITY (dso_handle_node) = VISIBILITY_HIDDEN; 7012 DECL_VISIBILITY_SPECIFIED (dso_handle_node) = 1; 7013 } 7014 #endif 7015 7016 return dso_handle_node; 7017 } 7018 7019 /* Begin a new function with internal linkage whose job will be simply 7020 to destroy some particular variable. */ 7021 7022 static GTY(()) int start_cleanup_cnt; 7023 7024 static tree 7025 start_cleanup_fn (void) 7026 { 7027 char name[32]; 7028 tree fntype; 7029 tree fndecl; 7030 bool use_cxa_atexit = flag_use_cxa_atexit 7031 && !targetm.cxx.use_atexit_for_cxa_atexit (); 7032 7033 push_to_top_level (); 7034 7035 /* No need to mangle this. */ 7036 push_lang_context (lang_name_c); 7037 7038 /* Build the name of the function. */ 7039 sprintf (name, "__tcf_%d", start_cleanup_cnt++); 7040 /* Build the function declaration. */ 7041 fntype = TREE_TYPE (get_atexit_fn_ptr_type ()); 7042 fndecl = build_lang_decl (FUNCTION_DECL, get_identifier (name), fntype); 7043 /* It's a function with internal linkage, generated by the 7044 compiler. */ 7045 TREE_PUBLIC (fndecl) = 0; 7046 DECL_ARTIFICIAL (fndecl) = 1; 7047 /* Make the function `inline' so that it is only emitted if it is 7048 actually needed. It is unlikely that it will be inlined, since 7049 it is only called via a function pointer, but we avoid unnecessary 7050 emissions this way. */ 7051 DECL_DECLARED_INLINE_P (fndecl) = 1; 7052 DECL_INTERFACE_KNOWN (fndecl) = 1; 7053 /* Build the parameter. */ 7054 if (use_cxa_atexit) 7055 { 7056 tree parmdecl; 7057 7058 parmdecl = cp_build_parm_decl (NULL_TREE, ptr_type_node); 7059 DECL_CONTEXT (parmdecl) = fndecl; 7060 TREE_USED (parmdecl) = 1; 7061 DECL_READ_P (parmdecl) = 1; 7062 DECL_ARGUMENTS (fndecl) = parmdecl; 7063 } 7064 7065 pushdecl (fndecl); 7066 start_preparsed_function (fndecl, NULL_TREE, SF_PRE_PARSED); 7067 7068 pop_lang_context (); 7069 7070 return current_function_decl; 7071 } 7072 7073 /* Finish the cleanup function begun by start_cleanup_fn. */ 7074 7075 static void 7076 end_cleanup_fn (void) 7077 { 7078 expand_or_defer_fn (finish_function (0)); 7079 7080 pop_from_top_level (); 7081 } 7082 7083 /* Generate code to handle the destruction of DECL, an object with 7084 static storage duration. */ 7085 7086 tree 7087 register_dtor_fn (tree decl) 7088 { 7089 tree cleanup; 7090 tree addr; 7091 tree compound_stmt; 7092 tree fcall; 7093 tree type; 7094 bool ob_parm, dso_parm, use_dtor; 7095 tree arg0, arg1, arg2; 7096 tree atex_node; 7097 7098 type = TREE_TYPE (decl); 7099 if (TYPE_HAS_TRIVIAL_DESTRUCTOR (type)) 7100 return void_node; 7101 7102 /* If we're using "__cxa_atexit" (or "__cxa_thread_atexit" or 7103 "__aeabi_atexit"), and DECL is a class object, we can just pass the 7104 destructor to "__cxa_atexit"; we don't have to build a temporary 7105 function to do the cleanup. */ 7106 dso_parm = (flag_use_cxa_atexit 7107 && !targetm.cxx.use_atexit_for_cxa_atexit ()); 7108 ob_parm = (DECL_THREAD_LOCAL_P (decl) || dso_parm); 7109 use_dtor = ob_parm && CLASS_TYPE_P (type); 7110 if (use_dtor) 7111 { 7112 int idx; 7113 7114 /* Find the destructor. */ 7115 idx = lookup_fnfields_1 (type, complete_dtor_identifier); 7116 gcc_assert (idx >= 0); 7117 cleanup = (*CLASSTYPE_METHOD_VEC (type))[idx]; 7118 /* Make sure it is accessible. */ 7119 perform_or_defer_access_check (TYPE_BINFO (type), cleanup, cleanup, 7120 tf_warning_or_error); 7121 } 7122 else 7123 { 7124 /* Call build_cleanup before we enter the anonymous function so 7125 that any access checks will be done relative to the current 7126 scope, rather than the scope of the anonymous function. */ 7127 build_cleanup (decl); 7128 7129 /* Now start the function. */ 7130 cleanup = start_cleanup_fn (); 7131 7132 /* Now, recompute the cleanup. It may contain SAVE_EXPRs that refer 7133 to the original function, rather than the anonymous one. That 7134 will make the back end think that nested functions are in use, 7135 which causes confusion. */ 7136 push_deferring_access_checks (dk_no_check); 7137 fcall = build_cleanup (decl); 7138 pop_deferring_access_checks (); 7139 7140 /* Create the body of the anonymous function. */ 7141 compound_stmt = begin_compound_stmt (BCS_FN_BODY); 7142 finish_expr_stmt (fcall); 7143 finish_compound_stmt (compound_stmt); 7144 end_cleanup_fn (); 7145 } 7146 7147 /* Call atexit with the cleanup function. */ 7148 mark_used (cleanup); 7149 cleanup = build_address (cleanup); 7150 7151 if (DECL_THREAD_LOCAL_P (decl)) 7152 atex_node = get_thread_atexit_node (); 7153 else 7154 atex_node = get_atexit_node (); 7155 7156 if (use_dtor) 7157 { 7158 /* We must convert CLEANUP to the type that "__cxa_atexit" 7159 expects. */ 7160 cleanup = build_nop (get_atexit_fn_ptr_type (), cleanup); 7161 /* "__cxa_atexit" will pass the address of DECL to the 7162 cleanup function. */ 7163 mark_used (decl); 7164 addr = build_address (decl); 7165 /* The declared type of the parameter to "__cxa_atexit" is 7166 "void *". For plain "T*", we could just let the 7167 machinery in cp_build_function_call convert it -- but if the 7168 type is "cv-qualified T *", then we need to convert it 7169 before passing it in, to avoid spurious errors. */ 7170 addr = build_nop (ptr_type_node, addr); 7171 } 7172 else 7173 /* Since the cleanup functions we build ignore the address 7174 they're given, there's no reason to pass the actual address 7175 in, and, in general, it's cheaper to pass NULL than any 7176 other value. */ 7177 addr = null_pointer_node; 7178 7179 if (dso_parm) 7180 arg2 = cp_build_addr_expr (get_dso_handle_node (), 7181 tf_warning_or_error); 7182 else if (ob_parm) 7183 /* Just pass NULL to the dso handle parm if we don't actually 7184 have a DSO handle on this target. */ 7185 arg2 = null_pointer_node; 7186 else 7187 arg2 = NULL_TREE; 7188 7189 if (ob_parm) 7190 { 7191 if (!DECL_THREAD_LOCAL_P (decl) 7192 && targetm.cxx.use_aeabi_atexit ()) 7193 { 7194 arg1 = cleanup; 7195 arg0 = addr; 7196 } 7197 else 7198 { 7199 arg1 = addr; 7200 arg0 = cleanup; 7201 } 7202 } 7203 else 7204 { 7205 arg0 = cleanup; 7206 arg1 = NULL_TREE; 7207 } 7208 return cp_build_function_call_nary (atex_node, tf_warning_or_error, 7209 arg0, arg1, arg2, NULL_TREE); 7210 } 7211 7212 /* DECL is a VAR_DECL with static storage duration. INIT, if present, 7213 is its initializer. Generate code to handle the construction 7214 and destruction of DECL. */ 7215 7216 static void 7217 expand_static_init (tree decl, tree init) 7218 { 7219 gcc_assert (VAR_P (decl)); 7220 gcc_assert (TREE_STATIC (decl)); 7221 7222 /* Some variables require no dynamic initialization. */ 7223 if (!init 7224 && TYPE_HAS_TRIVIAL_DESTRUCTOR (TREE_TYPE (decl))) 7225 { 7226 /* Make sure the destructor is callable. */ 7227 cxx_maybe_build_cleanup (decl, tf_warning_or_error); 7228 return; 7229 } 7230 7231 if (DECL_THREAD_LOCAL_P (decl) && DECL_GNU_TLS_P (decl) 7232 && !DECL_FUNCTION_SCOPE_P (decl)) 7233 { 7234 if (init) 7235 error ("non-local variable %qD declared %<__thread%> " 7236 "needs dynamic initialization", decl); 7237 else 7238 error ("non-local variable %qD declared %<__thread%> " 7239 "has a non-trivial destructor", decl); 7240 static bool informed; 7241 if (!informed) 7242 { 7243 inform (DECL_SOURCE_LOCATION (decl), 7244 "C++11 %<thread_local%> allows dynamic initialization " 7245 "and destruction"); 7246 informed = true; 7247 } 7248 return; 7249 } 7250 7251 if (DECL_FUNCTION_SCOPE_P (decl)) 7252 { 7253 /* Emit code to perform this initialization but once. */ 7254 tree if_stmt = NULL_TREE, inner_if_stmt = NULL_TREE; 7255 tree then_clause = NULL_TREE, inner_then_clause = NULL_TREE; 7256 tree guard, guard_addr; 7257 tree flag, begin; 7258 /* We don't need thread-safety code for thread-local vars. */ 7259 bool thread_guard = (flag_threadsafe_statics 7260 && !DECL_THREAD_LOCAL_P (decl)); 7261 7262 /* Emit code to perform this initialization but once. This code 7263 looks like: 7264 7265 static <type> guard; 7266 if (!guard.first_byte) { 7267 if (__cxa_guard_acquire (&guard)) { 7268 bool flag = false; 7269 try { 7270 // Do initialization. 7271 flag = true; __cxa_guard_release (&guard); 7272 // Register variable for destruction at end of program. 7273 } catch { 7274 if (!flag) __cxa_guard_abort (&guard); 7275 } 7276 } 7277 7278 Note that the `flag' variable is only set to 1 *after* the 7279 initialization is complete. This ensures that an exception, 7280 thrown during the construction, will cause the variable to 7281 reinitialized when we pass through this code again, as per: 7282 7283 [stmt.dcl] 7284 7285 If the initialization exits by throwing an exception, the 7286 initialization is not complete, so it will be tried again 7287 the next time control enters the declaration. 7288 7289 This process should be thread-safe, too; multiple threads 7290 should not be able to initialize the variable more than 7291 once. */ 7292 7293 /* Create the guard variable. */ 7294 guard = get_guard (decl); 7295 7296 /* This optimization isn't safe on targets with relaxed memory 7297 consistency. On such targets we force synchronization in 7298 __cxa_guard_acquire. */ 7299 if (!targetm.relaxed_ordering || !thread_guard) 7300 { 7301 /* Begin the conditional initialization. */ 7302 if_stmt = begin_if_stmt (); 7303 finish_if_stmt_cond (get_guard_cond (guard), if_stmt); 7304 then_clause = begin_compound_stmt (BCS_NO_SCOPE); 7305 } 7306 7307 if (thread_guard) 7308 { 7309 tree vfntype = NULL_TREE; 7310 tree acquire_name, release_name, abort_name; 7311 tree acquire_fn, release_fn, abort_fn; 7312 guard_addr = build_address (guard); 7313 7314 acquire_name = get_identifier ("__cxa_guard_acquire"); 7315 release_name = get_identifier ("__cxa_guard_release"); 7316 abort_name = get_identifier ("__cxa_guard_abort"); 7317 acquire_fn = identifier_global_value (acquire_name); 7318 release_fn = identifier_global_value (release_name); 7319 abort_fn = identifier_global_value (abort_name); 7320 if (!acquire_fn) 7321 acquire_fn = push_library_fn 7322 (acquire_name, build_function_type_list (integer_type_node, 7323 TREE_TYPE (guard_addr), 7324 NULL_TREE), 7325 NULL_TREE, ECF_NOTHROW | ECF_LEAF); 7326 if (!release_fn || !abort_fn) 7327 vfntype = build_function_type_list (void_type_node, 7328 TREE_TYPE (guard_addr), 7329 NULL_TREE); 7330 if (!release_fn) 7331 release_fn = push_library_fn (release_name, vfntype, NULL_TREE, 7332 ECF_NOTHROW | ECF_LEAF); 7333 if (!abort_fn) 7334 abort_fn = push_library_fn (abort_name, vfntype, NULL_TREE, 7335 ECF_NOTHROW | ECF_LEAF); 7336 7337 inner_if_stmt = begin_if_stmt (); 7338 finish_if_stmt_cond (build_call_n (acquire_fn, 1, guard_addr), 7339 inner_if_stmt); 7340 7341 inner_then_clause = begin_compound_stmt (BCS_NO_SCOPE); 7342 begin = get_target_expr (boolean_false_node); 7343 flag = TARGET_EXPR_SLOT (begin); 7344 7345 TARGET_EXPR_CLEANUP (begin) 7346 = build3 (COND_EXPR, void_type_node, flag, 7347 void_node, 7348 build_call_n (abort_fn, 1, guard_addr)); 7349 CLEANUP_EH_ONLY (begin) = 1; 7350 7351 /* Do the initialization itself. */ 7352 init = add_stmt_to_compound (begin, init); 7353 init = add_stmt_to_compound 7354 (init, build2 (MODIFY_EXPR, void_type_node, flag, boolean_true_node)); 7355 init = add_stmt_to_compound 7356 (init, build_call_n (release_fn, 1, guard_addr)); 7357 } 7358 else 7359 init = add_stmt_to_compound (init, set_guard (guard)); 7360 7361 /* Use atexit to register a function for destroying this static 7362 variable. */ 7363 init = add_stmt_to_compound (init, register_dtor_fn (decl)); 7364 7365 finish_expr_stmt (init); 7366 7367 if (thread_guard) 7368 { 7369 finish_compound_stmt (inner_then_clause); 7370 finish_then_clause (inner_if_stmt); 7371 finish_if_stmt (inner_if_stmt); 7372 } 7373 7374 if (!targetm.relaxed_ordering || !thread_guard) 7375 { 7376 finish_compound_stmt (then_clause); 7377 finish_then_clause (if_stmt); 7378 finish_if_stmt (if_stmt); 7379 } 7380 } 7381 else if (DECL_THREAD_LOCAL_P (decl)) 7382 tls_aggregates = tree_cons (init, decl, tls_aggregates); 7383 else 7384 static_aggregates = tree_cons (init, decl, static_aggregates); 7385 } 7386 7387 7388 /* Make TYPE a complete type based on INITIAL_VALUE. 7389 Return 0 if successful, 1 if INITIAL_VALUE can't be deciphered, 7390 2 if there was no information (in which case assume 0 if DO_DEFAULT), 7391 3 if the initializer list is empty (in pedantic mode). */ 7392 7393 int 7394 cp_complete_array_type (tree *ptype, tree initial_value, bool do_default) 7395 { 7396 int failure; 7397 tree type, elt_type; 7398 7399 /* Don't get confused by a CONSTRUCTOR for some other type. */ 7400 if (initial_value && TREE_CODE (initial_value) == CONSTRUCTOR 7401 && !BRACE_ENCLOSED_INITIALIZER_P (initial_value) 7402 && TREE_CODE (TREE_TYPE (initial_value)) != ARRAY_TYPE) 7403 return 1; 7404 7405 if (initial_value) 7406 { 7407 unsigned HOST_WIDE_INT i; 7408 tree value; 7409 7410 /* An array of character type can be initialized from a 7411 brace-enclosed string constant. 7412 7413 FIXME: this code is duplicated from reshape_init. Probably 7414 we should just call reshape_init here? */ 7415 if (char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (*ptype))) 7416 && TREE_CODE (initial_value) == CONSTRUCTOR 7417 && !vec_safe_is_empty (CONSTRUCTOR_ELTS (initial_value))) 7418 { 7419 vec<constructor_elt, va_gc> *v = CONSTRUCTOR_ELTS (initial_value); 7420 tree value = (*v)[0].value; 7421 7422 if (TREE_CODE (value) == STRING_CST 7423 && v->length () == 1) 7424 initial_value = value; 7425 } 7426 7427 /* If any of the elements are parameter packs, we can't actually 7428 complete this type now because the array size is dependent. */ 7429 if (TREE_CODE (initial_value) == CONSTRUCTOR) 7430 { 7431 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (initial_value), 7432 i, value) 7433 { 7434 if (PACK_EXPANSION_P (value)) 7435 return 0; 7436 } 7437 } 7438 } 7439 7440 failure = complete_array_type (ptype, initial_value, do_default); 7441 7442 /* We can create the array before the element type is complete, which 7443 means that we didn't have these two bits set in the original type 7444 either. In completing the type, we are expected to propagate these 7445 bits. See also complete_type which does the same thing for arrays 7446 of fixed size. */ 7447 type = *ptype; 7448 if (TYPE_DOMAIN (type)) 7449 { 7450 elt_type = TREE_TYPE (type); 7451 TYPE_NEEDS_CONSTRUCTING (type) = TYPE_NEEDS_CONSTRUCTING (elt_type); 7452 TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) 7453 = TYPE_HAS_NONTRIVIAL_DESTRUCTOR (elt_type); 7454 } 7455 7456 return failure; 7457 } 7458 7459 /* As above, but either give an error or reject zero-size arrays, depending 7460 on COMPLAIN. */ 7461 7462 int 7463 cp_complete_array_type_or_error (tree *ptype, tree initial_value, 7464 bool do_default, tsubst_flags_t complain) 7465 { 7466 int failure; 7467 bool sfinae = !(complain & tf_error); 7468 /* In SFINAE context we can't be lenient about zero-size arrays. */ 7469 if (sfinae) 7470 ++pedantic; 7471 failure = cp_complete_array_type (ptype, initial_value, do_default); 7472 if (sfinae) 7473 --pedantic; 7474 if (failure) 7475 { 7476 if (sfinae) 7477 /* Not an error. */; 7478 else if (failure == 1) 7479 error ("initializer fails to determine size of %qT", *ptype); 7480 else if (failure == 2) 7481 { 7482 if (do_default) 7483 error ("array size missing in %qT", *ptype); 7484 } 7485 else if (failure == 3) 7486 error ("zero-size array %qT", *ptype); 7487 *ptype = error_mark_node; 7488 } 7489 return failure; 7490 } 7491 7492 /* Return zero if something is declared to be a member of type 7493 CTYPE when in the context of CUR_TYPE. STRING is the error 7494 message to print in that case. Otherwise, quietly return 1. */ 7495 7496 static int 7497 member_function_or_else (tree ctype, tree cur_type, enum overload_flags flags) 7498 { 7499 if (ctype && ctype != cur_type) 7500 { 7501 if (flags == DTOR_FLAG) 7502 error ("destructor for alien class %qT cannot be a member", ctype); 7503 else 7504 error ("constructor for alien class %qT cannot be a member", ctype); 7505 return 0; 7506 } 7507 return 1; 7508 } 7509 7510 /* Subroutine of `grokdeclarator'. */ 7511 7512 /* Generate errors possibly applicable for a given set of specifiers. 7513 This is for ARM $7.1.2. */ 7514 7515 static void 7516 bad_specifiers (tree object, 7517 enum bad_spec_place type, 7518 int virtualp, 7519 int quals, 7520 int inlinep, 7521 int friendp, 7522 int raises) 7523 { 7524 switch (type) 7525 { 7526 case BSP_VAR: 7527 if (virtualp) 7528 error ("%qD declared as a %<virtual%> variable", object); 7529 if (inlinep) 7530 error ("%qD declared as an %<inline%> variable", object); 7531 if (quals) 7532 error ("%<const%> and %<volatile%> function specifiers on " 7533 "%qD invalid in variable declaration", object); 7534 break; 7535 case BSP_PARM: 7536 if (virtualp) 7537 error ("%qD declared as a %<virtual%> parameter", object); 7538 if (inlinep) 7539 error ("%qD declared as an %<inline%> parameter", object); 7540 if (quals) 7541 error ("%<const%> and %<volatile%> function specifiers on " 7542 "%qD invalid in parameter declaration", object); 7543 break; 7544 case BSP_TYPE: 7545 if (virtualp) 7546 error ("%qD declared as a %<virtual%> type", object); 7547 if (inlinep) 7548 error ("%qD declared as an %<inline%> type", object); 7549 if (quals) 7550 error ("%<const%> and %<volatile%> function specifiers on " 7551 "%qD invalid in type declaration", object); 7552 break; 7553 case BSP_FIELD: 7554 if (virtualp) 7555 error ("%qD declared as a %<virtual%> field", object); 7556 if (inlinep) 7557 error ("%qD declared as an %<inline%> field", object); 7558 if (quals) 7559 error ("%<const%> and %<volatile%> function specifiers on " 7560 "%qD invalid in field declaration", object); 7561 break; 7562 default: 7563 gcc_unreachable(); 7564 } 7565 if (friendp) 7566 error ("%q+D declared as a friend", object); 7567 if (raises 7568 && (TREE_CODE (object) == TYPE_DECL 7569 || (!TYPE_PTRFN_P (TREE_TYPE (object)) 7570 && !TYPE_REFFN_P (TREE_TYPE (object)) 7571 && !TYPE_PTRMEMFUNC_P (TREE_TYPE (object))))) 7572 error ("%q+D declared with an exception specification", object); 7573 } 7574 7575 /* DECL is a member function or static data member and is presently 7576 being defined. Check that the definition is taking place in a 7577 valid namespace. */ 7578 7579 static void 7580 check_class_member_definition_namespace (tree decl) 7581 { 7582 /* These checks only apply to member functions and static data 7583 members. */ 7584 gcc_assert (VAR_OR_FUNCTION_DECL_P (decl)); 7585 /* We check for problems with specializations in pt.c in 7586 check_specialization_namespace, where we can issue better 7587 diagnostics. */ 7588 if (processing_specialization) 7589 return; 7590 /* There are no restrictions on the placement of 7591 explicit instantiations. */ 7592 if (processing_explicit_instantiation) 7593 return; 7594 /* [class.mfct] 7595 7596 A member function definition that appears outside of the 7597 class definition shall appear in a namespace scope enclosing 7598 the class definition. 7599 7600 [class.static.data] 7601 7602 The definition for a static data member shall appear in a 7603 namespace scope enclosing the member's class definition. */ 7604 if (!is_ancestor (current_namespace, DECL_CONTEXT (decl))) 7605 permerror (input_location, "definition of %qD is not in namespace enclosing %qT", 7606 decl, DECL_CONTEXT (decl)); 7607 } 7608 7609 /* Build a PARM_DECL for the "this" parameter. TYPE is the 7610 METHOD_TYPE for a non-static member function; QUALS are the 7611 cv-qualifiers that apply to the function. */ 7612 7613 tree 7614 build_this_parm (tree type, cp_cv_quals quals) 7615 { 7616 tree this_type; 7617 tree qual_type; 7618 tree parm; 7619 cp_cv_quals this_quals; 7620 7621 if (CLASS_TYPE_P (type)) 7622 { 7623 this_type 7624 = cp_build_qualified_type (type, quals & ~TYPE_QUAL_RESTRICT); 7625 this_type = build_pointer_type (this_type); 7626 } 7627 else 7628 this_type = type_of_this_parm (type); 7629 /* The `this' parameter is implicitly `const'; it cannot be 7630 assigned to. */ 7631 this_quals = (quals & TYPE_QUAL_RESTRICT) | TYPE_QUAL_CONST; 7632 qual_type = cp_build_qualified_type (this_type, this_quals); 7633 parm = build_artificial_parm (this_identifier, qual_type); 7634 cp_apply_type_quals_to_decl (this_quals, parm); 7635 return parm; 7636 } 7637 7638 /* DECL is a static member function. Complain if it was declared 7639 with function-cv-quals. */ 7640 7641 static void 7642 check_static_quals (tree decl, cp_cv_quals quals) 7643 { 7644 if (quals != TYPE_UNQUALIFIED) 7645 error ("static member function %q#D declared with type qualifiers", 7646 decl); 7647 } 7648 7649 /* Helper function. Replace the temporary this parameter injected 7650 during cp_finish_omp_declare_simd with the real this parameter. */ 7651 7652 static tree 7653 declare_simd_adjust_this (tree *tp, int *walk_subtrees, void *data) 7654 { 7655 tree this_parm = (tree) data; 7656 if (TREE_CODE (*tp) == PARM_DECL 7657 && DECL_NAME (*tp) == this_identifier 7658 && *tp != this_parm) 7659 *tp = this_parm; 7660 else if (TYPE_P (*tp)) 7661 *walk_subtrees = 0; 7662 return NULL_TREE; 7663 } 7664 7665 /* CTYPE is class type, or null if non-class. 7666 TYPE is type this FUNCTION_DECL should have, either FUNCTION_TYPE 7667 or METHOD_TYPE. 7668 DECLARATOR is the function's name. 7669 PARMS is a chain of PARM_DECLs for the function. 7670 VIRTUALP is truthvalue of whether the function is virtual or not. 7671 FLAGS are to be passed through to `grokclassfn'. 7672 QUALS are qualifiers indicating whether the function is `const' 7673 or `volatile'. 7674 RAISES is a list of exceptions that this function can raise. 7675 CHECK is 1 if we must find this method in CTYPE, 0 if we should 7676 not look, and -1 if we should not call `grokclassfn' at all. 7677 7678 SFK is the kind of special function (if any) for the new function. 7679 7680 Returns `NULL_TREE' if something goes wrong, after issuing 7681 applicable error messages. */ 7682 7683 static tree 7684 grokfndecl (tree ctype, 7685 tree type, 7686 tree declarator, 7687 tree parms, 7688 tree orig_declarator, 7689 int virtualp, 7690 enum overload_flags flags, 7691 cp_cv_quals quals, 7692 cp_ref_qualifier rqual, 7693 tree raises, 7694 int check, 7695 int friendp, 7696 int publicp, 7697 int inlinep, 7698 bool deletedp, 7699 special_function_kind sfk, 7700 bool funcdef_flag, 7701 int template_count, 7702 tree in_namespace, 7703 tree* attrlist, 7704 location_t location) 7705 { 7706 tree decl; 7707 int staticp = ctype && TREE_CODE (type) == FUNCTION_TYPE; 7708 tree t; 7709 7710 if (rqual) 7711 type = build_ref_qualified_type (type, rqual); 7712 if (raises) 7713 type = build_exception_variant (type, raises); 7714 7715 decl = build_lang_decl (FUNCTION_DECL, declarator, type); 7716 7717 /* If we have an explicit location, use it, otherwise use whatever 7718 build_lang_decl used (probably input_location). */ 7719 if (location != UNKNOWN_LOCATION) 7720 DECL_SOURCE_LOCATION (decl) = location; 7721 7722 if (TREE_CODE (type) == METHOD_TYPE) 7723 { 7724 tree parm; 7725 parm = build_this_parm (type, quals); 7726 DECL_CHAIN (parm) = parms; 7727 parms = parm; 7728 } 7729 DECL_ARGUMENTS (decl) = parms; 7730 for (t = parms; t; t = DECL_CHAIN (t)) 7731 DECL_CONTEXT (t) = decl; 7732 /* Propagate volatile out from type to decl. */ 7733 if (TYPE_VOLATILE (type)) 7734 TREE_THIS_VOLATILE (decl) = 1; 7735 7736 /* Setup decl according to sfk. */ 7737 switch (sfk) 7738 { 7739 case sfk_constructor: 7740 case sfk_copy_constructor: 7741 case sfk_move_constructor: 7742 DECL_CONSTRUCTOR_P (decl) = 1; 7743 break; 7744 case sfk_destructor: 7745 DECL_DESTRUCTOR_P (decl) = 1; 7746 break; 7747 default: 7748 break; 7749 } 7750 7751 /* If pointers to member functions use the least significant bit to 7752 indicate whether a function is virtual, ensure a pointer 7753 to this function will have that bit clear. */ 7754 if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn 7755 && TREE_CODE (type) == METHOD_TYPE 7756 && DECL_ALIGN (decl) < 2 * BITS_PER_UNIT) 7757 DECL_ALIGN (decl) = 2 * BITS_PER_UNIT; 7758 7759 if (friendp 7760 && TREE_CODE (orig_declarator) == TEMPLATE_ID_EXPR) 7761 { 7762 if (funcdef_flag) 7763 error 7764 ("defining explicit specialization %qD in friend declaration", 7765 orig_declarator); 7766 else 7767 { 7768 tree fns = TREE_OPERAND (orig_declarator, 0); 7769 tree args = TREE_OPERAND (orig_declarator, 1); 7770 7771 if (PROCESSING_REAL_TEMPLATE_DECL_P ()) 7772 { 7773 /* Something like `template <class T> friend void f<T>()'. */ 7774 error ("invalid use of template-id %qD in declaration " 7775 "of primary template", 7776 orig_declarator); 7777 return NULL_TREE; 7778 } 7779 7780 7781 /* A friend declaration of the form friend void f<>(). Record 7782 the information in the TEMPLATE_ID_EXPR. */ 7783 SET_DECL_IMPLICIT_INSTANTIATION (decl); 7784 7785 gcc_assert (identifier_p (fns) || TREE_CODE (fns) == OVERLOAD); 7786 DECL_TEMPLATE_INFO (decl) = build_template_info (fns, args); 7787 7788 for (t = TYPE_ARG_TYPES (TREE_TYPE (decl)); t; t = TREE_CHAIN (t)) 7789 if (TREE_PURPOSE (t) 7790 && TREE_CODE (TREE_PURPOSE (t)) == DEFAULT_ARG) 7791 { 7792 error ("default arguments are not allowed in declaration " 7793 "of friend template specialization %qD", 7794 decl); 7795 return NULL_TREE; 7796 } 7797 7798 if (inlinep & 1) 7799 error ("%<inline%> is not allowed in declaration of friend " 7800 "template specialization %qD", 7801 decl); 7802 if (inlinep & 2) 7803 error ("%<constexpr%> is not allowed in declaration of friend " 7804 "template specialization %qD", 7805 decl); 7806 if (inlinep) 7807 return NULL_TREE; 7808 } 7809 } 7810 7811 /* If this decl has namespace scope, set that up. */ 7812 if (in_namespace) 7813 set_decl_namespace (decl, in_namespace, friendp); 7814 else if (!ctype) 7815 DECL_CONTEXT (decl) = FROB_CONTEXT (current_decl_namespace ()); 7816 7817 /* `main' and builtins have implicit 'C' linkage. */ 7818 if ((MAIN_NAME_P (declarator) 7819 || (IDENTIFIER_LENGTH (declarator) > 10 7820 && IDENTIFIER_POINTER (declarator)[0] == '_' 7821 && IDENTIFIER_POINTER (declarator)[1] == '_' 7822 && strncmp (IDENTIFIER_POINTER (declarator)+2, "builtin_", 8) == 0) 7823 || (targetcm.cxx_implicit_extern_c 7824 && targetcm.cxx_implicit_extern_c(IDENTIFIER_POINTER (declarator)))) 7825 && current_lang_name == lang_name_cplusplus 7826 && ctype == NULL_TREE 7827 && DECL_FILE_SCOPE_P (decl)) 7828 SET_DECL_LANGUAGE (decl, lang_c); 7829 7830 /* Should probably propagate const out from type to decl I bet (mrs). */ 7831 if (staticp) 7832 { 7833 DECL_STATIC_FUNCTION_P (decl) = 1; 7834 DECL_CONTEXT (decl) = ctype; 7835 } 7836 7837 if (deletedp) 7838 DECL_DELETED_FN (decl) = 1; 7839 7840 if (ctype) 7841 { 7842 DECL_CONTEXT (decl) = ctype; 7843 if (funcdef_flag) 7844 check_class_member_definition_namespace (decl); 7845 } 7846 7847 if (ctype == NULL_TREE && DECL_MAIN_P (decl)) 7848 { 7849 if (PROCESSING_REAL_TEMPLATE_DECL_P()) 7850 error ("cannot declare %<::main%> to be a template"); 7851 if (inlinep & 1) 7852 error ("cannot declare %<::main%> to be inline"); 7853 if (inlinep & 2) 7854 error ("cannot declare %<::main%> to be constexpr"); 7855 if (!publicp) 7856 error ("cannot declare %<::main%> to be static"); 7857 inlinep = 0; 7858 publicp = 1; 7859 } 7860 7861 /* Members of anonymous types and local classes have no linkage; make 7862 them internal. If a typedef is made later, this will be changed. */ 7863 if (ctype && (TYPE_ANONYMOUS_P (ctype) 7864 || decl_function_context (TYPE_MAIN_DECL (ctype)))) 7865 publicp = 0; 7866 7867 if (publicp && cxx_dialect == cxx98) 7868 { 7869 /* [basic.link]: A name with no linkage (notably, the name of a class 7870 or enumeration declared in a local scope) shall not be used to 7871 declare an entity with linkage. 7872 7873 DR 757 relaxes this restriction for C++0x. */ 7874 no_linkage_error (decl); 7875 } 7876 7877 TREE_PUBLIC (decl) = publicp; 7878 if (! publicp) 7879 { 7880 DECL_INTERFACE_KNOWN (decl) = 1; 7881 DECL_NOT_REALLY_EXTERN (decl) = 1; 7882 } 7883 7884 /* If the declaration was declared inline, mark it as such. */ 7885 if (inlinep) 7886 { 7887 DECL_DECLARED_INLINE_P (decl) = 1; 7888 if (publicp) 7889 DECL_COMDAT (decl) = 1; 7890 } 7891 if (inlinep & 2) 7892 DECL_DECLARED_CONSTEXPR_P (decl) = true; 7893 7894 DECL_EXTERNAL (decl) = 1; 7895 if (TREE_CODE (type) == FUNCTION_TYPE) 7896 { 7897 if (quals) 7898 { 7899 error (ctype 7900 ? G_("static member function %qD cannot have cv-qualifier") 7901 : G_("non-member function %qD cannot have cv-qualifier"), 7902 decl); 7903 quals = TYPE_UNQUALIFIED; 7904 } 7905 7906 if (rqual) 7907 { 7908 error (ctype 7909 ? G_("static member function %qD cannot have ref-qualifier") 7910 : G_("non-member function %qD cannot have ref-qualifier"), 7911 decl); 7912 rqual = REF_QUAL_NONE; 7913 } 7914 } 7915 7916 if (IDENTIFIER_OPNAME_P (DECL_NAME (decl)) 7917 && !grok_op_properties (decl, /*complain=*/true)) 7918 return NULL_TREE; 7919 else if (UDLIT_OPER_P (DECL_NAME (decl))) 7920 { 7921 bool long_long_unsigned_p; 7922 bool long_double_p; 7923 const char *suffix = NULL; 7924 /* [over.literal]/6: Literal operators shall not have C linkage. */ 7925 if (DECL_LANGUAGE (decl) == lang_c) 7926 { 7927 error ("literal operator with C linkage"); 7928 return NULL_TREE; 7929 } 7930 7931 if (DECL_NAMESPACE_SCOPE_P (decl)) 7932 { 7933 if (!check_literal_operator_args (decl, &long_long_unsigned_p, 7934 &long_double_p)) 7935 { 7936 error ("%qD has invalid argument list", decl); 7937 return NULL_TREE; 7938 } 7939 7940 suffix = UDLIT_OP_SUFFIX (DECL_NAME (decl)); 7941 if (long_long_unsigned_p) 7942 { 7943 if (cpp_interpret_int_suffix (parse_in, suffix, strlen (suffix))) 7944 warning (0, "integer suffix %<%s%>" 7945 " shadowed by implementation", suffix); 7946 } 7947 else if (long_double_p) 7948 { 7949 if (cpp_interpret_float_suffix (parse_in, suffix, strlen (suffix))) 7950 warning (0, "floating point suffix %<%s%>" 7951 " shadowed by implementation", suffix); 7952 } 7953 } 7954 else 7955 { 7956 error ("%qD must be a non-member function", decl); 7957 return NULL_TREE; 7958 } 7959 } 7960 7961 if (funcdef_flag) 7962 /* Make the init_value nonzero so pushdecl knows this is not 7963 tentative. error_mark_node is replaced later with the BLOCK. */ 7964 DECL_INITIAL (decl) = error_mark_node; 7965 7966 if (TYPE_NOTHROW_P (type) || nothrow_libfn_p (decl)) 7967 TREE_NOTHROW (decl) = 1; 7968 7969 if (flag_openmp || flag_openmp_simd || flag_cilkplus) 7970 { 7971 /* Adjust "omp declare simd" attributes. */ 7972 tree ods = lookup_attribute ("omp declare simd", *attrlist); 7973 if (ods) 7974 { 7975 tree attr; 7976 for (attr = ods; attr; 7977 attr = lookup_attribute ("omp declare simd", TREE_CHAIN (attr))) 7978 { 7979 if (TREE_CODE (type) == METHOD_TYPE) 7980 walk_tree (&TREE_VALUE (attr), declare_simd_adjust_this, 7981 DECL_ARGUMENTS (decl), NULL); 7982 if (TREE_VALUE (attr) != NULL_TREE) 7983 { 7984 tree cl = TREE_VALUE (TREE_VALUE (attr)); 7985 cl = c_omp_declare_simd_clauses_to_numbers 7986 (DECL_ARGUMENTS (decl), cl); 7987 if (cl) 7988 TREE_VALUE (TREE_VALUE (attr)) = cl; 7989 else 7990 TREE_VALUE (attr) = NULL_TREE; 7991 } 7992 } 7993 } 7994 } 7995 7996 /* Caller will do the rest of this. */ 7997 if (check < 0) 7998 return decl; 7999 8000 if (ctype != NULL_TREE) 8001 grokclassfn (ctype, decl, flags); 8002 8003 /* 12.4/3 */ 8004 if (cxx_dialect >= cxx11 8005 && DECL_DESTRUCTOR_P (decl) 8006 && !TYPE_BEING_DEFINED (DECL_CONTEXT (decl)) 8007 && !processing_template_decl) 8008 deduce_noexcept_on_destructor (decl); 8009 8010 decl = check_explicit_specialization (orig_declarator, decl, 8011 template_count, 8012 2 * funcdef_flag + 8013 4 * (friendp != 0)); 8014 if (decl == error_mark_node) 8015 return NULL_TREE; 8016 8017 if (DECL_STATIC_FUNCTION_P (decl)) 8018 check_static_quals (decl, quals); 8019 8020 if (attrlist) 8021 { 8022 cplus_decl_attributes (&decl, *attrlist, 0); 8023 *attrlist = NULL_TREE; 8024 } 8025 8026 /* Check main's type after attributes have been applied. */ 8027 if (ctype == NULL_TREE && DECL_MAIN_P (decl)) 8028 { 8029 if (!same_type_p (TREE_TYPE (TREE_TYPE (decl)), 8030 integer_type_node)) 8031 { 8032 tree oldtypeargs = TYPE_ARG_TYPES (TREE_TYPE (decl)); 8033 tree newtype; 8034 error ("%<::main%> must return %<int%>"); 8035 newtype = build_function_type (integer_type_node, oldtypeargs); 8036 TREE_TYPE (decl) = newtype; 8037 } 8038 if (warn_main) 8039 check_main_parameter_types (decl); 8040 } 8041 8042 if (ctype != NULL_TREE 8043 && (! TYPE_FOR_JAVA (ctype) || check_java_method (decl)) 8044 && check) 8045 { 8046 tree old_decl = check_classfn (ctype, decl, 8047 (processing_template_decl 8048 > template_class_depth (ctype)) 8049 ? current_template_parms 8050 : NULL_TREE); 8051 8052 if (old_decl == error_mark_node) 8053 return NULL_TREE; 8054 8055 if (old_decl) 8056 { 8057 tree ok; 8058 tree pushed_scope; 8059 8060 if (TREE_CODE (old_decl) == TEMPLATE_DECL) 8061 /* Because grokfndecl is always supposed to return a 8062 FUNCTION_DECL, we pull out the DECL_TEMPLATE_RESULT 8063 here. We depend on our callers to figure out that its 8064 really a template that's being returned. */ 8065 old_decl = DECL_TEMPLATE_RESULT (old_decl); 8066 8067 if (DECL_STATIC_FUNCTION_P (old_decl) 8068 && TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE) 8069 { 8070 /* Remove the `this' parm added by grokclassfn. */ 8071 revert_static_member_fn (decl); 8072 check_static_quals (decl, quals); 8073 } 8074 if (DECL_ARTIFICIAL (old_decl)) 8075 { 8076 error ("definition of implicitly-declared %qD", old_decl); 8077 return NULL_TREE; 8078 } 8079 else if (DECL_DEFAULTED_FN (old_decl)) 8080 { 8081 error ("definition of explicitly-defaulted %q+D", decl); 8082 error ("%q+#D explicitly defaulted here", old_decl); 8083 return NULL_TREE; 8084 } 8085 8086 /* Since we've smashed OLD_DECL to its 8087 DECL_TEMPLATE_RESULT, we must do the same to DECL. */ 8088 if (TREE_CODE (decl) == TEMPLATE_DECL) 8089 decl = DECL_TEMPLATE_RESULT (decl); 8090 8091 /* Attempt to merge the declarations. This can fail, in 8092 the case of some invalid specialization declarations. */ 8093 pushed_scope = push_scope (ctype); 8094 ok = duplicate_decls (decl, old_decl, friendp); 8095 if (pushed_scope) 8096 pop_scope (pushed_scope); 8097 if (!ok) 8098 { 8099 error ("no %q#D member function declared in class %qT", 8100 decl, ctype); 8101 return NULL_TREE; 8102 } 8103 if (ok == error_mark_node) 8104 return NULL_TREE; 8105 return old_decl; 8106 } 8107 } 8108 8109 if (DECL_CONSTRUCTOR_P (decl) && !grok_ctor_properties (ctype, decl)) 8110 return NULL_TREE; 8111 8112 if (ctype == NULL_TREE || check) 8113 return decl; 8114 8115 if (virtualp) 8116 DECL_VIRTUAL_P (decl) = 1; 8117 8118 return decl; 8119 } 8120 8121 /* decl is a FUNCTION_DECL. 8122 specifiers are the parsed virt-specifiers. 8123 8124 Set flags to reflect the virt-specifiers. 8125 8126 Returns decl. */ 8127 8128 static tree 8129 set_virt_specifiers (tree decl, cp_virt_specifiers specifiers) 8130 { 8131 if (decl == NULL_TREE) 8132 return decl; 8133 if (specifiers & VIRT_SPEC_OVERRIDE) 8134 DECL_OVERRIDE_P (decl) = 1; 8135 if (specifiers & VIRT_SPEC_FINAL) 8136 DECL_FINAL_P (decl) = 1; 8137 return decl; 8138 } 8139 8140 /* DECL is a VAR_DECL for a static data member. Set flags to reflect 8141 the linkage that DECL will receive in the object file. */ 8142 8143 static void 8144 set_linkage_for_static_data_member (tree decl) 8145 { 8146 /* A static data member always has static storage duration and 8147 external linkage. Note that static data members are forbidden in 8148 local classes -- the only situation in which a class has 8149 non-external linkage. */ 8150 TREE_PUBLIC (decl) = 1; 8151 TREE_STATIC (decl) = 1; 8152 /* For non-template classes, static data members are always put 8153 out in exactly those files where they are defined, just as 8154 with ordinary namespace-scope variables. */ 8155 if (!processing_template_decl) 8156 DECL_INTERFACE_KNOWN (decl) = 1; 8157 } 8158 8159 /* Create a VAR_DECL named NAME with the indicated TYPE. 8160 8161 If SCOPE is non-NULL, it is the class type or namespace containing 8162 the variable. If SCOPE is NULL, the variable should is created in 8163 the innermost enclosing scope. */ 8164 8165 static tree 8166 grokvardecl (tree type, 8167 tree name, 8168 tree orig_declarator, 8169 const cp_decl_specifier_seq *declspecs, 8170 int initialized, 8171 int constp, 8172 int template_count, 8173 tree scope) 8174 { 8175 tree decl; 8176 tree explicit_scope; 8177 8178 gcc_assert (!name || identifier_p (name)); 8179 8180 /* Compute the scope in which to place the variable, but remember 8181 whether or not that scope was explicitly specified by the user. */ 8182 explicit_scope = scope; 8183 if (!scope) 8184 { 8185 /* An explicit "extern" specifier indicates a namespace-scope 8186 variable. */ 8187 if (declspecs->storage_class == sc_extern) 8188 scope = current_decl_namespace (); 8189 else if (!at_function_scope_p ()) 8190 scope = current_scope (); 8191 } 8192 8193 if (scope 8194 && (/* If the variable is a namespace-scope variable declared in a 8195 template, we need DECL_LANG_SPECIFIC. */ 8196 (TREE_CODE (scope) == NAMESPACE_DECL && processing_template_decl) 8197 /* Similarly for namespace-scope variables with language linkage 8198 other than C++. */ 8199 || (TREE_CODE (scope) == NAMESPACE_DECL 8200 && current_lang_name != lang_name_cplusplus) 8201 /* Similarly for static data members. */ 8202 || TYPE_P (scope) 8203 /* Similarly for explicit specializations. */ 8204 || (orig_declarator 8205 && TREE_CODE (orig_declarator) == TEMPLATE_ID_EXPR))) 8206 decl = build_lang_decl (VAR_DECL, name, type); 8207 else 8208 decl = build_decl (input_location, VAR_DECL, name, type); 8209 8210 if (explicit_scope && TREE_CODE (explicit_scope) == NAMESPACE_DECL) 8211 set_decl_namespace (decl, explicit_scope, 0); 8212 else 8213 DECL_CONTEXT (decl) = FROB_CONTEXT (scope); 8214 8215 if (declspecs->storage_class == sc_extern) 8216 { 8217 DECL_THIS_EXTERN (decl) = 1; 8218 DECL_EXTERNAL (decl) = !initialized; 8219 } 8220 8221 if (DECL_CLASS_SCOPE_P (decl)) 8222 { 8223 set_linkage_for_static_data_member (decl); 8224 /* This function is only called with out-of-class definitions. */ 8225 DECL_EXTERNAL (decl) = 0; 8226 check_class_member_definition_namespace (decl); 8227 } 8228 /* At top level, either `static' or no s.c. makes a definition 8229 (perhaps tentative), and absence of `static' makes it public. */ 8230 else if (toplevel_bindings_p ()) 8231 { 8232 TREE_PUBLIC (decl) = (declspecs->storage_class != sc_static 8233 && (DECL_THIS_EXTERN (decl) || ! constp)); 8234 TREE_STATIC (decl) = ! DECL_EXTERNAL (decl); 8235 } 8236 /* Not at top level, only `static' makes a static definition. */ 8237 else 8238 { 8239 TREE_STATIC (decl) = declspecs->storage_class == sc_static; 8240 TREE_PUBLIC (decl) = DECL_EXTERNAL (decl); 8241 } 8242 8243 if (decl_spec_seq_has_spec_p (declspecs, ds_thread)) 8244 { 8245 if (DECL_EXTERNAL (decl) || TREE_STATIC (decl)) 8246 set_decl_tls_model (decl, decl_default_tls_model (decl)); 8247 if (declspecs->gnu_thread_keyword_p) 8248 DECL_GNU_TLS_P (decl) = true; 8249 } 8250 8251 /* If the type of the decl has no linkage, make sure that we'll 8252 notice that in mark_used. */ 8253 if (cxx_dialect > cxx98 8254 && decl_linkage (decl) != lk_none 8255 && DECL_LANG_SPECIFIC (decl) == NULL 8256 && !DECL_EXTERN_C_P (decl) 8257 && no_linkage_check (TREE_TYPE (decl), /*relaxed_p=*/false)) 8258 retrofit_lang_decl (decl); 8259 8260 if (TREE_PUBLIC (decl)) 8261 { 8262 /* [basic.link]: A name with no linkage (notably, the name of a class 8263 or enumeration declared in a local scope) shall not be used to 8264 declare an entity with linkage. 8265 8266 DR 757 relaxes this restriction for C++0x. */ 8267 if (cxx_dialect < cxx11) 8268 no_linkage_error (decl); 8269 } 8270 else 8271 DECL_INTERFACE_KNOWN (decl) = 1; 8272 8273 // Handle explicit specializations and instantiations of variable templates. 8274 if (orig_declarator 8275 /* For GCC 5 fix 65646 this way. */ 8276 && current_tmpl_spec_kind (template_count) != tsk_none) 8277 decl = check_explicit_specialization (orig_declarator, decl, 8278 template_count, 0); 8279 8280 return decl != error_mark_node ? decl : NULL_TREE; 8281 } 8282 8283 /* Create and return a canonical pointer to member function type, for 8284 TYPE, which is a POINTER_TYPE to a METHOD_TYPE. */ 8285 8286 tree 8287 build_ptrmemfunc_type (tree type) 8288 { 8289 tree field, fields; 8290 tree t; 8291 8292 if (type == error_mark_node) 8293 return type; 8294 8295 /* Make sure that we always have the unqualified pointer-to-member 8296 type first. */ 8297 if (cp_cv_quals quals = cp_type_quals (type)) 8298 { 8299 tree unqual = build_ptrmemfunc_type (TYPE_MAIN_VARIANT (type)); 8300 return cp_build_qualified_type (unqual, quals); 8301 } 8302 8303 /* If a canonical type already exists for this type, use it. We use 8304 this method instead of type_hash_canon, because it only does a 8305 simple equality check on the list of field members. */ 8306 8307 if ((t = TYPE_GET_PTRMEMFUNC_TYPE (type))) 8308 return t; 8309 8310 t = make_node (RECORD_TYPE); 8311 8312 /* Let the front end know this is a pointer to member function. */ 8313 TYPE_PTRMEMFUNC_FLAG (t) = 1; 8314 8315 field = build_decl (input_location, FIELD_DECL, pfn_identifier, type); 8316 fields = field; 8317 8318 field = build_decl (input_location, FIELD_DECL, delta_identifier, 8319 delta_type_node); 8320 DECL_CHAIN (field) = fields; 8321 fields = field; 8322 8323 finish_builtin_struct (t, "__ptrmemfunc_type", fields, ptr_type_node); 8324 8325 /* Zap out the name so that the back end will give us the debugging 8326 information for this anonymous RECORD_TYPE. */ 8327 TYPE_NAME (t) = NULL_TREE; 8328 8329 /* Cache this pointer-to-member type so that we can find it again 8330 later. */ 8331 TYPE_SET_PTRMEMFUNC_TYPE (type, t); 8332 8333 if (TYPE_STRUCTURAL_EQUALITY_P (type)) 8334 SET_TYPE_STRUCTURAL_EQUALITY (t); 8335 else if (TYPE_CANONICAL (type) != type) 8336 TYPE_CANONICAL (t) = build_ptrmemfunc_type (TYPE_CANONICAL (type)); 8337 8338 return t; 8339 } 8340 8341 /* Create and return a pointer to data member type. */ 8342 8343 tree 8344 build_ptrmem_type (tree class_type, tree member_type) 8345 { 8346 if (TREE_CODE (member_type) == METHOD_TYPE) 8347 { 8348 cp_cv_quals quals = type_memfn_quals (member_type); 8349 cp_ref_qualifier rqual = type_memfn_rqual (member_type); 8350 member_type = build_memfn_type (member_type, class_type, quals, rqual); 8351 return build_ptrmemfunc_type (build_pointer_type (member_type)); 8352 } 8353 else 8354 { 8355 gcc_assert (TREE_CODE (member_type) != FUNCTION_TYPE); 8356 return build_offset_type (class_type, member_type); 8357 } 8358 } 8359 8360 /* DECL is a VAR_DECL defined in-class, whose TYPE is also given. 8361 Check to see that the definition is valid. Issue appropriate error 8362 messages. Return 1 if the definition is particularly bad, or 0 8363 otherwise. */ 8364 8365 static int 8366 check_static_variable_definition (tree decl, tree type) 8367 { 8368 /* Can't check yet if we don't know the type. */ 8369 if (dependent_type_p (type)) 8370 return 0; 8371 /* If DECL is declared constexpr, we'll do the appropriate checks 8372 in check_initializer. */ 8373 if (DECL_P (decl) && DECL_DECLARED_CONSTEXPR_P (decl)) 8374 return 0; 8375 else if (cxx_dialect >= cxx11 && !INTEGRAL_OR_ENUMERATION_TYPE_P (type)) 8376 { 8377 if (!COMPLETE_TYPE_P (type)) 8378 error ("in-class initialization of static data member %q#D of " 8379 "incomplete type", decl); 8380 else if (literal_type_p (type)) 8381 permerror (input_location, 8382 "%<constexpr%> needed for in-class initialization of " 8383 "static data member %q#D of non-integral type", decl); 8384 else 8385 error ("in-class initialization of static data member %q#D of " 8386 "non-literal type", decl); 8387 return 1; 8388 } 8389 8390 /* Motion 10 at San Diego: If a static const integral data member is 8391 initialized with an integral constant expression, the initializer 8392 may appear either in the declaration (within the class), or in 8393 the definition, but not both. If it appears in the class, the 8394 member is a member constant. The file-scope definition is always 8395 required. */ 8396 if (!ARITHMETIC_TYPE_P (type) && TREE_CODE (type) != ENUMERAL_TYPE) 8397 { 8398 error ("invalid in-class initialization of static data member " 8399 "of non-integral type %qT", 8400 type); 8401 return 1; 8402 } 8403 else if (!CP_TYPE_CONST_P (type)) 8404 error ("ISO C++ forbids in-class initialization of non-const " 8405 "static member %qD", 8406 decl); 8407 else if (!INTEGRAL_OR_ENUMERATION_TYPE_P (type)) 8408 pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids initialization of member constant " 8409 "%qD of non-integral type %qT", decl, type); 8410 8411 return 0; 8412 } 8413 8414 /* *expr_p is part of the TYPE_SIZE of a variably-sized array. If any 8415 SAVE_EXPRs in *expr_p wrap expressions with side-effects, break those 8416 expressions out into temporary variables so that walk_tree doesn't 8417 step into them (c++/15764). */ 8418 8419 static tree 8420 stabilize_save_expr_r (tree *expr_p, int *walk_subtrees, void *data) 8421 { 8422 hash_set<tree> *pset = (hash_set<tree> *)data; 8423 tree expr = *expr_p; 8424 if (TREE_CODE (expr) == SAVE_EXPR) 8425 { 8426 tree op = TREE_OPERAND (expr, 0); 8427 cp_walk_tree (&op, stabilize_save_expr_r, data, pset); 8428 if (TREE_SIDE_EFFECTS (op)) 8429 TREE_OPERAND (expr, 0) = get_temp_regvar (TREE_TYPE (op), op); 8430 *walk_subtrees = 0; 8431 } 8432 else if (!EXPR_P (expr) || !TREE_SIDE_EFFECTS (expr)) 8433 *walk_subtrees = 0; 8434 return NULL; 8435 } 8436 8437 /* Entry point for the above. */ 8438 8439 static void 8440 stabilize_vla_size (tree size) 8441 { 8442 hash_set<tree> pset; 8443 /* Break out any function calls into temporary variables. */ 8444 cp_walk_tree (&size, stabilize_save_expr_r, &pset, &pset); 8445 } 8446 8447 /* Helper function for compute_array_index_type. Look for SIZEOF_EXPR 8448 not inside of SAVE_EXPR and fold them. */ 8449 8450 static tree 8451 fold_sizeof_expr_r (tree *expr_p, int *walk_subtrees, void *data) 8452 { 8453 tree expr = *expr_p; 8454 if (TREE_CODE (expr) == SAVE_EXPR || TYPE_P (expr)) 8455 *walk_subtrees = 0; 8456 else if (TREE_CODE (expr) == SIZEOF_EXPR) 8457 { 8458 *(bool *)data = true; 8459 if (SIZEOF_EXPR_TYPE_P (expr)) 8460 expr = cxx_sizeof_or_alignof_type (TREE_TYPE (TREE_OPERAND (expr, 0)), 8461 SIZEOF_EXPR, false); 8462 else if (TYPE_P (TREE_OPERAND (expr, 0))) 8463 expr = cxx_sizeof_or_alignof_type (TREE_OPERAND (expr, 0), SIZEOF_EXPR, 8464 false); 8465 else 8466 expr = cxx_sizeof_or_alignof_expr (TREE_OPERAND (expr, 0), SIZEOF_EXPR, 8467 false); 8468 if (expr == error_mark_node) 8469 expr = size_one_node; 8470 *expr_p = expr; 8471 *walk_subtrees = 0; 8472 } 8473 return NULL; 8474 } 8475 8476 /* Given the SIZE (i.e., number of elements) in an array, compute an 8477 appropriate index type for the array. If non-NULL, NAME is the 8478 name of the thing being declared. */ 8479 8480 tree 8481 compute_array_index_type (tree name, tree size, tsubst_flags_t complain) 8482 { 8483 tree itype; 8484 tree osize = size; 8485 8486 if (error_operand_p (size)) 8487 return error_mark_node; 8488 8489 if (!type_dependent_expression_p (size)) 8490 { 8491 tree type = TREE_TYPE (size); 8492 8493 mark_rvalue_use (size); 8494 8495 if (cxx_dialect < cxx11 && TREE_CODE (size) == NOP_EXPR 8496 && TREE_SIDE_EFFECTS (size)) 8497 /* In C++98, we mark a non-constant array bound with a magic 8498 NOP_EXPR with TREE_SIDE_EFFECTS; don't fold in that case. */; 8499 else 8500 { 8501 size = instantiate_non_dependent_expr_sfinae (size, complain); 8502 8503 if (CLASS_TYPE_P (type) 8504 && CLASSTYPE_LITERAL_P (type)) 8505 { 8506 size = build_expr_type_conversion (WANT_INT, size, true); 8507 if (!size) 8508 { 8509 if (!(complain & tf_error)) 8510 return error_mark_node; 8511 if (name) 8512 error ("size of array %qD has non-integral type %qT", 8513 name, type); 8514 else 8515 error ("size of array has non-integral type %qT", type); 8516 size = integer_one_node; 8517 } 8518 if (size == error_mark_node) 8519 return error_mark_node; 8520 type = TREE_TYPE (size); 8521 } 8522 8523 if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) 8524 size = maybe_constant_value (size); 8525 8526 if (!TREE_CONSTANT (size)) 8527 size = osize; 8528 } 8529 8530 if (error_operand_p (size)) 8531 return error_mark_node; 8532 8533 /* The array bound must be an integer type. */ 8534 if (!INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) 8535 { 8536 if (!(complain & tf_error)) 8537 return error_mark_node; 8538 if (name) 8539 error ("size of array %qD has non-integral type %qT", name, type); 8540 else 8541 error ("size of array has non-integral type %qT", type); 8542 size = integer_one_node; 8543 type = TREE_TYPE (size); 8544 } 8545 } 8546 8547 /* A type is dependent if it is...an array type constructed from any 8548 dependent type or whose size is specified by a constant expression 8549 that is value-dependent. */ 8550 /* We can only call value_dependent_expression_p on integral constant 8551 expressions; treat non-constant expressions as dependent, too. */ 8552 if (processing_template_decl 8553 && (type_dependent_expression_p (size) 8554 || !TREE_CONSTANT (size) || value_dependent_expression_p (size))) 8555 { 8556 /* We cannot do any checking for a SIZE that isn't known to be 8557 constant. Just build the index type and mark that it requires 8558 structural equality checks. */ 8559 itype = build_index_type (build_min (MINUS_EXPR, sizetype, 8560 size, size_one_node)); 8561 TYPE_DEPENDENT_P (itype) = 1; 8562 TYPE_DEPENDENT_P_VALID (itype) = 1; 8563 SET_TYPE_STRUCTURAL_EQUALITY (itype); 8564 return itype; 8565 } 8566 8567 /* Normally, the array-bound will be a constant. */ 8568 if (TREE_CODE (size) == INTEGER_CST) 8569 { 8570 /* Check to see if the array bound overflowed. Make that an 8571 error, no matter how generous we're being. */ 8572 constant_expression_error (size); 8573 8574 /* An array must have a positive number of elements. */ 8575 if (tree_int_cst_lt (size, integer_zero_node)) 8576 { 8577 if (!(complain & tf_error)) 8578 return error_mark_node; 8579 if (name) 8580 error ("size of array %qD is negative", name); 8581 else 8582 error ("size of array is negative"); 8583 size = integer_one_node; 8584 } 8585 /* As an extension we allow zero-sized arrays. */ 8586 else if (integer_zerop (size)) 8587 { 8588 if (!(complain & tf_error)) 8589 /* We must fail if performing argument deduction (as 8590 indicated by the state of complain), so that 8591 another substitution can be found. */ 8592 return error_mark_node; 8593 else if (in_system_header_at (input_location)) 8594 /* Allow them in system headers because glibc uses them. */; 8595 else if (name) 8596 pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids zero-size array %qD", name); 8597 else 8598 pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids zero-size array"); 8599 } 8600 } 8601 else if (TREE_CONSTANT (size) 8602 /* We don't allow VLAs at non-function scopes, or during 8603 tentative template substitution. */ 8604 || !at_function_scope_p () 8605 || !(complain & tf_error)) 8606 { 8607 if (!(complain & tf_error)) 8608 return error_mark_node; 8609 /* `(int) &fn' is not a valid array bound. */ 8610 if (name) 8611 error ("size of array %qD is not an integral constant-expression", 8612 name); 8613 else 8614 error ("size of array is not an integral constant-expression"); 8615 size = integer_one_node; 8616 } 8617 else if (pedantic && warn_vla != 0) 8618 { 8619 if (name) 8620 pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name); 8621 else 8622 pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array"); 8623 } 8624 else if (warn_vla > 0) 8625 { 8626 if (name) 8627 warning (OPT_Wvla, 8628 "variable length array %qD is used", name); 8629 else 8630 warning (OPT_Wvla, 8631 "variable length array is used"); 8632 } 8633 8634 if (processing_template_decl && !TREE_CONSTANT (size)) 8635 /* A variable sized array. */ 8636 itype = build_min (MINUS_EXPR, sizetype, size, integer_one_node); 8637 else 8638 { 8639 HOST_WIDE_INT saved_processing_template_decl; 8640 8641 /* Compute the index of the largest element in the array. It is 8642 one less than the number of elements in the array. We save 8643 and restore PROCESSING_TEMPLATE_DECL so that computations in 8644 cp_build_binary_op will be appropriately folded. */ 8645 saved_processing_template_decl = processing_template_decl; 8646 processing_template_decl = 0; 8647 itype = cp_build_binary_op (input_location, 8648 MINUS_EXPR, 8649 cp_convert (ssizetype, size, complain), 8650 cp_convert (ssizetype, integer_one_node, 8651 complain), 8652 complain); 8653 itype = fold (itype); 8654 processing_template_decl = saved_processing_template_decl; 8655 8656 if (!TREE_CONSTANT (itype)) 8657 { 8658 /* A variable sized array. */ 8659 itype = variable_size (itype); 8660 8661 if (TREE_CODE (itype) != SAVE_EXPR) 8662 { 8663 /* Look for SIZEOF_EXPRs in itype and fold them, otherwise 8664 they might survive till gimplification. */ 8665 tree newitype = itype; 8666 bool found = false; 8667 cp_walk_tree_without_duplicates (&newitype, 8668 fold_sizeof_expr_r, &found); 8669 if (found) 8670 itype = variable_size (fold (newitype)); 8671 } 8672 8673 stabilize_vla_size (itype); 8674 8675 if (flag_sanitize & SANITIZE_VLA 8676 && do_ubsan_in_current_function ()) 8677 { 8678 /* We have to add 1 -- in the ubsan routine we generate 8679 LE_EXPR rather than LT_EXPR. */ 8680 tree t = fold_build2 (PLUS_EXPR, TREE_TYPE (itype), itype, 8681 build_one_cst (TREE_TYPE (itype))); 8682 t = ubsan_instrument_vla (input_location, t); 8683 finish_expr_stmt (t); 8684 } 8685 } 8686 /* Make sure that there was no overflow when creating to a signed 8687 index type. (For example, on a 32-bit machine, an array with 8688 size 2^32 - 1 is too big.) */ 8689 else if (TREE_CODE (itype) == INTEGER_CST 8690 && TREE_OVERFLOW (itype)) 8691 { 8692 if (!(complain & tf_error)) 8693 return error_mark_node; 8694 error ("overflow in array dimension"); 8695 TREE_OVERFLOW (itype) = 0; 8696 } 8697 } 8698 8699 /* Create and return the appropriate index type. */ 8700 itype = build_index_type (itype); 8701 8702 /* If the index type were dependent, we would have returned early, so 8703 remember that it isn't. */ 8704 TYPE_DEPENDENT_P (itype) = 0; 8705 TYPE_DEPENDENT_P_VALID (itype) = 1; 8706 return itype; 8707 } 8708 8709 /* Returns the scope (if any) in which the entity declared by 8710 DECLARATOR will be located. If the entity was declared with an 8711 unqualified name, NULL_TREE is returned. */ 8712 8713 tree 8714 get_scope_of_declarator (const cp_declarator *declarator) 8715 { 8716 while (declarator && declarator->kind != cdk_id) 8717 declarator = declarator->declarator; 8718 8719 /* If the declarator-id is a SCOPE_REF, the scope in which the 8720 declaration occurs is the first operand. */ 8721 if (declarator 8722 && declarator->u.id.qualifying_scope) 8723 return declarator->u.id.qualifying_scope; 8724 8725 /* Otherwise, the declarator is not a qualified name; the entity will 8726 be declared in the current scope. */ 8727 return NULL_TREE; 8728 } 8729 8730 /* Returns an ARRAY_TYPE for an array with SIZE elements of the 8731 indicated TYPE. If non-NULL, NAME is the NAME of the declaration 8732 with this type. */ 8733 8734 static tree 8735 create_array_type_for_decl (tree name, tree type, tree size) 8736 { 8737 tree itype = NULL_TREE; 8738 8739 /* If things have already gone awry, bail now. */ 8740 if (type == error_mark_node || size == error_mark_node) 8741 return error_mark_node; 8742 8743 /* 8.3.4/1: If the type of the identifier of D contains the auto 8744 type-specifier, the program is ill-formed. */ 8745 if (type_uses_auto (type)) 8746 { 8747 error ("%qD declared as array of %qT", name, type); 8748 return error_mark_node; 8749 } 8750 8751 /* If there are some types which cannot be array elements, 8752 issue an error-message and return. */ 8753 switch (TREE_CODE (type)) 8754 { 8755 case VOID_TYPE: 8756 if (name) 8757 error ("declaration of %qD as array of void", name); 8758 else 8759 error ("creating array of void"); 8760 return error_mark_node; 8761 8762 case FUNCTION_TYPE: 8763 if (name) 8764 error ("declaration of %qD as array of functions", name); 8765 else 8766 error ("creating array of functions"); 8767 return error_mark_node; 8768 8769 case REFERENCE_TYPE: 8770 if (name) 8771 error ("declaration of %qD as array of references", name); 8772 else 8773 error ("creating array of references"); 8774 return error_mark_node; 8775 8776 case METHOD_TYPE: 8777 if (name) 8778 error ("declaration of %qD as array of function members", name); 8779 else 8780 error ("creating array of function members"); 8781 return error_mark_node; 8782 8783 default: 8784 break; 8785 } 8786 8787 /* [dcl.array] 8788 8789 The constant expressions that specify the bounds of the arrays 8790 can be omitted only for the first member of the sequence. */ 8791 if (TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type)) 8792 { 8793 if (name) 8794 error ("declaration of %qD as multidimensional array must " 8795 "have bounds for all dimensions except the first", 8796 name); 8797 else 8798 error ("multidimensional array must have bounds for all " 8799 "dimensions except the first"); 8800 8801 return error_mark_node; 8802 } 8803 8804 /* Figure out the index type for the array. */ 8805 if (size) 8806 itype = compute_array_index_type (name, size, tf_warning_or_error); 8807 8808 /* [dcl.array] 8809 T is called the array element type; this type shall not be [...] an 8810 abstract class type. */ 8811 abstract_virtuals_error (name, type); 8812 8813 return build_cplus_array_type (type, itype); 8814 } 8815 8816 /* Check that it's OK to declare a function with the indicated TYPE. 8817 SFK indicates the kind of special function (if any) that this 8818 function is. OPTYPE is the type given in a conversion operator 8819 declaration, or the class type for a constructor/destructor. 8820 Returns the actual return type of the function; that 8821 may be different than TYPE if an error occurs, or for certain 8822 special functions. */ 8823 8824 static tree 8825 check_special_function_return_type (special_function_kind sfk, 8826 tree type, 8827 tree optype) 8828 { 8829 switch (sfk) 8830 { 8831 case sfk_constructor: 8832 if (type) 8833 error ("return type specification for constructor invalid"); 8834 8835 if (targetm.cxx.cdtor_returns_this () && !TYPE_FOR_JAVA (optype)) 8836 type = build_pointer_type (optype); 8837 else 8838 type = void_type_node; 8839 break; 8840 8841 case sfk_destructor: 8842 if (type) 8843 error ("return type specification for destructor invalid"); 8844 /* We can't use the proper return type here because we run into 8845 problems with ambiguous bases and covariant returns. 8846 Java classes are left unchanged because (void *) isn't a valid 8847 Java type, and we don't want to change the Java ABI. */ 8848 if (targetm.cxx.cdtor_returns_this () && !TYPE_FOR_JAVA (optype)) 8849 type = build_pointer_type (void_type_node); 8850 else 8851 type = void_type_node; 8852 break; 8853 8854 case sfk_conversion: 8855 if (type) 8856 error ("return type specified for %<operator %T%>", optype); 8857 type = optype; 8858 break; 8859 8860 default: 8861 gcc_unreachable (); 8862 } 8863 8864 return type; 8865 } 8866 8867 /* A variable or data member (whose unqualified name is IDENTIFIER) 8868 has been declared with the indicated TYPE. If the TYPE is not 8869 acceptable, issue an error message and return a type to use for 8870 error-recovery purposes. */ 8871 8872 tree 8873 check_var_type (tree identifier, tree type) 8874 { 8875 if (VOID_TYPE_P (type)) 8876 { 8877 if (!identifier) 8878 error ("unnamed variable or field declared void"); 8879 else if (identifier_p (identifier)) 8880 { 8881 gcc_assert (!IDENTIFIER_OPNAME_P (identifier)); 8882 error ("variable or field %qE declared void", identifier); 8883 } 8884 else 8885 error ("variable or field declared void"); 8886 type = error_mark_node; 8887 } 8888 8889 return type; 8890 } 8891 8892 /* Given declspecs and a declarator (abstract or otherwise), determine 8893 the name and type of the object declared and construct a DECL node 8894 for it. 8895 8896 DECLSPECS points to the representation of declaration-specifier 8897 sequence that precedes declarator. 8898 8899 DECL_CONTEXT says which syntactic context this declaration is in: 8900 NORMAL for most contexts. Make a VAR_DECL or FUNCTION_DECL or TYPE_DECL. 8901 FUNCDEF for a function definition. Like NORMAL but a few different 8902 error messages in each case. Return value may be zero meaning 8903 this definition is too screwy to try to parse. 8904 MEMFUNCDEF for a function definition. Like FUNCDEF but prepares to 8905 handle member functions (which have FIELD context). 8906 Return value may be zero meaning this definition is too screwy to 8907 try to parse. 8908 PARM for a parameter declaration (either within a function prototype 8909 or before a function body). Make a PARM_DECL, or return void_type_node. 8910 TPARM for a template parameter declaration. 8911 CATCHPARM for a parameter declaration before a catch clause. 8912 TYPENAME if for a typename (in a cast or sizeof). 8913 Don't make a DECL node; just return the ..._TYPE node. 8914 FIELD for a struct or union field; make a FIELD_DECL. 8915 BITFIELD for a field with specified width. 8916 8917 INITIALIZED is as for start_decl. 8918 8919 ATTRLIST is a pointer to the list of attributes, which may be NULL 8920 if there are none; *ATTRLIST may be modified if attributes from inside 8921 the declarator should be applied to the declaration. 8922 8923 When this function is called, scoping variables (such as 8924 CURRENT_CLASS_TYPE) should reflect the scope in which the 8925 declaration occurs, not the scope in which the new declaration will 8926 be placed. For example, on: 8927 8928 void S::f() { ... } 8929 8930 when grokdeclarator is called for `S::f', the CURRENT_CLASS_TYPE 8931 should not be `S'. 8932 8933 Returns a DECL (if a declarator is present), a TYPE (if there is no 8934 declarator, in cases like "struct S;"), or the ERROR_MARK_NODE if an 8935 error occurs. */ 8936 8937 tree 8938 grokdeclarator (const cp_declarator *declarator, 8939 cp_decl_specifier_seq *declspecs, 8940 enum decl_context decl_context, 8941 int initialized, 8942 tree* attrlist) 8943 { 8944 tree type = NULL_TREE; 8945 int longlong = 0; 8946 int explicit_intN = 0; 8947 int virtualp, explicitp, friendp, inlinep, staticp; 8948 int explicit_int = 0; 8949 int explicit_char = 0; 8950 int defaulted_int = 0; 8951 8952 tree typedef_decl = NULL_TREE; 8953 const char *name = NULL; 8954 tree typedef_type = NULL_TREE; 8955 /* True if this declarator is a function definition. */ 8956 bool funcdef_flag = false; 8957 cp_declarator_kind innermost_code = cdk_error; 8958 int bitfield = 0; 8959 #if 0 8960 /* See the code below that used this. */ 8961 tree decl_attr = NULL_TREE; 8962 #endif 8963 8964 /* Keep track of what sort of function is being processed 8965 so that we can warn about default return values, or explicit 8966 return values which do not match prescribed defaults. */ 8967 special_function_kind sfk = sfk_none; 8968 8969 tree dname = NULL_TREE; 8970 tree ctor_return_type = NULL_TREE; 8971 enum overload_flags flags = NO_SPECIAL; 8972 /* cv-qualifiers that apply to the declarator, for a declaration of 8973 a member function. */ 8974 cp_cv_quals memfn_quals = TYPE_UNQUALIFIED; 8975 /* virt-specifiers that apply to the declarator, for a declaration of 8976 a member function. */ 8977 cp_virt_specifiers virt_specifiers = VIRT_SPEC_UNSPECIFIED; 8978 /* ref-qualifier that applies to the declarator, for a declaration of 8979 a member function. */ 8980 cp_ref_qualifier rqual = REF_QUAL_NONE; 8981 /* cv-qualifiers that apply to the type specified by the DECLSPECS. */ 8982 int type_quals; 8983 tree raises = NULL_TREE; 8984 int template_count = 0; 8985 tree returned_attrs = NULL_TREE; 8986 tree parms = NULL_TREE; 8987 const cp_declarator *id_declarator; 8988 /* The unqualified name of the declarator; either an 8989 IDENTIFIER_NODE, BIT_NOT_EXPR, or TEMPLATE_ID_EXPR. */ 8990 tree unqualified_id; 8991 /* The class type, if any, in which this entity is located, 8992 or NULL_TREE if none. Note that this value may be different from 8993 the current class type; for example if an attempt is made to declare 8994 "A::f" inside "B", this value will be "A". */ 8995 tree ctype = current_class_type; 8996 /* The NAMESPACE_DECL for the namespace in which this entity is 8997 located. If an unqualified name is used to declare the entity, 8998 this value will be NULL_TREE, even if the entity is located at 8999 namespace scope. */ 9000 tree in_namespace = NULL_TREE; 9001 cp_storage_class storage_class; 9002 bool unsigned_p, signed_p, short_p, long_p, thread_p; 9003 bool type_was_error_mark_node = false; 9004 bool parameter_pack_p = declarator? declarator->parameter_pack_p : false; 9005 bool template_type_arg = false; 9006 bool template_parm_flag = false; 9007 bool typedef_p = decl_spec_seq_has_spec_p (declspecs, ds_typedef); 9008 bool constexpr_p = decl_spec_seq_has_spec_p (declspecs, ds_constexpr); 9009 bool late_return_type_p = false; 9010 bool array_parameter_p = false; 9011 source_location saved_loc = input_location; 9012 const char *errmsg; 9013 9014 signed_p = decl_spec_seq_has_spec_p (declspecs, ds_signed); 9015 unsigned_p = decl_spec_seq_has_spec_p (declspecs, ds_unsigned); 9016 short_p = decl_spec_seq_has_spec_p (declspecs, ds_short); 9017 long_p = decl_spec_seq_has_spec_p (declspecs, ds_long); 9018 longlong = decl_spec_seq_has_spec_p (declspecs, ds_long_long); 9019 explicit_intN = declspecs->explicit_intN_p; 9020 thread_p = decl_spec_seq_has_spec_p (declspecs, ds_thread); 9021 9022 if (decl_context == FUNCDEF) 9023 funcdef_flag = true, decl_context = NORMAL; 9024 else if (decl_context == MEMFUNCDEF) 9025 funcdef_flag = true, decl_context = FIELD; 9026 else if (decl_context == BITFIELD) 9027 bitfield = 1, decl_context = FIELD; 9028 else if (decl_context == TEMPLATE_TYPE_ARG) 9029 template_type_arg = true, decl_context = TYPENAME; 9030 else if (decl_context == TPARM) 9031 template_parm_flag = true, decl_context = PARM; 9032 9033 if (initialized > 1) 9034 funcdef_flag = true; 9035 9036 /* Look inside a declarator for the name being declared 9037 and get it as a string, for an error message. */ 9038 for (id_declarator = declarator; 9039 id_declarator; 9040 id_declarator = id_declarator->declarator) 9041 { 9042 if (id_declarator->kind != cdk_id) 9043 innermost_code = id_declarator->kind; 9044 9045 switch (id_declarator->kind) 9046 { 9047 case cdk_function: 9048 if (id_declarator->declarator 9049 && id_declarator->declarator->kind == cdk_id) 9050 { 9051 sfk = id_declarator->declarator->u.id.sfk; 9052 if (sfk == sfk_destructor) 9053 flags = DTOR_FLAG; 9054 } 9055 break; 9056 9057 case cdk_id: 9058 { 9059 tree qualifying_scope = id_declarator->u.id.qualifying_scope; 9060 tree decl = id_declarator->u.id.unqualified_name; 9061 if (!decl) 9062 break; 9063 if (qualifying_scope) 9064 { 9065 if (at_function_scope_p ()) 9066 { 9067 /* [dcl.meaning] 9068 9069 A declarator-id shall not be qualified except 9070 for ... 9071 9072 None of the cases are permitted in block 9073 scope. */ 9074 if (qualifying_scope == global_namespace) 9075 error ("invalid use of qualified-name %<::%D%>", 9076 decl); 9077 else if (TYPE_P (qualifying_scope)) 9078 error ("invalid use of qualified-name %<%T::%D%>", 9079 qualifying_scope, decl); 9080 else 9081 error ("invalid use of qualified-name %<%D::%D%>", 9082 qualifying_scope, decl); 9083 return error_mark_node; 9084 } 9085 else if (TYPE_P (qualifying_scope)) 9086 { 9087 ctype = qualifying_scope; 9088 if (!MAYBE_CLASS_TYPE_P (ctype)) 9089 { 9090 error ("%q#T is not a class or a namespace", ctype); 9091 ctype = NULL_TREE; 9092 } 9093 else if (innermost_code != cdk_function 9094 && current_class_type 9095 && !uniquely_derived_from_p (ctype, 9096 current_class_type)) 9097 { 9098 error ("invalid use of qualified-name %<%T::%D%>", 9099 qualifying_scope, decl); 9100 return error_mark_node; 9101 } 9102 } 9103 else if (TREE_CODE (qualifying_scope) == NAMESPACE_DECL) 9104 in_namespace = qualifying_scope; 9105 } 9106 switch (TREE_CODE (decl)) 9107 { 9108 case BIT_NOT_EXPR: 9109 { 9110 tree type; 9111 9112 if (innermost_code != cdk_function) 9113 { 9114 error ("declaration of %qD as non-function", decl); 9115 return error_mark_node; 9116 } 9117 else if (!qualifying_scope 9118 && !(current_class_type && at_class_scope_p ())) 9119 { 9120 error ("declaration of %qD as non-member", decl); 9121 return error_mark_node; 9122 } 9123 9124 type = TREE_OPERAND (decl, 0); 9125 if (TYPE_P (type)) 9126 type = constructor_name (type); 9127 name = identifier_to_locale (IDENTIFIER_POINTER (type)); 9128 dname = decl; 9129 } 9130 break; 9131 9132 case TEMPLATE_ID_EXPR: 9133 { 9134 tree fns = TREE_OPERAND (decl, 0); 9135 9136 dname = fns; 9137 if (!identifier_p (dname)) 9138 { 9139 if (variable_template_p (dname)) 9140 dname = DECL_NAME (dname); 9141 else 9142 { 9143 gcc_assert (is_overloaded_fn (dname)); 9144 dname = DECL_NAME (get_first_fn (dname)); 9145 } 9146 } 9147 } 9148 /* Fall through. */ 9149 9150 case IDENTIFIER_NODE: 9151 if (identifier_p (decl)) 9152 dname = decl; 9153 9154 if (C_IS_RESERVED_WORD (dname)) 9155 { 9156 error ("declarator-id missing; using reserved word %qD", 9157 dname); 9158 name = identifier_to_locale (IDENTIFIER_POINTER (dname)); 9159 } 9160 else if (!IDENTIFIER_TYPENAME_P (dname)) 9161 name = identifier_to_locale (IDENTIFIER_POINTER (dname)); 9162 else 9163 { 9164 gcc_assert (flags == NO_SPECIAL); 9165 flags = TYPENAME_FLAG; 9166 ctor_return_type = TREE_TYPE (dname); 9167 sfk = sfk_conversion; 9168 if (is_typename_at_global_scope (dname)) 9169 name = identifier_to_locale (IDENTIFIER_POINTER (dname)); 9170 else 9171 name = "<invalid operator>"; 9172 } 9173 break; 9174 9175 default: 9176 gcc_unreachable (); 9177 } 9178 break; 9179 } 9180 9181 case cdk_array: 9182 case cdk_pointer: 9183 case cdk_reference: 9184 case cdk_ptrmem: 9185 break; 9186 9187 case cdk_error: 9188 return error_mark_node; 9189 9190 default: 9191 gcc_unreachable (); 9192 } 9193 if (id_declarator->kind == cdk_id) 9194 break; 9195 } 9196 9197 /* [dcl.fct.edf] 9198 9199 The declarator in a function-definition shall have the form 9200 D1 ( parameter-declaration-clause) ... */ 9201 if (funcdef_flag && innermost_code != cdk_function) 9202 { 9203 error ("function definition does not declare parameters"); 9204 return error_mark_node; 9205 } 9206 9207 if (flags == TYPENAME_FLAG 9208 && innermost_code != cdk_function 9209 && ! (ctype && !declspecs->any_specifiers_p)) 9210 { 9211 error ("declaration of %qD as non-function", dname); 9212 return error_mark_node; 9213 } 9214 9215 if (dname 9216 && identifier_p (dname) 9217 && UDLIT_OPER_P (dname) 9218 && innermost_code != cdk_function) 9219 { 9220 error ("declaration of %qD as non-function", dname); 9221 return error_mark_node; 9222 } 9223 9224 if (dname && IDENTIFIER_OPNAME_P (dname)) 9225 { 9226 if (typedef_p) 9227 { 9228 error ("declaration of %qD as %<typedef%>", dname); 9229 return error_mark_node; 9230 } 9231 else if (decl_context == PARM || decl_context == CATCHPARM) 9232 { 9233 error ("declaration of %qD as parameter", dname); 9234 return error_mark_node; 9235 } 9236 } 9237 9238 /* Anything declared one level down from the top level 9239 must be one of the parameters of a function 9240 (because the body is at least two levels down). */ 9241 9242 /* This heuristic cannot be applied to C++ nodes! Fixed, however, 9243 by not allowing C++ class definitions to specify their parameters 9244 with xdecls (must be spec.d in the parmlist). 9245 9246 Since we now wait to push a class scope until we are sure that 9247 we are in a legitimate method context, we must set oldcname 9248 explicitly (since current_class_name is not yet alive). 9249 9250 We also want to avoid calling this a PARM if it is in a namespace. */ 9251 9252 if (decl_context == NORMAL && !toplevel_bindings_p ()) 9253 { 9254 cp_binding_level *b = current_binding_level; 9255 current_binding_level = b->level_chain; 9256 if (current_binding_level != 0 && toplevel_bindings_p ()) 9257 decl_context = PARM; 9258 current_binding_level = b; 9259 } 9260 9261 if (name == NULL) 9262 name = decl_context == PARM ? "parameter" : "type name"; 9263 9264 if (constexpr_p && typedef_p) 9265 { 9266 error ("%<constexpr%> cannot appear in a typedef declaration"); 9267 return error_mark_node; 9268 } 9269 9270 /* If there were multiple types specified in the decl-specifier-seq, 9271 issue an error message. */ 9272 if (declspecs->multiple_types_p) 9273 { 9274 error ("two or more data types in declaration of %qs", name); 9275 return error_mark_node; 9276 } 9277 9278 if (declspecs->conflicting_specifiers_p) 9279 { 9280 error ("conflicting specifiers in declaration of %qs", name); 9281 return error_mark_node; 9282 } 9283 9284 /* Extract the basic type from the decl-specifier-seq. */ 9285 type = declspecs->type; 9286 if (type == error_mark_node) 9287 { 9288 type = NULL_TREE; 9289 type_was_error_mark_node = true; 9290 } 9291 /* If the entire declaration is itself tagged as deprecated then 9292 suppress reports of deprecated items. */ 9293 if (type && TREE_DEPRECATED (type) 9294 && deprecated_state != DEPRECATED_SUPPRESS) 9295 warn_deprecated_use (type, NULL_TREE); 9296 if (type && TREE_CODE (type) == TYPE_DECL) 9297 { 9298 typedef_decl = type; 9299 type = TREE_TYPE (typedef_decl); 9300 if (TREE_DEPRECATED (type) 9301 && DECL_ARTIFICIAL (typedef_decl) 9302 && deprecated_state != DEPRECATED_SUPPRESS) 9303 warn_deprecated_use (type, NULL_TREE); 9304 } 9305 /* No type at all: default to `int', and set DEFAULTED_INT 9306 because it was not a user-defined typedef. */ 9307 if (type == NULL_TREE) 9308 { 9309 if (signed_p || unsigned_p || long_p || short_p) 9310 { 9311 /* These imply 'int'. */ 9312 type = integer_type_node; 9313 defaulted_int = 1; 9314 } 9315 /* If we just have "complex", it is equivalent to "complex double". */ 9316 else if (!longlong && !explicit_intN 9317 && decl_spec_seq_has_spec_p (declspecs, ds_complex)) 9318 { 9319 type = double_type_node; 9320 pedwarn (declspecs->locations[ds_complex], OPT_Wpedantic, 9321 "ISO C++ does not support plain %<complex%> meaning " 9322 "%<double complex%>"); 9323 } 9324 } 9325 /* Gather flags. */ 9326 explicit_int = declspecs->explicit_int_p; 9327 explicit_char = declspecs->explicit_char_p; 9328 9329 #if 0 9330 /* See the code below that used this. */ 9331 if (typedef_decl) 9332 decl_attr = DECL_ATTRIBUTES (typedef_decl); 9333 #endif 9334 typedef_type = type; 9335 9336 9337 if (sfk != sfk_conversion) 9338 ctor_return_type = ctype; 9339 9340 if (sfk != sfk_none) 9341 type = check_special_function_return_type (sfk, type, 9342 ctor_return_type); 9343 else if (type == NULL_TREE) 9344 { 9345 int is_main; 9346 9347 explicit_int = -1; 9348 9349 /* We handle `main' specially here, because 'main () { }' is so 9350 common. With no options, it is allowed. With -Wreturn-type, 9351 it is a warning. It is only an error with -pedantic-errors. */ 9352 is_main = (funcdef_flag 9353 && dname && identifier_p (dname) 9354 && MAIN_NAME_P (dname) 9355 && ctype == NULL_TREE 9356 && in_namespace == NULL_TREE 9357 && current_namespace == global_namespace); 9358 9359 if (type_was_error_mark_node) 9360 /* We've already issued an error, don't complain more. */; 9361 else if (in_system_header_at (input_location) || flag_ms_extensions) 9362 /* Allow it, sigh. */; 9363 else if (! is_main) 9364 permerror (input_location, "ISO C++ forbids declaration of %qs with no type", name); 9365 else if (pedantic) 9366 pedwarn (input_location, OPT_Wpedantic, 9367 "ISO C++ forbids declaration of %qs with no type", name); 9368 else 9369 warning (OPT_Wreturn_type, 9370 "ISO C++ forbids declaration of %qs with no type", name); 9371 9372 type = integer_type_node; 9373 } 9374 9375 ctype = NULL_TREE; 9376 9377 if (explicit_intN) 9378 { 9379 if (! int_n_enabled_p[declspecs->int_n_idx]) 9380 { 9381 error ("%<__int%d%> is not supported by this target", 9382 int_n_data[declspecs->int_n_idx].bitsize); 9383 explicit_intN = false; 9384 } 9385 else if (pedantic && ! in_system_header_at (input_location)) 9386 pedwarn (input_location, OPT_Wpedantic, 9387 "ISO C++ does not support %<__int%d%> for %qs", 9388 int_n_data[declspecs->int_n_idx].bitsize, name); 9389 } 9390 9391 /* Now process the modifiers that were specified 9392 and check for invalid combinations. */ 9393 9394 /* Long double is a special combination. */ 9395 if (long_p && !longlong && TYPE_MAIN_VARIANT (type) == double_type_node) 9396 { 9397 long_p = false; 9398 type = cp_build_qualified_type (long_double_type_node, 9399 cp_type_quals (type)); 9400 } 9401 9402 /* Check all other uses of type modifiers. */ 9403 9404 if (unsigned_p || signed_p || long_p || short_p) 9405 { 9406 int ok = 0; 9407 9408 if ((signed_p || unsigned_p) && TREE_CODE (type) != INTEGER_TYPE) 9409 error ("%<signed%> or %<unsigned%> invalid for %qs", name); 9410 else if (signed_p && unsigned_p) 9411 error ("%<signed%> and %<unsigned%> specified together for %qs", name); 9412 else if (longlong && TREE_CODE (type) != INTEGER_TYPE) 9413 error ("%<long long%> invalid for %qs", name); 9414 else if (long_p && TREE_CODE (type) == REAL_TYPE) 9415 error ("%<long%> invalid for %qs", name); 9416 else if (short_p && TREE_CODE (type) == REAL_TYPE) 9417 error ("%<short%> invalid for %qs", name); 9418 else if ((long_p || short_p) && TREE_CODE (type) != INTEGER_TYPE) 9419 error ("%<long%> or %<short%> invalid for %qs", name); 9420 else if ((long_p || short_p || explicit_char || explicit_int) && explicit_intN) 9421 error ("%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs", name); 9422 else if ((long_p || short_p) && explicit_char) 9423 error ("%<long%> or %<short%> specified with char for %qs", name); 9424 else if (long_p && short_p) 9425 error ("%<long%> and %<short%> specified together for %qs", name); 9426 else if (type == char16_type_node || type == char32_type_node) 9427 { 9428 if (signed_p || unsigned_p) 9429 error ("%<signed%> or %<unsigned%> invalid for %qs", name); 9430 else if (short_p || long_p) 9431 error ("%<short%> or %<long%> invalid for %qs", name); 9432 } 9433 else 9434 { 9435 ok = 1; 9436 if (!explicit_int && !defaulted_int && !explicit_char && !explicit_intN && pedantic) 9437 { 9438 pedwarn (input_location, OPT_Wpedantic, 9439 "long, short, signed or unsigned used invalidly for %qs", 9440 name); 9441 if (flag_pedantic_errors) 9442 ok = 0; 9443 } 9444 } 9445 9446 /* Discard the type modifiers if they are invalid. */ 9447 if (! ok) 9448 { 9449 unsigned_p = false; 9450 signed_p = false; 9451 long_p = false; 9452 short_p = false; 9453 longlong = 0; 9454 } 9455 } 9456 9457 /* Decide whether an integer type is signed or not. 9458 Optionally treat bitfields as signed by default. */ 9459 if (unsigned_p 9460 /* [class.bit] 9461 9462 It is implementation-defined whether a plain (neither 9463 explicitly signed or unsigned) char, short, int, or long 9464 bit-field is signed or unsigned. 9465 9466 Naturally, we extend this to long long as well. Note that 9467 this does not include wchar_t. */ 9468 || (bitfield && !flag_signed_bitfields 9469 && !signed_p 9470 /* A typedef for plain `int' without `signed' can be 9471 controlled just like plain `int', but a typedef for 9472 `signed int' cannot be so controlled. */ 9473 && !(typedef_decl 9474 && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl)) 9475 && TREE_CODE (type) == INTEGER_TYPE 9476 && !same_type_p (TYPE_MAIN_VARIANT (type), wchar_type_node))) 9477 { 9478 if (explicit_intN) 9479 type = int_n_trees[declspecs->int_n_idx].unsigned_type; 9480 else if (longlong) 9481 type = long_long_unsigned_type_node; 9482 else if (long_p) 9483 type = long_unsigned_type_node; 9484 else if (short_p) 9485 type = short_unsigned_type_node; 9486 else if (type == char_type_node) 9487 type = unsigned_char_type_node; 9488 else if (typedef_decl) 9489 type = unsigned_type_for (type); 9490 else 9491 type = unsigned_type_node; 9492 } 9493 else if (signed_p && type == char_type_node) 9494 type = signed_char_type_node; 9495 else if (explicit_intN) 9496 type = int_n_trees[declspecs->int_n_idx].signed_type; 9497 else if (longlong) 9498 type = long_long_integer_type_node; 9499 else if (long_p) 9500 type = long_integer_type_node; 9501 else if (short_p) 9502 type = short_integer_type_node; 9503 9504 if (decl_spec_seq_has_spec_p (declspecs, ds_complex)) 9505 { 9506 if (TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != REAL_TYPE) 9507 error ("complex invalid for %qs", name); 9508 /* If a modifier is specified, the resulting complex is the complex 9509 form of TYPE. E.g, "complex short" is "complex short int". */ 9510 else if (type == integer_type_node) 9511 type = complex_integer_type_node; 9512 else if (type == float_type_node) 9513 type = complex_float_type_node; 9514 else if (type == double_type_node) 9515 type = complex_double_type_node; 9516 else if (type == long_double_type_node) 9517 type = complex_long_double_type_node; 9518 else 9519 type = build_complex_type (type); 9520 } 9521 9522 type_quals = TYPE_UNQUALIFIED; 9523 if (decl_spec_seq_has_spec_p (declspecs, ds_const)) 9524 type_quals |= TYPE_QUAL_CONST; 9525 if (decl_spec_seq_has_spec_p (declspecs, ds_volatile)) 9526 type_quals |= TYPE_QUAL_VOLATILE; 9527 if (decl_spec_seq_has_spec_p (declspecs, ds_restrict)) 9528 type_quals |= TYPE_QUAL_RESTRICT; 9529 if (sfk == sfk_conversion && type_quals != TYPE_UNQUALIFIED) 9530 error ("qualifiers are not allowed on declaration of %<operator %T%>", 9531 ctor_return_type); 9532 9533 /* If we're using the injected-class-name to form a compound type or a 9534 declaration, replace it with the underlying class so we don't get 9535 redundant typedefs in the debug output. But if we are returning the 9536 type unchanged, leave it alone so that it's available to 9537 maybe_get_template_decl_from_type_decl. */ 9538 if (CLASS_TYPE_P (type) 9539 && DECL_SELF_REFERENCE_P (TYPE_NAME (type)) 9540 && type == TREE_TYPE (TYPE_NAME (type)) 9541 && (declarator || type_quals)) 9542 type = DECL_ORIGINAL_TYPE (TYPE_NAME (type)); 9543 9544 type_quals |= cp_type_quals (type); 9545 type = cp_build_qualified_type_real 9546 (type, type_quals, ((((typedef_decl && !DECL_ARTIFICIAL (typedef_decl)) 9547 || declspecs->decltype_p) 9548 ? tf_ignore_bad_quals : 0) | tf_warning_or_error)); 9549 /* We might have ignored or rejected some of the qualifiers. */ 9550 type_quals = cp_type_quals (type); 9551 9552 staticp = 0; 9553 inlinep = decl_spec_seq_has_spec_p (declspecs, ds_inline); 9554 virtualp = decl_spec_seq_has_spec_p (declspecs, ds_virtual); 9555 explicitp = decl_spec_seq_has_spec_p (declspecs, ds_explicit); 9556 9557 storage_class = declspecs->storage_class; 9558 if (storage_class == sc_static) 9559 staticp = 1 + (decl_context == FIELD); 9560 9561 if (virtualp && staticp == 2) 9562 { 9563 error ("member %qD cannot be declared both virtual and static", dname); 9564 storage_class = sc_none; 9565 staticp = 0; 9566 } 9567 friendp = decl_spec_seq_has_spec_p (declspecs, ds_friend); 9568 9569 /* Issue errors about use of storage classes for parameters. */ 9570 if (decl_context == PARM) 9571 { 9572 if (typedef_p) 9573 { 9574 error ("typedef declaration invalid in parameter declaration"); 9575 return error_mark_node; 9576 } 9577 else if (template_parm_flag && storage_class != sc_none) 9578 { 9579 error ("storage class specified for template parameter %qs", name); 9580 return error_mark_node; 9581 } 9582 else if (storage_class == sc_static 9583 || storage_class == sc_extern 9584 || thread_p) 9585 error ("storage class specifiers invalid in parameter declarations"); 9586 9587 /* Function parameters cannot be constexpr. If we saw one, moan 9588 and pretend it wasn't there. */ 9589 if (constexpr_p) 9590 { 9591 error ("a parameter cannot be declared %<constexpr%>"); 9592 constexpr_p = 0; 9593 } 9594 } 9595 9596 /* Give error if `virtual' is used outside of class declaration. */ 9597 if (virtualp 9598 && (current_class_name == NULL_TREE || decl_context != FIELD)) 9599 { 9600 error ("%<virtual%> outside class declaration"); 9601 virtualp = 0; 9602 } 9603 9604 /* Static anonymous unions are dealt with here. */ 9605 if (staticp && decl_context == TYPENAME 9606 && declspecs->type 9607 && ANON_AGGR_TYPE_P (declspecs->type)) 9608 decl_context = FIELD; 9609 9610 /* Warn about storage classes that are invalid for certain 9611 kinds of declarations (parameters, typenames, etc.). */ 9612 if (thread_p 9613 && ((storage_class 9614 && storage_class != sc_extern 9615 && storage_class != sc_static) 9616 || typedef_p)) 9617 { 9618 error ("multiple storage classes in declaration of %qs", name); 9619 thread_p = false; 9620 } 9621 if (decl_context != NORMAL 9622 && ((storage_class != sc_none 9623 && storage_class != sc_mutable) 9624 || thread_p)) 9625 { 9626 if ((decl_context == PARM || decl_context == CATCHPARM) 9627 && (storage_class == sc_register 9628 || storage_class == sc_auto)) 9629 ; 9630 else if (typedef_p) 9631 ; 9632 else if (decl_context == FIELD 9633 /* C++ allows static class elements. */ 9634 && storage_class == sc_static) 9635 /* C++ also allows inlines and signed and unsigned elements, 9636 but in those cases we don't come in here. */ 9637 ; 9638 else 9639 { 9640 if (decl_context == FIELD) 9641 error ("storage class specified for %qs", name); 9642 else 9643 { 9644 if (decl_context == PARM || decl_context == CATCHPARM) 9645 error ("storage class specified for parameter %qs", name); 9646 else 9647 error ("storage class specified for typename"); 9648 } 9649 if (storage_class == sc_register 9650 || storage_class == sc_auto 9651 || storage_class == sc_extern 9652 || thread_p) 9653 storage_class = sc_none; 9654 } 9655 } 9656 else if (storage_class == sc_extern && funcdef_flag 9657 && ! toplevel_bindings_p ()) 9658 error ("nested function %qs declared %<extern%>", name); 9659 else if (toplevel_bindings_p ()) 9660 { 9661 if (storage_class == sc_auto) 9662 error ("top-level declaration of %qs specifies %<auto%>", name); 9663 } 9664 else if (thread_p 9665 && storage_class != sc_extern 9666 && storage_class != sc_static) 9667 { 9668 if (declspecs->gnu_thread_keyword_p) 9669 pedwarn (input_location, 0, "function-scope %qs implicitly auto and " 9670 "declared %<__thread%>", name); 9671 9672 /* When thread_local is applied to a variable of block scope the 9673 storage-class-specifier static is implied if it does not appear 9674 explicitly. */ 9675 storage_class = declspecs->storage_class = sc_static; 9676 staticp = 1; 9677 } 9678 9679 if (storage_class && friendp) 9680 { 9681 error ("storage class specifiers invalid in friend function declarations"); 9682 storage_class = sc_none; 9683 staticp = 0; 9684 } 9685 9686 if (!id_declarator) 9687 unqualified_id = NULL_TREE; 9688 else 9689 { 9690 unqualified_id = id_declarator->u.id.unqualified_name; 9691 switch (TREE_CODE (unqualified_id)) 9692 { 9693 case BIT_NOT_EXPR: 9694 unqualified_id = TREE_OPERAND (unqualified_id, 0); 9695 if (TYPE_P (unqualified_id)) 9696 unqualified_id = constructor_name (unqualified_id); 9697 break; 9698 9699 case IDENTIFIER_NODE: 9700 case TEMPLATE_ID_EXPR: 9701 break; 9702 9703 default: 9704 gcc_unreachable (); 9705 } 9706 } 9707 9708 if (declspecs->std_attributes) 9709 { 9710 /* Apply the c++11 attributes to the type preceding them. */ 9711 input_location = declspecs->locations[ds_std_attribute]; 9712 decl_attributes (&type, declspecs->std_attributes, 0); 9713 input_location = saved_loc; 9714 } 9715 9716 /* Determine the type of the entity declared by recurring on the 9717 declarator. */ 9718 for (; declarator; declarator = declarator->declarator) 9719 { 9720 const cp_declarator *inner_declarator; 9721 tree attrs; 9722 9723 if (type == error_mark_node) 9724 return error_mark_node; 9725 9726 attrs = declarator->attributes; 9727 if (attrs) 9728 { 9729 int attr_flags; 9730 9731 attr_flags = 0; 9732 if (declarator == NULL || declarator->kind == cdk_id) 9733 attr_flags |= (int) ATTR_FLAG_DECL_NEXT; 9734 if (declarator->kind == cdk_function) 9735 attr_flags |= (int) ATTR_FLAG_FUNCTION_NEXT; 9736 if (declarator->kind == cdk_array) 9737 attr_flags |= (int) ATTR_FLAG_ARRAY_NEXT; 9738 returned_attrs = decl_attributes (&type, 9739 chainon (returned_attrs, attrs), 9740 attr_flags); 9741 } 9742 9743 if (declarator->kind == cdk_id) 9744 break; 9745 9746 inner_declarator = declarator->declarator; 9747 9748 switch (declarator->kind) 9749 { 9750 case cdk_array: 9751 type = create_array_type_for_decl (dname, type, 9752 declarator->u.array.bounds); 9753 if (declarator->std_attributes) 9754 /* [dcl.array]/1: 9755 9756 The optional attribute-specifier-seq appertains to the 9757 array. */ 9758 returned_attrs = chainon (returned_attrs, 9759 declarator->std_attributes); 9760 break; 9761 9762 case cdk_function: 9763 { 9764 tree arg_types; 9765 int funcdecl_p; 9766 9767 /* Declaring a function type. 9768 Make sure we have a valid type for the function to return. */ 9769 9770 if (type_quals != TYPE_UNQUALIFIED) 9771 { 9772 if (SCALAR_TYPE_P (type) || VOID_TYPE_P (type)) 9773 warning (OPT_Wignored_qualifiers, 9774 "type qualifiers ignored on function return type"); 9775 /* We now know that the TYPE_QUALS don't apply to the 9776 decl, but to its return type. */ 9777 type_quals = TYPE_UNQUALIFIED; 9778 } 9779 errmsg = targetm.invalid_return_type (type); 9780 if (errmsg) 9781 { 9782 error (errmsg); 9783 type = integer_type_node; 9784 } 9785 9786 /* Error about some types functions can't return. */ 9787 9788 if (TREE_CODE (type) == FUNCTION_TYPE) 9789 { 9790 error ("%qs declared as function returning a function", name); 9791 return error_mark_node; 9792 } 9793 if (TREE_CODE (type) == ARRAY_TYPE) 9794 { 9795 error ("%qs declared as function returning an array", name); 9796 return error_mark_node; 9797 } 9798 9799 input_location = declspecs->locations[ds_type_spec]; 9800 abstract_virtuals_error (ACU_RETURN, type); 9801 input_location = saved_loc; 9802 9803 /* Pick up type qualifiers which should be applied to `this'. */ 9804 memfn_quals = declarator->u.function.qualifiers; 9805 /* Pick up virt-specifiers. */ 9806 virt_specifiers = declarator->u.function.virt_specifiers; 9807 /* And ref-qualifier, too */ 9808 rqual = declarator->u.function.ref_qualifier; 9809 /* Pick up the exception specifications. */ 9810 raises = declarator->u.function.exception_specification; 9811 /* If the exception-specification is ill-formed, let's pretend 9812 there wasn't one. */ 9813 if (raises == error_mark_node) 9814 raises = NULL_TREE; 9815 9816 /* Say it's a definition only for the CALL_EXPR 9817 closest to the identifier. */ 9818 funcdecl_p = inner_declarator && inner_declarator->kind == cdk_id; 9819 9820 /* Handle a late-specified return type. */ 9821 if (funcdecl_p) 9822 { 9823 if (type_uses_auto (type)) 9824 { 9825 if (!declarator->u.function.late_return_type) 9826 { 9827 if (current_class_type 9828 && LAMBDA_TYPE_P (current_class_type)) 9829 /* OK for C++11 lambdas. */; 9830 else if (cxx_dialect < cxx14) 9831 { 9832 error ("%qs function uses " 9833 "%<auto%> type specifier without trailing " 9834 "return type", name); 9835 inform (input_location, "deduced return type " 9836 "only available with -std=c++14 or " 9837 "-std=gnu++14"); 9838 } 9839 else if (virtualp) 9840 { 9841 error ("virtual function cannot " 9842 "have deduced return type"); 9843 virtualp = false; 9844 } 9845 } 9846 else if (!is_auto (type)) 9847 { 9848 error ("%qs function with trailing return type has" 9849 " %qT as its type rather than plain %<auto%>", 9850 name, type); 9851 return error_mark_node; 9852 } 9853 } 9854 else if (declarator->u.function.late_return_type) 9855 { 9856 if (cxx_dialect < cxx11) 9857 /* Not using maybe_warn_cpp0x because this should 9858 always be an error. */ 9859 error ("trailing return type only available with " 9860 "-std=c++11 or -std=gnu++11"); 9861 else 9862 error ("%qs function with trailing return type not " 9863 "declared with %<auto%> type specifier", name); 9864 return error_mark_node; 9865 } 9866 } 9867 type = splice_late_return_type 9868 (type, declarator->u.function.late_return_type); 9869 if (type == error_mark_node) 9870 return error_mark_node; 9871 9872 if (declarator->u.function.late_return_type) 9873 late_return_type_p = true; 9874 9875 if (ctype == NULL_TREE 9876 && decl_context == FIELD 9877 && funcdecl_p 9878 && friendp == 0) 9879 ctype = current_class_type; 9880 9881 if (ctype && (sfk == sfk_constructor 9882 || sfk == sfk_destructor)) 9883 { 9884 /* We are within a class's scope. If our declarator name 9885 is the same as the class name, and we are defining 9886 a function, then it is a constructor/destructor, and 9887 therefore returns a void type. */ 9888 9889 /* ISO C++ 12.4/2. A destructor may not be declared 9890 const or volatile. A destructor may not be static. 9891 A destructor may not be declared with ref-qualifier. 9892 9893 ISO C++ 12.1. A constructor may not be declared 9894 const or volatile. A constructor may not be 9895 virtual. A constructor may not be static. 9896 A constructor may not be declared with ref-qualifier. */ 9897 if (staticp == 2) 9898 error ((flags == DTOR_FLAG) 9899 ? G_("destructor cannot be static member function") 9900 : G_("constructor cannot be static member function")); 9901 if (memfn_quals) 9902 { 9903 error ((flags == DTOR_FLAG) 9904 ? G_("destructors may not be cv-qualified") 9905 : G_("constructors may not be cv-qualified")); 9906 memfn_quals = TYPE_UNQUALIFIED; 9907 } 9908 9909 if (rqual) 9910 { 9911 maybe_warn_cpp0x (CPP0X_REF_QUALIFIER); 9912 error ((flags == DTOR_FLAG) 9913 ? "destructors may not be ref-qualified" 9914 : "constructors may not be ref-qualified"); 9915 rqual = REF_QUAL_NONE; 9916 } 9917 9918 if (decl_context == FIELD 9919 && !member_function_or_else (ctype, 9920 current_class_type, 9921 flags)) 9922 return error_mark_node; 9923 9924 if (flags != DTOR_FLAG) 9925 { 9926 /* It's a constructor. */ 9927 if (explicitp == 1) 9928 explicitp = 2; 9929 if (virtualp) 9930 { 9931 permerror (input_location, "constructors cannot be declared virtual"); 9932 virtualp = 0; 9933 } 9934 if (decl_context == FIELD 9935 && sfk != sfk_constructor) 9936 return error_mark_node; 9937 } 9938 if (decl_context == FIELD) 9939 staticp = 0; 9940 } 9941 else if (friendp) 9942 { 9943 if (virtualp) 9944 { 9945 /* Cannot be both friend and virtual. */ 9946 error ("virtual functions cannot be friends"); 9947 friendp = 0; 9948 } 9949 if (decl_context == NORMAL) 9950 error ("friend declaration not in class definition"); 9951 if (current_function_decl && funcdef_flag) 9952 error ("can%'t define friend function %qs in a local " 9953 "class definition", 9954 name); 9955 } 9956 else if (ctype && sfk == sfk_conversion) 9957 { 9958 if (explicitp == 1) 9959 { 9960 maybe_warn_cpp0x (CPP0X_EXPLICIT_CONVERSION); 9961 explicitp = 2; 9962 } 9963 } 9964 9965 arg_types = grokparms (declarator->u.function.parameters, 9966 &parms); 9967 9968 if (inner_declarator 9969 && inner_declarator->kind == cdk_id 9970 && inner_declarator->u.id.sfk == sfk_destructor 9971 && arg_types != void_list_node) 9972 { 9973 error ("destructors may not have parameters"); 9974 arg_types = void_list_node; 9975 parms = NULL_TREE; 9976 } 9977 9978 type = build_function_type (type, arg_types); 9979 if (declarator->std_attributes) 9980 /* [dcl.fct]/2: 9981 9982 The optional attribute-specifier-seq appertains to 9983 the function type. */ 9984 decl_attributes (&type, declarator->std_attributes, 9985 0); 9986 } 9987 break; 9988 9989 case cdk_pointer: 9990 case cdk_reference: 9991 case cdk_ptrmem: 9992 /* Filter out pointers-to-references and references-to-references. 9993 We can get these if a TYPE_DECL is used. */ 9994 9995 if (TREE_CODE (type) == REFERENCE_TYPE) 9996 { 9997 if (declarator->kind != cdk_reference) 9998 { 9999 error ("cannot declare pointer to %q#T", type); 10000 type = TREE_TYPE (type); 10001 } 10002 10003 /* In C++0x, we allow reference to reference declarations 10004 that occur indirectly through typedefs [7.1.3/8 dcl.typedef] 10005 and template type arguments [14.3.1/4 temp.arg.type]. The 10006 check for direct reference to reference declarations, which 10007 are still forbidden, occurs below. Reasoning behind the change 10008 can be found in DR106, DR540, and the rvalue reference 10009 proposals. */ 10010 else if (cxx_dialect == cxx98) 10011 { 10012 error ("cannot declare reference to %q#T", type); 10013 type = TREE_TYPE (type); 10014 } 10015 } 10016 else if (VOID_TYPE_P (type)) 10017 { 10018 if (declarator->kind == cdk_reference) 10019 error ("cannot declare reference to %q#T", type); 10020 else if (declarator->kind == cdk_ptrmem) 10021 error ("cannot declare pointer to %q#T member", type); 10022 } 10023 10024 /* We now know that the TYPE_QUALS don't apply to the decl, 10025 but to the target of the pointer. */ 10026 type_quals = TYPE_UNQUALIFIED; 10027 10028 /* This code used to handle METHOD_TYPE, but I don't think it's 10029 possible to get it here anymore. */ 10030 gcc_assert (TREE_CODE (type) != METHOD_TYPE); 10031 if (declarator->kind == cdk_ptrmem 10032 && TREE_CODE (type) == FUNCTION_TYPE) 10033 { 10034 memfn_quals |= type_memfn_quals (type); 10035 type = build_memfn_type (type, 10036 declarator->u.pointer.class_type, 10037 memfn_quals, 10038 rqual); 10039 if (type == error_mark_node) 10040 return error_mark_node; 10041 10042 rqual = REF_QUAL_NONE; 10043 memfn_quals = TYPE_UNQUALIFIED; 10044 } 10045 10046 if (TREE_CODE (type) == FUNCTION_TYPE 10047 && (type_memfn_quals (type) != TYPE_UNQUALIFIED 10048 || type_memfn_rqual (type) != REF_QUAL_NONE)) 10049 error (declarator->kind == cdk_reference 10050 ? G_("cannot declare reference to qualified function type %qT") 10051 : G_("cannot declare pointer to qualified function type %qT"), 10052 type); 10053 10054 /* When the pointed-to type involves components of variable size, 10055 care must be taken to ensure that the size evaluation code is 10056 emitted early enough to dominate all the possible later uses 10057 and late enough for the variables on which it depends to have 10058 been assigned. 10059 10060 This is expected to happen automatically when the pointed-to 10061 type has a name/declaration of it's own, but special attention 10062 is required if the type is anonymous. 10063 10064 We handle the NORMAL and FIELD contexts here by inserting a 10065 dummy statement that just evaluates the size at a safe point 10066 and ensures it is not deferred until e.g. within a deeper 10067 conditional context (c++/43555). 10068 10069 We expect nothing to be needed here for PARM or TYPENAME. 10070 Evaluating the size at this point for TYPENAME would 10071 actually be incorrect, as we might be in the middle of an 10072 expression with side effects on the pointed-to type size 10073 "arguments" prior to the pointer declaration point and the 10074 size evaluation could end up prior to the side effects. */ 10075 10076 if (!TYPE_NAME (type) 10077 && (decl_context == NORMAL || decl_context == FIELD) 10078 && at_function_scope_p () 10079 && variably_modified_type_p (type, NULL_TREE)) 10080 /* Force evaluation of the SAVE_EXPR. */ 10081 finish_expr_stmt (TYPE_SIZE (type)); 10082 10083 if (declarator->kind == cdk_reference) 10084 { 10085 /* In C++0x, the type we are creating a reference to might be 10086 a typedef which is itself a reference type. In that case, 10087 we follow the reference collapsing rules in 10088 [7.1.3/8 dcl.typedef] to create the final reference type: 10089 10090 "If a typedef TD names a type that is a reference to a type 10091 T, an attempt to create the type 'lvalue reference to cv TD' 10092 creates the type 'lvalue reference to T,' while an attempt 10093 to create the type "rvalue reference to cv TD' creates the 10094 type TD." 10095 */ 10096 if (VOID_TYPE_P (type)) 10097 /* We already gave an error. */; 10098 else if (TREE_CODE (type) == REFERENCE_TYPE) 10099 { 10100 if (declarator->u.reference.rvalue_ref) 10101 /* Leave type alone. */; 10102 else 10103 type = cp_build_reference_type (TREE_TYPE (type), false); 10104 } 10105 else 10106 type = cp_build_reference_type 10107 (type, declarator->u.reference.rvalue_ref); 10108 10109 /* In C++0x, we need this check for direct reference to 10110 reference declarations, which are forbidden by 10111 [8.3.2/5 dcl.ref]. Reference to reference declarations 10112 are only allowed indirectly through typedefs and template 10113 type arguments. Example: 10114 10115 void foo(int & &); // invalid ref-to-ref decl 10116 10117 typedef int & int_ref; 10118 void foo(int_ref &); // valid ref-to-ref decl 10119 */ 10120 if (inner_declarator && inner_declarator->kind == cdk_reference) 10121 error ("cannot declare reference to %q#T, which is not " 10122 "a typedef or a template type argument", type); 10123 } 10124 else if (TREE_CODE (type) == METHOD_TYPE) 10125 type = build_ptrmemfunc_type (build_pointer_type (type)); 10126 else if (declarator->kind == cdk_ptrmem) 10127 { 10128 gcc_assert (TREE_CODE (declarator->u.pointer.class_type) 10129 != NAMESPACE_DECL); 10130 if (declarator->u.pointer.class_type == error_mark_node) 10131 /* We will already have complained. */ 10132 type = error_mark_node; 10133 else 10134 type = build_ptrmem_type (declarator->u.pointer.class_type, 10135 type); 10136 } 10137 else 10138 type = build_pointer_type (type); 10139 10140 /* Process a list of type modifier keywords (such as 10141 const or volatile) that were given inside the `*' or `&'. */ 10142 10143 if (declarator->u.pointer.qualifiers) 10144 { 10145 type 10146 = cp_build_qualified_type (type, 10147 declarator->u.pointer.qualifiers); 10148 type_quals = cp_type_quals (type); 10149 } 10150 10151 /* Apply C++11 attributes to the pointer, and not to the 10152 type pointed to. This is unlike what is done for GNU 10153 attributes above. It is to comply with [dcl.ptr]/1: 10154 10155 [the optional attribute-specifier-seq (7.6.1) appertains 10156 to the pointer and not to the object pointed to]. */ 10157 if (declarator->std_attributes) 10158 decl_attributes (&type, declarator->std_attributes, 10159 0); 10160 10161 ctype = NULL_TREE; 10162 break; 10163 10164 case cdk_error: 10165 break; 10166 10167 default: 10168 gcc_unreachable (); 10169 } 10170 } 10171 10172 /* A `constexpr' specifier used in an object declaration declares 10173 the object as `const'. */ 10174 if (constexpr_p && innermost_code != cdk_function) 10175 { 10176 /* DR1688 says that a `constexpr' specifier in combination with 10177 `volatile' is valid. */ 10178 10179 if (TREE_CODE (type) != REFERENCE_TYPE) 10180 { 10181 type_quals |= TYPE_QUAL_CONST; 10182 type = cp_build_qualified_type (type, type_quals); 10183 } 10184 } 10185 10186 if (unqualified_id && TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR 10187 && TREE_CODE (type) != FUNCTION_TYPE 10188 && TREE_CODE (type) != METHOD_TYPE 10189 && !variable_template_p (TREE_OPERAND (unqualified_id, 0))) 10190 { 10191 error ("template-id %qD used as a declarator", 10192 unqualified_id); 10193 unqualified_id = dname; 10194 } 10195 10196 /* If TYPE is a FUNCTION_TYPE, but the function name was explicitly 10197 qualified with a class-name, turn it into a METHOD_TYPE, unless 10198 we know that the function is static. We take advantage of this 10199 opportunity to do other processing that pertains to entities 10200 explicitly declared to be class members. Note that if DECLARATOR 10201 is non-NULL, we know it is a cdk_id declarator; otherwise, we 10202 would not have exited the loop above. */ 10203 if (declarator 10204 && declarator->u.id.qualifying_scope 10205 && MAYBE_CLASS_TYPE_P (declarator->u.id.qualifying_scope)) 10206 { 10207 ctype = declarator->u.id.qualifying_scope; 10208 ctype = TYPE_MAIN_VARIANT (ctype); 10209 template_count = num_template_headers_for_class (ctype); 10210 10211 if (ctype == current_class_type) 10212 { 10213 if (friendp) 10214 { 10215 permerror (input_location, "member functions are implicitly friends of their class"); 10216 friendp = 0; 10217 } 10218 else 10219 permerror (declarator->id_loc, 10220 "extra qualification %<%T::%> on member %qs", 10221 ctype, name); 10222 } 10223 else if (/* If the qualifying type is already complete, then we 10224 can skip the following checks. */ 10225 !COMPLETE_TYPE_P (ctype) 10226 && (/* If the function is being defined, then 10227 qualifying type must certainly be complete. */ 10228 funcdef_flag 10229 /* A friend declaration of "T::f" is OK, even if 10230 "T" is a template parameter. But, if this 10231 function is not a friend, the qualifying type 10232 must be a class. */ 10233 || (!friendp && !CLASS_TYPE_P (ctype)) 10234 /* For a declaration, the type need not be 10235 complete, if either it is dependent (since there 10236 is no meaningful definition of complete in that 10237 case) or the qualifying class is currently being 10238 defined. */ 10239 || !(dependent_type_p (ctype) 10240 || currently_open_class (ctype))) 10241 /* Check that the qualifying type is complete. */ 10242 && !complete_type_or_else (ctype, NULL_TREE)) 10243 return error_mark_node; 10244 else if (TREE_CODE (type) == FUNCTION_TYPE) 10245 { 10246 if (current_class_type 10247 && (!friendp || funcdef_flag)) 10248 { 10249 error (funcdef_flag 10250 ? G_("cannot define member function %<%T::%s%> " 10251 "within %<%T%>") 10252 : G_("cannot declare member function %<%T::%s%> " 10253 "within %<%T%>"), 10254 ctype, name, current_class_type); 10255 return error_mark_node; 10256 } 10257 } 10258 else if (typedef_p && current_class_type) 10259 { 10260 error ("cannot declare member %<%T::%s%> within %qT", 10261 ctype, name, current_class_type); 10262 return error_mark_node; 10263 } 10264 } 10265 10266 if (ctype == NULL_TREE && decl_context == FIELD && friendp == 0) 10267 ctype = current_class_type; 10268 10269 /* Now TYPE has the actual type. */ 10270 10271 if (returned_attrs) 10272 { 10273 if (attrlist) 10274 *attrlist = chainon (returned_attrs, *attrlist); 10275 else 10276 attrlist = &returned_attrs; 10277 } 10278 10279 if (declarator 10280 && declarator->kind == cdk_id 10281 && declarator->std_attributes) 10282 /* [dcl.meaning]/1: The optional attribute-specifier-seq following 10283 a declarator-id appertains to the entity that is declared. */ 10284 *attrlist = chainon (*attrlist, declarator->std_attributes); 10285 10286 /* Handle parameter packs. */ 10287 if (parameter_pack_p) 10288 { 10289 if (decl_context == PARM) 10290 /* Turn the type into a pack expansion.*/ 10291 type = make_pack_expansion (type); 10292 else 10293 error ("non-parameter %qs cannot be a parameter pack", name); 10294 } 10295 10296 /* Did array size calculations overflow or does the array cover more 10297 than half of the address-space? */ 10298 if (TREE_CODE (type) == ARRAY_TYPE 10299 && COMPLETE_TYPE_P (type) 10300 && TREE_CODE (TYPE_SIZE_UNIT (type)) == INTEGER_CST 10301 && ! valid_constant_size_p (TYPE_SIZE_UNIT (type))) 10302 { 10303 error ("size of array %qs is too large", name); 10304 /* If we proceed with the array type as it is, we'll eventually 10305 crash in tree_to_[su]hwi(). */ 10306 type = error_mark_node; 10307 } 10308 10309 if ((decl_context == FIELD || decl_context == PARM) 10310 && !processing_template_decl 10311 && variably_modified_type_p (type, NULL_TREE)) 10312 { 10313 if (decl_context == FIELD) 10314 error ("data member may not have variably modified type %qT", type); 10315 else 10316 error ("parameter may not have variably modified type %qT", type); 10317 type = error_mark_node; 10318 } 10319 10320 if (explicitp == 1 || (explicitp && friendp)) 10321 { 10322 /* [dcl.fct.spec] (C++11) The explicit specifier shall be used only 10323 in the declaration of a constructor or conversion function within 10324 a class definition. */ 10325 if (!current_class_type) 10326 error ("%<explicit%> outside class declaration"); 10327 else if (friendp) 10328 error ("%<explicit%> in friend declaration"); 10329 else 10330 error ("only declarations of constructors and conversion operators " 10331 "can be %<explicit%>"); 10332 explicitp = 0; 10333 } 10334 10335 if (storage_class == sc_mutable) 10336 { 10337 if (decl_context != FIELD || friendp) 10338 { 10339 error ("non-member %qs cannot be declared %<mutable%>", name); 10340 storage_class = sc_none; 10341 } 10342 else if (decl_context == TYPENAME || typedef_p) 10343 { 10344 error ("non-object member %qs cannot be declared %<mutable%>", name); 10345 storage_class = sc_none; 10346 } 10347 else if (TREE_CODE (type) == FUNCTION_TYPE 10348 || TREE_CODE (type) == METHOD_TYPE) 10349 { 10350 error ("function %qs cannot be declared %<mutable%>", name); 10351 storage_class = sc_none; 10352 } 10353 else if (staticp) 10354 { 10355 error ("static %qs cannot be declared %<mutable%>", name); 10356 storage_class = sc_none; 10357 } 10358 else if (type_quals & TYPE_QUAL_CONST) 10359 { 10360 error ("const %qs cannot be declared %<mutable%>", name); 10361 storage_class = sc_none; 10362 } 10363 else if (TREE_CODE (type) == REFERENCE_TYPE) 10364 { 10365 permerror (input_location, "reference %qs cannot be declared " 10366 "%<mutable%>", name); 10367 storage_class = sc_none; 10368 } 10369 } 10370 10371 /* If this is declaring a typedef name, return a TYPE_DECL. */ 10372 if (typedef_p && decl_context != TYPENAME) 10373 { 10374 tree decl; 10375 10376 /* Note that the grammar rejects storage classes 10377 in typenames, fields or parameters. */ 10378 if (current_lang_name == lang_name_java) 10379 TYPE_FOR_JAVA (type) = 1; 10380 10381 /* This declaration: 10382 10383 typedef void f(int) const; 10384 10385 declares a function type which is not a member of any 10386 particular class, but which is cv-qualified; for 10387 example "f S::*" declares a pointer to a const-qualified 10388 member function of S. We record the cv-qualification in the 10389 function type. */ 10390 if ((rqual || memfn_quals) && TREE_CODE (type) == FUNCTION_TYPE) 10391 { 10392 type = apply_memfn_quals (type, memfn_quals, rqual); 10393 10394 /* We have now dealt with these qualifiers. */ 10395 memfn_quals = TYPE_UNQUALIFIED; 10396 rqual = REF_QUAL_NONE; 10397 } 10398 10399 if (type_uses_auto (type)) 10400 { 10401 error ("typedef declared %<auto%>"); 10402 type = error_mark_node; 10403 } 10404 10405 if (decl_context == FIELD) 10406 decl = build_lang_decl (TYPE_DECL, unqualified_id, type); 10407 else 10408 decl = build_decl (input_location, TYPE_DECL, unqualified_id, type); 10409 if (id_declarator && declarator->u.id.qualifying_scope) { 10410 error_at (DECL_SOURCE_LOCATION (decl), 10411 "typedef name may not be a nested-name-specifier"); 10412 TREE_TYPE (decl) = error_mark_node; 10413 } 10414 10415 if (decl_context != FIELD) 10416 { 10417 if (!current_function_decl) 10418 DECL_CONTEXT (decl) = FROB_CONTEXT (current_namespace); 10419 else if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (current_function_decl) 10420 || (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P 10421 (current_function_decl))) 10422 /* The TYPE_DECL is "abstract" because there will be 10423 clones of this constructor/destructor, and there will 10424 be copies of this TYPE_DECL generated in those 10425 clones. The decloning optimization (for space) may 10426 revert this subsequently if it determines that 10427 the clones should share a common implementation. */ 10428 DECL_ABSTRACT_P (decl) = true; 10429 } 10430 else if (current_class_type 10431 && constructor_name_p (unqualified_id, current_class_type)) 10432 permerror (input_location, "ISO C++ forbids nested type %qD with same name " 10433 "as enclosing class", 10434 unqualified_id); 10435 10436 /* If the user declares "typedef struct {...} foo" then the 10437 struct will have an anonymous name. Fill that name in now. 10438 Nothing can refer to it, so nothing needs know about the name 10439 change. */ 10440 if (type != error_mark_node 10441 && unqualified_id 10442 && TYPE_NAME (type) 10443 && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL 10444 && TYPE_ANONYMOUS_P (type) 10445 && declspecs->type_definition_p 10446 && attributes_naming_typedef_ok (*attrlist) 10447 && cp_type_quals (type) == TYPE_UNQUALIFIED) 10448 { 10449 tree t; 10450 10451 /* Replace the anonymous name with the real name everywhere. */ 10452 for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) 10453 { 10454 if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t))) 10455 /* We do not rename the debug info representing the 10456 anonymous tagged type because the standard says in 10457 [dcl.typedef] that the naming applies only for 10458 linkage purposes. */ 10459 /*debug_hooks->set_name (t, decl);*/ 10460 TYPE_NAME (t) = decl; 10461 } 10462 10463 if (TYPE_LANG_SPECIFIC (type)) 10464 TYPE_WAS_ANONYMOUS (type) = 1; 10465 10466 /* If this is a typedef within a template class, the nested 10467 type is a (non-primary) template. The name for the 10468 template needs updating as well. */ 10469 if (TYPE_LANG_SPECIFIC (type) && CLASSTYPE_TEMPLATE_INFO (type)) 10470 DECL_NAME (CLASSTYPE_TI_TEMPLATE (type)) 10471 = TYPE_IDENTIFIER (type); 10472 10473 /* Adjust linkage now that we aren't anonymous anymore. */ 10474 reset_type_linkage (type); 10475 10476 /* FIXME remangle member functions; member functions of a 10477 type with external linkage have external linkage. */ 10478 } 10479 10480 if (signed_p 10481 || (typedef_decl && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl))) 10482 C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1; 10483 10484 bad_specifiers (decl, BSP_TYPE, virtualp, 10485 memfn_quals != TYPE_UNQUALIFIED, 10486 inlinep, friendp, raises != NULL_TREE); 10487 10488 if (decl_spec_seq_has_spec_p (declspecs, ds_alias)) 10489 /* Acknowledge that this was written: 10490 `using analias = atype;'. */ 10491 TYPE_DECL_ALIAS_P (decl) = 1; 10492 10493 return decl; 10494 } 10495 10496 /* Detect the case of an array type of unspecified size 10497 which came, as such, direct from a typedef name. 10498 We must copy the type, so that the array's domain can be 10499 individually set by the object's initializer. */ 10500 10501 if (type && typedef_type 10502 && TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type) 10503 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (typedef_type)) 10504 type = build_cplus_array_type (TREE_TYPE (type), NULL_TREE); 10505 10506 /* Detect where we're using a typedef of function type to declare a 10507 function. PARMS will not be set, so we must create it now. */ 10508 10509 if (type == typedef_type && TREE_CODE (type) == FUNCTION_TYPE) 10510 { 10511 tree decls = NULL_TREE; 10512 tree args; 10513 10514 for (args = TYPE_ARG_TYPES (type); 10515 args && args != void_list_node; 10516 args = TREE_CHAIN (args)) 10517 { 10518 tree decl = cp_build_parm_decl (NULL_TREE, TREE_VALUE (args)); 10519 10520 DECL_CHAIN (decl) = decls; 10521 decls = decl; 10522 } 10523 10524 parms = nreverse (decls); 10525 10526 if (decl_context != TYPENAME) 10527 { 10528 /* The qualifiers on the function type become the qualifiers on 10529 the non-static member function. */ 10530 memfn_quals |= type_memfn_quals (type); 10531 rqual = type_memfn_rqual (type); 10532 type_quals = TYPE_UNQUALIFIED; 10533 } 10534 } 10535 10536 /* If this is a type name (such as, in a cast or sizeof), 10537 compute the type and return it now. */ 10538 10539 if (decl_context == TYPENAME) 10540 { 10541 /* Note that the grammar rejects storage classes 10542 in typenames, fields or parameters. */ 10543 if (type_quals != TYPE_UNQUALIFIED) 10544 type_quals = TYPE_UNQUALIFIED; 10545 10546 /* Special case: "friend class foo" looks like a TYPENAME context. */ 10547 if (friendp) 10548 { 10549 if (type_quals != TYPE_UNQUALIFIED) 10550 { 10551 error ("type qualifiers specified for friend class declaration"); 10552 type_quals = TYPE_UNQUALIFIED; 10553 } 10554 if (inlinep) 10555 { 10556 error ("%<inline%> specified for friend class declaration"); 10557 inlinep = 0; 10558 } 10559 10560 if (!current_aggr) 10561 { 10562 /* Don't allow friend declaration without a class-key. */ 10563 if (TREE_CODE (type) == TEMPLATE_TYPE_PARM) 10564 permerror (input_location, "template parameters cannot be friends"); 10565 else if (TREE_CODE (type) == TYPENAME_TYPE) 10566 permerror (input_location, "friend declaration requires class-key, " 10567 "i.e. %<friend class %T::%D%>", 10568 TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type)); 10569 else 10570 permerror (input_location, "friend declaration requires class-key, " 10571 "i.e. %<friend %#T%>", 10572 type); 10573 } 10574 10575 /* Only try to do this stuff if we didn't already give up. */ 10576 if (type != integer_type_node) 10577 { 10578 /* A friendly class? */ 10579 if (current_class_type) 10580 make_friend_class (current_class_type, TYPE_MAIN_VARIANT (type), 10581 /*complain=*/true); 10582 else 10583 error ("trying to make class %qT a friend of global scope", 10584 type); 10585 10586 type = void_type_node; 10587 } 10588 } 10589 else if (memfn_quals || rqual) 10590 { 10591 if (ctype == NULL_TREE 10592 && TREE_CODE (type) == METHOD_TYPE) 10593 ctype = TYPE_METHOD_BASETYPE (type); 10594 10595 if (ctype) 10596 type = build_memfn_type (type, ctype, memfn_quals, rqual); 10597 /* Core issue #547: need to allow this in template type args. 10598 Allow it in general in C++11 for alias-declarations. */ 10599 else if ((template_type_arg || cxx_dialect >= cxx11) 10600 && TREE_CODE (type) == FUNCTION_TYPE) 10601 type = apply_memfn_quals (type, memfn_quals, rqual); 10602 else 10603 error ("invalid qualifiers on non-member function type"); 10604 } 10605 10606 return type; 10607 } 10608 else if (unqualified_id == NULL_TREE && decl_context != PARM 10609 && decl_context != CATCHPARM 10610 && TREE_CODE (type) != UNION_TYPE 10611 && ! bitfield) 10612 { 10613 error ("abstract declarator %qT used as declaration", type); 10614 return error_mark_node; 10615 } 10616 10617 /* Only functions may be declared using an operator-function-id. */ 10618 if (unqualified_id 10619 && IDENTIFIER_OPNAME_P (unqualified_id) 10620 && TREE_CODE (type) != FUNCTION_TYPE 10621 && TREE_CODE (type) != METHOD_TYPE) 10622 { 10623 error ("declaration of %qD as non-function", unqualified_id); 10624 return error_mark_node; 10625 } 10626 10627 /* We don't check parameter types here because we can emit a better 10628 error message later. */ 10629 if (decl_context != PARM) 10630 { 10631 type = check_var_type (unqualified_id, type); 10632 if (type == error_mark_node) 10633 return error_mark_node; 10634 } 10635 10636 /* Now create the decl, which may be a VAR_DECL, a PARM_DECL 10637 or a FUNCTION_DECL, depending on DECL_CONTEXT and TYPE. */ 10638 10639 if (decl_context == PARM || decl_context == CATCHPARM) 10640 { 10641 if (ctype || in_namespace) 10642 error ("cannot use %<::%> in parameter declaration"); 10643 10644 if (type_uses_auto (type)) 10645 { 10646 if (cxx_dialect >= cxx14) 10647 error ("%<auto%> parameter not permitted in this context"); 10648 else 10649 error ("parameter declared %<auto%>"); 10650 type = error_mark_node; 10651 } 10652 10653 /* A parameter declared as an array of T is really a pointer to T. 10654 One declared as a function is really a pointer to a function. 10655 One declared as a member is really a pointer to member. */ 10656 10657 if (TREE_CODE (type) == ARRAY_TYPE) 10658 { 10659 /* Transfer const-ness of array into that of type pointed to. */ 10660 type = build_pointer_type (TREE_TYPE (type)); 10661 type_quals = TYPE_UNQUALIFIED; 10662 array_parameter_p = true; 10663 } 10664 else if (TREE_CODE (type) == FUNCTION_TYPE) 10665 type = build_pointer_type (type); 10666 } 10667 10668 if (ctype && TREE_CODE (type) == FUNCTION_TYPE && staticp < 2 10669 && !NEW_DELETE_OPNAME_P (unqualified_id)) 10670 { 10671 cp_cv_quals real_quals = memfn_quals; 10672 if (cxx_dialect < cxx14 && constexpr_p 10673 && sfk != sfk_constructor && sfk != sfk_destructor) 10674 real_quals |= TYPE_QUAL_CONST; 10675 type = build_memfn_type (type, ctype, real_quals, rqual); 10676 } 10677 10678 { 10679 tree decl; 10680 10681 if (decl_context == PARM) 10682 { 10683 decl = cp_build_parm_decl (unqualified_id, type); 10684 DECL_ARRAY_PARAMETER_P (decl) = array_parameter_p; 10685 10686 bad_specifiers (decl, BSP_PARM, virtualp, 10687 memfn_quals != TYPE_UNQUALIFIED, 10688 inlinep, friendp, raises != NULL_TREE); 10689 } 10690 else if (decl_context == FIELD) 10691 { 10692 if (!staticp && !friendp && TREE_CODE (type) != METHOD_TYPE 10693 && type_uses_auto (type)) 10694 { 10695 error ("non-static data member declared %<auto%>"); 10696 type = error_mark_node; 10697 } 10698 10699 /* The C99 flexible array extension. */ 10700 if (!staticp && TREE_CODE (type) == ARRAY_TYPE 10701 && TYPE_DOMAIN (type) == NULL_TREE) 10702 { 10703 tree itype = compute_array_index_type (dname, integer_zero_node, 10704 tf_warning_or_error); 10705 type = build_cplus_array_type (TREE_TYPE (type), itype); 10706 } 10707 10708 if (type == error_mark_node) 10709 { 10710 /* Happens when declaring arrays of sizes which 10711 are error_mark_node, for example. */ 10712 decl = NULL_TREE; 10713 } 10714 else if (in_namespace && !friendp) 10715 { 10716 /* Something like struct S { int N::j; }; */ 10717 error ("invalid use of %<::%>"); 10718 return error_mark_node; 10719 } 10720 else if (TREE_CODE (type) == FUNCTION_TYPE 10721 || TREE_CODE (type) == METHOD_TYPE) 10722 { 10723 int publicp = 0; 10724 tree function_context; 10725 10726 if (friendp == 0) 10727 { 10728 /* This should never happen in pure C++ (the check 10729 could be an assert). It could happen in 10730 Objective-C++ if someone writes invalid code that 10731 uses a function declaration for an instance 10732 variable or property (instance variables and 10733 properties are parsed as FIELD_DECLs, but they are 10734 part of an Objective-C class, not a C++ class). 10735 That code is invalid and is caught by this 10736 check. */ 10737 if (!ctype) 10738 { 10739 error ("declaration of function %qD in invalid context", 10740 unqualified_id); 10741 return error_mark_node; 10742 } 10743 10744 /* ``A union may [ ... ] not [ have ] virtual functions.'' 10745 ARM 9.5 */ 10746 if (virtualp && TREE_CODE (ctype) == UNION_TYPE) 10747 { 10748 error ("function %qD declared virtual inside a union", 10749 unqualified_id); 10750 return error_mark_node; 10751 } 10752 10753 if (NEW_DELETE_OPNAME_P (unqualified_id)) 10754 { 10755 if (virtualp) 10756 { 10757 error ("%qD cannot be declared virtual, since it " 10758 "is always static", 10759 unqualified_id); 10760 virtualp = 0; 10761 } 10762 } 10763 } 10764 10765 /* Check that the name used for a destructor makes sense. */ 10766 if (sfk == sfk_destructor) 10767 { 10768 tree uqname = id_declarator->u.id.unqualified_name; 10769 10770 if (!ctype) 10771 { 10772 gcc_assert (friendp); 10773 error ("expected qualified name in friend declaration " 10774 "for destructor %qD", uqname); 10775 return error_mark_node; 10776 } 10777 10778 if (!check_dtor_name (ctype, TREE_OPERAND (uqname, 0))) 10779 { 10780 error ("declaration of %qD as member of %qT", 10781 uqname, ctype); 10782 return error_mark_node; 10783 } 10784 if (constexpr_p) 10785 { 10786 error ("a destructor cannot be %<constexpr%>"); 10787 return error_mark_node; 10788 } 10789 } 10790 else if (sfk == sfk_constructor && friendp && !ctype) 10791 { 10792 error ("expected qualified name in friend declaration " 10793 "for constructor %qD", 10794 id_declarator->u.id.unqualified_name); 10795 return error_mark_node; 10796 } 10797 10798 if (TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR) 10799 { 10800 tree tmpl = TREE_OPERAND (unqualified_id, 0); 10801 if (variable_template_p (tmpl)) 10802 { 10803 error ("specialization of variable template %qD " 10804 "declared as function", tmpl); 10805 inform (DECL_SOURCE_LOCATION (tmpl), 10806 "variable template declared here"); 10807 return error_mark_node; 10808 } 10809 } 10810 10811 /* Tell grokfndecl if it needs to set TREE_PUBLIC on the node. */ 10812 function_context = (ctype != NULL_TREE) ? 10813 decl_function_context (TYPE_MAIN_DECL (ctype)) : NULL_TREE; 10814 publicp = (! friendp || ! staticp) 10815 && function_context == NULL_TREE; 10816 10817 if (late_return_type_p) 10818 TYPE_HAS_LATE_RETURN_TYPE (type) = 1; 10819 10820 decl = grokfndecl (ctype, type, 10821 TREE_CODE (unqualified_id) != TEMPLATE_ID_EXPR 10822 ? unqualified_id : dname, 10823 parms, 10824 unqualified_id, 10825 virtualp, flags, memfn_quals, rqual, raises, 10826 friendp ? -1 : 0, friendp, publicp, 10827 inlinep | (2 * constexpr_p), 10828 initialized == SD_DELETED, sfk, 10829 funcdef_flag, template_count, in_namespace, 10830 attrlist, declarator->id_loc); 10831 decl = set_virt_specifiers (decl, virt_specifiers); 10832 if (decl == NULL_TREE) 10833 return error_mark_node; 10834 #if 0 10835 /* This clobbers the attrs stored in `decl' from `attrlist'. */ 10836 /* The decl and setting of decl_attr is also turned off. */ 10837 decl = build_decl_attribute_variant (decl, decl_attr); 10838 #endif 10839 10840 /* [class.conv.ctor] 10841 10842 A constructor declared without the function-specifier 10843 explicit that can be called with a single parameter 10844 specifies a conversion from the type of its first 10845 parameter to the type of its class. Such a constructor 10846 is called a converting constructor. */ 10847 if (explicitp == 2) 10848 DECL_NONCONVERTING_P (decl) = 1; 10849 } 10850 else if (!staticp && !dependent_type_p (type) 10851 && !COMPLETE_TYPE_P (complete_type (type)) 10852 && (TREE_CODE (type) != ARRAY_TYPE 10853 || !COMPLETE_TYPE_P (TREE_TYPE (type)) 10854 || initialized == 0)) 10855 { 10856 if (unqualified_id) 10857 { 10858 error ("field %qD has incomplete type %qT", 10859 unqualified_id, type); 10860 cxx_incomplete_type_inform (strip_array_types (type)); 10861 } 10862 else 10863 error ("name %qT has incomplete type", type); 10864 10865 type = error_mark_node; 10866 decl = NULL_TREE; 10867 } 10868 else 10869 { 10870 if (friendp) 10871 { 10872 error ("%qE is neither function nor member function; " 10873 "cannot be declared friend", unqualified_id); 10874 friendp = 0; 10875 } 10876 decl = NULL_TREE; 10877 } 10878 10879 if (friendp) 10880 { 10881 /* Friends are treated specially. */ 10882 if (ctype == current_class_type) 10883 ; /* We already issued a permerror. */ 10884 else if (decl && DECL_NAME (decl)) 10885 { 10886 if (template_class_depth (current_class_type) == 0) 10887 { 10888 decl = check_explicit_specialization 10889 (unqualified_id, decl, template_count, 10890 2 * funcdef_flag + 4); 10891 if (decl == error_mark_node) 10892 return error_mark_node; 10893 } 10894 10895 decl = do_friend (ctype, unqualified_id, decl, 10896 *attrlist, flags, 10897 funcdef_flag); 10898 return decl; 10899 } 10900 else 10901 return error_mark_node; 10902 } 10903 10904 /* Structure field. It may not be a function, except for C++. */ 10905 10906 if (decl == NULL_TREE) 10907 { 10908 if (staticp) 10909 { 10910 /* C++ allows static class members. All other work 10911 for this is done by grokfield. */ 10912 decl = build_lang_decl_loc (declarator 10913 ? declarator->id_loc 10914 : input_location, 10915 VAR_DECL, unqualified_id, type); 10916 set_linkage_for_static_data_member (decl); 10917 /* Even if there is an in-class initialization, DECL 10918 is considered undefined until an out-of-class 10919 definition is provided. */ 10920 DECL_EXTERNAL (decl) = 1; 10921 10922 if (thread_p) 10923 { 10924 set_decl_tls_model (decl, decl_default_tls_model (decl)); 10925 if (declspecs->gnu_thread_keyword_p) 10926 DECL_GNU_TLS_P (decl) = true; 10927 } 10928 10929 if (constexpr_p && !initialized) 10930 { 10931 error ("constexpr static data member %qD must have an " 10932 "initializer", decl); 10933 constexpr_p = false; 10934 } 10935 } 10936 else 10937 { 10938 if (constexpr_p) 10939 { 10940 error ("non-static data member %qE declared %<constexpr%>", 10941 unqualified_id); 10942 constexpr_p = false; 10943 } 10944 decl = build_decl (input_location, 10945 FIELD_DECL, unqualified_id, type); 10946 DECL_NONADDRESSABLE_P (decl) = bitfield; 10947 if (bitfield && !unqualified_id) 10948 TREE_NO_WARNING (decl) = 1; 10949 10950 if (storage_class == sc_mutable) 10951 { 10952 DECL_MUTABLE_P (decl) = 1; 10953 storage_class = sc_none; 10954 } 10955 10956 if (initialized) 10957 { 10958 /* An attempt is being made to initialize a non-static 10959 member. This is new in C++11. */ 10960 maybe_warn_cpp0x (CPP0X_NSDMI); 10961 10962 /* If this has been parsed with static storage class, but 10963 errors forced staticp to be cleared, ensure NSDMI is 10964 not present. */ 10965 if (declspecs->storage_class == sc_static) 10966 DECL_INITIAL (decl) = error_mark_node; 10967 } 10968 } 10969 10970 bad_specifiers (decl, BSP_FIELD, virtualp, 10971 memfn_quals != TYPE_UNQUALIFIED, 10972 inlinep, friendp, raises != NULL_TREE); 10973 } 10974 } 10975 else if (TREE_CODE (type) == FUNCTION_TYPE 10976 || TREE_CODE (type) == METHOD_TYPE) 10977 { 10978 tree original_name; 10979 int publicp = 0; 10980 10981 if (!unqualified_id) 10982 return error_mark_node; 10983 10984 if (TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR) 10985 original_name = dname; 10986 else 10987 original_name = unqualified_id; 10988 10989 if (storage_class == sc_auto) 10990 error ("storage class %<auto%> invalid for function %qs", name); 10991 else if (storage_class == sc_register) 10992 error ("storage class %<register%> invalid for function %qs", name); 10993 else if (thread_p) 10994 { 10995 if (declspecs->gnu_thread_keyword_p) 10996 error ("storage class %<__thread%> invalid for function %qs", 10997 name); 10998 else 10999 error ("storage class %<thread_local%> invalid for function %qs", 11000 name); 11001 } 11002 11003 if (virt_specifiers) 11004 error ("virt-specifiers in %qs not allowed outside a class definition", name); 11005 /* Function declaration not at top level. 11006 Storage classes other than `extern' are not allowed 11007 and `extern' makes no difference. */ 11008 if (! toplevel_bindings_p () 11009 && (storage_class == sc_static 11010 || decl_spec_seq_has_spec_p (declspecs, ds_inline)) 11011 && pedantic) 11012 { 11013 if (storage_class == sc_static) 11014 pedwarn (input_location, OPT_Wpedantic, 11015 "%<static%> specified invalid for function %qs " 11016 "declared out of global scope", name); 11017 else 11018 pedwarn (input_location, OPT_Wpedantic, 11019 "%<inline%> specifier invalid for function %qs " 11020 "declared out of global scope", name); 11021 } 11022 11023 if (ctype == NULL_TREE) 11024 { 11025 if (virtualp) 11026 { 11027 error ("virtual non-class function %qs", name); 11028 virtualp = 0; 11029 } 11030 else if (sfk == sfk_constructor 11031 || sfk == sfk_destructor) 11032 { 11033 error (funcdef_flag 11034 ? G_("%qs defined in a non-class scope") 11035 : G_("%qs declared in a non-class scope"), name); 11036 sfk = sfk_none; 11037 } 11038 } 11039 11040 /* Record whether the function is public. */ 11041 publicp = (ctype != NULL_TREE 11042 || storage_class != sc_static); 11043 11044 if (late_return_type_p) 11045 TYPE_HAS_LATE_RETURN_TYPE (type) = 1; 11046 11047 decl = grokfndecl (ctype, type, original_name, parms, unqualified_id, 11048 virtualp, flags, memfn_quals, rqual, raises, 11049 1, friendp, 11050 publicp, inlinep | (2 * constexpr_p), 11051 initialized == SD_DELETED, sfk, 11052 funcdef_flag, 11053 template_count, in_namespace, attrlist, 11054 declarator->id_loc); 11055 if (decl == NULL_TREE) 11056 return error_mark_node; 11057 11058 if (staticp == 1) 11059 { 11060 int invalid_static = 0; 11061 11062 /* Don't allow a static member function in a class, and forbid 11063 declaring main to be static. */ 11064 if (TREE_CODE (type) == METHOD_TYPE) 11065 { 11066 permerror (input_location, "cannot declare member function %qD to have " 11067 "static linkage", decl); 11068 invalid_static = 1; 11069 } 11070 else if (current_function_decl) 11071 { 11072 /* FIXME need arm citation */ 11073 error ("cannot declare static function inside another function"); 11074 invalid_static = 1; 11075 } 11076 11077 if (invalid_static) 11078 { 11079 staticp = 0; 11080 storage_class = sc_none; 11081 } 11082 } 11083 } 11084 else 11085 { 11086 /* It's a variable. */ 11087 11088 /* An uninitialized decl with `extern' is a reference. */ 11089 decl = grokvardecl (type, dname, unqualified_id, 11090 declspecs, 11091 initialized, 11092 (type_quals & TYPE_QUAL_CONST) != 0, 11093 template_count, 11094 ctype ? ctype : in_namespace); 11095 if (decl == NULL_TREE) 11096 return error_mark_node; 11097 11098 bad_specifiers (decl, BSP_VAR, virtualp, 11099 memfn_quals != TYPE_UNQUALIFIED, 11100 inlinep, friendp, raises != NULL_TREE); 11101 11102 if (ctype) 11103 { 11104 DECL_CONTEXT (decl) = ctype; 11105 if (staticp == 1) 11106 { 11107 permerror (input_location, "%<static%> may not be used when defining " 11108 "(as opposed to declaring) a static data member"); 11109 staticp = 0; 11110 storage_class = sc_none; 11111 } 11112 if (storage_class == sc_register && TREE_STATIC (decl)) 11113 { 11114 error ("static member %qD declared %<register%>", decl); 11115 storage_class = sc_none; 11116 } 11117 if (storage_class == sc_extern && pedantic) 11118 { 11119 pedwarn (input_location, OPT_Wpedantic, 11120 "cannot explicitly declare member %q#D to have " 11121 "extern linkage", decl); 11122 storage_class = sc_none; 11123 } 11124 } 11125 else if (constexpr_p && DECL_EXTERNAL (decl)) 11126 { 11127 error ("declaration of constexpr variable %qD is not a definition", 11128 decl); 11129 constexpr_p = false; 11130 } 11131 } 11132 11133 if (storage_class == sc_extern && initialized && !funcdef_flag) 11134 { 11135 if (toplevel_bindings_p ()) 11136 { 11137 /* It's common practice (and completely valid) to have a const 11138 be initialized and declared extern. */ 11139 if (!(type_quals & TYPE_QUAL_CONST)) 11140 warning (0, "%qs initialized and declared %<extern%>", name); 11141 } 11142 else 11143 { 11144 error ("%qs has both %<extern%> and initializer", name); 11145 return error_mark_node; 11146 } 11147 } 11148 11149 /* Record `register' declaration for warnings on & 11150 and in case doing stupid register allocation. */ 11151 11152 if (storage_class == sc_register) 11153 DECL_REGISTER (decl) = 1; 11154 else if (storage_class == sc_extern) 11155 DECL_THIS_EXTERN (decl) = 1; 11156 else if (storage_class == sc_static) 11157 DECL_THIS_STATIC (decl) = 1; 11158 11159 /* Set constexpr flag on vars (functions got it in grokfndecl). */ 11160 if (constexpr_p && VAR_P (decl)) 11161 DECL_DECLARED_CONSTEXPR_P (decl) = true; 11162 11163 /* Record constancy and volatility on the DECL itself . There's 11164 no need to do this when processing a template; we'll do this 11165 for the instantiated declaration based on the type of DECL. */ 11166 if (!processing_template_decl) 11167 cp_apply_type_quals_to_decl (type_quals, decl); 11168 11169 return decl; 11170 } 11171 } 11172 11173 /* Subroutine of start_function. Ensure that each of the parameter 11174 types (as listed in PARMS) is complete, as is required for a 11175 function definition. */ 11176 11177 static void 11178 require_complete_types_for_parms (tree parms) 11179 { 11180 for (; parms; parms = DECL_CHAIN (parms)) 11181 { 11182 if (dependent_type_p (TREE_TYPE (parms))) 11183 continue; 11184 if (!VOID_TYPE_P (TREE_TYPE (parms)) 11185 && complete_type_or_else (TREE_TYPE (parms), parms)) 11186 { 11187 relayout_decl (parms); 11188 DECL_ARG_TYPE (parms) = type_passed_as (TREE_TYPE (parms)); 11189 } 11190 else 11191 /* grokparms or complete_type_or_else will have already issued 11192 an error. */ 11193 TREE_TYPE (parms) = error_mark_node; 11194 } 11195 } 11196 11197 /* Returns nonzero if T is a local variable. */ 11198 11199 int 11200 local_variable_p (const_tree t) 11201 { 11202 if ((VAR_P (t) 11203 /* A VAR_DECL with a context that is a _TYPE is a static data 11204 member. */ 11205 && !TYPE_P (CP_DECL_CONTEXT (t)) 11206 /* Any other non-local variable must be at namespace scope. */ 11207 && !DECL_NAMESPACE_SCOPE_P (t)) 11208 || (TREE_CODE (t) == PARM_DECL)) 11209 return 1; 11210 11211 return 0; 11212 } 11213 11214 /* Like local_variable_p, but suitable for use as a tree-walking 11215 function. */ 11216 11217 static tree 11218 local_variable_p_walkfn (tree *tp, int *walk_subtrees, 11219 void * /*data*/) 11220 { 11221 if (local_variable_p (*tp) 11222 && (!DECL_ARTIFICIAL (*tp) || DECL_NAME (*tp) == this_identifier)) 11223 return *tp; 11224 else if (TYPE_P (*tp)) 11225 *walk_subtrees = 0; 11226 11227 return NULL_TREE; 11228 } 11229 11230 /* Check that ARG, which is a default-argument expression for a 11231 parameter DECL, is valid. Returns ARG, or ERROR_MARK_NODE, if 11232 something goes wrong. DECL may also be a _TYPE node, rather than a 11233 DECL, if there is no DECL available. */ 11234 11235 tree 11236 check_default_argument (tree decl, tree arg, tsubst_flags_t complain) 11237 { 11238 tree var; 11239 tree decl_type; 11240 11241 if (TREE_CODE (arg) == DEFAULT_ARG) 11242 /* We get a DEFAULT_ARG when looking at an in-class declaration 11243 with a default argument. Ignore the argument for now; we'll 11244 deal with it after the class is complete. */ 11245 return arg; 11246 11247 if (TYPE_P (decl)) 11248 { 11249 decl_type = decl; 11250 decl = NULL_TREE; 11251 } 11252 else 11253 decl_type = TREE_TYPE (decl); 11254 11255 if (arg == error_mark_node 11256 || decl == error_mark_node 11257 || TREE_TYPE (arg) == error_mark_node 11258 || decl_type == error_mark_node) 11259 /* Something already went wrong. There's no need to check 11260 further. */ 11261 return error_mark_node; 11262 11263 /* [dcl.fct.default] 11264 11265 A default argument expression is implicitly converted to the 11266 parameter type. */ 11267 ++cp_unevaluated_operand; 11268 perform_implicit_conversion_flags (decl_type, arg, complain, 11269 LOOKUP_IMPLICIT); 11270 --cp_unevaluated_operand; 11271 11272 /* Avoid redundant -Wzero-as-null-pointer-constant warnings at 11273 the call sites. */ 11274 if (TYPE_PTR_OR_PTRMEM_P (decl_type) 11275 && null_ptr_cst_p (arg)) 11276 return nullptr_node; 11277 11278 /* [dcl.fct.default] 11279 11280 Local variables shall not be used in default argument 11281 expressions. 11282 11283 The keyword `this' shall not be used in a default argument of a 11284 member function. */ 11285 var = cp_walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL); 11286 if (var) 11287 { 11288 if (complain & tf_warning_or_error) 11289 { 11290 if (DECL_NAME (var) == this_identifier) 11291 permerror (input_location, "default argument %qE uses %qD", 11292 arg, var); 11293 else 11294 error ("default argument %qE uses local variable %qD", arg, var); 11295 } 11296 return error_mark_node; 11297 } 11298 11299 /* All is well. */ 11300 return arg; 11301 } 11302 11303 /* Returns a deprecated type used within TYPE, or NULL_TREE if none. */ 11304 11305 static tree 11306 type_is_deprecated (tree type) 11307 { 11308 enum tree_code code; 11309 if (TREE_DEPRECATED (type)) 11310 return type; 11311 if (TYPE_NAME (type) 11312 && TREE_DEPRECATED (TYPE_NAME (type))) 11313 return type; 11314 11315 /* Do warn about using typedefs to a deprecated class. */ 11316 if (OVERLOAD_TYPE_P (type) && type != TYPE_MAIN_VARIANT (type)) 11317 return type_is_deprecated (TYPE_MAIN_VARIANT (type)); 11318 11319 code = TREE_CODE (type); 11320 11321 if (code == POINTER_TYPE || code == REFERENCE_TYPE 11322 || code == OFFSET_TYPE || code == FUNCTION_TYPE 11323 || code == METHOD_TYPE || code == ARRAY_TYPE) 11324 return type_is_deprecated (TREE_TYPE (type)); 11325 11326 if (TYPE_PTRMEMFUNC_P (type)) 11327 return type_is_deprecated 11328 (TREE_TYPE (TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type)))); 11329 11330 return NULL_TREE; 11331 } 11332 11333 /* Decode the list of parameter types for a function type. 11334 Given the list of things declared inside the parens, 11335 return a list of types. 11336 11337 If this parameter does not end with an ellipsis, we append 11338 void_list_node. 11339 11340 *PARMS is set to the chain of PARM_DECLs created. */ 11341 11342 static tree 11343 grokparms (tree parmlist, tree *parms) 11344 { 11345 tree result = NULL_TREE; 11346 tree decls = NULL_TREE; 11347 tree parm; 11348 int any_error = 0; 11349 11350 for (parm = parmlist; parm != NULL_TREE; parm = TREE_CHAIN (parm)) 11351 { 11352 tree type = NULL_TREE; 11353 tree init = TREE_PURPOSE (parm); 11354 tree decl = TREE_VALUE (parm); 11355 const char *errmsg; 11356 11357 if (parm == void_list_node) 11358 break; 11359 11360 if (! decl || TREE_TYPE (decl) == error_mark_node) 11361 continue; 11362 11363 type = TREE_TYPE (decl); 11364 if (VOID_TYPE_P (type)) 11365 { 11366 if (same_type_p (type, void_type_node) 11367 && !init 11368 && !DECL_NAME (decl) && !result 11369 && TREE_CHAIN (parm) == void_list_node) 11370 /* DR 577: A parameter list consisting of a single 11371 unnamed parameter of non-dependent type 'void'. */ 11372 break; 11373 else if (cv_qualified_p (type)) 11374 error_at (DECL_SOURCE_LOCATION (decl), 11375 "invalid use of cv-qualified type %qT in " 11376 "parameter declaration", type); 11377 else 11378 error_at (DECL_SOURCE_LOCATION (decl), 11379 "invalid use of type %<void%> in parameter " 11380 "declaration"); 11381 /* It's not a good idea to actually create parameters of 11382 type `void'; other parts of the compiler assume that a 11383 void type terminates the parameter list. */ 11384 type = error_mark_node; 11385 TREE_TYPE (decl) = error_mark_node; 11386 } 11387 11388 if (type != error_mark_node 11389 && TYPE_FOR_JAVA (type) 11390 && MAYBE_CLASS_TYPE_P (type)) 11391 { 11392 error ("parameter %qD has Java class type", decl); 11393 type = error_mark_node; 11394 TREE_TYPE (decl) = error_mark_node; 11395 init = NULL_TREE; 11396 } 11397 11398 if (type != error_mark_node 11399 && (errmsg = targetm.invalid_parameter_type (type))) 11400 { 11401 error (errmsg); 11402 type = error_mark_node; 11403 TREE_TYPE (decl) = error_mark_node; 11404 } 11405 11406 if (type != error_mark_node) 11407 { 11408 if (deprecated_state != DEPRECATED_SUPPRESS) 11409 { 11410 tree deptype = type_is_deprecated (type); 11411 if (deptype) 11412 warn_deprecated_use (deptype, NULL_TREE); 11413 } 11414 11415 /* Top-level qualifiers on the parameters are 11416 ignored for function types. */ 11417 type = cp_build_qualified_type (type, 0); 11418 if (TREE_CODE (type) == METHOD_TYPE) 11419 { 11420 error ("parameter %qD invalidly declared method type", decl); 11421 type = build_pointer_type (type); 11422 TREE_TYPE (decl) = type; 11423 } 11424 else if (abstract_virtuals_error (decl, type)) 11425 any_error = 1; /* Seems like a good idea. */ 11426 else if (POINTER_TYPE_P (type)) 11427 { 11428 /* [dcl.fct]/6, parameter types cannot contain pointers 11429 (references) to arrays of unknown bound. */ 11430 tree t = TREE_TYPE (type); 11431 int ptr = TYPE_PTR_P (type); 11432 11433 while (1) 11434 { 11435 if (TYPE_PTR_P (t)) 11436 ptr = 1; 11437 else if (TREE_CODE (t) != ARRAY_TYPE) 11438 break; 11439 else if (!TYPE_DOMAIN (t)) 11440 break; 11441 t = TREE_TYPE (t); 11442 } 11443 if (TREE_CODE (t) == ARRAY_TYPE) 11444 error (ptr 11445 ? G_("parameter %qD includes pointer to array of " 11446 "unknown bound %qT") 11447 : G_("parameter %qD includes reference to array of " 11448 "unknown bound %qT"), 11449 decl, t); 11450 } 11451 11452 if (any_error) 11453 init = NULL_TREE; 11454 else if (init && !processing_template_decl) 11455 init = check_default_argument (decl, init, tf_warning_or_error); 11456 } 11457 11458 DECL_CHAIN (decl) = decls; 11459 decls = decl; 11460 result = tree_cons (init, type, result); 11461 } 11462 decls = nreverse (decls); 11463 result = nreverse (result); 11464 if (parm) 11465 result = chainon (result, void_list_node); 11466 *parms = decls; 11467 11468 return result; 11469 } 11470 11471 11472 /* D is a constructor or overloaded `operator='. 11473 11474 Let T be the class in which D is declared. Then, this function 11475 returns: 11476 11477 -1 if D's is an ill-formed constructor or copy assignment operator 11478 whose first parameter is of type `T'. 11479 0 if D is not a copy constructor or copy assignment 11480 operator. 11481 1 if D is a copy constructor or copy assignment operator whose 11482 first parameter is a reference to non-const qualified T. 11483 2 if D is a copy constructor or copy assignment operator whose 11484 first parameter is a reference to const qualified T. 11485 11486 This function can be used as a predicate. Positive values indicate 11487 a copy constructor and nonzero values indicate a copy assignment 11488 operator. */ 11489 11490 int 11491 copy_fn_p (const_tree d) 11492 { 11493 tree args; 11494 tree arg_type; 11495 int result = 1; 11496 11497 gcc_assert (DECL_FUNCTION_MEMBER_P (d)); 11498 11499 if (TREE_CODE (d) == TEMPLATE_DECL 11500 || (DECL_TEMPLATE_INFO (d) 11501 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (d)))) 11502 /* Instantiations of template member functions are never copy 11503 functions. Note that member functions of templated classes are 11504 represented as template functions internally, and we must 11505 accept those as copy functions. */ 11506 return 0; 11507 11508 args = FUNCTION_FIRST_USER_PARMTYPE (d); 11509 if (!args) 11510 return 0; 11511 11512 arg_type = TREE_VALUE (args); 11513 if (arg_type == error_mark_node) 11514 return 0; 11515 11516 if (TYPE_MAIN_VARIANT (arg_type) == DECL_CONTEXT (d)) 11517 { 11518 /* Pass by value copy assignment operator. */ 11519 result = -1; 11520 } 11521 else if (TREE_CODE (arg_type) == REFERENCE_TYPE 11522 && !TYPE_REF_IS_RVALUE (arg_type) 11523 && TYPE_MAIN_VARIANT (TREE_TYPE (arg_type)) == DECL_CONTEXT (d)) 11524 { 11525 if (CP_TYPE_CONST_P (TREE_TYPE (arg_type))) 11526 result = 2; 11527 } 11528 else 11529 return 0; 11530 11531 args = TREE_CHAIN (args); 11532 11533 if (args && args != void_list_node && !TREE_PURPOSE (args)) 11534 /* There are more non-optional args. */ 11535 return 0; 11536 11537 return result; 11538 } 11539 11540 /* D is a constructor or overloaded `operator='. 11541 11542 Let T be the class in which D is declared. Then, this function 11543 returns true when D is a move constructor or move assignment 11544 operator, false otherwise. */ 11545 11546 bool 11547 move_fn_p (const_tree d) 11548 { 11549 gcc_assert (DECL_FUNCTION_MEMBER_P (d)); 11550 11551 if (cxx_dialect == cxx98) 11552 /* There are no move constructors if we are in C++98 mode. */ 11553 return false; 11554 11555 if (TREE_CODE (d) == TEMPLATE_DECL 11556 || (DECL_TEMPLATE_INFO (d) 11557 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (d)))) 11558 /* Instantiations of template member functions are never move 11559 functions. Note that member functions of templated classes are 11560 represented as template functions internally, and we must 11561 accept those as move functions. */ 11562 return 0; 11563 11564 return move_signature_fn_p (d); 11565 } 11566 11567 /* D is a constructor or overloaded `operator='. 11568 11569 Then, this function returns true when D has the same signature as a move 11570 constructor or move assignment operator (because either it is such a 11571 ctor/op= or it is a template specialization with the same signature), 11572 false otherwise. */ 11573 11574 bool 11575 move_signature_fn_p (const_tree d) 11576 { 11577 tree args; 11578 tree arg_type; 11579 bool result = false; 11580 11581 args = FUNCTION_FIRST_USER_PARMTYPE (d); 11582 if (!args) 11583 return 0; 11584 11585 arg_type = TREE_VALUE (args); 11586 if (arg_type == error_mark_node) 11587 return 0; 11588 11589 if (TREE_CODE (arg_type) == REFERENCE_TYPE 11590 && TYPE_REF_IS_RVALUE (arg_type) 11591 && same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (arg_type)), 11592 DECL_CONTEXT (d))) 11593 result = true; 11594 11595 args = TREE_CHAIN (args); 11596 11597 if (args && args != void_list_node && !TREE_PURPOSE (args)) 11598 /* There are more non-optional args. */ 11599 return false; 11600 11601 return result; 11602 } 11603 11604 /* Remember any special properties of member function DECL. */ 11605 11606 void 11607 grok_special_member_properties (tree decl) 11608 { 11609 tree class_type; 11610 11611 if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (decl)) 11612 return; 11613 11614 class_type = DECL_CONTEXT (decl); 11615 if (DECL_CONSTRUCTOR_P (decl)) 11616 { 11617 int ctor = copy_fn_p (decl); 11618 11619 if (!DECL_ARTIFICIAL (decl)) 11620 TYPE_HAS_USER_CONSTRUCTOR (class_type) = 1; 11621 11622 if (ctor > 0) 11623 { 11624 /* [class.copy] 11625 11626 A non-template constructor for class X is a copy 11627 constructor if its first parameter is of type X&, const 11628 X&, volatile X& or const volatile X&, and either there 11629 are no other parameters or else all other parameters have 11630 default arguments. */ 11631 TYPE_HAS_COPY_CTOR (class_type) = 1; 11632 if (user_provided_p (decl)) 11633 TYPE_HAS_COMPLEX_COPY_CTOR (class_type) = 1; 11634 if (ctor > 1) 11635 TYPE_HAS_CONST_COPY_CTOR (class_type) = 1; 11636 } 11637 else if (sufficient_parms_p (FUNCTION_FIRST_USER_PARMTYPE (decl))) 11638 TYPE_HAS_DEFAULT_CONSTRUCTOR (class_type) = 1; 11639 else if (move_fn_p (decl) && user_provided_p (decl)) 11640 TYPE_HAS_COMPLEX_MOVE_CTOR (class_type) = 1; 11641 else if (is_list_ctor (decl)) 11642 TYPE_HAS_LIST_CTOR (class_type) = 1; 11643 11644 if (DECL_DECLARED_CONSTEXPR_P (decl) 11645 && !copy_fn_p (decl) && !move_fn_p (decl)) 11646 TYPE_HAS_CONSTEXPR_CTOR (class_type) = 1; 11647 } 11648 else if (DECL_OVERLOADED_OPERATOR_P (decl) == NOP_EXPR) 11649 { 11650 /* [class.copy] 11651 11652 A non-template assignment operator for class X is a copy 11653 assignment operator if its parameter is of type X, X&, const 11654 X&, volatile X& or const volatile X&. */ 11655 11656 int assop = copy_fn_p (decl); 11657 11658 if (assop) 11659 { 11660 TYPE_HAS_COPY_ASSIGN (class_type) = 1; 11661 if (user_provided_p (decl)) 11662 TYPE_HAS_COMPLEX_COPY_ASSIGN (class_type) = 1; 11663 if (assop != 1) 11664 TYPE_HAS_CONST_COPY_ASSIGN (class_type) = 1; 11665 } 11666 else if (move_fn_p (decl) && user_provided_p (decl)) 11667 TYPE_HAS_COMPLEX_MOVE_ASSIGN (class_type) = 1; 11668 } 11669 /* Destructors are handled in check_methods. */ 11670 } 11671 11672 /* Check a constructor DECL has the correct form. Complains 11673 if the class has a constructor of the form X(X). */ 11674 11675 int 11676 grok_ctor_properties (const_tree ctype, const_tree decl) 11677 { 11678 int ctor_parm = copy_fn_p (decl); 11679 11680 if (ctor_parm < 0) 11681 { 11682 /* [class.copy] 11683 11684 A declaration of a constructor for a class X is ill-formed if 11685 its first parameter is of type (optionally cv-qualified) X 11686 and either there are no other parameters or else all other 11687 parameters have default arguments. 11688 11689 We *don't* complain about member template instantiations that 11690 have this form, though; they can occur as we try to decide 11691 what constructor to use during overload resolution. Since 11692 overload resolution will never prefer such a constructor to 11693 the non-template copy constructor (which is either explicitly 11694 or implicitly defined), there's no need to worry about their 11695 existence. Theoretically, they should never even be 11696 instantiated, but that's hard to forestall. */ 11697 error ("invalid constructor; you probably meant %<%T (const %T&)%>", 11698 ctype, ctype); 11699 return 0; 11700 } 11701 11702 return 1; 11703 } 11704 11705 /* An operator with this code is unary, but can also be binary. */ 11706 11707 static int 11708 ambi_op_p (enum tree_code code) 11709 { 11710 return (code == INDIRECT_REF 11711 || code == ADDR_EXPR 11712 || code == UNARY_PLUS_EXPR 11713 || code == NEGATE_EXPR 11714 || code == PREINCREMENT_EXPR 11715 || code == PREDECREMENT_EXPR); 11716 } 11717 11718 /* An operator with this name can only be unary. */ 11719 11720 static int 11721 unary_op_p (enum tree_code code) 11722 { 11723 return (code == TRUTH_NOT_EXPR 11724 || code == BIT_NOT_EXPR 11725 || code == COMPONENT_REF 11726 || code == TYPE_EXPR); 11727 } 11728 11729 /* DECL is a declaration for an overloaded operator. If COMPLAIN is true, 11730 errors are issued for invalid declarations. */ 11731 11732 bool 11733 grok_op_properties (tree decl, bool complain) 11734 { 11735 tree argtypes = TYPE_ARG_TYPES (TREE_TYPE (decl)); 11736 tree argtype; 11737 int methodp = (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE); 11738 tree name = DECL_NAME (decl); 11739 enum tree_code operator_code; 11740 int arity; 11741 bool ellipsis_p; 11742 tree class_type; 11743 11744 /* Count the number of arguments and check for ellipsis. */ 11745 for (argtype = argtypes, arity = 0; 11746 argtype && argtype != void_list_node; 11747 argtype = TREE_CHAIN (argtype)) 11748 ++arity; 11749 ellipsis_p = !argtype; 11750 11751 class_type = DECL_CONTEXT (decl); 11752 if (class_type && !CLASS_TYPE_P (class_type)) 11753 class_type = NULL_TREE; 11754 11755 if (DECL_CONV_FN_P (decl)) 11756 operator_code = TYPE_EXPR; 11757 else 11758 do 11759 { 11760 #define DEF_OPERATOR(NAME, CODE, MANGLING, ARITY, ASSN_P) \ 11761 if (ansi_opname (CODE) == name) \ 11762 { \ 11763 operator_code = (CODE); \ 11764 break; \ 11765 } \ 11766 else if (ansi_assopname (CODE) == name) \ 11767 { \ 11768 operator_code = (CODE); \ 11769 DECL_ASSIGNMENT_OPERATOR_P (decl) = 1; \ 11770 break; \ 11771 } 11772 11773 #include "operators.def" 11774 #undef DEF_OPERATOR 11775 11776 gcc_unreachable (); 11777 } 11778 while (0); 11779 gcc_assert (operator_code != MAX_TREE_CODES); 11780 SET_OVERLOADED_OPERATOR_CODE (decl, operator_code); 11781 11782 if (class_type) 11783 switch (operator_code) 11784 { 11785 case NEW_EXPR: 11786 TYPE_HAS_NEW_OPERATOR (class_type) = 1; 11787 break; 11788 11789 case DELETE_EXPR: 11790 TYPE_GETS_DELETE (class_type) |= 1; 11791 break; 11792 11793 case VEC_NEW_EXPR: 11794 TYPE_HAS_ARRAY_NEW_OPERATOR (class_type) = 1; 11795 break; 11796 11797 case VEC_DELETE_EXPR: 11798 TYPE_GETS_DELETE (class_type) |= 2; 11799 break; 11800 11801 default: 11802 break; 11803 } 11804 11805 /* [basic.std.dynamic.allocation]/1: 11806 11807 A program is ill-formed if an allocation function is declared 11808 in a namespace scope other than global scope or declared static 11809 in global scope. 11810 11811 The same also holds true for deallocation functions. */ 11812 if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR 11813 || operator_code == DELETE_EXPR || operator_code == VEC_DELETE_EXPR) 11814 { 11815 if (DECL_NAMESPACE_SCOPE_P (decl)) 11816 { 11817 if (CP_DECL_CONTEXT (decl) != global_namespace) 11818 { 11819 error ("%qD may not be declared within a namespace", decl); 11820 return false; 11821 } 11822 else if (!TREE_PUBLIC (decl)) 11823 { 11824 error ("%qD may not be declared as static", decl); 11825 return false; 11826 } 11827 if (!flag_sized_deallocation && warn_cxx14_compat) 11828 { 11829 tree parm = FUNCTION_ARG_CHAIN (decl); 11830 if (parm && same_type_p (TREE_VALUE (parm), size_type_node) 11831 && TREE_CHAIN (parm) == void_list_node) 11832 warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wc__14_compat, 11833 "%qD is a usual (non-placement) deallocation " 11834 "function in C++14 (or with -fsized-deallocation)", 11835 decl); 11836 } 11837 } 11838 } 11839 11840 if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR) 11841 { 11842 TREE_TYPE (decl) = coerce_new_type (TREE_TYPE (decl)); 11843 DECL_IS_OPERATOR_NEW (decl) = 1; 11844 } 11845 else if (operator_code == DELETE_EXPR || operator_code == VEC_DELETE_EXPR) 11846 TREE_TYPE (decl) = coerce_delete_type (TREE_TYPE (decl)); 11847 else 11848 { 11849 /* An operator function must either be a non-static member function 11850 or have at least one parameter of a class, a reference to a class, 11851 an enumeration, or a reference to an enumeration. 13.4.0.6 */ 11852 if (! methodp || DECL_STATIC_FUNCTION_P (decl)) 11853 { 11854 if (operator_code == TYPE_EXPR 11855 || operator_code == CALL_EXPR 11856 || operator_code == COMPONENT_REF 11857 || operator_code == ARRAY_REF 11858 || operator_code == NOP_EXPR) 11859 { 11860 error ("%qD must be a nonstatic member function", decl); 11861 return false; 11862 } 11863 else 11864 { 11865 tree p; 11866 11867 if (DECL_STATIC_FUNCTION_P (decl)) 11868 { 11869 error ("%qD must be either a non-static member " 11870 "function or a non-member function", decl); 11871 return false; 11872 } 11873 11874 for (p = argtypes; p && p != void_list_node; p = TREE_CHAIN (p)) 11875 { 11876 tree arg = non_reference (TREE_VALUE (p)); 11877 if (arg == error_mark_node) 11878 return false; 11879 11880 /* MAYBE_CLASS_TYPE_P, rather than CLASS_TYPE_P, is used 11881 because these checks are performed even on 11882 template functions. */ 11883 if (MAYBE_CLASS_TYPE_P (arg) 11884 || TREE_CODE (arg) == ENUMERAL_TYPE) 11885 break; 11886 } 11887 11888 if (!p || p == void_list_node) 11889 { 11890 if (complain) 11891 error ("%qD must have an argument of class or " 11892 "enumerated type", decl); 11893 return false; 11894 } 11895 } 11896 } 11897 11898 /* There are no restrictions on the arguments to an overloaded 11899 "operator ()". */ 11900 if (operator_code == CALL_EXPR) 11901 return true; 11902 11903 /* Warn about conversion operators that will never be used. */ 11904 if (IDENTIFIER_TYPENAME_P (name) 11905 && ! DECL_TEMPLATE_INFO (decl) 11906 && warn_conversion 11907 /* Warn only declaring the function; there is no need to 11908 warn again about out-of-class definitions. */ 11909 && class_type == current_class_type) 11910 { 11911 tree t = TREE_TYPE (name); 11912 int ref = (TREE_CODE (t) == REFERENCE_TYPE); 11913 11914 if (ref) 11915 t = TYPE_MAIN_VARIANT (TREE_TYPE (t)); 11916 11917 if (VOID_TYPE_P (t)) 11918 warning (OPT_Wconversion, 11919 ref 11920 ? G_("conversion to a reference to void " 11921 "will never use a type conversion operator") 11922 : G_("conversion to void " 11923 "will never use a type conversion operator")); 11924 else if (class_type) 11925 { 11926 if (t == class_type) 11927 warning (OPT_Wconversion, 11928 ref 11929 ? G_("conversion to a reference to the same type " 11930 "will never use a type conversion operator") 11931 : G_("conversion to the same type " 11932 "will never use a type conversion operator")); 11933 /* Don't force t to be complete here. */ 11934 else if (MAYBE_CLASS_TYPE_P (t) 11935 && COMPLETE_TYPE_P (t) 11936 && DERIVED_FROM_P (t, class_type)) 11937 warning (OPT_Wconversion, 11938 ref 11939 ? G_("conversion to a reference to a base class " 11940 "will never use a type conversion operator") 11941 : G_("conversion to a base class " 11942 "will never use a type conversion operator")); 11943 } 11944 11945 } 11946 11947 if (operator_code == COND_EXPR) 11948 { 11949 /* 13.4.0.3 */ 11950 error ("ISO C++ prohibits overloading operator ?:"); 11951 return false; 11952 } 11953 else if (ellipsis_p) 11954 { 11955 error ("%qD must not have variable number of arguments", decl); 11956 return false; 11957 } 11958 else if (ambi_op_p (operator_code)) 11959 { 11960 if (arity == 1) 11961 /* We pick the one-argument operator codes by default, so 11962 we don't have to change anything. */ 11963 ; 11964 else if (arity == 2) 11965 { 11966 /* If we thought this was a unary operator, we now know 11967 it to be a binary operator. */ 11968 switch (operator_code) 11969 { 11970 case INDIRECT_REF: 11971 operator_code = MULT_EXPR; 11972 break; 11973 11974 case ADDR_EXPR: 11975 operator_code = BIT_AND_EXPR; 11976 break; 11977 11978 case UNARY_PLUS_EXPR: 11979 operator_code = PLUS_EXPR; 11980 break; 11981 11982 case NEGATE_EXPR: 11983 operator_code = MINUS_EXPR; 11984 break; 11985 11986 case PREINCREMENT_EXPR: 11987 operator_code = POSTINCREMENT_EXPR; 11988 break; 11989 11990 case PREDECREMENT_EXPR: 11991 operator_code = POSTDECREMENT_EXPR; 11992 break; 11993 11994 default: 11995 gcc_unreachable (); 11996 } 11997 11998 SET_OVERLOADED_OPERATOR_CODE (decl, operator_code); 11999 12000 if ((operator_code == POSTINCREMENT_EXPR 12001 || operator_code == POSTDECREMENT_EXPR) 12002 && ! processing_template_decl 12003 && ! same_type_p (TREE_VALUE (TREE_CHAIN (argtypes)), integer_type_node)) 12004 { 12005 if (methodp) 12006 error ("postfix %qD must take %<int%> as its argument", 12007 decl); 12008 else 12009 error ("postfix %qD must take %<int%> as its second " 12010 "argument", decl); 12011 return false; 12012 } 12013 } 12014 else 12015 { 12016 if (methodp) 12017 error ("%qD must take either zero or one argument", decl); 12018 else 12019 error ("%qD must take either one or two arguments", decl); 12020 return false; 12021 } 12022 12023 /* More Effective C++ rule 6. */ 12024 if (warn_ecpp 12025 && (operator_code == POSTINCREMENT_EXPR 12026 || operator_code == POSTDECREMENT_EXPR 12027 || operator_code == PREINCREMENT_EXPR 12028 || operator_code == PREDECREMENT_EXPR)) 12029 { 12030 tree arg = TREE_VALUE (argtypes); 12031 tree ret = TREE_TYPE (TREE_TYPE (decl)); 12032 if (methodp || TREE_CODE (arg) == REFERENCE_TYPE) 12033 arg = TREE_TYPE (arg); 12034 arg = TYPE_MAIN_VARIANT (arg); 12035 if (operator_code == PREINCREMENT_EXPR 12036 || operator_code == PREDECREMENT_EXPR) 12037 { 12038 if (TREE_CODE (ret) != REFERENCE_TYPE 12039 || !same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (ret)), 12040 arg)) 12041 warning (OPT_Weffc__, "prefix %qD should return %qT", decl, 12042 build_reference_type (arg)); 12043 } 12044 else 12045 { 12046 if (!same_type_p (TYPE_MAIN_VARIANT (ret), arg)) 12047 warning (OPT_Weffc__, "postfix %qD should return %qT", decl, arg); 12048 } 12049 } 12050 } 12051 else if (unary_op_p (operator_code)) 12052 { 12053 if (arity != 1) 12054 { 12055 if (methodp) 12056 error ("%qD must take %<void%>", decl); 12057 else 12058 error ("%qD must take exactly one argument", decl); 12059 return false; 12060 } 12061 } 12062 else /* if (binary_op_p (operator_code)) */ 12063 { 12064 if (arity != 2) 12065 { 12066 if (methodp) 12067 error ("%qD must take exactly one argument", decl); 12068 else 12069 error ("%qD must take exactly two arguments", decl); 12070 return false; 12071 } 12072 12073 /* More Effective C++ rule 7. */ 12074 if (warn_ecpp 12075 && (operator_code == TRUTH_ANDIF_EXPR 12076 || operator_code == TRUTH_ORIF_EXPR 12077 || operator_code == COMPOUND_EXPR)) 12078 warning (OPT_Weffc__, "user-defined %qD always evaluates both arguments", 12079 decl); 12080 } 12081 12082 /* Effective C++ rule 23. */ 12083 if (warn_ecpp 12084 && arity == 2 12085 && !DECL_ASSIGNMENT_OPERATOR_P (decl) 12086 && (operator_code == PLUS_EXPR 12087 || operator_code == MINUS_EXPR 12088 || operator_code == TRUNC_DIV_EXPR 12089 || operator_code == MULT_EXPR 12090 || operator_code == TRUNC_MOD_EXPR) 12091 && TREE_CODE (TREE_TYPE (TREE_TYPE (decl))) == REFERENCE_TYPE) 12092 warning (OPT_Weffc__, "%qD should return by value", decl); 12093 12094 /* [over.oper]/8 */ 12095 for (; argtypes && argtypes != void_list_node; 12096 argtypes = TREE_CHAIN (argtypes)) 12097 if (TREE_PURPOSE (argtypes)) 12098 { 12099 TREE_PURPOSE (argtypes) = NULL_TREE; 12100 if (operator_code == POSTINCREMENT_EXPR 12101 || operator_code == POSTDECREMENT_EXPR) 12102 { 12103 pedwarn (input_location, OPT_Wpedantic, "%qD cannot have default arguments", 12104 decl); 12105 } 12106 else 12107 { 12108 error ("%qD cannot have default arguments", decl); 12109 return false; 12110 } 12111 } 12112 } 12113 return true; 12114 } 12115 12116 /* Return a string giving the keyword associate with CODE. */ 12117 12118 static const char * 12119 tag_name (enum tag_types code) 12120 { 12121 switch (code) 12122 { 12123 case record_type: 12124 return "struct"; 12125 case class_type: 12126 return "class"; 12127 case union_type: 12128 return "union"; 12129 case enum_type: 12130 return "enum"; 12131 case typename_type: 12132 return "typename"; 12133 default: 12134 gcc_unreachable (); 12135 } 12136 } 12137 12138 /* Name lookup in an elaborated-type-specifier (after the keyword 12139 indicated by TAG_CODE) has found the TYPE_DECL DECL. If the 12140 elaborated-type-specifier is invalid, issue a diagnostic and return 12141 error_mark_node; otherwise, return the *_TYPE to which it referred. 12142 If ALLOW_TEMPLATE_P is true, TYPE may be a class template. */ 12143 12144 tree 12145 check_elaborated_type_specifier (enum tag_types tag_code, 12146 tree decl, 12147 bool allow_template_p) 12148 { 12149 tree type; 12150 12151 /* In the case of: 12152 12153 struct S { struct S *p; }; 12154 12155 name lookup will find the TYPE_DECL for the implicit "S::S" 12156 typedef. Adjust for that here. */ 12157 if (DECL_SELF_REFERENCE_P (decl)) 12158 decl = TYPE_NAME (TREE_TYPE (decl)); 12159 12160 type = TREE_TYPE (decl); 12161 12162 /* Check TEMPLATE_TYPE_PARM first because DECL_IMPLICIT_TYPEDEF_P 12163 is false for this case as well. */ 12164 if (TREE_CODE (type) == TEMPLATE_TYPE_PARM) 12165 { 12166 error ("using template type parameter %qT after %qs", 12167 type, tag_name (tag_code)); 12168 return error_mark_node; 12169 } 12170 /* Accept template template parameters. */ 12171 else if (allow_template_p 12172 && (TREE_CODE (type) == BOUND_TEMPLATE_TEMPLATE_PARM 12173 || TREE_CODE (type) == TEMPLATE_TEMPLATE_PARM)) 12174 ; 12175 /* [dcl.type.elab] 12176 12177 If the identifier resolves to a typedef-name or the 12178 simple-template-id resolves to an alias template 12179 specialization, the elaborated-type-specifier is ill-formed. 12180 12181 In other words, the only legitimate declaration to use in the 12182 elaborated type specifier is the implicit typedef created when 12183 the type is declared. */ 12184 else if (!DECL_IMPLICIT_TYPEDEF_P (decl) 12185 && !DECL_SELF_REFERENCE_P (decl) 12186 && tag_code != typename_type) 12187 { 12188 if (alias_template_specialization_p (type)) 12189 error ("using alias template specialization %qT after %qs", 12190 type, tag_name (tag_code)); 12191 else 12192 error ("using typedef-name %qD after %qs", decl, tag_name (tag_code)); 12193 inform (DECL_SOURCE_LOCATION (decl), 12194 "%qD has a previous declaration here", decl); 12195 return error_mark_node; 12196 } 12197 else if (TREE_CODE (type) != RECORD_TYPE 12198 && TREE_CODE (type) != UNION_TYPE 12199 && tag_code != enum_type 12200 && tag_code != typename_type) 12201 { 12202 error ("%qT referred to as %qs", type, tag_name (tag_code)); 12203 inform (input_location, "%q+T has a previous declaration here", type); 12204 return error_mark_node; 12205 } 12206 else if (TREE_CODE (type) != ENUMERAL_TYPE 12207 && tag_code == enum_type) 12208 { 12209 error ("%qT referred to as enum", type); 12210 inform (input_location, "%q+T has a previous declaration here", type); 12211 return error_mark_node; 12212 } 12213 else if (!allow_template_p 12214 && TREE_CODE (type) == RECORD_TYPE 12215 && CLASSTYPE_IS_TEMPLATE (type)) 12216 { 12217 /* If a class template appears as elaborated type specifier 12218 without a template header such as: 12219 12220 template <class T> class C {}; 12221 void f(class C); // No template header here 12222 12223 then the required template argument is missing. */ 12224 error ("template argument required for %<%s %T%>", 12225 tag_name (tag_code), 12226 DECL_NAME (CLASSTYPE_TI_TEMPLATE (type))); 12227 return error_mark_node; 12228 } 12229 12230 return type; 12231 } 12232 12233 /* Lookup NAME in elaborate type specifier in scope according to 12234 SCOPE and issue diagnostics if necessary. 12235 Return *_TYPE node upon success, NULL_TREE when the NAME is not 12236 found, and ERROR_MARK_NODE for type error. */ 12237 12238 static tree 12239 lookup_and_check_tag (enum tag_types tag_code, tree name, 12240 tag_scope scope, bool template_header_p) 12241 { 12242 tree t; 12243 tree decl; 12244 if (scope == ts_global) 12245 { 12246 /* First try ordinary name lookup, ignoring hidden class name 12247 injected via friend declaration. */ 12248 decl = lookup_name_prefer_type (name, 2); 12249 decl = strip_using_decl (decl); 12250 /* If that fails, the name will be placed in the smallest 12251 non-class, non-function-prototype scope according to 3.3.1/5. 12252 We may already have a hidden name declared as friend in this 12253 scope. So lookup again but not ignoring hidden names. 12254 If we find one, that name will be made visible rather than 12255 creating a new tag. */ 12256 if (!decl) 12257 decl = lookup_type_scope (name, ts_within_enclosing_non_class); 12258 } 12259 else 12260 decl = lookup_type_scope (name, scope); 12261 12262 if (decl 12263 && (DECL_CLASS_TEMPLATE_P (decl) 12264 /* If scope is ts_current we're defining a class, so ignore a 12265 template template parameter. */ 12266 || (scope != ts_current 12267 && DECL_TEMPLATE_TEMPLATE_PARM_P (decl)))) 12268 decl = DECL_TEMPLATE_RESULT (decl); 12269 12270 if (decl && TREE_CODE (decl) == TYPE_DECL) 12271 { 12272 /* Look for invalid nested type: 12273 class C { 12274 class C {}; 12275 }; */ 12276 if (scope == ts_current && DECL_SELF_REFERENCE_P (decl)) 12277 { 12278 error ("%qD has the same name as the class in which it is " 12279 "declared", 12280 decl); 12281 return error_mark_node; 12282 } 12283 12284 /* Two cases we need to consider when deciding if a class 12285 template is allowed as an elaborated type specifier: 12286 1. It is a self reference to its own class. 12287 2. It comes with a template header. 12288 12289 For example: 12290 12291 template <class T> class C { 12292 class C *c1; // DECL_SELF_REFERENCE_P is true 12293 class D; 12294 }; 12295 template <class U> class C; // template_header_p is true 12296 template <class T> class C<T>::D { 12297 class C *c2; // DECL_SELF_REFERENCE_P is true 12298 }; */ 12299 12300 t = check_elaborated_type_specifier (tag_code, 12301 decl, 12302 template_header_p 12303 | DECL_SELF_REFERENCE_P (decl)); 12304 return t; 12305 } 12306 else if (decl && TREE_CODE (decl) == TREE_LIST) 12307 { 12308 error ("reference to %qD is ambiguous", name); 12309 print_candidates (decl); 12310 return error_mark_node; 12311 } 12312 else 12313 return NULL_TREE; 12314 } 12315 12316 /* Get the struct, enum or union (TAG_CODE says which) with tag NAME. 12317 Define the tag as a forward-reference if it is not defined. 12318 12319 If a declaration is given, process it here, and report an error if 12320 multiple declarations are not identical. 12321 12322 SCOPE is TS_CURRENT when this is also a definition. Only look in 12323 the current frame for the name (since C++ allows new names in any 12324 scope.) It is TS_WITHIN_ENCLOSING_NON_CLASS if this is a friend 12325 declaration. Only look beginning from the current scope outward up 12326 till the nearest non-class scope. Otherwise it is TS_GLOBAL. 12327 12328 TEMPLATE_HEADER_P is true when this declaration is preceded by 12329 a set of template parameters. */ 12330 12331 static tree 12332 xref_tag_1 (enum tag_types tag_code, tree name, 12333 tag_scope orig_scope, bool template_header_p) 12334 { 12335 enum tree_code code; 12336 tree t; 12337 tree context = NULL_TREE; 12338 tag_scope scope; 12339 12340 gcc_assert (identifier_p (name)); 12341 12342 switch (tag_code) 12343 { 12344 case record_type: 12345 case class_type: 12346 code = RECORD_TYPE; 12347 break; 12348 case union_type: 12349 code = UNION_TYPE; 12350 break; 12351 case enum_type: 12352 code = ENUMERAL_TYPE; 12353 break; 12354 default: 12355 gcc_unreachable (); 12356 } 12357 12358 if (orig_scope == ts_lambda) 12359 scope = ts_current; 12360 else 12361 scope = orig_scope; 12362 12363 /* In case of anonymous name, xref_tag is only called to 12364 make type node and push name. Name lookup is not required. */ 12365 if (ANON_AGGRNAME_P (name)) 12366 t = NULL_TREE; 12367 else 12368 t = lookup_and_check_tag (tag_code, name, 12369 scope, template_header_p); 12370 12371 if (t == error_mark_node) 12372 return error_mark_node; 12373 12374 if (scope != ts_current && t && current_class_type 12375 && template_class_depth (current_class_type) 12376 && template_header_p) 12377 { 12378 if (TREE_CODE (t) == TEMPLATE_TEMPLATE_PARM) 12379 return t; 12380 12381 /* Since SCOPE is not TS_CURRENT, we are not looking at a 12382 definition of this tag. Since, in addition, we are currently 12383 processing a (member) template declaration of a template 12384 class, we must be very careful; consider: 12385 12386 template <class X> 12387 struct S1 12388 12389 template <class U> 12390 struct S2 12391 { template <class V> 12392 friend struct S1; }; 12393 12394 Here, the S2::S1 declaration should not be confused with the 12395 outer declaration. In particular, the inner version should 12396 have a template parameter of level 2, not level 1. This 12397 would be particularly important if the member declaration 12398 were instead: 12399 12400 template <class V = U> friend struct S1; 12401 12402 say, when we should tsubst into `U' when instantiating 12403 S2. On the other hand, when presented with: 12404 12405 template <class T> 12406 struct S1 { 12407 template <class U> 12408 struct S2 {}; 12409 template <class U> 12410 friend struct S2; 12411 }; 12412 12413 we must find the inner binding eventually. We 12414 accomplish this by making sure that the new type we 12415 create to represent this declaration has the right 12416 TYPE_CONTEXT. */ 12417 context = TYPE_CONTEXT (t); 12418 t = NULL_TREE; 12419 } 12420 12421 if (! t) 12422 { 12423 /* If no such tag is yet defined, create a forward-reference node 12424 and record it as the "definition". 12425 When a real declaration of this type is found, 12426 the forward-reference will be altered into a real type. */ 12427 if (code == ENUMERAL_TYPE) 12428 { 12429 error ("use of enum %q#D without previous declaration", name); 12430 return error_mark_node; 12431 } 12432 else 12433 { 12434 t = make_class_type (code); 12435 TYPE_CONTEXT (t) = context; 12436 if (orig_scope == ts_lambda) 12437 /* Remember that we're declaring a lambda to avoid bogus errors 12438 in push_template_decl. */ 12439 CLASSTYPE_LAMBDA_EXPR (t) = error_mark_node; 12440 t = pushtag (name, t, scope); 12441 } 12442 } 12443 else 12444 { 12445 if (template_header_p && MAYBE_CLASS_TYPE_P (t)) 12446 { 12447 if (!redeclare_class_template (t, current_template_parms)) 12448 return error_mark_node; 12449 } 12450 else if (!processing_template_decl 12451 && CLASS_TYPE_P (t) 12452 && CLASSTYPE_IS_TEMPLATE (t)) 12453 { 12454 error ("redeclaration of %qT as a non-template", t); 12455 error ("previous declaration %q+D", t); 12456 return error_mark_node; 12457 } 12458 12459 /* Make injected friend class visible. */ 12460 if (scope != ts_within_enclosing_non_class 12461 && hidden_name_p (TYPE_NAME (t))) 12462 { 12463 DECL_ANTICIPATED (TYPE_NAME (t)) = 0; 12464 DECL_FRIEND_P (TYPE_NAME (t)) = 0; 12465 12466 if (TYPE_TEMPLATE_INFO (t)) 12467 { 12468 DECL_ANTICIPATED (TYPE_TI_TEMPLATE (t)) = 0; 12469 DECL_FRIEND_P (TYPE_TI_TEMPLATE (t)) = 0; 12470 } 12471 } 12472 } 12473 12474 return t; 12475 } 12476 12477 /* Wrapper for xref_tag_1. */ 12478 12479 tree 12480 xref_tag (enum tag_types tag_code, tree name, 12481 tag_scope scope, bool template_header_p) 12482 { 12483 tree ret; 12484 bool subtime; 12485 subtime = timevar_cond_start (TV_NAME_LOOKUP); 12486 ret = xref_tag_1 (tag_code, name, scope, template_header_p); 12487 timevar_cond_stop (TV_NAME_LOOKUP, subtime); 12488 return ret; 12489 } 12490 12491 12492 tree 12493 xref_tag_from_type (tree old, tree id, tag_scope scope) 12494 { 12495 enum tag_types tag_kind; 12496 12497 if (TREE_CODE (old) == RECORD_TYPE) 12498 tag_kind = (CLASSTYPE_DECLARED_CLASS (old) ? class_type : record_type); 12499 else 12500 tag_kind = union_type; 12501 12502 if (id == NULL_TREE) 12503 id = TYPE_IDENTIFIER (old); 12504 12505 return xref_tag (tag_kind, id, scope, false); 12506 } 12507 12508 /* Create the binfo hierarchy for REF with (possibly NULL) base list 12509 BASE_LIST. For each element on BASE_LIST the TREE_PURPOSE is an 12510 access_* node, and the TREE_VALUE is the type of the base-class. 12511 Non-NULL TREE_TYPE indicates virtual inheritance. 12512 12513 Returns true if the binfo hierarchy was successfully created, 12514 false if an error was detected. */ 12515 12516 bool 12517 xref_basetypes (tree ref, tree base_list) 12518 { 12519 tree *basep; 12520 tree binfo, base_binfo; 12521 unsigned max_vbases = 0; /* Maximum direct & indirect virtual bases. */ 12522 unsigned max_bases = 0; /* Maximum direct bases. */ 12523 int i; 12524 tree default_access; 12525 tree igo_prev; /* Track Inheritance Graph Order. */ 12526 12527 if (ref == error_mark_node) 12528 return false; 12529 12530 /* The base of a derived class is private by default, all others are 12531 public. */ 12532 default_access = (TREE_CODE (ref) == RECORD_TYPE 12533 && CLASSTYPE_DECLARED_CLASS (ref) 12534 ? access_private_node : access_public_node); 12535 12536 /* First, make sure that any templates in base-classes are 12537 instantiated. This ensures that if we call ourselves recursively 12538 we do not get confused about which classes are marked and which 12539 are not. */ 12540 basep = &base_list; 12541 while (*basep) 12542 { 12543 tree basetype = TREE_VALUE (*basep); 12544 12545 /* The dependent_type_p call below should really be dependent_scope_p 12546 so that we give a hard error about using an incomplete type as a 12547 base, but we allow it with a pedwarn for backward 12548 compatibility. */ 12549 if (processing_template_decl 12550 && CLASS_TYPE_P (basetype) && TYPE_BEING_DEFINED (basetype)) 12551 cxx_incomplete_type_diagnostic (NULL_TREE, basetype, DK_PEDWARN); 12552 if (!dependent_type_p (basetype) 12553 && !complete_type_or_else (basetype, NULL)) 12554 /* An incomplete type. Remove it from the list. */ 12555 *basep = TREE_CHAIN (*basep); 12556 else 12557 { 12558 max_bases++; 12559 if (TREE_TYPE (*basep)) 12560 max_vbases++; 12561 if (CLASS_TYPE_P (basetype)) 12562 max_vbases += vec_safe_length (CLASSTYPE_VBASECLASSES (basetype)); 12563 basep = &TREE_CHAIN (*basep); 12564 } 12565 } 12566 12567 TYPE_MARKED_P (ref) = 1; 12568 12569 /* The binfo slot should be empty, unless this is an (ill-formed) 12570 redefinition. */ 12571 if (TYPE_BINFO (ref) && !TYPE_SIZE (ref)) 12572 { 12573 error ("redefinition of %q#T", ref); 12574 return false; 12575 } 12576 12577 gcc_assert (TYPE_MAIN_VARIANT (ref) == ref); 12578 12579 binfo = make_tree_binfo (max_bases); 12580 12581 TYPE_BINFO (ref) = binfo; 12582 BINFO_OFFSET (binfo) = size_zero_node; 12583 BINFO_TYPE (binfo) = ref; 12584 12585 /* Apply base-class info set up to the variants of this type. */ 12586 fixup_type_variants (ref); 12587 12588 if (max_bases) 12589 { 12590 vec_alloc (BINFO_BASE_ACCESSES (binfo), max_bases); 12591 /* An aggregate cannot have baseclasses. */ 12592 CLASSTYPE_NON_AGGREGATE (ref) = 1; 12593 12594 if (TREE_CODE (ref) == UNION_TYPE) 12595 { 12596 error ("derived union %qT invalid", ref); 12597 return false; 12598 } 12599 } 12600 12601 if (max_bases > 1) 12602 { 12603 if (TYPE_FOR_JAVA (ref)) 12604 { 12605 error ("Java class %qT cannot have multiple bases", ref); 12606 return false; 12607 } 12608 } 12609 12610 if (max_vbases) 12611 { 12612 vec_alloc (CLASSTYPE_VBASECLASSES (ref), max_vbases); 12613 12614 if (TYPE_FOR_JAVA (ref)) 12615 { 12616 error ("Java class %qT cannot have virtual bases", ref); 12617 return false; 12618 } 12619 } 12620 12621 for (igo_prev = binfo; base_list; base_list = TREE_CHAIN (base_list)) 12622 { 12623 tree access = TREE_PURPOSE (base_list); 12624 int via_virtual = TREE_TYPE (base_list) != NULL_TREE; 12625 tree basetype = TREE_VALUE (base_list); 12626 12627 if (access == access_default_node) 12628 access = default_access; 12629 12630 if (PACK_EXPANSION_P (basetype)) 12631 basetype = PACK_EXPANSION_PATTERN (basetype); 12632 if (TREE_CODE (basetype) == TYPE_DECL) 12633 basetype = TREE_TYPE (basetype); 12634 if (!MAYBE_CLASS_TYPE_P (basetype) || TREE_CODE (basetype) == UNION_TYPE) 12635 { 12636 error ("base type %qT fails to be a struct or class type", 12637 basetype); 12638 return false; 12639 } 12640 12641 if (TYPE_FOR_JAVA (basetype) && (current_lang_depth () == 0)) 12642 TYPE_FOR_JAVA (ref) = 1; 12643 12644 base_binfo = NULL_TREE; 12645 if (CLASS_TYPE_P (basetype) && !dependent_scope_p (basetype)) 12646 { 12647 base_binfo = TYPE_BINFO (basetype); 12648 /* The original basetype could have been a typedef'd type. */ 12649 basetype = BINFO_TYPE (base_binfo); 12650 12651 /* Inherit flags from the base. */ 12652 TYPE_HAS_NEW_OPERATOR (ref) 12653 |= TYPE_HAS_NEW_OPERATOR (basetype); 12654 TYPE_HAS_ARRAY_NEW_OPERATOR (ref) 12655 |= TYPE_HAS_ARRAY_NEW_OPERATOR (basetype); 12656 TYPE_GETS_DELETE (ref) |= TYPE_GETS_DELETE (basetype); 12657 TYPE_HAS_CONVERSION (ref) |= TYPE_HAS_CONVERSION (basetype); 12658 CLASSTYPE_DIAMOND_SHAPED_P (ref) 12659 |= CLASSTYPE_DIAMOND_SHAPED_P (basetype); 12660 CLASSTYPE_REPEATED_BASE_P (ref) 12661 |= CLASSTYPE_REPEATED_BASE_P (basetype); 12662 } 12663 12664 /* We must do this test after we've seen through a typedef 12665 type. */ 12666 if (TYPE_MARKED_P (basetype)) 12667 { 12668 if (basetype == ref) 12669 error ("recursive type %qT undefined", basetype); 12670 else 12671 error ("duplicate base type %qT invalid", basetype); 12672 return false; 12673 } 12674 12675 if (PACK_EXPANSION_P (TREE_VALUE (base_list))) 12676 /* Regenerate the pack expansion for the bases. */ 12677 basetype = make_pack_expansion (basetype); 12678 12679 TYPE_MARKED_P (basetype) = 1; 12680 12681 base_binfo = copy_binfo (base_binfo, basetype, ref, 12682 &igo_prev, via_virtual); 12683 if (!BINFO_INHERITANCE_CHAIN (base_binfo)) 12684 BINFO_INHERITANCE_CHAIN (base_binfo) = binfo; 12685 12686 BINFO_BASE_APPEND (binfo, base_binfo); 12687 BINFO_BASE_ACCESS_APPEND (binfo, access); 12688 } 12689 12690 if (vec_safe_length (CLASSTYPE_VBASECLASSES (ref)) < max_vbases) 12691 /* If we didn't get max_vbases vbases, we must have shared at 12692 least one of them, and are therefore diamond shaped. */ 12693 CLASSTYPE_DIAMOND_SHAPED_P (ref) = 1; 12694 12695 /* Unmark all the types. */ 12696 for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++) 12697 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 0; 12698 TYPE_MARKED_P (ref) = 0; 12699 12700 /* Now see if we have a repeated base type. */ 12701 if (!CLASSTYPE_REPEATED_BASE_P (ref)) 12702 { 12703 for (base_binfo = binfo; base_binfo; 12704 base_binfo = TREE_CHAIN (base_binfo)) 12705 { 12706 if (TYPE_MARKED_P (BINFO_TYPE (base_binfo))) 12707 { 12708 CLASSTYPE_REPEATED_BASE_P (ref) = 1; 12709 break; 12710 } 12711 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 1; 12712 } 12713 for (base_binfo = binfo; base_binfo; 12714 base_binfo = TREE_CHAIN (base_binfo)) 12715 if (TYPE_MARKED_P (BINFO_TYPE (base_binfo))) 12716 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 0; 12717 else 12718 break; 12719 } 12720 12721 return true; 12722 } 12723 12724 12725 /* Copies the enum-related properties from type SRC to type DST. 12726 Used with the underlying type of an enum and the enum itself. */ 12727 static void 12728 copy_type_enum (tree dst, tree src) 12729 { 12730 tree t; 12731 for (t = dst; t; t = TYPE_NEXT_VARIANT (t)) 12732 { 12733 TYPE_MIN_VALUE (t) = TYPE_MIN_VALUE (src); 12734 TYPE_MAX_VALUE (t) = TYPE_MAX_VALUE (src); 12735 TYPE_SIZE (t) = TYPE_SIZE (src); 12736 TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (src); 12737 SET_TYPE_MODE (dst, TYPE_MODE (src)); 12738 TYPE_PRECISION (t) = TYPE_PRECISION (src); 12739 TYPE_ALIGN (t) = TYPE_ALIGN (src); 12740 TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (src); 12741 TYPE_UNSIGNED (t) = TYPE_UNSIGNED (src); 12742 } 12743 } 12744 12745 /* Begin compiling the definition of an enumeration type. 12746 NAME is its name, 12747 12748 if ENUMTYPE is not NULL_TREE then the type has alredy been found. 12749 12750 UNDERLYING_TYPE is the type that will be used as the storage for 12751 the enumeration type. This should be NULL_TREE if no storage type 12752 was specified. 12753 12754 SCOPED_ENUM_P is true if this is a scoped enumeration type. 12755 12756 if IS_NEW is not NULL, gets TRUE iff a new type is created. 12757 12758 Returns the type object, as yet incomplete. 12759 Also records info about it so that build_enumerator 12760 may be used to declare the individual values as they are read. */ 12761 12762 tree 12763 start_enum (tree name, tree enumtype, tree underlying_type, 12764 bool scoped_enum_p, bool *is_new) 12765 { 12766 tree prevtype = NULL_TREE; 12767 gcc_assert (identifier_p (name)); 12768 12769 if (is_new) 12770 *is_new = false; 12771 /* [C++0x dcl.enum]p5: 12772 12773 If not explicitly specified, the underlying type of a scoped 12774 enumeration type is int. */ 12775 if (!underlying_type && scoped_enum_p) 12776 underlying_type = integer_type_node; 12777 12778 if (underlying_type) 12779 underlying_type = cv_unqualified (underlying_type); 12780 12781 /* If this is the real definition for a previous forward reference, 12782 fill in the contents in the same object that used to be the 12783 forward reference. */ 12784 if (!enumtype) 12785 enumtype = lookup_and_check_tag (enum_type, name, 12786 /*tag_scope=*/ts_current, 12787 /*template_header_p=*/false); 12788 12789 /* In case of a template_decl, the only check that should be deferred 12790 to instantiation time is the comparison of underlying types. */ 12791 if (enumtype && TREE_CODE (enumtype) == ENUMERAL_TYPE) 12792 { 12793 if (scoped_enum_p != SCOPED_ENUM_P (enumtype)) 12794 { 12795 error_at (input_location, "scoped/unscoped mismatch " 12796 "in enum %q#T", enumtype); 12797 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)), 12798 "previous definition here"); 12799 enumtype = error_mark_node; 12800 } 12801 else if (ENUM_FIXED_UNDERLYING_TYPE_P (enumtype) != !! underlying_type) 12802 { 12803 error_at (input_location, "underlying type mismatch " 12804 "in enum %q#T", enumtype); 12805 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)), 12806 "previous definition here"); 12807 enumtype = error_mark_node; 12808 } 12809 else if (underlying_type && ENUM_UNDERLYING_TYPE (enumtype) 12810 && !dependent_type_p (underlying_type) 12811 && !dependent_type_p (ENUM_UNDERLYING_TYPE (enumtype)) 12812 && !same_type_p (underlying_type, 12813 ENUM_UNDERLYING_TYPE (enumtype))) 12814 { 12815 error_at (input_location, "different underlying type " 12816 "in enum %q#T", enumtype); 12817 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)), 12818 "previous definition here"); 12819 underlying_type = NULL_TREE; 12820 } 12821 } 12822 12823 if (!enumtype || TREE_CODE (enumtype) != ENUMERAL_TYPE 12824 || processing_template_decl) 12825 { 12826 /* In case of error, make a dummy enum to allow parsing to 12827 continue. */ 12828 if (enumtype == error_mark_node) 12829 { 12830 name = make_anon_name (); 12831 enumtype = NULL_TREE; 12832 } 12833 12834 /* enumtype may be an ENUMERAL_TYPE if this is a redefinition 12835 of an opaque enum, or an opaque enum of an already defined 12836 enumeration (C++0x only). 12837 In any other case, it'll be NULL_TREE. */ 12838 if (!enumtype) 12839 { 12840 if (is_new) 12841 *is_new = true; 12842 } 12843 prevtype = enumtype; 12844 12845 /* Do not push the decl more than once, unless we need to 12846 compare underlying types at instantiation time */ 12847 if (!enumtype 12848 || TREE_CODE (enumtype) != ENUMERAL_TYPE 12849 || (underlying_type 12850 && dependent_type_p (underlying_type)) 12851 || (ENUM_UNDERLYING_TYPE (enumtype) 12852 && dependent_type_p (ENUM_UNDERLYING_TYPE (enumtype)))) 12853 { 12854 enumtype = cxx_make_type (ENUMERAL_TYPE); 12855 enumtype = pushtag (name, enumtype, /*tag_scope=*/ts_current); 12856 } 12857 else 12858 enumtype = xref_tag (enum_type, name, /*tag_scope=*/ts_current, 12859 false); 12860 12861 if (enumtype == error_mark_node) 12862 return error_mark_node; 12863 12864 /* The enum is considered opaque until the opening '{' of the 12865 enumerator list. */ 12866 SET_OPAQUE_ENUM_P (enumtype, true); 12867 ENUM_FIXED_UNDERLYING_TYPE_P (enumtype) = !! underlying_type; 12868 } 12869 12870 SET_SCOPED_ENUM_P (enumtype, scoped_enum_p); 12871 12872 if (underlying_type) 12873 { 12874 if (CP_INTEGRAL_TYPE_P (underlying_type)) 12875 { 12876 copy_type_enum (enumtype, underlying_type); 12877 ENUM_UNDERLYING_TYPE (enumtype) = underlying_type; 12878 } 12879 else if (dependent_type_p (underlying_type)) 12880 ENUM_UNDERLYING_TYPE (enumtype) = underlying_type; 12881 else 12882 error ("underlying type %<%T%> of %<%T%> must be an integral type", 12883 underlying_type, enumtype); 12884 } 12885 12886 /* If into a template class, the returned enum is always the first 12887 declaration (opaque or not) seen. This way all the references to 12888 this type will be to the same declaration. The following ones are used 12889 only to check for definition errors. */ 12890 if (prevtype && processing_template_decl) 12891 return prevtype; 12892 else 12893 return enumtype; 12894 } 12895 12896 /* After processing and defining all the values of an enumeration type, 12897 install their decls in the enumeration type. 12898 ENUMTYPE is the type object. */ 12899 12900 void 12901 finish_enum_value_list (tree enumtype) 12902 { 12903 tree values; 12904 tree underlying_type; 12905 tree decl; 12906 tree value; 12907 tree minnode, maxnode; 12908 tree t; 12909 12910 bool fixed_underlying_type_p 12911 = ENUM_UNDERLYING_TYPE (enumtype) != NULL_TREE; 12912 12913 /* We built up the VALUES in reverse order. */ 12914 TYPE_VALUES (enumtype) = nreverse (TYPE_VALUES (enumtype)); 12915 12916 /* For an enum defined in a template, just set the type of the values; 12917 all further processing is postponed until the template is 12918 instantiated. We need to set the type so that tsubst of a CONST_DECL 12919 works. */ 12920 if (processing_template_decl) 12921 { 12922 for (values = TYPE_VALUES (enumtype); 12923 values; 12924 values = TREE_CHAIN (values)) 12925 TREE_TYPE (TREE_VALUE (values)) = enumtype; 12926 return; 12927 } 12928 12929 /* Determine the minimum and maximum values of the enumerators. */ 12930 if (TYPE_VALUES (enumtype)) 12931 { 12932 minnode = maxnode = NULL_TREE; 12933 12934 for (values = TYPE_VALUES (enumtype); 12935 values; 12936 values = TREE_CHAIN (values)) 12937 { 12938 decl = TREE_VALUE (values); 12939 12940 /* [dcl.enum]: Following the closing brace of an enum-specifier, 12941 each enumerator has the type of its enumeration. Prior to the 12942 closing brace, the type of each enumerator is the type of its 12943 initializing value. */ 12944 TREE_TYPE (decl) = enumtype; 12945 12946 /* Update the minimum and maximum values, if appropriate. */ 12947 value = DECL_INITIAL (decl); 12948 if (value == error_mark_node) 12949 value = integer_zero_node; 12950 /* Figure out what the minimum and maximum values of the 12951 enumerators are. */ 12952 if (!minnode) 12953 minnode = maxnode = value; 12954 else if (tree_int_cst_lt (maxnode, value)) 12955 maxnode = value; 12956 else if (tree_int_cst_lt (value, minnode)) 12957 minnode = value; 12958 } 12959 } 12960 else 12961 /* [dcl.enum] 12962 12963 If the enumerator-list is empty, the underlying type is as if 12964 the enumeration had a single enumerator with value 0. */ 12965 minnode = maxnode = integer_zero_node; 12966 12967 if (!fixed_underlying_type_p) 12968 { 12969 /* Compute the number of bits require to represent all values of the 12970 enumeration. We must do this before the type of MINNODE and 12971 MAXNODE are transformed, since tree_int_cst_min_precision relies 12972 on the TREE_TYPE of the value it is passed. */ 12973 signop sgn = tree_int_cst_sgn (minnode) >= 0 ? UNSIGNED : SIGNED; 12974 int lowprec = tree_int_cst_min_precision (minnode, sgn); 12975 int highprec = tree_int_cst_min_precision (maxnode, sgn); 12976 int precision = MAX (lowprec, highprec); 12977 unsigned int itk; 12978 bool use_short_enum; 12979 12980 /* Determine the underlying type of the enumeration. 12981 12982 [dcl.enum] 12983 12984 The underlying type of an enumeration is an integral type that 12985 can represent all the enumerator values defined in the 12986 enumeration. It is implementation-defined which integral type is 12987 used as the underlying type for an enumeration except that the 12988 underlying type shall not be larger than int unless the value of 12989 an enumerator cannot fit in an int or unsigned int. 12990 12991 We use "int" or an "unsigned int" as the underlying type, even if 12992 a smaller integral type would work, unless the user has 12993 explicitly requested that we use the smallest possible type. The 12994 user can request that for all enumerations with a command line 12995 flag, or for just one enumeration with an attribute. */ 12996 12997 use_short_enum = flag_short_enums 12998 || lookup_attribute ("packed", TYPE_ATTRIBUTES (enumtype)); 12999 13000 for (itk = (use_short_enum ? itk_char : itk_int); 13001 itk != itk_none; 13002 itk++) 13003 { 13004 underlying_type = integer_types[itk]; 13005 if (underlying_type != NULL_TREE 13006 && TYPE_PRECISION (underlying_type) >= precision 13007 && TYPE_SIGN (underlying_type) == sgn) 13008 break; 13009 } 13010 if (itk == itk_none) 13011 { 13012 /* DR 377 13013 13014 IF no integral type can represent all the enumerator values, the 13015 enumeration is ill-formed. */ 13016 error ("no integral type can represent all of the enumerator values " 13017 "for %qT", enumtype); 13018 precision = TYPE_PRECISION (long_long_integer_type_node); 13019 underlying_type = integer_types[itk_unsigned_long_long]; 13020 } 13021 13022 /* [dcl.enum] 13023 13024 The value of sizeof() applied to an enumeration type, an object 13025 of an enumeration type, or an enumerator, is the value of sizeof() 13026 applied to the underlying type. */ 13027 copy_type_enum (enumtype, underlying_type); 13028 13029 /* Compute the minimum and maximum values for the type. 13030 13031 [dcl.enum] 13032 13033 For an enumeration where emin is the smallest enumerator and emax 13034 is the largest, the values of the enumeration are the values of the 13035 underlying type in the range bmin to bmax, where bmin and bmax are, 13036 respectively, the smallest and largest values of the smallest bit- 13037 field that can store emin and emax. */ 13038 13039 /* The middle-end currently assumes that types with TYPE_PRECISION 13040 narrower than their underlying type are suitably zero or sign 13041 extended to fill their mode. Similarly, it assumes that the front 13042 end assures that a value of a particular type must be within 13043 TYPE_MIN_VALUE and TYPE_MAX_VALUE. 13044 13045 We used to set these fields based on bmin and bmax, but that led 13046 to invalid assumptions like optimizing away bounds checking. So 13047 now we just set the TYPE_PRECISION, TYPE_MIN_VALUE, and 13048 TYPE_MAX_VALUE to the values for the mode above and only restrict 13049 the ENUM_UNDERLYING_TYPE for the benefit of diagnostics. */ 13050 ENUM_UNDERLYING_TYPE (enumtype) 13051 = build_distinct_type_copy (underlying_type); 13052 TYPE_PRECISION (ENUM_UNDERLYING_TYPE (enumtype)) = precision; 13053 set_min_and_max_values_for_integral_type 13054 (ENUM_UNDERLYING_TYPE (enumtype), precision, sgn); 13055 13056 /* If -fstrict-enums, still constrain TYPE_MIN/MAX_VALUE. */ 13057 if (flag_strict_enums) 13058 set_min_and_max_values_for_integral_type (enumtype, precision, sgn); 13059 } 13060 else 13061 underlying_type = ENUM_UNDERLYING_TYPE (enumtype); 13062 13063 /* Convert each of the enumerators to the type of the underlying 13064 type of the enumeration. */ 13065 for (values = TYPE_VALUES (enumtype); values; values = TREE_CHAIN (values)) 13066 { 13067 location_t saved_location; 13068 13069 decl = TREE_VALUE (values); 13070 saved_location = input_location; 13071 input_location = DECL_SOURCE_LOCATION (decl); 13072 if (fixed_underlying_type_p) 13073 /* If the enumeration type has a fixed underlying type, we 13074 already checked all of the enumerator values. */ 13075 value = DECL_INITIAL (decl); 13076 else 13077 value = perform_implicit_conversion (underlying_type, 13078 DECL_INITIAL (decl), 13079 tf_warning_or_error); 13080 input_location = saved_location; 13081 13082 /* Do not clobber shared ints. */ 13083 if (value != error_mark_node) 13084 { 13085 value = copy_node (value); 13086 13087 TREE_TYPE (value) = enumtype; 13088 } 13089 DECL_INITIAL (decl) = value; 13090 } 13091 13092 /* Fix up all variant types of this enum type. */ 13093 for (t = TYPE_MAIN_VARIANT (enumtype); t; t = TYPE_NEXT_VARIANT (t)) 13094 TYPE_VALUES (t) = TYPE_VALUES (enumtype); 13095 13096 if (at_class_scope_p () 13097 && COMPLETE_TYPE_P (current_class_type) 13098 && UNSCOPED_ENUM_P (enumtype)) 13099 insert_late_enum_def_into_classtype_sorted_fields (enumtype, 13100 current_class_type); 13101 13102 /* Finish debugging output for this type. */ 13103 rest_of_type_compilation (enumtype, namespace_bindings_p ()); 13104 } 13105 13106 /* Finishes the enum type. This is called only the first time an 13107 enumeration is seen, be it opaque or odinary. 13108 ENUMTYPE is the type object. */ 13109 13110 void 13111 finish_enum (tree enumtype) 13112 { 13113 if (processing_template_decl) 13114 { 13115 if (at_function_scope_p ()) 13116 add_stmt (build_min (TAG_DEFN, enumtype)); 13117 return; 13118 } 13119 13120 /* If this is a forward declaration, there should not be any variants, 13121 though we can get a variant in the middle of an enum-specifier with 13122 wacky code like 'enum E { e = sizeof(const E*) };' */ 13123 gcc_assert (enumtype == TYPE_MAIN_VARIANT (enumtype) 13124 && (TYPE_VALUES (enumtype) 13125 || !TYPE_NEXT_VARIANT (enumtype))); 13126 } 13127 13128 /* Build and install a CONST_DECL for an enumeration constant of the 13129 enumeration type ENUMTYPE whose NAME and VALUE (if any) are provided. 13130 LOC is the location of NAME. 13131 Assignment of sequential values by default is handled here. */ 13132 13133 void 13134 build_enumerator (tree name, tree value, tree enumtype, location_t loc) 13135 { 13136 tree decl; 13137 tree context; 13138 tree type; 13139 13140 /* scalar_constant_value will pull out this expression, so make sure 13141 it's folded as appropriate. */ 13142 if (processing_template_decl) 13143 value = fold_non_dependent_expr (value); 13144 13145 /* If the VALUE was erroneous, pretend it wasn't there; that will 13146 result in the enum being assigned the next value in sequence. */ 13147 if (value == error_mark_node) 13148 value = NULL_TREE; 13149 13150 /* Remove no-op casts from the value. */ 13151 if (value) 13152 STRIP_TYPE_NOPS (value); 13153 13154 if (! processing_template_decl) 13155 { 13156 /* Validate and default VALUE. */ 13157 if (value != NULL_TREE) 13158 { 13159 if (!ENUM_UNDERLYING_TYPE (enumtype)) 13160 { 13161 tree tmp_value = build_expr_type_conversion (WANT_INT | WANT_ENUM, 13162 value, true); 13163 if (tmp_value) 13164 value = tmp_value; 13165 } 13166 else if (! INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value))) 13167 value = perform_implicit_conversion_flags 13168 (ENUM_UNDERLYING_TYPE (enumtype), value, tf_warning_or_error, 13169 LOOKUP_IMPLICIT | LOOKUP_NO_NARROWING); 13170 13171 if (value == error_mark_node) 13172 value = NULL_TREE; 13173 13174 if (value != NULL_TREE) 13175 { 13176 value = cxx_constant_value (value); 13177 13178 if (TREE_CODE (value) != INTEGER_CST 13179 || ! INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value))) 13180 { 13181 error ("enumerator value for %qD is not an integer constant", 13182 name); 13183 value = NULL_TREE; 13184 } 13185 } 13186 } 13187 13188 /* Default based on previous value. */ 13189 if (value == NULL_TREE) 13190 { 13191 if (TYPE_VALUES (enumtype)) 13192 { 13193 tree prev_value; 13194 bool overflowed; 13195 13196 /* C++03 7.2/4: If no initializer is specified for the first 13197 enumerator, the type is an unspecified integral 13198 type. Otherwise the type is the same as the type of the 13199 initializing value of the preceding enumerator unless the 13200 incremented value is not representable in that type, in 13201 which case the type is an unspecified integral type 13202 sufficient to contain the incremented value. */ 13203 prev_value = DECL_INITIAL (TREE_VALUE (TYPE_VALUES (enumtype))); 13204 if (error_operand_p (prev_value)) 13205 value = error_mark_node; 13206 else 13207 { 13208 tree type = TREE_TYPE (prev_value); 13209 signop sgn = TYPE_SIGN (type); 13210 widest_int wi = wi::add (wi::to_widest (prev_value), 1, sgn, 13211 &overflowed); 13212 if (!overflowed) 13213 { 13214 bool pos = !wi::neg_p (wi, sgn); 13215 if (!wi::fits_to_tree_p (wi, type)) 13216 { 13217 unsigned int itk; 13218 for (itk = itk_int; itk != itk_none; itk++) 13219 { 13220 type = integer_types[itk]; 13221 if (type != NULL_TREE 13222 && (pos || !TYPE_UNSIGNED (type)) 13223 && wi::fits_to_tree_p (wi, type)) 13224 break; 13225 } 13226 if (type && cxx_dialect < cxx11 13227 && itk > itk_unsigned_long) 13228 pedwarn (input_location, OPT_Wlong_long, pos ? "\ 13229 incremented enumerator value is too large for %<unsigned long%>" : "\ 13230 incremented enumerator value is too large for %<long%>"); 13231 } 13232 if (type == NULL_TREE) 13233 overflowed = true; 13234 else 13235 value = wide_int_to_tree (type, wi); 13236 } 13237 13238 if (overflowed) 13239 { 13240 error ("overflow in enumeration values at %qD", name); 13241 value = error_mark_node; 13242 } 13243 } 13244 } 13245 else 13246 value = integer_zero_node; 13247 } 13248 13249 /* Remove no-op casts from the value. */ 13250 STRIP_TYPE_NOPS (value); 13251 13252 /* If the underlying type of the enum is fixed, check whether 13253 the enumerator values fits in the underlying type. If it 13254 does not fit, the program is ill-formed [C++0x dcl.enum]. */ 13255 if (ENUM_UNDERLYING_TYPE (enumtype) 13256 && value 13257 && TREE_CODE (value) == INTEGER_CST) 13258 { 13259 if (!int_fits_type_p (value, ENUM_UNDERLYING_TYPE (enumtype))) 13260 error ("enumerator value %E is outside the range of underlying " 13261 "type %<%T%>", value, ENUM_UNDERLYING_TYPE (enumtype)); 13262 13263 /* Convert the value to the appropriate type. */ 13264 value = convert (ENUM_UNDERLYING_TYPE (enumtype), value); 13265 } 13266 } 13267 13268 /* C++ associates enums with global, function, or class declarations. */ 13269 context = current_scope (); 13270 13271 /* Build the actual enumeration constant. Note that the enumeration 13272 constants have the underlying type of the enum (if it is fixed) 13273 or the type of their initializer (if the underlying type of the 13274 enum is not fixed): 13275 13276 [ C++0x dcl.enum ] 13277 13278 If the underlying type is fixed, the type of each enumerator 13279 prior to the closing brace is the underlying type; if the 13280 initializing value of an enumerator cannot be represented by 13281 the underlying type, the program is ill-formed. If the 13282 underlying type is not fixed, the type of each enumerator is 13283 the type of its initializing value. 13284 13285 If the underlying type is not fixed, it will be computed by 13286 finish_enum and we will reset the type of this enumerator. Of 13287 course, if we're processing a template, there may be no value. */ 13288 type = value ? TREE_TYPE (value) : NULL_TREE; 13289 13290 decl = build_decl (loc, CONST_DECL, name, type); 13291 13292 DECL_CONTEXT (decl) = enumtype; 13293 TREE_CONSTANT (decl) = 1; 13294 TREE_READONLY (decl) = 1; 13295 DECL_INITIAL (decl) = value; 13296 13297 if (context && context == current_class_type && !SCOPED_ENUM_P (enumtype)) 13298 /* In something like `struct S { enum E { i = 7 }; };' we put `i' 13299 on the TYPE_FIELDS list for `S'. (That's so that you can say 13300 things like `S::i' later.) */ 13301 finish_member_declaration (decl); 13302 else 13303 pushdecl (decl); 13304 13305 /* Add this enumeration constant to the list for this type. */ 13306 TYPE_VALUES (enumtype) = tree_cons (name, decl, TYPE_VALUES (enumtype)); 13307 } 13308 13309 /* Look for an enumerator with the given NAME within the enumeration 13310 type ENUMTYPE. This routine is used primarily for qualified name 13311 lookup into an enumerator in C++0x, e.g., 13312 13313 enum class Color { Red, Green, Blue }; 13314 13315 Color color = Color::Red; 13316 13317 Returns the value corresponding to the enumerator, or 13318 NULL_TREE if no such enumerator was found. */ 13319 tree 13320 lookup_enumerator (tree enumtype, tree name) 13321 { 13322 tree e; 13323 gcc_assert (enumtype && TREE_CODE (enumtype) == ENUMERAL_TYPE); 13324 13325 e = purpose_member (name, TYPE_VALUES (enumtype)); 13326 return e? TREE_VALUE (e) : NULL_TREE; 13327 } 13328 13329 13330 /* We're defining DECL. Make sure that its type is OK. */ 13331 13332 static void 13333 check_function_type (tree decl, tree current_function_parms) 13334 { 13335 tree fntype = TREE_TYPE (decl); 13336 tree return_type = complete_type (TREE_TYPE (fntype)); 13337 13338 /* In a function definition, arg types must be complete. */ 13339 require_complete_types_for_parms (current_function_parms); 13340 13341 if (dependent_type_p (return_type) 13342 || type_uses_auto (return_type)) 13343 return; 13344 if (!COMPLETE_OR_VOID_TYPE_P (return_type) 13345 || (TYPE_FOR_JAVA (return_type) && MAYBE_CLASS_TYPE_P (return_type))) 13346 { 13347 tree args = TYPE_ARG_TYPES (fntype); 13348 13349 if (!COMPLETE_OR_VOID_TYPE_P (return_type)) 13350 error ("return type %q#T is incomplete", return_type); 13351 else 13352 error ("return type has Java class type %q#T", return_type); 13353 13354 /* Make it return void instead. */ 13355 if (TREE_CODE (fntype) == METHOD_TYPE) 13356 fntype = build_method_type_directly (TREE_TYPE (TREE_VALUE (args)), 13357 void_type_node, 13358 TREE_CHAIN (args)); 13359 else 13360 fntype = build_function_type (void_type_node, args); 13361 fntype 13362 = build_exception_variant (fntype, 13363 TYPE_RAISES_EXCEPTIONS (TREE_TYPE (decl))); 13364 fntype = (cp_build_type_attribute_variant 13365 (fntype, TYPE_ATTRIBUTES (TREE_TYPE (decl)))); 13366 TREE_TYPE (decl) = fntype; 13367 } 13368 else 13369 abstract_virtuals_error (decl, TREE_TYPE (fntype)); 13370 } 13371 13372 /* Create the FUNCTION_DECL for a function definition. 13373 DECLSPECS and DECLARATOR are the parts of the declaration; 13374 they describe the function's name and the type it returns, 13375 but twisted together in a fashion that parallels the syntax of C. 13376 13377 FLAGS is a bitwise or of SF_PRE_PARSED (indicating that the 13378 DECLARATOR is really the DECL for the function we are about to 13379 process and that DECLSPECS should be ignored), SF_INCLASS_INLINE 13380 indicating that the function is an inline defined in-class. 13381 13382 This function creates a binding context for the function body 13383 as well as setting up the FUNCTION_DECL in current_function_decl. 13384 13385 For C++, we must first check whether that datum makes any sense. 13386 For example, "class A local_a(1,2);" means that variable local_a 13387 is an aggregate of type A, which should have a constructor 13388 applied to it with the argument list [1, 2]. 13389 13390 On entry, DECL_INITIAL (decl1) should be NULL_TREE or error_mark_node, 13391 or may be a BLOCK if the function has been defined previously 13392 in this translation unit. On exit, DECL_INITIAL (decl1) will be 13393 error_mark_node if the function has never been defined, or 13394 a BLOCK if the function has been defined somewhere. */ 13395 13396 bool 13397 start_preparsed_function (tree decl1, tree attrs, int flags) 13398 { 13399 tree ctype = NULL_TREE; 13400 tree fntype; 13401 tree restype; 13402 int doing_friend = 0; 13403 cp_binding_level *bl; 13404 tree current_function_parms; 13405 struct c_fileinfo *finfo 13406 = get_fileinfo (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1))); 13407 bool honor_interface; 13408 13409 /* Sanity check. */ 13410 gcc_assert (VOID_TYPE_P (TREE_VALUE (void_list_node))); 13411 gcc_assert (TREE_CHAIN (void_list_node) == NULL_TREE); 13412 13413 fntype = TREE_TYPE (decl1); 13414 if (TREE_CODE (fntype) == METHOD_TYPE) 13415 ctype = TYPE_METHOD_BASETYPE (fntype); 13416 13417 /* ISO C++ 11.4/5. A friend function defined in a class is in 13418 the (lexical) scope of the class in which it is defined. */ 13419 if (!ctype && DECL_FRIEND_P (decl1)) 13420 { 13421 ctype = DECL_FRIEND_CONTEXT (decl1); 13422 13423 /* CTYPE could be null here if we're dealing with a template; 13424 for example, `inline friend float foo()' inside a template 13425 will have no CTYPE set. */ 13426 if (ctype && TREE_CODE (ctype) != RECORD_TYPE) 13427 ctype = NULL_TREE; 13428 else 13429 doing_friend = 1; 13430 } 13431 13432 if (DECL_DECLARED_INLINE_P (decl1) 13433 && lookup_attribute ("noinline", attrs)) 13434 warning (0, "inline function %q+D given attribute noinline", decl1); 13435 13436 /* Handle gnu_inline attribute. */ 13437 if (GNU_INLINE_P (decl1)) 13438 { 13439 DECL_EXTERNAL (decl1) = 1; 13440 DECL_NOT_REALLY_EXTERN (decl1) = 0; 13441 DECL_INTERFACE_KNOWN (decl1) = 1; 13442 DECL_DISREGARD_INLINE_LIMITS (decl1) = 1; 13443 } 13444 13445 if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl1)) 13446 /* This is a constructor, we must ensure that any default args 13447 introduced by this definition are propagated to the clones 13448 now. The clones are used directly in overload resolution. */ 13449 adjust_clone_args (decl1); 13450 13451 /* Sometimes we don't notice that a function is a static member, and 13452 build a METHOD_TYPE for it. Fix that up now. */ 13453 gcc_assert (!(ctype != NULL_TREE && DECL_STATIC_FUNCTION_P (decl1) 13454 && TREE_CODE (TREE_TYPE (decl1)) == METHOD_TYPE)); 13455 13456 /* Set up current_class_type, and enter the scope of the class, if 13457 appropriate. */ 13458 if (ctype) 13459 push_nested_class (ctype); 13460 else if (DECL_STATIC_FUNCTION_P (decl1)) 13461 push_nested_class (DECL_CONTEXT (decl1)); 13462 13463 /* Now that we have entered the scope of the class, we must restore 13464 the bindings for any template parameters surrounding DECL1, if it 13465 is an inline member template. (Order is important; consider the 13466 case where a template parameter has the same name as a field of 13467 the class.) It is not until after this point that 13468 PROCESSING_TEMPLATE_DECL is guaranteed to be set up correctly. */ 13469 if (flags & SF_INCLASS_INLINE) 13470 maybe_begin_member_template_processing (decl1); 13471 13472 /* Effective C++ rule 15. */ 13473 if (warn_ecpp 13474 && DECL_OVERLOADED_OPERATOR_P (decl1) == NOP_EXPR 13475 && VOID_TYPE_P (TREE_TYPE (fntype))) 13476 warning (OPT_Weffc__, "%<operator=%> should return a reference to %<*this%>"); 13477 13478 /* Make the init_value nonzero so pushdecl knows this is not tentative. 13479 error_mark_node is replaced below (in poplevel) with the BLOCK. */ 13480 if (!DECL_INITIAL (decl1)) 13481 DECL_INITIAL (decl1) = error_mark_node; 13482 13483 /* This function exists in static storage. 13484 (This does not mean `static' in the C sense!) */ 13485 TREE_STATIC (decl1) = 1; 13486 13487 /* We must call push_template_decl after current_class_type is set 13488 up. (If we are processing inline definitions after exiting a 13489 class scope, current_class_type will be NULL_TREE until set above 13490 by push_nested_class.) */ 13491 if (processing_template_decl) 13492 { 13493 tree newdecl1 = push_template_decl (decl1); 13494 if (newdecl1 == error_mark_node) 13495 { 13496 if (ctype || DECL_STATIC_FUNCTION_P (decl1)) 13497 pop_nested_class (); 13498 return false; 13499 } 13500 decl1 = newdecl1; 13501 } 13502 13503 /* We are now in the scope of the function being defined. */ 13504 current_function_decl = decl1; 13505 13506 /* Save the parm names or decls from this function's declarator 13507 where store_parm_decls will find them. */ 13508 current_function_parms = DECL_ARGUMENTS (decl1); 13509 13510 /* Make sure the parameter and return types are reasonable. When 13511 you declare a function, these types can be incomplete, but they 13512 must be complete when you define the function. */ 13513 check_function_type (decl1, current_function_parms); 13514 13515 /* Build the return declaration for the function. */ 13516 restype = TREE_TYPE (fntype); 13517 13518 if (DECL_RESULT (decl1) == NULL_TREE) 13519 { 13520 tree resdecl; 13521 13522 resdecl = build_decl (input_location, RESULT_DECL, 0, restype); 13523 DECL_ARTIFICIAL (resdecl) = 1; 13524 DECL_IGNORED_P (resdecl) = 1; 13525 DECL_RESULT (decl1) = resdecl; 13526 13527 cp_apply_type_quals_to_decl (cp_type_quals (restype), resdecl); 13528 } 13529 13530 /* Let the user know we're compiling this function. */ 13531 announce_function (decl1); 13532 13533 /* Record the decl so that the function name is defined. 13534 If we already have a decl for this name, and it is a FUNCTION_DECL, 13535 use the old decl. */ 13536 if (!processing_template_decl && !(flags & SF_PRE_PARSED)) 13537 { 13538 /* A specialization is not used to guide overload resolution. */ 13539 if (!DECL_FUNCTION_MEMBER_P (decl1) 13540 && !(DECL_USE_TEMPLATE (decl1) && 13541 PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl1)))) 13542 { 13543 tree olddecl = pushdecl (decl1); 13544 13545 if (olddecl == error_mark_node) 13546 /* If something went wrong when registering the declaration, 13547 use DECL1; we have to have a FUNCTION_DECL to use when 13548 parsing the body of the function. */ 13549 ; 13550 else 13551 { 13552 /* Otherwise, OLDDECL is either a previous declaration 13553 of the same function or DECL1 itself. */ 13554 13555 if (warn_missing_declarations 13556 && olddecl == decl1 13557 && !DECL_MAIN_P (decl1) 13558 && TREE_PUBLIC (decl1) 13559 && !DECL_DECLARED_INLINE_P (decl1)) 13560 { 13561 tree context; 13562 13563 /* Check whether DECL1 is in an anonymous 13564 namespace. */ 13565 for (context = DECL_CONTEXT (decl1); 13566 context; 13567 context = DECL_CONTEXT (context)) 13568 { 13569 if (TREE_CODE (context) == NAMESPACE_DECL 13570 && DECL_NAME (context) == NULL_TREE) 13571 break; 13572 } 13573 13574 if (context == NULL) 13575 warning (OPT_Wmissing_declarations, 13576 "no previous declaration for %q+D", decl1); 13577 } 13578 13579 decl1 = olddecl; 13580 } 13581 } 13582 else 13583 { 13584 /* We need to set the DECL_CONTEXT. */ 13585 if (!DECL_CONTEXT (decl1) && DECL_TEMPLATE_INFO (decl1)) 13586 DECL_CONTEXT (decl1) = DECL_CONTEXT (DECL_TI_TEMPLATE (decl1)); 13587 } 13588 fntype = TREE_TYPE (decl1); 13589 restype = TREE_TYPE (fntype); 13590 13591 /* If #pragma weak applies, mark the decl appropriately now. 13592 The pragma only applies to global functions. Because 13593 determining whether or not the #pragma applies involves 13594 computing the mangled name for the declaration, we cannot 13595 apply the pragma until after we have merged this declaration 13596 with any previous declarations; if the original declaration 13597 has a linkage specification, that specification applies to 13598 the definition as well, and may affect the mangled name. */ 13599 if (DECL_FILE_SCOPE_P (decl1)) 13600 maybe_apply_pragma_weak (decl1); 13601 } 13602 13603 /* Reset this in case the call to pushdecl changed it. */ 13604 current_function_decl = decl1; 13605 13606 gcc_assert (DECL_INITIAL (decl1)); 13607 13608 /* This function may already have been parsed, in which case just 13609 return; our caller will skip over the body without parsing. */ 13610 if (DECL_INITIAL (decl1) != error_mark_node) 13611 return true; 13612 13613 /* Initialize RTL machinery. We cannot do this until 13614 CURRENT_FUNCTION_DECL and DECL_RESULT are set up. We do this 13615 even when processing a template; this is how we get 13616 CFUN set up, and our per-function variables initialized. 13617 FIXME factor out the non-RTL stuff. */ 13618 bl = current_binding_level; 13619 allocate_struct_function (decl1, processing_template_decl); 13620 13621 /* Initialize the language data structures. Whenever we start 13622 a new function, we destroy temporaries in the usual way. */ 13623 cfun->language = ggc_cleared_alloc<language_function> (); 13624 current_stmt_tree ()->stmts_are_full_exprs_p = 1; 13625 current_binding_level = bl; 13626 13627 if (!processing_template_decl && type_uses_auto (restype)) 13628 { 13629 FNDECL_USED_AUTO (decl1) = true; 13630 current_function_auto_return_pattern = restype; 13631 } 13632 13633 /* Start the statement-tree, start the tree now. */ 13634 DECL_SAVED_TREE (decl1) = push_stmt_list (); 13635 13636 /* If we are (erroneously) defining a function that we have already 13637 defined before, wipe out what we knew before. */ 13638 if (!DECL_PENDING_INLINE_P (decl1)) 13639 DECL_SAVED_FUNCTION_DATA (decl1) = NULL; 13640 13641 if (ctype && !doing_friend && !DECL_STATIC_FUNCTION_P (decl1)) 13642 { 13643 /* We know that this was set up by `grokclassfn'. We do not 13644 wait until `store_parm_decls', since evil parse errors may 13645 never get us to that point. Here we keep the consistency 13646 between `current_class_type' and `current_class_ptr'. */ 13647 tree t = DECL_ARGUMENTS (decl1); 13648 13649 gcc_assert (t != NULL_TREE && TREE_CODE (t) == PARM_DECL); 13650 gcc_assert (TYPE_PTR_P (TREE_TYPE (t))); 13651 13652 cp_function_chain->x_current_class_ref 13653 = cp_build_indirect_ref (t, RO_NULL, tf_warning_or_error); 13654 /* Set this second to avoid shortcut in cp_build_indirect_ref. */ 13655 cp_function_chain->x_current_class_ptr = t; 13656 13657 /* Constructors and destructors need to know whether they're "in 13658 charge" of initializing virtual base classes. */ 13659 t = DECL_CHAIN (t); 13660 if (DECL_HAS_IN_CHARGE_PARM_P (decl1)) 13661 { 13662 current_in_charge_parm = t; 13663 t = DECL_CHAIN (t); 13664 } 13665 if (DECL_HAS_VTT_PARM_P (decl1)) 13666 { 13667 gcc_assert (DECL_NAME (t) == vtt_parm_identifier); 13668 current_vtt_parm = t; 13669 } 13670 } 13671 13672 honor_interface = (!DECL_TEMPLATE_INSTANTIATION (decl1) 13673 /* Implicitly-defined methods (like the 13674 destructor for a class in which no destructor 13675 is explicitly declared) must not be defined 13676 until their definition is needed. So, we 13677 ignore interface specifications for 13678 compiler-generated functions. */ 13679 && !DECL_ARTIFICIAL (decl1)); 13680 13681 if (processing_template_decl) 13682 /* Don't mess with interface flags. */; 13683 else if (DECL_INTERFACE_KNOWN (decl1)) 13684 { 13685 tree ctx = decl_function_context (decl1); 13686 13687 if (DECL_NOT_REALLY_EXTERN (decl1)) 13688 DECL_EXTERNAL (decl1) = 0; 13689 13690 if (ctx != NULL_TREE && vague_linkage_p (ctx)) 13691 /* This is a function in a local class in an extern inline 13692 or template function. */ 13693 comdat_linkage (decl1); 13694 } 13695 /* If this function belongs to an interface, it is public. 13696 If it belongs to someone else's interface, it is also external. 13697 This only affects inlines and template instantiations. */ 13698 else if (!finfo->interface_unknown && honor_interface) 13699 { 13700 if (DECL_DECLARED_INLINE_P (decl1) 13701 || DECL_TEMPLATE_INSTANTIATION (decl1)) 13702 { 13703 DECL_EXTERNAL (decl1) 13704 = (finfo->interface_only 13705 || (DECL_DECLARED_INLINE_P (decl1) 13706 && ! flag_implement_inlines 13707 && !DECL_VINDEX (decl1))); 13708 13709 /* For WIN32 we also want to put these in linkonce sections. */ 13710 maybe_make_one_only (decl1); 13711 } 13712 else 13713 DECL_EXTERNAL (decl1) = 0; 13714 DECL_INTERFACE_KNOWN (decl1) = 1; 13715 /* If this function is in an interface implemented in this file, 13716 make sure that the back end knows to emit this function 13717 here. */ 13718 if (!DECL_EXTERNAL (decl1)) 13719 mark_needed (decl1); 13720 } 13721 else if (finfo->interface_unknown && finfo->interface_only 13722 && honor_interface) 13723 { 13724 /* If MULTIPLE_SYMBOL_SPACES is defined and we saw a #pragma 13725 interface, we will have both finfo->interface_unknown and 13726 finfo->interface_only set. In that case, we don't want to 13727 use the normal heuristics because someone will supply a 13728 #pragma implementation elsewhere, and deducing it here would 13729 produce a conflict. */ 13730 comdat_linkage (decl1); 13731 DECL_EXTERNAL (decl1) = 0; 13732 DECL_INTERFACE_KNOWN (decl1) = 1; 13733 DECL_DEFER_OUTPUT (decl1) = 1; 13734 } 13735 else 13736 { 13737 /* This is a definition, not a reference. 13738 So clear DECL_EXTERNAL, unless this is a GNU extern inline. */ 13739 if (!GNU_INLINE_P (decl1)) 13740 DECL_EXTERNAL (decl1) = 0; 13741 13742 if ((DECL_DECLARED_INLINE_P (decl1) 13743 || DECL_TEMPLATE_INSTANTIATION (decl1)) 13744 && ! DECL_INTERFACE_KNOWN (decl1)) 13745 DECL_DEFER_OUTPUT (decl1) = 1; 13746 else 13747 DECL_INTERFACE_KNOWN (decl1) = 1; 13748 } 13749 13750 /* Determine the ELF visibility attribute for the function. We must not 13751 do this before calling "pushdecl", as we must allow "duplicate_decls" 13752 to merge any attributes appropriately. We also need to wait until 13753 linkage is set. */ 13754 if (!DECL_CLONED_FUNCTION_P (decl1)) 13755 determine_visibility (decl1); 13756 13757 if (!processing_template_decl) 13758 maybe_instantiate_noexcept (decl1); 13759 13760 begin_scope (sk_function_parms, decl1); 13761 13762 ++function_depth; 13763 13764 if (DECL_DESTRUCTOR_P (decl1) 13765 || (DECL_CONSTRUCTOR_P (decl1) 13766 && targetm.cxx.cdtor_returns_this ())) 13767 { 13768 cdtor_label = create_artificial_label (input_location); 13769 } 13770 13771 start_fname_decls (); 13772 13773 store_parm_decls (current_function_parms); 13774 13775 return true; 13776 } 13777 13778 13779 /* Like start_preparsed_function, except that instead of a 13780 FUNCTION_DECL, this function takes DECLSPECS and DECLARATOR. 13781 13782 Returns true on success. If the DECLARATOR is not suitable 13783 for a function, we return false, which tells the parser to 13784 skip the entire function. */ 13785 13786 bool 13787 start_function (cp_decl_specifier_seq *declspecs, 13788 const cp_declarator *declarator, 13789 tree attrs) 13790 { 13791 tree decl1; 13792 13793 decl1 = grokdeclarator (declarator, declspecs, FUNCDEF, 1, &attrs); 13794 if (decl1 == error_mark_node) 13795 return false; 13796 /* If the declarator is not suitable for a function definition, 13797 cause a syntax error. */ 13798 if (decl1 == NULL_TREE || TREE_CODE (decl1) != FUNCTION_DECL) 13799 { 13800 error ("invalid function declaration"); 13801 return false; 13802 } 13803 13804 if (DECL_MAIN_P (decl1)) 13805 /* main must return int. grokfndecl should have corrected it 13806 (and issued a diagnostic) if the user got it wrong. */ 13807 gcc_assert (same_type_p (TREE_TYPE (TREE_TYPE (decl1)), 13808 integer_type_node)); 13809 13810 return start_preparsed_function (decl1, attrs, /*flags=*/SF_DEFAULT); 13811 } 13812 13813 /* Returns true iff an EH_SPEC_BLOCK should be created in the body of 13814 FN. */ 13815 13816 static bool 13817 use_eh_spec_block (tree fn) 13818 { 13819 return (flag_exceptions && flag_enforce_eh_specs 13820 && !processing_template_decl 13821 && !type_throw_all_p (TREE_TYPE (fn)) 13822 /* We insert the EH_SPEC_BLOCK only in the original 13823 function; then, it is copied automatically to the 13824 clones. */ 13825 && !DECL_CLONED_FUNCTION_P (fn) 13826 /* Implicitly-generated constructors and destructors have 13827 exception specifications. However, those specifications 13828 are the union of the possible exceptions specified by the 13829 constructors/destructors for bases and members, so no 13830 unallowed exception will ever reach this function. By 13831 not creating the EH_SPEC_BLOCK we save a little memory, 13832 and we avoid spurious warnings about unreachable 13833 code. */ 13834 && !DECL_DEFAULTED_FN (fn)); 13835 } 13836 13837 /* Store the parameter declarations into the current function declaration. 13838 This is called after parsing the parameter declarations, before 13839 digesting the body of the function. 13840 13841 Also install to binding contour return value identifier, if any. */ 13842 13843 static void 13844 store_parm_decls (tree current_function_parms) 13845 { 13846 tree fndecl = current_function_decl; 13847 tree parm; 13848 13849 /* This is a chain of any other decls that came in among the parm 13850 declarations. If a parm is declared with enum {foo, bar} x; 13851 then CONST_DECLs for foo and bar are put here. */ 13852 tree nonparms = NULL_TREE; 13853 13854 if (current_function_parms) 13855 { 13856 /* This case is when the function was defined with an ANSI prototype. 13857 The parms already have decls, so we need not do anything here 13858 except record them as in effect 13859 and complain if any redundant old-style parm decls were written. */ 13860 13861 tree specparms = current_function_parms; 13862 tree next; 13863 13864 /* Must clear this because it might contain TYPE_DECLs declared 13865 at class level. */ 13866 current_binding_level->names = NULL; 13867 13868 /* If we're doing semantic analysis, then we'll call pushdecl 13869 for each of these. We must do them in reverse order so that 13870 they end in the correct forward order. */ 13871 specparms = nreverse (specparms); 13872 13873 for (parm = specparms; parm; parm = next) 13874 { 13875 next = DECL_CHAIN (parm); 13876 if (TREE_CODE (parm) == PARM_DECL) 13877 { 13878 if (DECL_NAME (parm) == NULL_TREE 13879 || !VOID_TYPE_P (parm)) 13880 pushdecl (parm); 13881 else 13882 error ("parameter %qD declared void", parm); 13883 } 13884 else 13885 { 13886 /* If we find an enum constant or a type tag, 13887 put it aside for the moment. */ 13888 TREE_CHAIN (parm) = NULL_TREE; 13889 nonparms = chainon (nonparms, parm); 13890 } 13891 } 13892 13893 /* Get the decls in their original chain order and record in the 13894 function. This is all and only the PARM_DECLs that were 13895 pushed into scope by the loop above. */ 13896 DECL_ARGUMENTS (fndecl) = getdecls (); 13897 } 13898 else 13899 DECL_ARGUMENTS (fndecl) = NULL_TREE; 13900 13901 /* Now store the final chain of decls for the arguments 13902 as the decl-chain of the current lexical scope. 13903 Put the enumerators in as well, at the front so that 13904 DECL_ARGUMENTS is not modified. */ 13905 current_binding_level->names = chainon (nonparms, DECL_ARGUMENTS (fndecl)); 13906 13907 if (use_eh_spec_block (current_function_decl)) 13908 current_eh_spec_block = begin_eh_spec_block (); 13909 } 13910 13911 13912 /* We have finished doing semantic analysis on DECL, but have not yet 13913 generated RTL for its body. Save away our current state, so that 13914 when we want to generate RTL later we know what to do. */ 13915 13916 static void 13917 save_function_data (tree decl) 13918 { 13919 struct language_function *f; 13920 13921 /* Save the language-specific per-function data so that we can 13922 get it back when we really expand this function. */ 13923 gcc_assert (!DECL_PENDING_INLINE_P (decl)); 13924 13925 /* Make a copy. */ 13926 f = ggc_alloc<language_function> (); 13927 memcpy (f, cp_function_chain, sizeof (struct language_function)); 13928 DECL_SAVED_FUNCTION_DATA (decl) = f; 13929 13930 /* Clear out the bits we don't need. */ 13931 f->base.x_stmt_tree.x_cur_stmt_list = NULL; 13932 f->bindings = NULL; 13933 f->x_local_names = NULL; 13934 f->base.local_typedefs = NULL; 13935 } 13936 13937 13938 /* Set the return value of the constructor (if present). */ 13939 13940 static void 13941 finish_constructor_body (void) 13942 { 13943 tree val; 13944 tree exprstmt; 13945 13946 if (targetm.cxx.cdtor_returns_this () 13947 && (! TYPE_FOR_JAVA (current_class_type))) 13948 { 13949 /* Any return from a constructor will end up here. */ 13950 add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label)); 13951 13952 val = DECL_ARGUMENTS (current_function_decl); 13953 val = build2 (MODIFY_EXPR, TREE_TYPE (val), 13954 DECL_RESULT (current_function_decl), val); 13955 /* Return the address of the object. */ 13956 exprstmt = build_stmt (input_location, RETURN_EXPR, val); 13957 add_stmt (exprstmt); 13958 } 13959 } 13960 13961 /* Do all the processing for the beginning of a destructor; set up the 13962 vtable pointers and cleanups for bases and members. */ 13963 13964 static void 13965 begin_destructor_body (void) 13966 { 13967 tree compound_stmt; 13968 13969 /* If the CURRENT_CLASS_TYPE is incomplete, we will have already 13970 issued an error message. We still want to try to process the 13971 body of the function, but initialize_vtbl_ptrs will crash if 13972 TYPE_BINFO is NULL. */ 13973 if (COMPLETE_TYPE_P (current_class_type)) 13974 { 13975 compound_stmt = begin_compound_stmt (0); 13976 /* Make all virtual function table pointers in non-virtual base 13977 classes point to CURRENT_CLASS_TYPE's virtual function 13978 tables. */ 13979 initialize_vtbl_ptrs (current_class_ptr); 13980 finish_compound_stmt (compound_stmt); 13981 13982 if (flag_lifetime_dse 13983 /* Clobbering an empty base is harmful if it overlays real data. */ 13984 && !is_empty_class (current_class_type)) 13985 { 13986 /* Insert a cleanup to let the back end know that the object is dead 13987 when we exit the destructor, either normally or via exception. */ 13988 tree btype = CLASSTYPE_AS_BASE (current_class_type); 13989 tree clobber = build_constructor (btype, NULL); 13990 TREE_THIS_VOLATILE (clobber) = true; 13991 tree bref = build_nop (build_reference_type (btype), 13992 current_class_ptr); 13993 bref = convert_from_reference (bref); 13994 tree exprstmt = build2 (MODIFY_EXPR, btype, bref, clobber); 13995 finish_decl_cleanup (NULL_TREE, exprstmt); 13996 } 13997 13998 /* And insert cleanups for our bases and members so that they 13999 will be properly destroyed if we throw. */ 14000 push_base_cleanups (); 14001 } 14002 } 14003 14004 /* At the end of every destructor we generate code to delete the object if 14005 necessary. Do that now. */ 14006 14007 static void 14008 finish_destructor_body (void) 14009 { 14010 tree exprstmt; 14011 14012 /* Any return from a destructor will end up here; that way all base 14013 and member cleanups will be run when the function returns. */ 14014 add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label)); 14015 14016 /* In a virtual destructor, we must call delete. */ 14017 if (DECL_VIRTUAL_P (current_function_decl)) 14018 { 14019 tree if_stmt; 14020 tree virtual_size = cxx_sizeof (current_class_type); 14021 14022 /* [class.dtor] 14023 14024 At the point of definition of a virtual destructor (including 14025 an implicit definition), non-placement operator delete shall 14026 be looked up in the scope of the destructor's class and if 14027 found shall be accessible and unambiguous. */ 14028 exprstmt = build_op_delete_call (DELETE_EXPR, current_class_ptr, 14029 virtual_size, 14030 /*global_p=*/false, 14031 /*placement=*/NULL_TREE, 14032 /*alloc_fn=*/NULL_TREE, 14033 tf_warning_or_error); 14034 14035 if_stmt = begin_if_stmt (); 14036 finish_if_stmt_cond (build2 (BIT_AND_EXPR, integer_type_node, 14037 current_in_charge_parm, 14038 integer_one_node), 14039 if_stmt); 14040 finish_expr_stmt (exprstmt); 14041 finish_then_clause (if_stmt); 14042 finish_if_stmt (if_stmt); 14043 } 14044 14045 if (targetm.cxx.cdtor_returns_this ()) 14046 { 14047 tree val; 14048 14049 val = DECL_ARGUMENTS (current_function_decl); 14050 val = build2 (MODIFY_EXPR, TREE_TYPE (val), 14051 DECL_RESULT (current_function_decl), val); 14052 /* Return the address of the object. */ 14053 exprstmt = build_stmt (input_location, RETURN_EXPR, val); 14054 add_stmt (exprstmt); 14055 } 14056 } 14057 14058 /* Do the necessary processing for the beginning of a function body, which 14059 in this case includes member-initializers, but not the catch clauses of 14060 a function-try-block. Currently, this means opening a binding level 14061 for the member-initializers (in a ctor), member cleanups (in a dtor), 14062 and capture proxies (in a lambda operator()). */ 14063 14064 tree 14065 begin_function_body (void) 14066 { 14067 tree stmt; 14068 14069 if (! FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)) 14070 return NULL_TREE; 14071 14072 if (processing_template_decl) 14073 /* Do nothing now. */; 14074 else 14075 /* Always keep the BLOCK node associated with the outermost pair of 14076 curly braces of a function. These are needed for correct 14077 operation of dwarfout.c. */ 14078 keep_next_level (true); 14079 14080 stmt = begin_compound_stmt (BCS_FN_BODY); 14081 14082 if (processing_template_decl) 14083 /* Do nothing now. */; 14084 else if (DECL_DESTRUCTOR_P (current_function_decl)) 14085 begin_destructor_body (); 14086 14087 return stmt; 14088 } 14089 14090 /* Do the processing for the end of a function body. Currently, this means 14091 closing out the cleanups for fully-constructed bases and members, and in 14092 the case of the destructor, deleting the object if desired. Again, this 14093 is only meaningful for [cd]tors, since they are the only functions where 14094 there is a significant distinction between the main body and any 14095 function catch clauses. Handling, say, main() return semantics here 14096 would be wrong, as flowing off the end of a function catch clause for 14097 main() would also need to return 0. */ 14098 14099 void 14100 finish_function_body (tree compstmt) 14101 { 14102 if (compstmt == NULL_TREE) 14103 return; 14104 14105 /* Close the block. */ 14106 finish_compound_stmt (compstmt); 14107 14108 if (processing_template_decl) 14109 /* Do nothing now. */; 14110 else if (DECL_CONSTRUCTOR_P (current_function_decl)) 14111 finish_constructor_body (); 14112 else if (DECL_DESTRUCTOR_P (current_function_decl)) 14113 finish_destructor_body (); 14114 } 14115 14116 /* Given a function, returns the BLOCK corresponding to the outermost level 14117 of curly braces, skipping the artificial block created for constructor 14118 initializers. */ 14119 14120 tree 14121 outer_curly_brace_block (tree fndecl) 14122 { 14123 tree block = DECL_INITIAL (fndecl); 14124 if (BLOCK_OUTER_CURLY_BRACE_P (block)) 14125 return block; 14126 block = BLOCK_SUBBLOCKS (block); 14127 if (BLOCK_OUTER_CURLY_BRACE_P (block)) 14128 return block; 14129 block = BLOCK_SUBBLOCKS (block); 14130 gcc_assert (BLOCK_OUTER_CURLY_BRACE_P (block)); 14131 return block; 14132 } 14133 14134 /* If FNDECL is a class's key method, add the class to the list of 14135 keyed classes that should be emitted. */ 14136 14137 static void 14138 record_key_method_defined (tree fndecl) 14139 { 14140 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fndecl) 14141 && DECL_VIRTUAL_P (fndecl) 14142 && !processing_template_decl) 14143 { 14144 tree fnclass = DECL_CONTEXT (fndecl); 14145 if (fndecl == CLASSTYPE_KEY_METHOD (fnclass)) 14146 keyed_classes = tree_cons (NULL_TREE, fnclass, keyed_classes); 14147 } 14148 } 14149 14150 /* Subroutine of finish_function. 14151 Save the body of constexpr functions for possible 14152 future compile time evaluation. */ 14153 14154 static void 14155 maybe_save_function_definition (tree fun) 14156 { 14157 if (!processing_template_decl 14158 && DECL_DECLARED_CONSTEXPR_P (fun) 14159 && !cp_function_chain->invalid_constexpr 14160 && !DECL_CLONED_FUNCTION_P (fun)) 14161 register_constexpr_fundef (fun, DECL_SAVED_TREE (fun)); 14162 } 14163 14164 /* Finish up a function declaration and compile that function 14165 all the way to assembler language output. The free the storage 14166 for the function definition. 14167 14168 FLAGS is a bitwise or of the following values: 14169 2 - INCLASS_INLINE 14170 We just finished processing the body of an in-class inline 14171 function definition. (This processing will have taken place 14172 after the class definition is complete.) */ 14173 14174 tree 14175 finish_function (int flags) 14176 { 14177 tree fndecl = current_function_decl; 14178 tree fntype, ctype = NULL_TREE; 14179 int inclass_inline = (flags & 2) != 0; 14180 14181 /* When we get some parse errors, we can end up without a 14182 current_function_decl, so cope. */ 14183 if (fndecl == NULL_TREE) 14184 return error_mark_node; 14185 14186 if (c_dialect_objc ()) 14187 objc_finish_function (); 14188 14189 gcc_assert (!defer_mark_used_calls); 14190 defer_mark_used_calls = true; 14191 14192 record_key_method_defined (fndecl); 14193 14194 fntype = TREE_TYPE (fndecl); 14195 14196 /* TREE_READONLY (fndecl) = 1; 14197 This caused &foo to be of type ptr-to-const-function 14198 which then got a warning when stored in a ptr-to-function variable. */ 14199 14200 gcc_assert (building_stmt_list_p ()); 14201 /* The current function is being defined, so its DECL_INITIAL should 14202 be set, and unless there's a multiple definition, it should be 14203 error_mark_node. */ 14204 gcc_assert (DECL_INITIAL (fndecl) == error_mark_node); 14205 14206 /* For a cloned function, we've already got all the code we need; 14207 there's no need to add any extra bits. */ 14208 if (!DECL_CLONED_FUNCTION_P (fndecl)) 14209 { 14210 /* Make it so that `main' always returns 0 by default. */ 14211 if (DECL_MAIN_P (current_function_decl)) 14212 finish_return_stmt (integer_zero_node); 14213 14214 if (use_eh_spec_block (current_function_decl)) 14215 finish_eh_spec_block (TYPE_RAISES_EXCEPTIONS 14216 (TREE_TYPE (current_function_decl)), 14217 current_eh_spec_block); 14218 } 14219 14220 /* If we're saving up tree structure, tie off the function now. */ 14221 DECL_SAVED_TREE (fndecl) = pop_stmt_list (DECL_SAVED_TREE (fndecl)); 14222 14223 if (fn_contains_cilk_spawn_p (cfun) && !processing_template_decl) 14224 cfun->cilk_frame_decl = insert_cilk_frame (fndecl); 14225 14226 finish_fname_decls (); 14227 14228 /* If this function can't throw any exceptions, remember that. */ 14229 if (!processing_template_decl 14230 && !cp_function_chain->can_throw 14231 && !flag_non_call_exceptions 14232 && !decl_replaceable_p (fndecl)) 14233 TREE_NOTHROW (fndecl) = 1; 14234 14235 /* This must come after expand_function_end because cleanups might 14236 have declarations (from inline functions) that need to go into 14237 this function's blocks. */ 14238 14239 /* If the current binding level isn't the outermost binding level 14240 for this function, either there is a bug, or we have experienced 14241 syntax errors and the statement tree is malformed. */ 14242 if (current_binding_level->kind != sk_function_parms) 14243 { 14244 /* Make sure we have already experienced errors. */ 14245 gcc_assert (errorcount); 14246 14247 /* Throw away the broken statement tree and extra binding 14248 levels. */ 14249 DECL_SAVED_TREE (fndecl) = alloc_stmt_list (); 14250 14251 while (current_binding_level->kind != sk_function_parms) 14252 { 14253 if (current_binding_level->kind == sk_class) 14254 pop_nested_class (); 14255 else 14256 poplevel (0, 0, 0); 14257 } 14258 } 14259 poplevel (1, 0, 1); 14260 14261 /* Statements should always be full-expressions at the outermost set 14262 of curly braces for a function. */ 14263 gcc_assert (stmts_are_full_exprs_p ()); 14264 14265 /* If there are no return statements in a function with auto return type, 14266 the return type is void. But if the declared type is something like 14267 auto*, this is an error. */ 14268 if (!processing_template_decl && FNDECL_USED_AUTO (fndecl) 14269 && TREE_TYPE (fntype) == current_function_auto_return_pattern) 14270 { 14271 if (!is_auto (current_function_auto_return_pattern) 14272 && !current_function_returns_value && !current_function_returns_null) 14273 { 14274 error ("no return statements in function returning %qT", 14275 current_function_auto_return_pattern); 14276 inform (input_location, "only plain %<auto%> return type can be " 14277 "deduced to %<void%>"); 14278 } 14279 apply_deduced_return_type (fndecl, void_type_node); 14280 fntype = TREE_TYPE (fndecl); 14281 } 14282 14283 /* Save constexpr function body before it gets munged by 14284 the NRV transformation. */ 14285 maybe_save_function_definition (fndecl); 14286 14287 /* Set up the named return value optimization, if we can. Candidate 14288 variables are selected in check_return_expr. */ 14289 if (current_function_return_value) 14290 { 14291 tree r = current_function_return_value; 14292 tree outer; 14293 14294 if (r != error_mark_node 14295 /* This is only worth doing for fns that return in memory--and 14296 simpler, since we don't have to worry about promoted modes. */ 14297 && aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl)), fndecl) 14298 /* Only allow this for variables declared in the outer scope of 14299 the function so we know that their lifetime always ends with a 14300 return; see g++.dg/opt/nrv6.C. We could be more flexible if 14301 we were to do this optimization in tree-ssa. */ 14302 && (outer = outer_curly_brace_block (fndecl)) 14303 && chain_member (r, BLOCK_VARS (outer))) 14304 finalize_nrv (&DECL_SAVED_TREE (fndecl), r, DECL_RESULT (fndecl)); 14305 14306 current_function_return_value = NULL_TREE; 14307 } 14308 14309 /* Remember that we were in class scope. */ 14310 if (current_class_name) 14311 ctype = current_class_type; 14312 14313 /* Must mark the RESULT_DECL as being in this function. */ 14314 DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl; 14315 14316 /* Set the BLOCK_SUPERCONTEXT of the outermost function scope to point 14317 to the FUNCTION_DECL node itself. */ 14318 BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl; 14319 14320 /* Save away current state, if appropriate. */ 14321 if (!processing_template_decl) 14322 save_function_data (fndecl); 14323 14324 /* Complain if there's just no return statement. */ 14325 if (warn_return_type 14326 && !VOID_TYPE_P (TREE_TYPE (fntype)) 14327 && !dependent_type_p (TREE_TYPE (fntype)) 14328 && !current_function_returns_value && !current_function_returns_null 14329 /* Don't complain if we abort or throw. */ 14330 && !current_function_returns_abnormally 14331 /* Don't complain if there's an infinite loop. */ 14332 && !current_function_infinite_loop 14333 /* Don't complain if we are declared noreturn. */ 14334 && !TREE_THIS_VOLATILE (fndecl) 14335 && !DECL_NAME (DECL_RESULT (fndecl)) 14336 && !TREE_NO_WARNING (fndecl) 14337 /* Structor return values (if any) are set by the compiler. */ 14338 && !DECL_CONSTRUCTOR_P (fndecl) 14339 && !DECL_DESTRUCTOR_P (fndecl) 14340 && targetm.warn_func_return (fndecl)) 14341 { 14342 warning (OPT_Wreturn_type, 14343 "no return statement in function returning non-void"); 14344 TREE_NO_WARNING (fndecl) = 1; 14345 } 14346 14347 /* Store the end of the function, so that we get good line number 14348 info for the epilogue. */ 14349 cfun->function_end_locus = input_location; 14350 14351 /* Complain about parameters that are only set, but never otherwise used. */ 14352 if (warn_unused_but_set_parameter 14353 && !processing_template_decl 14354 && errorcount == unused_but_set_errorcount 14355 && !DECL_CLONED_FUNCTION_P (fndecl)) 14356 { 14357 tree decl; 14358 14359 for (decl = DECL_ARGUMENTS (fndecl); 14360 decl; 14361 decl = DECL_CHAIN (decl)) 14362 if (TREE_USED (decl) 14363 && TREE_CODE (decl) == PARM_DECL 14364 && !DECL_READ_P (decl) 14365 && DECL_NAME (decl) 14366 && !DECL_ARTIFICIAL (decl) 14367 && !TREE_NO_WARNING (decl) 14368 && !DECL_IN_SYSTEM_HEADER (decl) 14369 && TREE_TYPE (decl) != error_mark_node 14370 && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE 14371 && (!CLASS_TYPE_P (TREE_TYPE (decl)) 14372 || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))) 14373 warning (OPT_Wunused_but_set_parameter, 14374 "parameter %q+D set but not used", decl); 14375 unused_but_set_errorcount = errorcount; 14376 } 14377 14378 /* Complain about locally defined typedefs that are not used in this 14379 function. */ 14380 maybe_warn_unused_local_typedefs (); 14381 14382 /* Genericize before inlining. */ 14383 if (!processing_template_decl) 14384 { 14385 struct language_function *f = DECL_SAVED_FUNCTION_DATA (fndecl); 14386 invoke_plugin_callbacks (PLUGIN_PRE_GENERICIZE, fndecl); 14387 cp_genericize (fndecl); 14388 /* Clear out the bits we don't need. */ 14389 f->x_current_class_ptr = NULL; 14390 f->x_current_class_ref = NULL; 14391 f->x_eh_spec_block = NULL; 14392 f->x_in_charge_parm = NULL; 14393 f->x_vtt_parm = NULL; 14394 f->x_return_value = NULL; 14395 f->bindings = NULL; 14396 f->extern_decl_map = NULL; 14397 f->infinite_loops = NULL; 14398 } 14399 /* Clear out the bits we don't need. */ 14400 local_names = NULL; 14401 14402 /* We're leaving the context of this function, so zap cfun. It's still in 14403 DECL_STRUCT_FUNCTION, and we'll restore it in tree_rest_of_compilation. */ 14404 set_cfun (NULL); 14405 current_function_decl = NULL; 14406 14407 /* If this is an in-class inline definition, we may have to pop the 14408 bindings for the template parameters that we added in 14409 maybe_begin_member_template_processing when start_function was 14410 called. */ 14411 if (inclass_inline) 14412 maybe_end_member_template_processing (); 14413 14414 /* Leave the scope of the class. */ 14415 if (ctype) 14416 pop_nested_class (); 14417 14418 --function_depth; 14419 14420 /* Clean up. */ 14421 current_function_decl = NULL_TREE; 14422 14423 defer_mark_used_calls = false; 14424 if (deferred_mark_used_calls) 14425 { 14426 unsigned int i; 14427 tree decl; 14428 14429 FOR_EACH_VEC_SAFE_ELT (deferred_mark_used_calls, i, decl) 14430 mark_used (decl); 14431 vec_free (deferred_mark_used_calls); 14432 } 14433 14434 return fndecl; 14435 } 14436 14437 /* Create the FUNCTION_DECL for a function definition. 14438 DECLSPECS and DECLARATOR are the parts of the declaration; 14439 they describe the return type and the name of the function, 14440 but twisted together in a fashion that parallels the syntax of C. 14441 14442 This function creates a binding context for the function body 14443 as well as setting up the FUNCTION_DECL in current_function_decl. 14444 14445 Returns a FUNCTION_DECL on success. 14446 14447 If the DECLARATOR is not suitable for a function (it defines a datum 14448 instead), we return 0, which tells yyparse to report a parse error. 14449 14450 May return void_type_node indicating that this method is actually 14451 a friend. See grokfield for more details. 14452 14453 Came here with a `.pushlevel' . 14454 14455 DO NOT MAKE ANY CHANGES TO THIS CODE WITHOUT MAKING CORRESPONDING 14456 CHANGES TO CODE IN `grokfield'. */ 14457 14458 tree 14459 grokmethod (cp_decl_specifier_seq *declspecs, 14460 const cp_declarator *declarator, tree attrlist) 14461 { 14462 tree fndecl = grokdeclarator (declarator, declspecs, MEMFUNCDEF, 0, 14463 &attrlist); 14464 14465 if (fndecl == error_mark_node) 14466 return error_mark_node; 14467 14468 if (fndecl == NULL || TREE_CODE (fndecl) != FUNCTION_DECL) 14469 { 14470 error ("invalid member function declaration"); 14471 return error_mark_node; 14472 } 14473 14474 if (attrlist) 14475 cplus_decl_attributes (&fndecl, attrlist, 0); 14476 14477 /* Pass friends other than inline friend functions back. */ 14478 if (fndecl == void_type_node) 14479 return fndecl; 14480 14481 if (DECL_IN_AGGR_P (fndecl)) 14482 { 14483 if (DECL_CLASS_SCOPE_P (fndecl)) 14484 error ("%qD is already defined in class %qT", fndecl, 14485 DECL_CONTEXT (fndecl)); 14486 return error_mark_node; 14487 } 14488 14489 check_template_shadow (fndecl); 14490 14491 DECL_COMDAT (fndecl) = 1; 14492 DECL_DECLARED_INLINE_P (fndecl) = 1; 14493 DECL_NO_INLINE_WARNING_P (fndecl) = 1; 14494 14495 /* We process method specializations in finish_struct_1. */ 14496 if (processing_template_decl && !DECL_TEMPLATE_SPECIALIZATION (fndecl)) 14497 { 14498 fndecl = push_template_decl (fndecl); 14499 if (fndecl == error_mark_node) 14500 return fndecl; 14501 } 14502 14503 if (! DECL_FRIEND_P (fndecl)) 14504 { 14505 if (DECL_CHAIN (fndecl)) 14506 { 14507 fndecl = copy_node (fndecl); 14508 TREE_CHAIN (fndecl) = NULL_TREE; 14509 } 14510 } 14511 14512 cp_finish_decl (fndecl, NULL_TREE, false, NULL_TREE, 0); 14513 14514 DECL_IN_AGGR_P (fndecl) = 1; 14515 return fndecl; 14516 } 14517 14518 14519 /* VAR is a VAR_DECL. If its type is incomplete, remember VAR so that 14520 we can lay it out later, when and if its type becomes complete. 14521 14522 Also handle constexpr variables where the initializer involves 14523 an unlowered PTRMEM_CST because the class isn't complete yet. */ 14524 14525 void 14526 maybe_register_incomplete_var (tree var) 14527 { 14528 gcc_assert (VAR_P (var)); 14529 14530 /* Keep track of variables with incomplete types. */ 14531 if (!processing_template_decl && TREE_TYPE (var) != error_mark_node 14532 && DECL_EXTERNAL (var)) 14533 { 14534 tree inner_type = TREE_TYPE (var); 14535 14536 while (TREE_CODE (inner_type) == ARRAY_TYPE) 14537 inner_type = TREE_TYPE (inner_type); 14538 inner_type = TYPE_MAIN_VARIANT (inner_type); 14539 14540 if ((!COMPLETE_TYPE_P (inner_type) && CLASS_TYPE_P (inner_type)) 14541 /* RTTI TD entries are created while defining the type_info. */ 14542 || (TYPE_LANG_SPECIFIC (inner_type) 14543 && TYPE_BEING_DEFINED (inner_type))) 14544 { 14545 incomplete_var iv = {var, inner_type}; 14546 vec_safe_push (incomplete_vars, iv); 14547 } 14548 else if (!(DECL_LANG_SPECIFIC (var) && DECL_TEMPLATE_INFO (var)) 14549 && decl_constant_var_p (var) 14550 && (TYPE_PTRMEM_P (inner_type) || CLASS_TYPE_P (inner_type))) 14551 { 14552 /* When the outermost open class is complete we can resolve any 14553 pointers-to-members. */ 14554 tree context = outermost_open_class (); 14555 incomplete_var iv = {var, context}; 14556 vec_safe_push (incomplete_vars, iv); 14557 } 14558 } 14559 } 14560 14561 /* Called when a class type (given by TYPE) is defined. If there are 14562 any existing VAR_DECLs whose type has been completed by this 14563 declaration, update them now. */ 14564 14565 void 14566 complete_vars (tree type) 14567 { 14568 unsigned ix; 14569 incomplete_var *iv; 14570 14571 for (ix = 0; vec_safe_iterate (incomplete_vars, ix, &iv); ) 14572 { 14573 if (same_type_p (type, iv->incomplete_type)) 14574 { 14575 tree var = iv->decl; 14576 tree type = TREE_TYPE (var); 14577 14578 if (type != error_mark_node 14579 && (TYPE_MAIN_VARIANT (strip_array_types (type)) 14580 == iv->incomplete_type)) 14581 { 14582 /* Complete the type of the variable. The VAR_DECL itself 14583 will be laid out in expand_expr. */ 14584 complete_type (type); 14585 cp_apply_type_quals_to_decl (cp_type_quals (type), var); 14586 } 14587 14588 if (DECL_INITIAL (var) 14589 && decl_constant_var_p (var)) 14590 DECL_INITIAL (var) = cplus_expand_constant (DECL_INITIAL (var)); 14591 14592 /* Remove this entry from the list. */ 14593 incomplete_vars->unordered_remove (ix); 14594 } 14595 else 14596 ix++; 14597 } 14598 14599 /* Check for pending declarations which may have abstract type. */ 14600 complete_type_check_abstract (type); 14601 } 14602 14603 /* If DECL is of a type which needs a cleanup, build and return an 14604 expression to perform that cleanup here. Return NULL_TREE if no 14605 cleanup need be done. DECL can also be a _REF when called from 14606 split_nonconstant_init_1. */ 14607 14608 tree 14609 cxx_maybe_build_cleanup (tree decl, tsubst_flags_t complain) 14610 { 14611 tree type; 14612 tree attr; 14613 tree cleanup; 14614 14615 /* Assume no cleanup is required. */ 14616 cleanup = NULL_TREE; 14617 14618 if (error_operand_p (decl)) 14619 return cleanup; 14620 14621 /* Handle "__attribute__((cleanup))". We run the cleanup function 14622 before the destructor since the destructor is what actually 14623 terminates the lifetime of the object. */ 14624 if (DECL_P (decl)) 14625 attr = lookup_attribute ("cleanup", DECL_ATTRIBUTES (decl)); 14626 else 14627 attr = NULL_TREE; 14628 if (attr) 14629 { 14630 tree id; 14631 tree fn; 14632 tree arg; 14633 14634 /* Get the name specified by the user for the cleanup function. */ 14635 id = TREE_VALUE (TREE_VALUE (attr)); 14636 /* Look up the name to find the cleanup function to call. It is 14637 important to use lookup_name here because that is what is 14638 used in c-common.c:handle_cleanup_attribute when performing 14639 initial checks on the attribute. Note that those checks 14640 include ensuring that the function found is not an overloaded 14641 function, or an object with an overloaded call operator, 14642 etc.; we can rely on the fact that the function found is an 14643 ordinary FUNCTION_DECL. */ 14644 fn = lookup_name (id); 14645 arg = build_address (decl); 14646 if (!mark_used (decl, complain) && !(complain & tf_error)) 14647 return error_mark_node; 14648 cleanup = cp_build_function_call_nary (fn, complain, arg, NULL_TREE); 14649 if (cleanup == error_mark_node) 14650 return error_mark_node; 14651 } 14652 /* Handle ordinary C++ destructors. */ 14653 type = TREE_TYPE (decl); 14654 if (type_build_dtor_call (type)) 14655 { 14656 int flags = LOOKUP_NORMAL|LOOKUP_NONVIRTUAL|LOOKUP_DESTRUCTOR; 14657 tree addr; 14658 tree call; 14659 14660 if (TREE_CODE (type) == ARRAY_TYPE) 14661 addr = decl; 14662 else 14663 addr = build_address (decl); 14664 14665 call = build_delete (TREE_TYPE (addr), addr, 14666 sfk_complete_destructor, flags, 0, complain); 14667 if (call == error_mark_node) 14668 cleanup = error_mark_node; 14669 else if (TYPE_HAS_TRIVIAL_DESTRUCTOR (type)) 14670 /* Discard the call. */; 14671 else if (cleanup) 14672 cleanup = cp_build_compound_expr (cleanup, call, complain); 14673 else 14674 cleanup = call; 14675 } 14676 14677 /* build_delete sets the location of the destructor call to the 14678 current location, even though the destructor is going to be 14679 called later, at the end of the current scope. This can lead to 14680 a "jumpy" behaviour for users of debuggers when they step around 14681 the end of the block. So let's unset the location of the 14682 destructor call instead. */ 14683 if (cleanup != NULL && EXPR_P (cleanup)) 14684 SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION); 14685 14686 if (cleanup 14687 && DECL_P (decl) 14688 && !lookup_attribute ("warn_unused", TYPE_ATTRIBUTES (TREE_TYPE (decl))) 14689 /* Treat objects with destructors as used; the destructor may do 14690 something substantive. */ 14691 && !mark_used (decl, complain) && !(complain & tf_error)) 14692 return error_mark_node; 14693 14694 return cleanup; 14695 } 14696 14697 14698 /* Return the FUNCTION_TYPE that corresponds to MEMFNTYPE, which can be a 14699 FUNCTION_DECL, METHOD_TYPE, FUNCTION_TYPE, pointer or reference to 14700 METHOD_TYPE or FUNCTION_TYPE, or pointer to member function. */ 14701 14702 tree 14703 static_fn_type (tree memfntype) 14704 { 14705 tree fntype; 14706 tree args; 14707 14708 if (TYPE_PTRMEMFUNC_P (memfntype)) 14709 memfntype = TYPE_PTRMEMFUNC_FN_TYPE (memfntype); 14710 if (POINTER_TYPE_P (memfntype) 14711 || TREE_CODE (memfntype) == FUNCTION_DECL) 14712 memfntype = TREE_TYPE (memfntype); 14713 if (TREE_CODE (memfntype) == FUNCTION_TYPE) 14714 return memfntype; 14715 gcc_assert (TREE_CODE (memfntype) == METHOD_TYPE); 14716 args = TYPE_ARG_TYPES (memfntype); 14717 cp_ref_qualifier rqual = type_memfn_rqual (memfntype); 14718 fntype = build_function_type (TREE_TYPE (memfntype), TREE_CHAIN (args)); 14719 fntype = apply_memfn_quals (fntype, type_memfn_quals (memfntype), rqual); 14720 fntype = (cp_build_type_attribute_variant 14721 (fntype, TYPE_ATTRIBUTES (memfntype))); 14722 fntype = (build_exception_variant 14723 (fntype, TYPE_RAISES_EXCEPTIONS (memfntype))); 14724 if (TYPE_HAS_LATE_RETURN_TYPE (memfntype)) 14725 TYPE_HAS_LATE_RETURN_TYPE (fntype) = 1; 14726 return fntype; 14727 } 14728 14729 /* DECL was originally constructed as a non-static member function, 14730 but turned out to be static. Update it accordingly. */ 14731 14732 void 14733 revert_static_member_fn (tree decl) 14734 { 14735 tree stype = static_fn_type (decl); 14736 cp_cv_quals quals = type_memfn_quals (stype); 14737 cp_ref_qualifier rqual = type_memfn_rqual (stype); 14738 14739 if (quals != TYPE_UNQUALIFIED || rqual != REF_QUAL_NONE) 14740 stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED, REF_QUAL_NONE); 14741 14742 TREE_TYPE (decl) = stype; 14743 14744 if (DECL_ARGUMENTS (decl)) 14745 DECL_ARGUMENTS (decl) = DECL_CHAIN (DECL_ARGUMENTS (decl)); 14746 DECL_STATIC_FUNCTION_P (decl) = 1; 14747 } 14748 14749 /* Return which tree structure is used by T, or TS_CP_GENERIC if T is 14750 one of the language-independent trees. */ 14751 14752 enum cp_tree_node_structure_enum 14753 cp_tree_node_structure (union lang_tree_node * t) 14754 { 14755 switch (TREE_CODE (&t->generic)) 14756 { 14757 case DEFAULT_ARG: return TS_CP_DEFAULT_ARG; 14758 case DEFERRED_NOEXCEPT: return TS_CP_DEFERRED_NOEXCEPT; 14759 case IDENTIFIER_NODE: return TS_CP_IDENTIFIER; 14760 case OVERLOAD: return TS_CP_OVERLOAD; 14761 case TEMPLATE_PARM_INDEX: return TS_CP_TPI; 14762 case PTRMEM_CST: return TS_CP_PTRMEM; 14763 case BASELINK: return TS_CP_BASELINK; 14764 case TEMPLATE_DECL: return TS_CP_TEMPLATE_DECL; 14765 case STATIC_ASSERT: return TS_CP_STATIC_ASSERT; 14766 case ARGUMENT_PACK_SELECT: return TS_CP_ARGUMENT_PACK_SELECT; 14767 case TRAIT_EXPR: return TS_CP_TRAIT_EXPR; 14768 case LAMBDA_EXPR: return TS_CP_LAMBDA_EXPR; 14769 case TEMPLATE_INFO: return TS_CP_TEMPLATE_INFO; 14770 case USERDEF_LITERAL: return TS_CP_USERDEF_LITERAL; 14771 default: return TS_CP_GENERIC; 14772 } 14773 } 14774 14775 /* Build the void_list_node (void_type_node having been created). */ 14776 tree 14777 build_void_list_node (void) 14778 { 14779 tree t = build_tree_list (NULL_TREE, void_type_node); 14780 return t; 14781 } 14782 14783 bool 14784 cp_missing_noreturn_ok_p (tree decl) 14785 { 14786 /* A missing noreturn is ok for the `main' function. */ 14787 return DECL_MAIN_P (decl); 14788 } 14789 14790 /* Return the decl used to identify the COMDAT group into which DECL should 14791 be placed. */ 14792 14793 tree 14794 cxx_comdat_group (tree decl) 14795 { 14796 /* Virtual tables, construction virtual tables, and virtual table 14797 tables all go in a single COMDAT group, named after the primary 14798 virtual table. */ 14799 if (VAR_P (decl) && DECL_VTABLE_OR_VTT_P (decl)) 14800 decl = CLASSTYPE_VTABLES (DECL_CONTEXT (decl)); 14801 /* For all other DECLs, the COMDAT group is the mangled name of the 14802 declaration itself. */ 14803 else 14804 { 14805 while (DECL_THUNK_P (decl)) 14806 { 14807 /* If TARGET_USE_LOCAL_THUNK_ALIAS_P, use_thunk puts the thunk 14808 into the same section as the target function. In that case 14809 we must return target's name. */ 14810 tree target = THUNK_TARGET (decl); 14811 if (TARGET_USE_LOCAL_THUNK_ALIAS_P (target) 14812 && DECL_SECTION_NAME (target) != NULL 14813 && DECL_ONE_ONLY (target)) 14814 decl = target; 14815 else 14816 break; 14817 } 14818 } 14819 14820 return decl; 14821 } 14822 14823 /* Returns the return type for FN as written by the user, which may include 14824 a placeholder for a deduced return type. */ 14825 14826 tree 14827 fndecl_declared_return_type (tree fn) 14828 { 14829 fn = STRIP_TEMPLATE (fn); 14830 if (FNDECL_USED_AUTO (fn)) 14831 { 14832 struct language_function *f = NULL; 14833 if (DECL_STRUCT_FUNCTION (fn)) 14834 f = DECL_STRUCT_FUNCTION (fn)->language; 14835 if (f == NULL) 14836 f = DECL_SAVED_FUNCTION_DATA (fn); 14837 return f->x_auto_return_pattern; 14838 } 14839 return TREE_TYPE (TREE_TYPE (fn)); 14840 } 14841 14842 /* Returns true iff DECL was declared with an auto return type and it has 14843 not yet been deduced to a real type. */ 14844 14845 bool 14846 undeduced_auto_decl (tree decl) 14847 { 14848 if (cxx_dialect < cxx14) 14849 return false; 14850 return type_uses_auto (TREE_TYPE (decl)); 14851 } 14852 14853 /* Complain if DECL has an undeduced return type. */ 14854 14855 void 14856 require_deduced_type (tree decl) 14857 { 14858 if (undeduced_auto_decl (decl)) 14859 error ("use of %qD before deduction of %<auto%>", decl); 14860 } 14861 14862 #include "gt-cp-decl.h" 14863