1 /* Process declarations and variables for C++ compiler. 2 Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 4 Free Software Foundation, Inc. 5 Contributed by Michael Tiemann (tiemann@cygnus.com) 6 7 This file is part of GCC. 8 9 GCC is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3, or (at your option) 12 any later version. 13 14 GCC is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with GCC; see the file COPYING3. If not see 21 <http://www.gnu.org/licenses/>. */ 22 23 24 /* Process declarations and symbol lookup for C++ front end. 25 Also constructs types; the standard scalar types at initialization, 26 and structure, union, array and enum types when they are declared. */ 27 28 /* ??? not all decl nodes are given the most useful possible 29 line numbers. For example, the CONST_DECLs for enum values. */ 30 31 #include "config.h" 32 #include "system.h" 33 #include "coretypes.h" 34 #include "tm.h" 35 #include "tree.h" 36 #include "rtl.h" 37 #include "expr.h" 38 #include "flags.h" 39 #include "cp-tree.h" 40 #include "tree-inline.h" 41 #include "decl.h" 42 #include "intl.h" 43 #include "output.h" 44 #include "except.h" 45 #include "toplev.h" 46 #include "hashtab.h" 47 #include "tm_p.h" 48 #include "target.h" 49 #include "c-common.h" 50 #include "c-pragma.h" 51 #include "diagnostic.h" 52 #include "intl.h" 53 #include "debug.h" 54 #include "timevar.h" 55 #include "tree-flow.h" 56 #include "pointer-set.h" 57 #include "plugin.h" 58 59 static tree grokparms (tree parmlist, tree *); 60 static const char *redeclaration_error_message (tree, tree); 61 62 static int decl_jump_unsafe (tree); 63 static void require_complete_types_for_parms (tree); 64 static int ambi_op_p (enum tree_code); 65 static int unary_op_p (enum tree_code); 66 static void push_local_name (tree); 67 static tree grok_reference_init (tree, tree, tree, tree *); 68 static tree grokvardecl (tree, tree, const cp_decl_specifier_seq *, 69 int, int, tree); 70 static void record_unknown_type (tree, const char *); 71 static tree builtin_function_1 (tree, tree, bool); 72 static tree build_library_fn_1 (tree, enum tree_code, tree); 73 static int member_function_or_else (tree, tree, enum overload_flags); 74 static void bad_specifiers (tree, const char *, int, int, int, int, 75 int); 76 static void check_for_uninitialized_const_var (tree); 77 static hashval_t typename_hash (const void *); 78 static int typename_compare (const void *, const void *); 79 static tree local_variable_p_walkfn (tree *, int *, void *); 80 static tree record_builtin_java_type (const char *, int); 81 static const char *tag_name (enum tag_types); 82 static tree lookup_and_check_tag (enum tag_types, tree, tag_scope, bool); 83 static int walk_namespaces_r (tree, walk_namespaces_fn, void *); 84 static void maybe_deduce_size_from_array_init (tree, tree); 85 static void layout_var_decl (tree); 86 static tree check_initializer (tree, tree, int, tree *); 87 static void make_rtl_for_nonlocal_decl (tree, tree, const char *); 88 static void save_function_data (tree); 89 static void check_function_type (tree, tree); 90 static void finish_constructor_body (void); 91 static void begin_destructor_body (void); 92 static void finish_destructor_body (void); 93 static tree create_array_type_for_decl (tree, tree, tree); 94 static tree get_atexit_node (void); 95 static tree get_dso_handle_node (void); 96 static tree start_cleanup_fn (void); 97 static void end_cleanup_fn (void); 98 static tree cp_make_fname_decl (location_t, tree, int); 99 static void initialize_predefined_identifiers (void); 100 static tree check_special_function_return_type 101 (special_function_kind, tree, tree); 102 static tree push_cp_library_fn (enum tree_code, tree); 103 static tree build_cp_library_fn (tree, enum tree_code, tree); 104 static void store_parm_decls (tree); 105 static void initialize_local_var (tree, tree); 106 static void expand_static_init (tree, tree); 107 108 /* The following symbols are subsumed in the cp_global_trees array, and 109 listed here individually for documentation purposes. 110 111 C++ extensions 112 tree wchar_decl_node; 113 114 tree vtable_entry_type; 115 tree delta_type_node; 116 tree __t_desc_type_node; 117 118 tree class_type_node; 119 tree unknown_type_node; 120 121 Array type `vtable_entry_type[]' 122 123 tree vtbl_type_node; 124 tree vtbl_ptr_type_node; 125 126 Namespaces, 127 128 tree std_node; 129 tree abi_node; 130 131 A FUNCTION_DECL which can call `abort'. Not necessarily the 132 one that the user will declare, but sufficient to be called 133 by routines that want to abort the program. 134 135 tree abort_fndecl; 136 137 The FUNCTION_DECL for the default `::operator delete'. 138 139 tree global_delete_fndecl; 140 141 Used by RTTI 142 tree type_info_type_node, tinfo_decl_id, tinfo_decl_type; 143 tree tinfo_var_id; */ 144 145 tree cp_global_trees[CPTI_MAX]; 146 147 /* Indicates that there is a type value in some namespace, although 148 that is not necessarily in scope at the moment. */ 149 150 tree global_type_node; 151 152 /* The node that holds the "name" of the global scope. */ 153 tree global_scope_name; 154 155 #define local_names cp_function_chain->x_local_names 156 157 /* A list of objects which have constructors or destructors 158 which reside in the global scope. The decl is stored in 159 the TREE_VALUE slot and the initializer is stored 160 in the TREE_PURPOSE slot. */ 161 tree static_aggregates; 162 163 /* -- end of C++ */ 164 165 /* A node for the integer constants 2, and 3. */ 166 167 tree integer_two_node, integer_three_node; 168 169 /* Used only for jumps to as-yet undefined labels, since jumps to 170 defined labels can have their validity checked immediately. */ 171 172 struct GTY(()) named_label_use_entry { 173 struct named_label_use_entry *next; 174 /* The binding level to which this entry is *currently* attached. 175 This is initially the binding level in which the goto appeared, 176 but is modified as scopes are closed. */ 177 struct cp_binding_level *binding_level; 178 /* The head of the names list that was current when the goto appeared, 179 or the inner scope popped. These are the decls that will *not* be 180 skipped when jumping to the label. */ 181 tree names_in_scope; 182 /* The location of the goto, for error reporting. */ 183 location_t o_goto_locus; 184 /* True if an OpenMP structured block scope has been closed since 185 the goto appeared. This means that the branch from the label will 186 illegally exit an OpenMP scope. */ 187 bool in_omp_scope; 188 }; 189 190 /* A list of all LABEL_DECLs in the function that have names. Here so 191 we can clear out their names' definitions at the end of the 192 function, and so we can check the validity of jumps to these labels. */ 193 194 struct GTY(()) named_label_entry { 195 /* The decl itself. */ 196 tree label_decl; 197 198 /* The binding level to which the label is *currently* attached. 199 This is initially set to the binding level in which the label 200 is defined, but is modified as scopes are closed. */ 201 struct cp_binding_level *binding_level; 202 /* The head of the names list that was current when the label was 203 defined, or the inner scope popped. These are the decls that will 204 be skipped when jumping to the label. */ 205 tree names_in_scope; 206 /* A tree list of all decls from all binding levels that would be 207 crossed by a backward branch to the label. */ 208 tree bad_decls; 209 210 /* A list of uses of the label, before the label is defined. */ 211 struct named_label_use_entry *uses; 212 213 /* The following bits are set after the label is defined, and are 214 updated as scopes are popped. They indicate that a backward jump 215 to the label will illegally enter a scope of the given flavor. */ 216 bool in_try_scope; 217 bool in_catch_scope; 218 bool in_omp_scope; 219 }; 220 221 #define named_labels cp_function_chain->x_named_labels 222 223 /* The number of function bodies which we are currently processing. 224 (Zero if we are at namespace scope, one inside the body of a 225 function, two inside the body of a function in a local class, etc.) */ 226 int function_depth; 227 228 /* To avoid unwanted recursion, finish_function defers all mark_used calls 229 encountered during its execution until it finishes. */ 230 bool defer_mark_used_calls; 231 VEC(tree, gc) *deferred_mark_used_calls; 232 233 /* States indicating how grokdeclarator() should handle declspecs marked 234 with __attribute__((deprecated)). An object declared as 235 __attribute__((deprecated)) suppresses warnings of uses of other 236 deprecated items. */ 237 enum deprecated_states deprecated_state = DEPRECATED_NORMAL; 238 239 240 /* A TREE_LIST of VAR_DECLs. The TREE_PURPOSE is a RECORD_TYPE or 241 UNION_TYPE; the TREE_VALUE is a VAR_DECL with that type. At the 242 time the VAR_DECL was declared, the type was incomplete. */ 243 244 static GTY(()) tree incomplete_vars; 245 246 /* Returns the kind of template specialization we are currently 247 processing, given that it's declaration contained N_CLASS_SCOPES 248 explicit scope qualifications. */ 249 250 tmpl_spec_kind 251 current_tmpl_spec_kind (int n_class_scopes) 252 { 253 int n_template_parm_scopes = 0; 254 int seen_specialization_p = 0; 255 int innermost_specialization_p = 0; 256 struct cp_binding_level *b; 257 258 /* Scan through the template parameter scopes. */ 259 for (b = current_binding_level; 260 b->kind == sk_template_parms; 261 b = b->level_chain) 262 { 263 /* If we see a specialization scope inside a parameter scope, 264 then something is wrong. That corresponds to a declaration 265 like: 266 267 template <class T> template <> ... 268 269 which is always invalid since [temp.expl.spec] forbids the 270 specialization of a class member template if the enclosing 271 class templates are not explicitly specialized as well. */ 272 if (b->explicit_spec_p) 273 { 274 if (n_template_parm_scopes == 0) 275 innermost_specialization_p = 1; 276 else 277 seen_specialization_p = 1; 278 } 279 else if (seen_specialization_p == 1) 280 return tsk_invalid_member_spec; 281 282 ++n_template_parm_scopes; 283 } 284 285 /* Handle explicit instantiations. */ 286 if (processing_explicit_instantiation) 287 { 288 if (n_template_parm_scopes != 0) 289 /* We've seen a template parameter list during an explicit 290 instantiation. For example: 291 292 template <class T> template void f(int); 293 294 This is erroneous. */ 295 return tsk_invalid_expl_inst; 296 else 297 return tsk_expl_inst; 298 } 299 300 if (n_template_parm_scopes < n_class_scopes) 301 /* We've not seen enough template headers to match all the 302 specialized classes present. For example: 303 304 template <class T> void R<T>::S<T>::f(int); 305 306 This is invalid; there needs to be one set of template 307 parameters for each class. */ 308 return tsk_insufficient_parms; 309 else if (n_template_parm_scopes == n_class_scopes) 310 /* We're processing a non-template declaration (even though it may 311 be a member of a template class.) For example: 312 313 template <class T> void S<T>::f(int); 314 315 The `class T' matches the `S<T>', leaving no template headers 316 corresponding to the `f'. */ 317 return tsk_none; 318 else if (n_template_parm_scopes > n_class_scopes + 1) 319 /* We've got too many template headers. For example: 320 321 template <> template <class T> void f (T); 322 323 There need to be more enclosing classes. */ 324 return tsk_excessive_parms; 325 else 326 /* This must be a template. It's of the form: 327 328 template <class T> template <class U> void S<T>::f(U); 329 330 This is a specialization if the innermost level was a 331 specialization; otherwise it's just a definition of the 332 template. */ 333 return innermost_specialization_p ? tsk_expl_spec : tsk_template; 334 } 335 336 /* Exit the current scope. */ 337 338 void 339 finish_scope (void) 340 { 341 poplevel (0, 0, 0); 342 } 343 344 /* When a label goes out of scope, check to see if that label was used 345 in a valid manner, and issue any appropriate warnings or errors. */ 346 347 static void 348 pop_label (tree label, tree old_value) 349 { 350 if (!processing_template_decl) 351 { 352 if (DECL_INITIAL (label) == NULL_TREE) 353 { 354 location_t location; 355 356 error ("label %q+D used but not defined", label); 357 location = input_location; /* FIXME want (input_filename, (line)0) */ 358 /* Avoid crashing later. */ 359 define_label (location, DECL_NAME (label)); 360 } 361 else 362 warn_for_unused_label (label); 363 } 364 365 SET_IDENTIFIER_LABEL_VALUE (DECL_NAME (label), old_value); 366 } 367 368 /* At the end of a function, all labels declared within the function 369 go out of scope. BLOCK is the top-level block for the 370 function. */ 371 372 static int 373 pop_labels_1 (void **slot, void *data) 374 { 375 struct named_label_entry *ent = (struct named_label_entry *) *slot; 376 tree block = (tree) data; 377 378 pop_label (ent->label_decl, NULL_TREE); 379 380 /* Put the labels into the "variables" of the top-level block, 381 so debugger can see them. */ 382 TREE_CHAIN (ent->label_decl) = BLOCK_VARS (block); 383 BLOCK_VARS (block) = ent->label_decl; 384 385 htab_clear_slot (named_labels, slot); 386 387 return 1; 388 } 389 390 static void 391 pop_labels (tree block) 392 { 393 if (named_labels) 394 { 395 htab_traverse (named_labels, pop_labels_1, block); 396 named_labels = NULL; 397 } 398 } 399 400 /* At the end of a block with local labels, restore the outer definition. */ 401 402 static void 403 pop_local_label (tree label, tree old_value) 404 { 405 struct named_label_entry dummy; 406 void **slot; 407 408 pop_label (label, old_value); 409 410 dummy.label_decl = label; 411 slot = htab_find_slot (named_labels, &dummy, NO_INSERT); 412 htab_clear_slot (named_labels, slot); 413 } 414 415 /* The following two routines are used to interface to Objective-C++. 416 The binding level is purposely treated as an opaque type. */ 417 418 void * 419 objc_get_current_scope (void) 420 { 421 return current_binding_level; 422 } 423 424 /* The following routine is used by the NeXT-style SJLJ exceptions; 425 variables get marked 'volatile' so as to not be clobbered by 426 _setjmp()/_longjmp() calls. All variables in the current scope, 427 as well as parent scopes up to (but not including) ENCLOSING_BLK 428 shall be thusly marked. */ 429 430 void 431 objc_mark_locals_volatile (void *enclosing_blk) 432 { 433 struct cp_binding_level *scope; 434 435 for (scope = current_binding_level; 436 scope && scope != enclosing_blk; 437 scope = scope->level_chain) 438 { 439 tree decl; 440 441 for (decl = scope->names; decl; decl = TREE_CHAIN (decl)) 442 objc_volatilize_decl (decl); 443 444 /* Do not climb up past the current function. */ 445 if (scope->kind == sk_function_parms) 446 break; 447 } 448 } 449 450 /* Update data for defined and undefined labels when leaving a scope. */ 451 452 static int 453 poplevel_named_label_1 (void **slot, void *data) 454 { 455 struct named_label_entry *ent = (struct named_label_entry *) *slot; 456 struct cp_binding_level *bl = (struct cp_binding_level *) data; 457 struct cp_binding_level *obl = bl->level_chain; 458 459 if (ent->binding_level == bl) 460 { 461 tree decl; 462 463 for (decl = ent->names_in_scope; decl; decl = TREE_CHAIN (decl)) 464 if (decl_jump_unsafe (decl)) 465 ent->bad_decls = tree_cons (NULL, decl, ent->bad_decls); 466 467 ent->binding_level = obl; 468 ent->names_in_scope = obl->names; 469 switch (bl->kind) 470 { 471 case sk_try: 472 ent->in_try_scope = true; 473 break; 474 case sk_catch: 475 ent->in_catch_scope = true; 476 break; 477 case sk_omp: 478 ent->in_omp_scope = true; 479 break; 480 default: 481 break; 482 } 483 } 484 else if (ent->uses) 485 { 486 struct named_label_use_entry *use; 487 488 for (use = ent->uses; use ; use = use->next) 489 if (use->binding_level == bl) 490 { 491 use->binding_level = obl; 492 use->names_in_scope = obl->names; 493 if (bl->kind == sk_omp) 494 use->in_omp_scope = true; 495 } 496 } 497 498 return 1; 499 } 500 501 /* Exit a binding level. 502 Pop the level off, and restore the state of the identifier-decl mappings 503 that were in effect when this level was entered. 504 505 If KEEP == 1, this level had explicit declarations, so 506 and create a "block" (a BLOCK node) for the level 507 to record its declarations and subblocks for symbol table output. 508 509 If FUNCTIONBODY is nonzero, this level is the body of a function, 510 so create a block as if KEEP were set and also clear out all 511 label names. 512 513 If REVERSE is nonzero, reverse the order of decls before putting 514 them into the BLOCK. */ 515 516 tree 517 poplevel (int keep, int reverse, int functionbody) 518 { 519 tree link; 520 /* The chain of decls was accumulated in reverse order. 521 Put it into forward order, just for cleanliness. */ 522 tree decls; 523 tree subblocks; 524 tree block; 525 tree decl; 526 int leaving_for_scope; 527 scope_kind kind; 528 529 timevar_push (TV_NAME_LOOKUP); 530 restart: 531 532 block = NULL_TREE; 533 534 gcc_assert (current_binding_level->kind != sk_class); 535 536 if (current_binding_level->kind == sk_cleanup) 537 functionbody = 0; 538 subblocks = functionbody >= 0 ? current_binding_level->blocks : 0; 539 540 gcc_assert (!VEC_length(cp_class_binding, 541 current_binding_level->class_shadowed)); 542 543 /* We used to use KEEP == 2 to indicate that the new block should go 544 at the beginning of the list of blocks at this binding level, 545 rather than the end. This hack is no longer used. */ 546 gcc_assert (keep == 0 || keep == 1); 547 548 if (current_binding_level->keep) 549 keep = 1; 550 551 /* Any uses of undefined labels, and any defined labels, now operate 552 under constraints of next binding contour. */ 553 if (cfun && !functionbody && named_labels) 554 htab_traverse (named_labels, poplevel_named_label_1, 555 current_binding_level); 556 557 /* Get the decls in the order they were written. 558 Usually current_binding_level->names is in reverse order. 559 But parameter decls were previously put in forward order. */ 560 561 if (reverse) 562 current_binding_level->names 563 = decls = nreverse (current_binding_level->names); 564 else 565 decls = current_binding_level->names; 566 567 /* If there were any declarations or structure tags in that level, 568 or if this level is a function body, 569 create a BLOCK to record them for the life of this function. */ 570 block = NULL_TREE; 571 if (keep == 1 || functionbody) 572 block = make_node (BLOCK); 573 if (block != NULL_TREE) 574 { 575 BLOCK_VARS (block) = decls; 576 BLOCK_SUBBLOCKS (block) = subblocks; 577 } 578 579 /* In each subblock, record that this is its superior. */ 580 if (keep >= 0) 581 for (link = subblocks; link; link = BLOCK_CHAIN (link)) 582 BLOCK_SUPERCONTEXT (link) = block; 583 584 /* We still support the old for-scope rules, whereby the variables 585 in a for-init statement were in scope after the for-statement 586 ended. We only use the new rules if flag_new_for_scope is 587 nonzero. */ 588 leaving_for_scope 589 = current_binding_level->kind == sk_for && flag_new_for_scope == 1; 590 591 /* Before we remove the declarations first check for unused variables. */ 592 if (warn_unused_variable 593 && !processing_template_decl) 594 for (decl = getdecls (); decl; decl = TREE_CHAIN (decl)) 595 if (TREE_CODE (decl) == VAR_DECL 596 && ! TREE_USED (decl) 597 && ! DECL_IN_SYSTEM_HEADER (decl) 598 && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl)) 599 warning (OPT_Wunused_variable, "unused variable %q+D", decl); 600 601 /* Remove declarations for all the DECLs in this level. */ 602 for (link = decls; link; link = TREE_CHAIN (link)) 603 { 604 if (leaving_for_scope && TREE_CODE (link) == VAR_DECL 605 && DECL_NAME (link)) 606 { 607 tree name = DECL_NAME (link); 608 cxx_binding *ob; 609 tree ns_binding; 610 611 ob = outer_binding (name, 612 IDENTIFIER_BINDING (name), 613 /*class_p=*/true); 614 if (!ob) 615 ns_binding = IDENTIFIER_NAMESPACE_VALUE (name); 616 else 617 ns_binding = NULL_TREE; 618 619 if (ob && ob->scope == current_binding_level->level_chain) 620 /* We have something like: 621 622 int i; 623 for (int i; ;); 624 625 and we are leaving the `for' scope. There's no reason to 626 keep the binding of the inner `i' in this case. */ 627 pop_binding (name, link); 628 else if ((ob && (TREE_CODE (ob->value) == TYPE_DECL)) 629 || (ns_binding && TREE_CODE (ns_binding) == TYPE_DECL)) 630 /* Here, we have something like: 631 632 typedef int I; 633 634 void f () { 635 for (int I; ;); 636 } 637 638 We must pop the for-scope binding so we know what's a 639 type and what isn't. */ 640 pop_binding (name, link); 641 else 642 { 643 /* Mark this VAR_DECL as dead so that we can tell we left it 644 there only for backward compatibility. */ 645 DECL_DEAD_FOR_LOCAL (link) = 1; 646 647 /* Keep track of what should have happened when we 648 popped the binding. */ 649 if (ob && ob->value) 650 { 651 SET_DECL_SHADOWED_FOR_VAR (link, ob->value); 652 DECL_HAS_SHADOWED_FOR_VAR_P (link) = 1; 653 } 654 655 /* Add it to the list of dead variables in the next 656 outermost binding to that we can remove these when we 657 leave that binding. */ 658 current_binding_level->level_chain->dead_vars_from_for 659 = tree_cons (NULL_TREE, link, 660 current_binding_level->level_chain-> 661 dead_vars_from_for); 662 663 /* Although we don't pop the cxx_binding, we do clear 664 its SCOPE since the scope is going away now. */ 665 IDENTIFIER_BINDING (name)->scope 666 = current_binding_level->level_chain; 667 } 668 } 669 else 670 { 671 tree name; 672 673 /* Remove the binding. */ 674 decl = link; 675 676 if (TREE_CODE (decl) == TREE_LIST) 677 decl = TREE_VALUE (decl); 678 name = decl; 679 680 if (TREE_CODE (name) == OVERLOAD) 681 name = OVL_FUNCTION (name); 682 683 gcc_assert (DECL_P (name)); 684 pop_binding (DECL_NAME (name), decl); 685 } 686 } 687 688 /* Remove declarations for any `for' variables from inner scopes 689 that we kept around. */ 690 for (link = current_binding_level->dead_vars_from_for; 691 link; link = TREE_CHAIN (link)) 692 pop_binding (DECL_NAME (TREE_VALUE (link)), TREE_VALUE (link)); 693 694 /* Restore the IDENTIFIER_TYPE_VALUEs. */ 695 for (link = current_binding_level->type_shadowed; 696 link; link = TREE_CHAIN (link)) 697 SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (link), TREE_VALUE (link)); 698 699 /* Restore the IDENTIFIER_LABEL_VALUEs for local labels. */ 700 for (link = current_binding_level->shadowed_labels; 701 link; 702 link = TREE_CHAIN (link)) 703 pop_local_label (TREE_VALUE (link), TREE_PURPOSE (link)); 704 705 /* There may be OVERLOADs (wrapped in TREE_LISTs) on the BLOCK_VARs 706 list if a `using' declaration put them there. The debugging 707 back ends won't understand OVERLOAD, so we remove them here. 708 Because the BLOCK_VARS are (temporarily) shared with 709 CURRENT_BINDING_LEVEL->NAMES we must do this fixup after we have 710 popped all the bindings. */ 711 if (block) 712 { 713 tree* d; 714 715 for (d = &BLOCK_VARS (block); *d; ) 716 { 717 if (TREE_CODE (*d) == TREE_LIST) 718 *d = TREE_CHAIN (*d); 719 else 720 d = &TREE_CHAIN (*d); 721 } 722 } 723 724 /* If the level being exited is the top level of a function, 725 check over all the labels. */ 726 if (functionbody) 727 { 728 /* Since this is the top level block of a function, the vars are 729 the function's parameters. Don't leave them in the BLOCK 730 because they are found in the FUNCTION_DECL instead. */ 731 BLOCK_VARS (block) = 0; 732 pop_labels (block); 733 } 734 735 kind = current_binding_level->kind; 736 if (kind == sk_cleanup) 737 { 738 tree stmt; 739 740 /* If this is a temporary binding created for a cleanup, then we'll 741 have pushed a statement list level. Pop that, create a new 742 BIND_EXPR for the block, and insert it into the stream. */ 743 stmt = pop_stmt_list (current_binding_level->statement_list); 744 stmt = c_build_bind_expr (input_location, block, stmt); 745 add_stmt (stmt); 746 } 747 748 leave_scope (); 749 if (functionbody) 750 { 751 /* The current function is being defined, so its DECL_INITIAL 752 should be error_mark_node. */ 753 gcc_assert (DECL_INITIAL (current_function_decl) == error_mark_node); 754 DECL_INITIAL (current_function_decl) = block; 755 } 756 else if (block) 757 current_binding_level->blocks 758 = chainon (current_binding_level->blocks, block); 759 760 /* If we did not make a block for the level just exited, 761 any blocks made for inner levels 762 (since they cannot be recorded as subblocks in that level) 763 must be carried forward so they will later become subblocks 764 of something else. */ 765 else if (subblocks) 766 current_binding_level->blocks 767 = chainon (current_binding_level->blocks, subblocks); 768 769 /* Each and every BLOCK node created here in `poplevel' is important 770 (e.g. for proper debugging information) so if we created one 771 earlier, mark it as "used". */ 772 if (block) 773 TREE_USED (block) = 1; 774 775 /* All temporary bindings created for cleanups are popped silently. */ 776 if (kind == sk_cleanup) 777 goto restart; 778 779 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, block); 780 } 781 782 /* Walk all the namespaces contained NAMESPACE, including NAMESPACE 783 itself, calling F for each. The DATA is passed to F as well. */ 784 785 static int 786 walk_namespaces_r (tree name_space, walk_namespaces_fn f, void* data) 787 { 788 int result = 0; 789 tree current = NAMESPACE_LEVEL (name_space)->namespaces; 790 791 result |= (*f) (name_space, data); 792 793 for (; current; current = TREE_CHAIN (current)) 794 result |= walk_namespaces_r (current, f, data); 795 796 return result; 797 } 798 799 /* Walk all the namespaces, calling F for each. The DATA is passed to 800 F as well. */ 801 802 int 803 walk_namespaces (walk_namespaces_fn f, void* data) 804 { 805 return walk_namespaces_r (global_namespace, f, data); 806 } 807 808 /* Call wrapup_globals_declarations for the globals in NAMESPACE. If 809 DATA is non-NULL, this is the last time we will call 810 wrapup_global_declarations for this NAMESPACE. */ 811 812 int 813 wrapup_globals_for_namespace (tree name_space, void* data) 814 { 815 struct cp_binding_level *level = NAMESPACE_LEVEL (name_space); 816 VEC(tree,gc) *statics = level->static_decls; 817 tree *vec = VEC_address (tree, statics); 818 int len = VEC_length (tree, statics); 819 int last_time = (data != 0); 820 821 if (last_time) 822 { 823 check_global_declarations (vec, len); 824 emit_debug_global_declarations (vec, len); 825 return 0; 826 } 827 828 /* Write out any globals that need to be output. */ 829 return wrapup_global_declarations (vec, len); 830 } 831 832 833 /* In C++, you don't have to write `struct S' to refer to `S'; you 834 can just use `S'. We accomplish this by creating a TYPE_DECL as 835 if the user had written `typedef struct S S'. Create and return 836 the TYPE_DECL for TYPE. */ 837 838 tree 839 create_implicit_typedef (tree name, tree type) 840 { 841 tree decl; 842 843 decl = build_decl (input_location, TYPE_DECL, name, type); 844 DECL_ARTIFICIAL (decl) = 1; 845 /* There are other implicit type declarations, like the one *within* 846 a class that allows you to write `S::S'. We must distinguish 847 amongst these. */ 848 SET_DECL_IMPLICIT_TYPEDEF_P (decl); 849 TYPE_NAME (type) = decl; 850 TYPE_STUB_DECL (type) = decl; 851 852 return decl; 853 } 854 855 /* Remember a local name for name-mangling purposes. */ 856 857 static void 858 push_local_name (tree decl) 859 { 860 size_t i, nelts; 861 tree t, name; 862 863 timevar_push (TV_NAME_LOOKUP); 864 865 name = DECL_NAME (decl); 866 867 nelts = VEC_length (tree, local_names); 868 for (i = 0; i < nelts; i++) 869 { 870 t = VEC_index (tree, local_names, i); 871 if (DECL_NAME (t) == name) 872 { 873 if (!DECL_LANG_SPECIFIC (decl)) 874 retrofit_lang_decl (decl); 875 DECL_LANG_SPECIFIC (decl)->u.base.u2sel = 1; 876 if (DECL_LANG_SPECIFIC (t)) 877 DECL_DISCRIMINATOR (decl) = DECL_DISCRIMINATOR (t) + 1; 878 else 879 DECL_DISCRIMINATOR (decl) = 1; 880 881 VEC_replace (tree, local_names, i, decl); 882 timevar_pop (TV_NAME_LOOKUP); 883 return; 884 } 885 } 886 887 VEC_safe_push (tree, gc, local_names, decl); 888 timevar_pop (TV_NAME_LOOKUP); 889 } 890 891 /* Subroutine of duplicate_decls: return truthvalue of whether 892 or not types of these decls match. 893 894 For C++, we must compare the parameter list so that `int' can match 895 `int&' in a parameter position, but `int&' is not confused with 896 `const int&'. */ 897 898 int 899 decls_match (tree newdecl, tree olddecl) 900 { 901 int types_match; 902 903 if (newdecl == olddecl) 904 return 1; 905 906 if (TREE_CODE (newdecl) != TREE_CODE (olddecl)) 907 /* If the two DECLs are not even the same kind of thing, we're not 908 interested in their types. */ 909 return 0; 910 911 if (TREE_CODE (newdecl) == FUNCTION_DECL) 912 { 913 tree f1 = TREE_TYPE (newdecl); 914 tree f2 = TREE_TYPE (olddecl); 915 tree p1 = TYPE_ARG_TYPES (f1); 916 tree p2 = TYPE_ARG_TYPES (f2); 917 918 /* Specializations of different templates are different functions 919 even if they have the same type. */ 920 tree t1 = (DECL_USE_TEMPLATE (newdecl) 921 ? DECL_TI_TEMPLATE (newdecl) 922 : NULL_TREE); 923 tree t2 = (DECL_USE_TEMPLATE (olddecl) 924 ? DECL_TI_TEMPLATE (olddecl) 925 : NULL_TREE); 926 if (t1 != t2) 927 return 0; 928 929 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl) 930 && ! (DECL_EXTERN_C_P (newdecl) 931 && DECL_EXTERN_C_P (olddecl))) 932 return 0; 933 934 #ifdef NO_IMPLICIT_EXTERN_C 935 /* A new declaration doesn't match a built-in one unless it 936 is also extern "C". */ 937 if (DECL_IS_BUILTIN (olddecl) 938 && DECL_EXTERN_C_P (olddecl) && !DECL_EXTERN_C_P (newdecl)) 939 return 0; 940 #endif 941 942 if (TREE_CODE (f1) != TREE_CODE (f2)) 943 return 0; 944 945 if (same_type_p (TREE_TYPE (f1), TREE_TYPE (f2))) 946 { 947 if (p2 == NULL_TREE && DECL_EXTERN_C_P (olddecl) 948 && (DECL_BUILT_IN (olddecl) 949 #ifndef NO_IMPLICIT_EXTERN_C 950 || (DECL_IN_SYSTEM_HEADER (newdecl) && !DECL_CLASS_SCOPE_P (newdecl)) 951 || (DECL_IN_SYSTEM_HEADER (olddecl) && !DECL_CLASS_SCOPE_P (olddecl)) 952 #endif 953 )) 954 { 955 types_match = self_promoting_args_p (p1); 956 if (p1 == void_list_node) 957 TREE_TYPE (newdecl) = TREE_TYPE (olddecl); 958 } 959 #ifndef NO_IMPLICIT_EXTERN_C 960 else if (p1 == NULL_TREE 961 && (DECL_EXTERN_C_P (olddecl) 962 && DECL_IN_SYSTEM_HEADER (olddecl) 963 && !DECL_CLASS_SCOPE_P (olddecl)) 964 && (DECL_EXTERN_C_P (newdecl) 965 && DECL_IN_SYSTEM_HEADER (newdecl) 966 && !DECL_CLASS_SCOPE_P (newdecl))) 967 { 968 types_match = self_promoting_args_p (p2); 969 TREE_TYPE (newdecl) = TREE_TYPE (olddecl); 970 } 971 #endif 972 else 973 types_match = compparms (p1, p2); 974 } 975 else 976 types_match = 0; 977 } 978 else if (TREE_CODE (newdecl) == TEMPLATE_DECL) 979 { 980 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) 981 != TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))) 982 return 0; 983 984 if (!comp_template_parms (DECL_TEMPLATE_PARMS (newdecl), 985 DECL_TEMPLATE_PARMS (olddecl))) 986 return 0; 987 988 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL) 989 types_match = same_type_p (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl)), 990 TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl))); 991 else 992 types_match = decls_match (DECL_TEMPLATE_RESULT (olddecl), 993 DECL_TEMPLATE_RESULT (newdecl)); 994 } 995 else 996 { 997 /* Need to check scope for variable declaration (VAR_DECL). 998 For typedef (TYPE_DECL), scope is ignored. */ 999 if (TREE_CODE (newdecl) == VAR_DECL 1000 && CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl) 1001 /* [dcl.link] 1002 Two declarations for an object with C language linkage 1003 with the same name (ignoring the namespace that qualify 1004 it) that appear in different namespace scopes refer to 1005 the same object. */ 1006 && !(DECL_EXTERN_C_P (olddecl) && DECL_EXTERN_C_P (newdecl))) 1007 return 0; 1008 1009 if (TREE_TYPE (newdecl) == error_mark_node) 1010 types_match = TREE_TYPE (olddecl) == error_mark_node; 1011 else if (TREE_TYPE (olddecl) == NULL_TREE) 1012 types_match = TREE_TYPE (newdecl) == NULL_TREE; 1013 else if (TREE_TYPE (newdecl) == NULL_TREE) 1014 types_match = 0; 1015 else 1016 types_match = comptypes (TREE_TYPE (newdecl), 1017 TREE_TYPE (olddecl), 1018 COMPARE_REDECLARATION); 1019 } 1020 1021 return types_match; 1022 } 1023 1024 /* If NEWDECL is `static' and an `extern' was seen previously, 1025 warn about it. OLDDECL is the previous declaration. 1026 1027 Note that this does not apply to the C++ case of declaring 1028 a variable `extern const' and then later `const'. 1029 1030 Don't complain about built-in functions, since they are beyond 1031 the user's control. */ 1032 1033 void 1034 warn_extern_redeclared_static (tree newdecl, tree olddecl) 1035 { 1036 if (TREE_CODE (newdecl) == TYPE_DECL 1037 || TREE_CODE (newdecl) == TEMPLATE_DECL 1038 || TREE_CODE (newdecl) == CONST_DECL 1039 || TREE_CODE (newdecl) == NAMESPACE_DECL) 1040 return; 1041 1042 /* Don't get confused by static member functions; that's a different 1043 use of `static'. */ 1044 if (TREE_CODE (newdecl) == FUNCTION_DECL 1045 && DECL_STATIC_FUNCTION_P (newdecl)) 1046 return; 1047 1048 /* If the old declaration was `static', or the new one isn't, then 1049 then everything is OK. */ 1050 if (DECL_THIS_STATIC (olddecl) || !DECL_THIS_STATIC (newdecl)) 1051 return; 1052 1053 /* It's OK to declare a builtin function as `static'. */ 1054 if (TREE_CODE (olddecl) == FUNCTION_DECL 1055 && DECL_ARTIFICIAL (olddecl)) 1056 return; 1057 1058 permerror (input_location, "%qD was declared %<extern%> and later %<static%>", newdecl); 1059 permerror (input_location, "previous declaration of %q+D", olddecl); 1060 } 1061 1062 /* NEW_DECL is a redeclaration of OLD_DECL; both are functions or 1063 function templates. If their exception specifications do not 1064 match, issue a diagnostic. */ 1065 1066 static void 1067 check_redeclaration_exception_specification (tree new_decl, 1068 tree old_decl) 1069 { 1070 tree new_type; 1071 tree old_type; 1072 tree new_exceptions; 1073 tree old_exceptions; 1074 1075 new_type = TREE_TYPE (new_decl); 1076 new_exceptions = TYPE_RAISES_EXCEPTIONS (new_type); 1077 old_type = TREE_TYPE (old_decl); 1078 old_exceptions = TYPE_RAISES_EXCEPTIONS (old_type); 1079 1080 /* [except.spec] 1081 1082 If any declaration of a function has an exception-specification, 1083 all declarations, including the definition and an explicit 1084 specialization, of that function shall have an 1085 exception-specification with the same set of type-ids. */ 1086 if ((pedantic || ! DECL_IN_SYSTEM_HEADER (old_decl)) 1087 && ! DECL_IS_BUILTIN (old_decl) 1088 && flag_exceptions 1089 && !comp_except_specs (new_exceptions, old_exceptions, 1090 /*exact=*/true)) 1091 { 1092 error ("declaration of %qF throws different exceptions", new_decl); 1093 error ("from previous declaration %q+F", old_decl); 1094 } 1095 } 1096 1097 #define GNU_INLINE_P(fn) (DECL_DECLARED_INLINE_P (fn) \ 1098 && lookup_attribute ("gnu_inline", \ 1099 DECL_ATTRIBUTES (fn))) 1100 1101 /* If NEWDECL is a redeclaration of OLDDECL, merge the declarations. 1102 If the redeclaration is invalid, a diagnostic is issued, and the 1103 error_mark_node is returned. Otherwise, OLDDECL is returned. 1104 1105 If NEWDECL is not a redeclaration of OLDDECL, NULL_TREE is 1106 returned. 1107 1108 NEWDECL_IS_FRIEND is true if NEWDECL was declared as a friend. */ 1109 1110 tree 1111 duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) 1112 { 1113 unsigned olddecl_uid = DECL_UID (olddecl); 1114 int olddecl_friend = 0, types_match = 0, hidden_friend = 0; 1115 int new_defines_function = 0; 1116 tree new_template_info; 1117 1118 if (newdecl == olddecl) 1119 return olddecl; 1120 1121 types_match = decls_match (newdecl, olddecl); 1122 1123 /* If either the type of the new decl or the type of the old decl is an 1124 error_mark_node, then that implies that we have already issued an 1125 error (earlier) for some bogus type specification, and in that case, 1126 it is rather pointless to harass the user with yet more error message 1127 about the same declaration, so just pretend the types match here. */ 1128 if (TREE_TYPE (newdecl) == error_mark_node 1129 || TREE_TYPE (olddecl) == error_mark_node) 1130 return error_mark_node; 1131 1132 if (DECL_P (olddecl) 1133 && TREE_CODE (newdecl) == FUNCTION_DECL 1134 && TREE_CODE (olddecl) == FUNCTION_DECL 1135 && (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl))) 1136 { 1137 if (DECL_DECLARED_INLINE_P (newdecl) 1138 && DECL_UNINLINABLE (newdecl) 1139 && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl))) 1140 /* Already warned elsewhere. */; 1141 else if (DECL_DECLARED_INLINE_P (olddecl) 1142 && DECL_UNINLINABLE (olddecl) 1143 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl))) 1144 /* Already warned. */; 1145 else if (DECL_DECLARED_INLINE_P (newdecl) 1146 && DECL_UNINLINABLE (olddecl) 1147 && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl))) 1148 { 1149 warning (OPT_Wattributes, "function %q+D redeclared as inline", 1150 newdecl); 1151 warning (OPT_Wattributes, "previous declaration of %q+D " 1152 "with attribute noinline", olddecl); 1153 } 1154 else if (DECL_DECLARED_INLINE_P (olddecl) 1155 && DECL_UNINLINABLE (newdecl) 1156 && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl))) 1157 { 1158 warning (OPT_Wattributes, "function %q+D redeclared with " 1159 "attribute noinline", newdecl); 1160 warning (OPT_Wattributes, "previous declaration of %q+D was inline", 1161 olddecl); 1162 } 1163 } 1164 1165 /* Check for redeclaration and other discrepancies. */ 1166 if (TREE_CODE (olddecl) == FUNCTION_DECL 1167 && DECL_ARTIFICIAL (olddecl)) 1168 { 1169 gcc_assert (!DECL_HIDDEN_FRIEND_P (olddecl)); 1170 if (TREE_CODE (newdecl) != FUNCTION_DECL) 1171 { 1172 /* Avoid warnings redeclaring built-ins which have not been 1173 explicitly declared. */ 1174 if (DECL_ANTICIPATED (olddecl)) 1175 return NULL_TREE; 1176 1177 /* If you declare a built-in or predefined function name as static, 1178 the old definition is overridden, but optionally warn this was a 1179 bad choice of name. */ 1180 if (! TREE_PUBLIC (newdecl)) 1181 { 1182 warning (OPT_Wshadow, 1183 DECL_BUILT_IN (olddecl) 1184 ? G_("shadowing built-in function %q#D") 1185 : G_("shadowing library function %q#D"), olddecl); 1186 /* Discard the old built-in function. */ 1187 return NULL_TREE; 1188 } 1189 /* If the built-in is not ansi, then programs can override 1190 it even globally without an error. */ 1191 else if (! DECL_BUILT_IN (olddecl)) 1192 warning (0, "library function %q#D redeclared as non-function %q#D", 1193 olddecl, newdecl); 1194 else 1195 { 1196 error ("declaration of %q#D", newdecl); 1197 error ("conflicts with built-in declaration %q#D", 1198 olddecl); 1199 } 1200 return NULL_TREE; 1201 } 1202 else if (!types_match) 1203 { 1204 /* Avoid warnings redeclaring built-ins which have not been 1205 explicitly declared. */ 1206 if (DECL_ANTICIPATED (olddecl)) 1207 { 1208 /* Deal with fileptr_type_node. FILE type is not known 1209 at the time we create the builtins. */ 1210 tree t1, t2; 1211 1212 for (t1 = TYPE_ARG_TYPES (TREE_TYPE (newdecl)), 1213 t2 = TYPE_ARG_TYPES (TREE_TYPE (olddecl)); 1214 t1 || t2; 1215 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2)) 1216 if (!t1 || !t2) 1217 break; 1218 else if (TREE_VALUE (t2) == fileptr_type_node) 1219 { 1220 tree t = TREE_VALUE (t1); 1221 1222 if (TREE_CODE (t) == POINTER_TYPE 1223 && TYPE_NAME (TREE_TYPE (t)) 1224 && DECL_NAME (TYPE_NAME (TREE_TYPE (t))) 1225 == get_identifier ("FILE") 1226 && compparms (TREE_CHAIN (t1), TREE_CHAIN (t2))) 1227 { 1228 tree oldargs = TYPE_ARG_TYPES (TREE_TYPE (olddecl)); 1229 1230 TYPE_ARG_TYPES (TREE_TYPE (olddecl)) 1231 = TYPE_ARG_TYPES (TREE_TYPE (newdecl)); 1232 types_match = decls_match (newdecl, olddecl); 1233 if (types_match) 1234 return duplicate_decls (newdecl, olddecl, 1235 newdecl_is_friend); 1236 TYPE_ARG_TYPES (TREE_TYPE (olddecl)) = oldargs; 1237 } 1238 } 1239 else if (! same_type_p (TREE_VALUE (t1), TREE_VALUE (t2))) 1240 break; 1241 } 1242 else if ((DECL_EXTERN_C_P (newdecl) 1243 && DECL_EXTERN_C_P (olddecl)) 1244 || compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)), 1245 TYPE_ARG_TYPES (TREE_TYPE (olddecl)))) 1246 { 1247 /* A near match; override the builtin. */ 1248 1249 if (TREE_PUBLIC (newdecl)) 1250 { 1251 warning (0, "new declaration %q#D", newdecl); 1252 warning (0, "ambiguates built-in declaration %q#D", 1253 olddecl); 1254 } 1255 else 1256 warning (OPT_Wshadow, 1257 DECL_BUILT_IN (olddecl) 1258 ? G_("shadowing built-in function %q#D") 1259 : G_("shadowing library function %q#D"), olddecl); 1260 } 1261 else 1262 /* Discard the old built-in function. */ 1263 return NULL_TREE; 1264 1265 /* Replace the old RTL to avoid problems with inlining. */ 1266 COPY_DECL_RTL (newdecl, olddecl); 1267 } 1268 /* Even if the types match, prefer the new declarations type for 1269 built-ins which have not been explicitly declared, for 1270 exception lists, etc... */ 1271 else if (DECL_ANTICIPATED (olddecl)) 1272 { 1273 tree type = TREE_TYPE (newdecl); 1274 tree attribs = (*targetm.merge_type_attributes) 1275 (TREE_TYPE (olddecl), type); 1276 1277 type = cp_build_type_attribute_variant (type, attribs); 1278 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = type; 1279 } 1280 1281 /* If a function is explicitly declared "throw ()", propagate that to 1282 the corresponding builtin. */ 1283 if (DECL_BUILT_IN_CLASS (olddecl) == BUILT_IN_NORMAL 1284 && DECL_ANTICIPATED (olddecl) 1285 && TREE_NOTHROW (newdecl) 1286 && !TREE_NOTHROW (olddecl) 1287 && built_in_decls [DECL_FUNCTION_CODE (olddecl)] != NULL_TREE 1288 && built_in_decls [DECL_FUNCTION_CODE (olddecl)] != olddecl 1289 && types_match) 1290 TREE_NOTHROW (built_in_decls [DECL_FUNCTION_CODE (olddecl)]) = 1; 1291 1292 /* Whether or not the builtin can throw exceptions has no 1293 bearing on this declarator. */ 1294 TREE_NOTHROW (olddecl) = 0; 1295 1296 if (DECL_THIS_STATIC (newdecl) && !DECL_THIS_STATIC (olddecl)) 1297 { 1298 /* If a builtin function is redeclared as `static', merge 1299 the declarations, but make the original one static. */ 1300 DECL_THIS_STATIC (olddecl) = 1; 1301 TREE_PUBLIC (olddecl) = 0; 1302 1303 /* Make the old declaration consistent with the new one so 1304 that all remnants of the builtin-ness of this function 1305 will be banished. */ 1306 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl)); 1307 COPY_DECL_RTL (newdecl, olddecl); 1308 } 1309 } 1310 else if (TREE_CODE (olddecl) != TREE_CODE (newdecl)) 1311 { 1312 /* C++ Standard, 3.3, clause 4: 1313 "[Note: a namespace name or a class template name must be unique 1314 in its declarative region (7.3.2, clause 14). ]" */ 1315 if (TREE_CODE (olddecl) != NAMESPACE_DECL 1316 && TREE_CODE (newdecl) != NAMESPACE_DECL 1317 && (TREE_CODE (olddecl) != TEMPLATE_DECL 1318 || TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) != TYPE_DECL) 1319 && (TREE_CODE (newdecl) != TEMPLATE_DECL 1320 || TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != TYPE_DECL)) 1321 { 1322 if ((TREE_CODE (olddecl) == TYPE_DECL && DECL_ARTIFICIAL (olddecl) 1323 && TREE_CODE (newdecl) != TYPE_DECL) 1324 || (TREE_CODE (newdecl) == TYPE_DECL && DECL_ARTIFICIAL (newdecl) 1325 && TREE_CODE (olddecl) != TYPE_DECL)) 1326 { 1327 /* We do nothing special here, because C++ does such nasty 1328 things with TYPE_DECLs. Instead, just let the TYPE_DECL 1329 get shadowed, and know that if we need to find a TYPE_DECL 1330 for a given name, we can look in the IDENTIFIER_TYPE_VALUE 1331 slot of the identifier. */ 1332 return NULL_TREE; 1333 } 1334 1335 if ((TREE_CODE (newdecl) == FUNCTION_DECL 1336 && DECL_FUNCTION_TEMPLATE_P (olddecl)) 1337 || (TREE_CODE (olddecl) == FUNCTION_DECL 1338 && DECL_FUNCTION_TEMPLATE_P (newdecl))) 1339 return NULL_TREE; 1340 } 1341 1342 error ("%q#D redeclared as different kind of symbol", newdecl); 1343 if (TREE_CODE (olddecl) == TREE_LIST) 1344 olddecl = TREE_VALUE (olddecl); 1345 error ("previous declaration of %q+#D", olddecl); 1346 1347 return error_mark_node; 1348 } 1349 else if (!types_match) 1350 { 1351 if (CP_DECL_CONTEXT (newdecl) != CP_DECL_CONTEXT (olddecl)) 1352 /* These are certainly not duplicate declarations; they're 1353 from different scopes. */ 1354 return NULL_TREE; 1355 1356 if (TREE_CODE (newdecl) == TEMPLATE_DECL) 1357 { 1358 /* The name of a class template may not be declared to refer to 1359 any other template, class, function, object, namespace, value, 1360 or type in the same scope. */ 1361 if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == TYPE_DECL 1362 || TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL) 1363 { 1364 error ("declaration of template %q#D", newdecl); 1365 error ("conflicts with previous declaration %q+#D", olddecl); 1366 } 1367 else if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL 1368 && TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL 1369 && compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))), 1370 TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl)))) 1371 && comp_template_parms (DECL_TEMPLATE_PARMS (newdecl), 1372 DECL_TEMPLATE_PARMS (olddecl)) 1373 /* Template functions can be disambiguated by 1374 return type. */ 1375 && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)), 1376 TREE_TYPE (TREE_TYPE (olddecl)))) 1377 { 1378 error ("new declaration %q#D", newdecl); 1379 error ("ambiguates old declaration %q+#D", olddecl); 1380 } 1381 return NULL_TREE; 1382 } 1383 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1384 { 1385 if (DECL_EXTERN_C_P (newdecl) && DECL_EXTERN_C_P (olddecl)) 1386 { 1387 error ("declaration of C function %q#D conflicts with", 1388 newdecl); 1389 error ("previous declaration %q+#D here", olddecl); 1390 } 1391 else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)), 1392 TYPE_ARG_TYPES (TREE_TYPE (olddecl)))) 1393 { 1394 error ("new declaration %q#D", newdecl); 1395 error ("ambiguates old declaration %q+#D", olddecl); 1396 return error_mark_node; 1397 } 1398 else 1399 return NULL_TREE; 1400 } 1401 else 1402 { 1403 error ("conflicting declaration %q#D", newdecl); 1404 error ("%q+D has a previous declaration as %q#D", olddecl, olddecl); 1405 return error_mark_node; 1406 } 1407 } 1408 else if (TREE_CODE (newdecl) == FUNCTION_DECL 1409 && ((DECL_TEMPLATE_SPECIALIZATION (olddecl) 1410 && (!DECL_TEMPLATE_INFO (newdecl) 1411 || (DECL_TI_TEMPLATE (newdecl) 1412 != DECL_TI_TEMPLATE (olddecl)))) 1413 || (DECL_TEMPLATE_SPECIALIZATION (newdecl) 1414 && (!DECL_TEMPLATE_INFO (olddecl) 1415 || (DECL_TI_TEMPLATE (olddecl) 1416 != DECL_TI_TEMPLATE (newdecl)))))) 1417 /* It's OK to have a template specialization and a non-template 1418 with the same type, or to have specializations of two 1419 different templates with the same type. Note that if one is a 1420 specialization, and the other is an instantiation of the same 1421 template, that we do not exit at this point. That situation 1422 can occur if we instantiate a template class, and then 1423 specialize one of its methods. This situation is valid, but 1424 the declarations must be merged in the usual way. */ 1425 return NULL_TREE; 1426 else if (TREE_CODE (newdecl) == FUNCTION_DECL 1427 && ((DECL_TEMPLATE_INSTANTIATION (olddecl) 1428 && !DECL_USE_TEMPLATE (newdecl)) 1429 || (DECL_TEMPLATE_INSTANTIATION (newdecl) 1430 && !DECL_USE_TEMPLATE (olddecl)))) 1431 /* One of the declarations is a template instantiation, and the 1432 other is not a template at all. That's OK. */ 1433 return NULL_TREE; 1434 else if (TREE_CODE (newdecl) == NAMESPACE_DECL) 1435 { 1436 /* In [namespace.alias] we have: 1437 1438 In a declarative region, a namespace-alias-definition can be 1439 used to redefine a namespace-alias declared in that declarative 1440 region to refer only to the namespace to which it already 1441 refers. 1442 1443 Therefore, if we encounter a second alias directive for the same 1444 alias, we can just ignore the second directive. */ 1445 if (DECL_NAMESPACE_ALIAS (newdecl) 1446 && (DECL_NAMESPACE_ALIAS (newdecl) 1447 == DECL_NAMESPACE_ALIAS (olddecl))) 1448 return olddecl; 1449 /* [namespace.alias] 1450 1451 A namespace-name or namespace-alias shall not be declared as 1452 the name of any other entity in the same declarative region. 1453 A namespace-name defined at global scope shall not be 1454 declared as the name of any other entity in any global scope 1455 of the program. */ 1456 error ("declaration of namespace %qD conflicts with", newdecl); 1457 error ("previous declaration of namespace %q+D here", olddecl); 1458 return error_mark_node; 1459 } 1460 else 1461 { 1462 const char *errmsg = redeclaration_error_message (newdecl, olddecl); 1463 if (errmsg) 1464 { 1465 error_at (DECL_SOURCE_LOCATION (newdecl), errmsg, newdecl); 1466 if (DECL_NAME (olddecl) != NULL_TREE) 1467 error ((DECL_INITIAL (olddecl) && namespace_bindings_p ()) 1468 ? "%q+#D previously defined here" 1469 : "%q+#D previously declared here", olddecl); 1470 return error_mark_node; 1471 } 1472 else if (TREE_CODE (olddecl) == FUNCTION_DECL 1473 && DECL_INITIAL (olddecl) != NULL_TREE 1474 && TYPE_ARG_TYPES (TREE_TYPE (olddecl)) == NULL_TREE 1475 && TYPE_ARG_TYPES (TREE_TYPE (newdecl)) != NULL_TREE) 1476 { 1477 /* Prototype decl follows defn w/o prototype. */ 1478 warning_at (input_location, 0, "prototype for %q+#D", newdecl); 1479 warning_at (DECL_SOURCE_LOCATION (olddecl), 0, 1480 "follows non-prototype definition here"); 1481 } 1482 else if ((TREE_CODE (olddecl) == FUNCTION_DECL 1483 || TREE_CODE (olddecl) == VAR_DECL) 1484 && DECL_LANGUAGE (newdecl) != DECL_LANGUAGE (olddecl)) 1485 { 1486 /* [dcl.link] 1487 If two declarations of the same function or object 1488 specify different linkage-specifications ..., the program 1489 is ill-formed.... Except for functions with C++ linkage, 1490 a function declaration without a linkage specification 1491 shall not precede the first linkage specification for 1492 that function. A function can be declared without a 1493 linkage specification after an explicit linkage 1494 specification has been seen; the linkage explicitly 1495 specified in the earlier declaration is not affected by 1496 such a function declaration. 1497 1498 DR 563 raises the question why the restrictions on 1499 functions should not also apply to objects. Older 1500 versions of G++ silently ignore the linkage-specification 1501 for this example: 1502 1503 namespace N { 1504 extern int i; 1505 extern "C" int i; 1506 } 1507 1508 which is clearly wrong. Therefore, we now treat objects 1509 like functions. */ 1510 if (current_lang_depth () == 0) 1511 { 1512 /* There is no explicit linkage-specification, so we use 1513 the linkage from the previous declaration. */ 1514 if (!DECL_LANG_SPECIFIC (newdecl)) 1515 retrofit_lang_decl (newdecl); 1516 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl)); 1517 } 1518 else 1519 { 1520 error ("previous declaration of %q+#D with %qL linkage", 1521 olddecl, DECL_LANGUAGE (olddecl)); 1522 error ("conflicts with new declaration with %qL linkage", 1523 DECL_LANGUAGE (newdecl)); 1524 } 1525 } 1526 1527 if (DECL_LANG_SPECIFIC (olddecl) && DECL_USE_TEMPLATE (olddecl)) 1528 ; 1529 else if (TREE_CODE (olddecl) == FUNCTION_DECL) 1530 { 1531 tree t1 = TYPE_ARG_TYPES (TREE_TYPE (olddecl)); 1532 tree t2 = TYPE_ARG_TYPES (TREE_TYPE (newdecl)); 1533 int i = 1; 1534 1535 if (TREE_CODE (TREE_TYPE (newdecl)) == METHOD_TYPE) 1536 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2); 1537 1538 for (; t1 && t1 != void_list_node; 1539 t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2), i++) 1540 if (TREE_PURPOSE (t1) && TREE_PURPOSE (t2)) 1541 { 1542 if (1 == simple_cst_equal (TREE_PURPOSE (t1), 1543 TREE_PURPOSE (t2))) 1544 { 1545 permerror (input_location, "default argument given for parameter %d of %q#D", 1546 i, newdecl); 1547 permerror (input_location, "after previous specification in %q+#D", olddecl); 1548 } 1549 else 1550 { 1551 error ("default argument given for parameter %d of %q#D", 1552 i, newdecl); 1553 error ("after previous specification in %q+#D", 1554 olddecl); 1555 } 1556 } 1557 } 1558 } 1559 1560 /* Do not merge an implicit typedef with an explicit one. In: 1561 1562 class A; 1563 ... 1564 typedef class A A __attribute__ ((foo)); 1565 1566 the attribute should apply only to the typedef. */ 1567 if (TREE_CODE (olddecl) == TYPE_DECL 1568 && (DECL_IMPLICIT_TYPEDEF_P (olddecl) 1569 || DECL_IMPLICIT_TYPEDEF_P (newdecl))) 1570 return NULL_TREE; 1571 1572 /* If new decl is `static' and an `extern' was seen previously, 1573 warn about it. */ 1574 warn_extern_redeclared_static (newdecl, olddecl); 1575 1576 /* We have committed to returning 1 at this point. */ 1577 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1578 { 1579 /* Now that functions must hold information normally held 1580 by field decls, there is extra work to do so that 1581 declaration information does not get destroyed during 1582 definition. */ 1583 if (DECL_VINDEX (olddecl)) 1584 DECL_VINDEX (newdecl) = DECL_VINDEX (olddecl); 1585 if (DECL_CONTEXT (olddecl)) 1586 DECL_CONTEXT (newdecl) = DECL_CONTEXT (olddecl); 1587 DECL_STATIC_CONSTRUCTOR (newdecl) |= DECL_STATIC_CONSTRUCTOR (olddecl); 1588 DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl); 1589 DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl); 1590 DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl); 1591 DECL_INVALID_OVERRIDER_P (newdecl) |= DECL_INVALID_OVERRIDER_P (olddecl); 1592 DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl); 1593 if (DECL_OVERLOADED_OPERATOR_P (olddecl) != ERROR_MARK) 1594 SET_OVERLOADED_OPERATOR_CODE 1595 (newdecl, DECL_OVERLOADED_OPERATOR_P (olddecl)); 1596 new_defines_function = DECL_INITIAL (newdecl) != NULL_TREE; 1597 1598 /* Optionally warn about more than one declaration for the same 1599 name, but don't warn about a function declaration followed by a 1600 definition. */ 1601 if (warn_redundant_decls && ! DECL_ARTIFICIAL (olddecl) 1602 && !(new_defines_function && DECL_INITIAL (olddecl) == NULL_TREE) 1603 /* Don't warn about extern decl followed by definition. */ 1604 && !(DECL_EXTERNAL (olddecl) && ! DECL_EXTERNAL (newdecl)) 1605 /* Don't warn about friends, let add_friend take care of it. */ 1606 && ! (newdecl_is_friend || DECL_FRIEND_P (olddecl))) 1607 { 1608 warning (OPT_Wredundant_decls, "redundant redeclaration of %qD in same scope", newdecl); 1609 warning (OPT_Wredundant_decls, "previous declaration of %q+D", olddecl); 1610 } 1611 1612 if (DECL_DELETED_FN (newdecl)) 1613 { 1614 error ("deleted definition of %qD", newdecl); 1615 error ("after previous declaration %q+D", olddecl); 1616 } 1617 } 1618 1619 /* Deal with C++: must preserve virtual function table size. */ 1620 if (TREE_CODE (olddecl) == TYPE_DECL) 1621 { 1622 tree newtype = TREE_TYPE (newdecl); 1623 tree oldtype = TREE_TYPE (olddecl); 1624 1625 if (newtype != error_mark_node && oldtype != error_mark_node 1626 && TYPE_LANG_SPECIFIC (newtype) && TYPE_LANG_SPECIFIC (oldtype)) 1627 CLASSTYPE_FRIEND_CLASSES (newtype) 1628 = CLASSTYPE_FRIEND_CLASSES (oldtype); 1629 1630 DECL_ORIGINAL_TYPE (newdecl) = DECL_ORIGINAL_TYPE (olddecl); 1631 } 1632 1633 /* Copy all the DECL_... slots specified in the new decl 1634 except for any that we copy here from the old type. */ 1635 DECL_ATTRIBUTES (newdecl) 1636 = (*targetm.merge_decl_attributes) (olddecl, newdecl); 1637 1638 if (TREE_CODE (newdecl) == TEMPLATE_DECL) 1639 { 1640 tree old_result; 1641 tree new_result; 1642 old_result = DECL_TEMPLATE_RESULT (olddecl); 1643 new_result = DECL_TEMPLATE_RESULT (newdecl); 1644 TREE_TYPE (olddecl) = TREE_TYPE (old_result); 1645 DECL_TEMPLATE_SPECIALIZATIONS (olddecl) 1646 = chainon (DECL_TEMPLATE_SPECIALIZATIONS (olddecl), 1647 DECL_TEMPLATE_SPECIALIZATIONS (newdecl)); 1648 1649 DECL_ATTRIBUTES (old_result) 1650 = (*targetm.merge_decl_attributes) (old_result, new_result); 1651 1652 if (DECL_FUNCTION_TEMPLATE_P (newdecl)) 1653 { 1654 if (GNU_INLINE_P (old_result) != GNU_INLINE_P (new_result) 1655 && DECL_INITIAL (new_result)) 1656 { 1657 if (DECL_INITIAL (old_result)) 1658 DECL_UNINLINABLE (old_result) = 1; 1659 else 1660 DECL_UNINLINABLE (old_result) = DECL_UNINLINABLE (new_result); 1661 DECL_EXTERNAL (old_result) = DECL_EXTERNAL (new_result); 1662 DECL_NOT_REALLY_EXTERN (old_result) 1663 = DECL_NOT_REALLY_EXTERN (new_result); 1664 DECL_INTERFACE_KNOWN (old_result) 1665 = DECL_INTERFACE_KNOWN (new_result); 1666 DECL_DECLARED_INLINE_P (old_result) 1667 = DECL_DECLARED_INLINE_P (new_result); 1668 DECL_DISREGARD_INLINE_LIMITS (old_result) 1669 |= DECL_DISREGARD_INLINE_LIMITS (new_result); 1670 1671 } 1672 else 1673 { 1674 DECL_DECLARED_INLINE_P (old_result) 1675 |= DECL_DECLARED_INLINE_P (new_result); 1676 DECL_DISREGARD_INLINE_LIMITS (old_result) 1677 |= DECL_DISREGARD_INLINE_LIMITS (new_result); 1678 check_redeclaration_exception_specification (newdecl, olddecl); 1679 } 1680 } 1681 1682 /* If the new declaration is a definition, update the file and 1683 line information on the declaration, and also make 1684 the old declaration the same definition. */ 1685 if (DECL_INITIAL (new_result) != NULL_TREE) 1686 { 1687 DECL_SOURCE_LOCATION (olddecl) 1688 = DECL_SOURCE_LOCATION (old_result) 1689 = DECL_SOURCE_LOCATION (newdecl); 1690 DECL_INITIAL (old_result) = DECL_INITIAL (new_result); 1691 if (DECL_FUNCTION_TEMPLATE_P (newdecl)) 1692 { 1693 tree parm; 1694 DECL_ARGUMENTS (old_result) 1695 = DECL_ARGUMENTS (new_result); 1696 for (parm = DECL_ARGUMENTS (old_result); parm; 1697 parm = TREE_CHAIN (parm)) 1698 DECL_CONTEXT (parm) = old_result; 1699 } 1700 } 1701 1702 return olddecl; 1703 } 1704 1705 if (types_match) 1706 { 1707 /* Automatically handles default parameters. */ 1708 tree oldtype = TREE_TYPE (olddecl); 1709 tree newtype; 1710 1711 /* Merge the data types specified in the two decls. */ 1712 newtype = merge_types (TREE_TYPE (newdecl), TREE_TYPE (olddecl)); 1713 1714 /* If merge_types produces a non-typedef type, just use the old type. */ 1715 if (TREE_CODE (newdecl) == TYPE_DECL 1716 && newtype == DECL_ORIGINAL_TYPE (newdecl)) 1717 newtype = oldtype; 1718 1719 if (TREE_CODE (newdecl) == VAR_DECL) 1720 { 1721 DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl); 1722 DECL_INITIALIZED_P (newdecl) |= DECL_INITIALIZED_P (olddecl); 1723 DECL_NONTRIVIALLY_INITIALIZED_P (newdecl) 1724 |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl); 1725 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (newdecl) 1726 |= DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (olddecl); 1727 1728 /* Merge the threadprivate attribute from OLDDECL into NEWDECL. */ 1729 if (DECL_LANG_SPECIFIC (olddecl) 1730 && CP_DECL_THREADPRIVATE_P (olddecl)) 1731 { 1732 /* Allocate a LANG_SPECIFIC structure for NEWDECL, if needed. */ 1733 if (!DECL_LANG_SPECIFIC (newdecl)) 1734 retrofit_lang_decl (newdecl); 1735 1736 DECL_TLS_MODEL (newdecl) = DECL_TLS_MODEL (olddecl); 1737 CP_DECL_THREADPRIVATE_P (newdecl) = 1; 1738 } 1739 } 1740 1741 /* Do this after calling `merge_types' so that default 1742 parameters don't confuse us. */ 1743 else if (TREE_CODE (newdecl) == FUNCTION_DECL) 1744 check_redeclaration_exception_specification (newdecl, olddecl); 1745 TREE_TYPE (newdecl) = TREE_TYPE (olddecl) = newtype; 1746 1747 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1748 check_default_args (newdecl); 1749 1750 /* Lay the type out, unless already done. */ 1751 if (! same_type_p (newtype, oldtype) 1752 && TREE_TYPE (newdecl) != error_mark_node 1753 && !(processing_template_decl && uses_template_parms (newdecl))) 1754 layout_type (TREE_TYPE (newdecl)); 1755 1756 if ((TREE_CODE (newdecl) == VAR_DECL 1757 || TREE_CODE (newdecl) == PARM_DECL 1758 || TREE_CODE (newdecl) == RESULT_DECL 1759 || TREE_CODE (newdecl) == FIELD_DECL 1760 || TREE_CODE (newdecl) == TYPE_DECL) 1761 && !(processing_template_decl && uses_template_parms (newdecl))) 1762 layout_decl (newdecl, 0); 1763 1764 /* Merge the type qualifiers. */ 1765 if (TREE_READONLY (newdecl)) 1766 TREE_READONLY (olddecl) = 1; 1767 if (TREE_THIS_VOLATILE (newdecl)) 1768 TREE_THIS_VOLATILE (olddecl) = 1; 1769 if (TREE_NOTHROW (newdecl)) 1770 TREE_NOTHROW (olddecl) = 1; 1771 1772 /* Merge deprecatedness. */ 1773 if (TREE_DEPRECATED (newdecl)) 1774 TREE_DEPRECATED (olddecl) = 1; 1775 1776 /* Preserve function specific target and optimization options */ 1777 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1778 { 1779 if (DECL_FUNCTION_SPECIFIC_TARGET (olddecl) 1780 && !DECL_FUNCTION_SPECIFIC_TARGET (newdecl)) 1781 DECL_FUNCTION_SPECIFIC_TARGET (newdecl) 1782 = DECL_FUNCTION_SPECIFIC_TARGET (olddecl); 1783 1784 if (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl) 1785 && !DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl)) 1786 DECL_FUNCTION_SPECIFIC_OPTIMIZATION (newdecl) 1787 = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (olddecl); 1788 } 1789 1790 /* Merge the initialization information. */ 1791 if (DECL_INITIAL (newdecl) == NULL_TREE 1792 && DECL_INITIAL (olddecl) != NULL_TREE) 1793 { 1794 DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl); 1795 DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl); 1796 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1797 { 1798 DECL_SAVED_TREE (newdecl) = DECL_SAVED_TREE (olddecl); 1799 DECL_STRUCT_FUNCTION (newdecl) = DECL_STRUCT_FUNCTION (olddecl); 1800 } 1801 } 1802 1803 /* Merge the section attribute. 1804 We want to issue an error if the sections conflict but that must be 1805 done later in decl_attributes since we are called before attributes 1806 are assigned. */ 1807 if (DECL_SECTION_NAME (newdecl) == NULL_TREE) 1808 DECL_SECTION_NAME (newdecl) = DECL_SECTION_NAME (olddecl); 1809 1810 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1811 { 1812 DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (newdecl) 1813 |= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl); 1814 DECL_NO_LIMIT_STACK (newdecl) |= DECL_NO_LIMIT_STACK (olddecl); 1815 TREE_THIS_VOLATILE (newdecl) |= TREE_THIS_VOLATILE (olddecl); 1816 TREE_NOTHROW (newdecl) |= TREE_NOTHROW (olddecl); 1817 DECL_IS_MALLOC (newdecl) |= DECL_IS_MALLOC (olddecl); 1818 DECL_IS_OPERATOR_NEW (newdecl) |= DECL_IS_OPERATOR_NEW (olddecl); 1819 DECL_PURE_P (newdecl) |= DECL_PURE_P (olddecl); 1820 TREE_READONLY (newdecl) |= TREE_READONLY (olddecl); 1821 DECL_LOOPING_CONST_OR_PURE_P (newdecl) 1822 |= DECL_LOOPING_CONST_OR_PURE_P (olddecl); 1823 /* Keep the old RTL. */ 1824 COPY_DECL_RTL (olddecl, newdecl); 1825 } 1826 else if (TREE_CODE (newdecl) == VAR_DECL 1827 && (DECL_SIZE (olddecl) || !DECL_SIZE (newdecl))) 1828 { 1829 /* Keep the old RTL. We cannot keep the old RTL if the old 1830 declaration was for an incomplete object and the new 1831 declaration is not since many attributes of the RTL will 1832 change. */ 1833 COPY_DECL_RTL (olddecl, newdecl); 1834 } 1835 } 1836 /* If cannot merge, then use the new type and qualifiers, 1837 and don't preserve the old rtl. */ 1838 else 1839 { 1840 /* Clean out any memory we had of the old declaration. */ 1841 tree oldstatic = value_member (olddecl, static_aggregates); 1842 if (oldstatic) 1843 TREE_VALUE (oldstatic) = error_mark_node; 1844 1845 TREE_TYPE (olddecl) = TREE_TYPE (newdecl); 1846 TREE_READONLY (olddecl) = TREE_READONLY (newdecl); 1847 TREE_THIS_VOLATILE (olddecl) = TREE_THIS_VOLATILE (newdecl); 1848 TREE_SIDE_EFFECTS (olddecl) = TREE_SIDE_EFFECTS (newdecl); 1849 } 1850 1851 /* Merge the storage class information. */ 1852 merge_weak (newdecl, olddecl); 1853 1854 if (DECL_ONE_ONLY (olddecl)) 1855 DECL_COMDAT_GROUP (newdecl) = DECL_COMDAT_GROUP (olddecl); 1856 1857 DECL_DEFER_OUTPUT (newdecl) |= DECL_DEFER_OUTPUT (olddecl); 1858 TREE_PUBLIC (newdecl) = TREE_PUBLIC (olddecl); 1859 TREE_STATIC (olddecl) = TREE_STATIC (newdecl) |= TREE_STATIC (olddecl); 1860 if (! DECL_EXTERNAL (olddecl)) 1861 DECL_EXTERNAL (newdecl) = 0; 1862 1863 new_template_info = NULL_TREE; 1864 if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl)) 1865 { 1866 bool new_redefines_gnu_inline = false; 1867 1868 if (new_defines_function 1869 && ((DECL_INTERFACE_KNOWN (olddecl) 1870 && TREE_CODE (olddecl) == FUNCTION_DECL) 1871 || (TREE_CODE (olddecl) == TEMPLATE_DECL 1872 && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) 1873 == FUNCTION_DECL)))) 1874 { 1875 tree fn = olddecl; 1876 1877 if (TREE_CODE (fn) == TEMPLATE_DECL) 1878 fn = DECL_TEMPLATE_RESULT (olddecl); 1879 1880 new_redefines_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn); 1881 } 1882 1883 if (!new_redefines_gnu_inline) 1884 { 1885 DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl); 1886 DECL_NOT_REALLY_EXTERN (newdecl) |= DECL_NOT_REALLY_EXTERN (olddecl); 1887 DECL_COMDAT (newdecl) |= DECL_COMDAT (olddecl); 1888 } 1889 DECL_TEMPLATE_INSTANTIATED (newdecl) 1890 |= DECL_TEMPLATE_INSTANTIATED (olddecl); 1891 DECL_ODR_USED (newdecl) |= DECL_ODR_USED (olddecl); 1892 1893 /* If the OLDDECL is an instantiation and/or specialization, 1894 then the NEWDECL must be too. But, it may not yet be marked 1895 as such if the caller has created NEWDECL, but has not yet 1896 figured out that it is a redeclaration. */ 1897 if (!DECL_USE_TEMPLATE (newdecl)) 1898 DECL_USE_TEMPLATE (newdecl) = DECL_USE_TEMPLATE (olddecl); 1899 1900 /* Don't really know how much of the language-specific 1901 values we should copy from old to new. */ 1902 DECL_IN_AGGR_P (newdecl) = DECL_IN_AGGR_P (olddecl); 1903 DECL_REPO_AVAILABLE_P (newdecl) = DECL_REPO_AVAILABLE_P (olddecl); 1904 DECL_INITIALIZED_IN_CLASS_P (newdecl) 1905 |= DECL_INITIALIZED_IN_CLASS_P (olddecl); 1906 1907 if (LANG_DECL_HAS_MIN (newdecl)) 1908 { 1909 DECL_LANG_SPECIFIC (newdecl)->u.min.u2 = 1910 DECL_LANG_SPECIFIC (olddecl)->u.min.u2; 1911 if (DECL_TEMPLATE_INFO (newdecl)) 1912 new_template_info = DECL_TEMPLATE_INFO (newdecl); 1913 DECL_TEMPLATE_INFO (newdecl) = DECL_TEMPLATE_INFO (olddecl); 1914 } 1915 /* Only functions have these fields. */ 1916 if (TREE_CODE (newdecl) == FUNCTION_DECL 1917 || DECL_FUNCTION_TEMPLATE_P (newdecl)) 1918 { 1919 DECL_NONCONVERTING_P (newdecl) = DECL_NONCONVERTING_P (olddecl); 1920 olddecl_friend = DECL_FRIEND_P (olddecl); 1921 hidden_friend = (DECL_ANTICIPATED (olddecl) 1922 && DECL_HIDDEN_FRIEND_P (olddecl) 1923 && newdecl_is_friend); 1924 DECL_BEFRIENDING_CLASSES (newdecl) 1925 = chainon (DECL_BEFRIENDING_CLASSES (newdecl), 1926 DECL_BEFRIENDING_CLASSES (olddecl)); 1927 /* DECL_THUNKS is only valid for virtual functions, 1928 otherwise it is a DECL_FRIEND_CONTEXT. */ 1929 if (DECL_VIRTUAL_P (newdecl)) 1930 DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl); 1931 } 1932 } 1933 1934 if (TREE_CODE (newdecl) == FUNCTION_DECL) 1935 { 1936 tree parm; 1937 1938 /* Merge parameter attributes. */ 1939 tree oldarg, newarg; 1940 for (oldarg = DECL_ARGUMENTS(olddecl), 1941 newarg = DECL_ARGUMENTS(newdecl); 1942 oldarg && newarg; 1943 oldarg = TREE_CHAIN(oldarg), newarg = TREE_CHAIN(newarg)) { 1944 DECL_ATTRIBUTES (newarg) 1945 = (*targetm.merge_decl_attributes) (oldarg, newarg); 1946 DECL_ATTRIBUTES (oldarg) = DECL_ATTRIBUTES (newarg); 1947 } 1948 1949 if (DECL_TEMPLATE_INSTANTIATION (olddecl) 1950 && !DECL_TEMPLATE_INSTANTIATION (newdecl)) 1951 { 1952 /* If newdecl is not a specialization, then it is not a 1953 template-related function at all. And that means that we 1954 should have exited above, returning 0. */ 1955 gcc_assert (DECL_TEMPLATE_SPECIALIZATION (newdecl)); 1956 1957 if (DECL_ODR_USED (olddecl)) 1958 /* From [temp.expl.spec]: 1959 1960 If a template, a member template or the member of a class 1961 template is explicitly specialized then that 1962 specialization shall be declared before the first use of 1963 that specialization that would cause an implicit 1964 instantiation to take place, in every translation unit in 1965 which such a use occurs. */ 1966 error ("explicit specialization of %qD after first use", 1967 olddecl); 1968 1969 SET_DECL_TEMPLATE_SPECIALIZATION (olddecl); 1970 1971 /* Don't propagate visibility from the template to the 1972 specialization here. We'll do that in determine_visibility if 1973 appropriate. */ 1974 DECL_VISIBILITY_SPECIFIED (olddecl) = 0; 1975 1976 /* [temp.expl.spec/14] We don't inline explicit specialization 1977 just because the primary template says so. */ 1978 1979 /* But still keep DECL_DISREGARD_INLINE_LIMITS in sync with 1980 the always_inline attribute. */ 1981 if (DECL_DISREGARD_INLINE_LIMITS (olddecl) 1982 && !DECL_DISREGARD_INLINE_LIMITS (newdecl)) 1983 { 1984 if (DECL_DECLARED_INLINE_P (newdecl)) 1985 DECL_DISREGARD_INLINE_LIMITS (newdecl) = true; 1986 else 1987 DECL_ATTRIBUTES (newdecl) 1988 = remove_attribute ("always_inline", 1989 DECL_ATTRIBUTES (newdecl)); 1990 } 1991 } 1992 else if (new_defines_function && DECL_INITIAL (olddecl)) 1993 { 1994 /* Never inline re-defined extern inline functions. 1995 FIXME: this could be better handled by keeping both 1996 function as separate declarations. */ 1997 DECL_UNINLINABLE (newdecl) = 1; 1998 } 1999 else 2000 { 2001 if (DECL_PENDING_INLINE_INFO (newdecl) == 0) 2002 DECL_PENDING_INLINE_INFO (newdecl) = DECL_PENDING_INLINE_INFO (olddecl); 2003 2004 DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl); 2005 2006 DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl) 2007 = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl)); 2008 2009 DECL_DISREGARD_INLINE_LIMITS (newdecl) 2010 = DECL_DISREGARD_INLINE_LIMITS (olddecl) 2011 = (DECL_DISREGARD_INLINE_LIMITS (newdecl) 2012 || DECL_DISREGARD_INLINE_LIMITS (olddecl)); 2013 } 2014 2015 /* Preserve abstractness on cloned [cd]tors. */ 2016 DECL_ABSTRACT (newdecl) = DECL_ABSTRACT (olddecl); 2017 2018 /* Update newdecl's parms to point at olddecl. */ 2019 for (parm = DECL_ARGUMENTS (newdecl); parm; 2020 parm = TREE_CHAIN (parm)) 2021 DECL_CONTEXT (parm) = olddecl; 2022 2023 if (! types_match) 2024 { 2025 SET_DECL_LANGUAGE (olddecl, DECL_LANGUAGE (newdecl)); 2026 COPY_DECL_ASSEMBLER_NAME (newdecl, olddecl); 2027 COPY_DECL_RTL (newdecl, olddecl); 2028 } 2029 if (! types_match || new_defines_function) 2030 { 2031 /* These need to be copied so that the names are available. 2032 Note that if the types do match, we'll preserve inline 2033 info and other bits, but if not, we won't. */ 2034 DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl); 2035 DECL_RESULT (olddecl) = DECL_RESULT (newdecl); 2036 } 2037 if (new_defines_function) 2038 /* If defining a function declared with other language 2039 linkage, use the previously declared language linkage. */ 2040 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl)); 2041 else if (types_match) 2042 { 2043 /* If redeclaring a builtin function, and not a definition, 2044 it stays built in. */ 2045 if (DECL_BUILT_IN (olddecl)) 2046 { 2047 DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl); 2048 DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl); 2049 /* If we're keeping the built-in definition, keep the rtl, 2050 regardless of declaration matches. */ 2051 COPY_DECL_RTL (olddecl, newdecl); 2052 } 2053 2054 DECL_RESULT (newdecl) = DECL_RESULT (olddecl); 2055 /* Don't clear out the arguments if we're just redeclaring a 2056 function. */ 2057 if (DECL_ARGUMENTS (olddecl)) 2058 DECL_ARGUMENTS (newdecl) = DECL_ARGUMENTS (olddecl); 2059 } 2060 } 2061 else if (TREE_CODE (newdecl) == NAMESPACE_DECL) 2062 NAMESPACE_LEVEL (newdecl) = NAMESPACE_LEVEL (olddecl); 2063 2064 /* Now preserve various other info from the definition. */ 2065 TREE_ADDRESSABLE (newdecl) = TREE_ADDRESSABLE (olddecl); 2066 TREE_ASM_WRITTEN (newdecl) = TREE_ASM_WRITTEN (olddecl); 2067 DECL_COMMON (newdecl) = DECL_COMMON (olddecl); 2068 COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl); 2069 2070 /* Warn about conflicting visibility specifications. */ 2071 if (DECL_VISIBILITY_SPECIFIED (olddecl) 2072 && DECL_VISIBILITY_SPECIFIED (newdecl) 2073 && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) 2074 { 2075 warning_at (input_location, OPT_Wattributes, 2076 "%q+D: visibility attribute ignored because it", newdecl); 2077 warning_at (DECL_SOURCE_LOCATION (olddecl), OPT_Wattributes, 2078 "conflicts with previous declaration here"); 2079 } 2080 /* Choose the declaration which specified visibility. */ 2081 if (DECL_VISIBILITY_SPECIFIED (olddecl)) 2082 { 2083 DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); 2084 DECL_VISIBILITY_SPECIFIED (newdecl) = 1; 2085 } 2086 /* Init priority used to be merged from newdecl to olddecl by the memcpy, 2087 so keep this behavior. */ 2088 if (TREE_CODE (newdecl) == VAR_DECL && DECL_HAS_INIT_PRIORITY_P (newdecl)) 2089 { 2090 SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl)); 2091 DECL_HAS_INIT_PRIORITY_P (olddecl) = 1; 2092 } 2093 /* Likewise for DECL_USER_ALIGN and DECL_PACKED. */ 2094 DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); 2095 if (TREE_CODE (newdecl) == FIELD_DECL) 2096 DECL_PACKED (olddecl) = DECL_PACKED (newdecl); 2097 2098 /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced 2099 with that from NEWDECL below. */ 2100 if (DECL_LANG_SPECIFIC (olddecl)) 2101 { 2102 gcc_assert (DECL_LANG_SPECIFIC (olddecl) 2103 != DECL_LANG_SPECIFIC (newdecl)); 2104 ggc_free (DECL_LANG_SPECIFIC (olddecl)); 2105 } 2106 2107 /* Merge the USED information. */ 2108 if (TREE_USED (olddecl)) 2109 TREE_USED (newdecl) = 1; 2110 else if (TREE_USED (newdecl)) 2111 TREE_USED (olddecl) = 1; 2112 if (DECL_PRESERVE_P (olddecl)) 2113 DECL_PRESERVE_P (newdecl) = 1; 2114 else if (DECL_PRESERVE_P (newdecl)) 2115 DECL_PRESERVE_P (olddecl) = 1; 2116 2117 if (TREE_CODE (newdecl) == FUNCTION_DECL) 2118 { 2119 int function_size; 2120 2121 function_size = sizeof (struct tree_decl_common); 2122 2123 memcpy ((char *) olddecl + sizeof (struct tree_common), 2124 (char *) newdecl + sizeof (struct tree_common), 2125 function_size - sizeof (struct tree_common)); 2126 2127 memcpy ((char *) olddecl + sizeof (struct tree_decl_common), 2128 (char *) newdecl + sizeof (struct tree_decl_common), 2129 sizeof (struct tree_function_decl) - sizeof (struct tree_decl_common)); 2130 if (new_template_info) 2131 /* If newdecl is a template instantiation, it is possible that 2132 the following sequence of events has occurred: 2133 2134 o A friend function was declared in a class template. The 2135 class template was instantiated. 2136 2137 o The instantiation of the friend declaration was 2138 recorded on the instantiation list, and is newdecl. 2139 2140 o Later, however, instantiate_class_template called pushdecl 2141 on the newdecl to perform name injection. But, pushdecl in 2142 turn called duplicate_decls when it discovered that another 2143 declaration of a global function with the same name already 2144 existed. 2145 2146 o Here, in duplicate_decls, we decided to clobber newdecl. 2147 2148 If we're going to do that, we'd better make sure that 2149 olddecl, and not newdecl, is on the list of 2150 instantiations so that if we try to do the instantiation 2151 again we won't get the clobbered declaration. */ 2152 reregister_specialization (newdecl, 2153 new_template_info, 2154 olddecl); 2155 } 2156 else 2157 { 2158 size_t size = tree_code_size (TREE_CODE (olddecl)); 2159 memcpy ((char *) olddecl + sizeof (struct tree_common), 2160 (char *) newdecl + sizeof (struct tree_common), 2161 sizeof (struct tree_decl_common) - sizeof (struct tree_common)); 2162 switch (TREE_CODE (olddecl)) 2163 { 2164 case LABEL_DECL: 2165 case VAR_DECL: 2166 case RESULT_DECL: 2167 case PARM_DECL: 2168 case FIELD_DECL: 2169 case TYPE_DECL: 2170 case CONST_DECL: 2171 { 2172 memcpy ((char *) olddecl + sizeof (struct tree_decl_common), 2173 (char *) newdecl + sizeof (struct tree_decl_common), 2174 size - sizeof (struct tree_decl_common) 2175 + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *)); 2176 } 2177 break; 2178 default: 2179 memcpy ((char *) olddecl + sizeof (struct tree_decl_common), 2180 (char *) newdecl + sizeof (struct tree_decl_common), 2181 sizeof (struct tree_decl_non_common) - sizeof (struct tree_decl_common) 2182 + TREE_CODE_LENGTH (TREE_CODE (newdecl)) * sizeof (char *)); 2183 break; 2184 } 2185 } 2186 DECL_UID (olddecl) = olddecl_uid; 2187 if (olddecl_friend) 2188 DECL_FRIEND_P (olddecl) = 1; 2189 if (hidden_friend) 2190 { 2191 DECL_ANTICIPATED (olddecl) = 1; 2192 DECL_HIDDEN_FRIEND_P (olddecl) = 1; 2193 } 2194 2195 /* NEWDECL contains the merged attribute lists. 2196 Update OLDDECL to be the same. */ 2197 DECL_ATTRIBUTES (olddecl) = DECL_ATTRIBUTES (newdecl); 2198 2199 /* If OLDDECL had its DECL_RTL instantiated, re-invoke make_decl_rtl 2200 so that encode_section_info has a chance to look at the new decl 2201 flags and attributes. */ 2202 if (DECL_RTL_SET_P (olddecl) 2203 && (TREE_CODE (olddecl) == FUNCTION_DECL 2204 || (TREE_CODE (olddecl) == VAR_DECL 2205 && TREE_STATIC (olddecl)))) 2206 make_decl_rtl (olddecl); 2207 2208 /* The NEWDECL will no longer be needed. Because every out-of-class 2209 declaration of a member results in a call to duplicate_decls, 2210 freeing these nodes represents in a significant savings. */ 2211 ggc_free (newdecl); 2212 2213 return olddecl; 2214 } 2215 2216 /* Return zero if the declaration NEWDECL is valid 2217 when the declaration OLDDECL (assumed to be for the same name) 2218 has already been seen. 2219 Otherwise return an error message format string with a %s 2220 where the identifier should go. */ 2221 2222 static const char * 2223 redeclaration_error_message (tree newdecl, tree olddecl) 2224 { 2225 if (TREE_CODE (newdecl) == TYPE_DECL) 2226 { 2227 /* Because C++ can put things into name space for free, 2228 constructs like "typedef struct foo { ... } foo" 2229 would look like an erroneous redeclaration. */ 2230 if (same_type_p (TREE_TYPE (newdecl), TREE_TYPE (olddecl))) 2231 return NULL; 2232 else 2233 return G_("redefinition of %q#D"); 2234 } 2235 else if (TREE_CODE (newdecl) == FUNCTION_DECL) 2236 { 2237 /* If this is a pure function, its olddecl will actually be 2238 the original initialization to `0' (which we force to call 2239 abort()). Don't complain about redefinition in this case. */ 2240 if (DECL_LANG_SPECIFIC (olddecl) && DECL_PURE_VIRTUAL_P (olddecl) 2241 && DECL_INITIAL (olddecl) == NULL_TREE) 2242 return NULL; 2243 2244 /* If both functions come from different namespaces, this is not 2245 a redeclaration - this is a conflict with a used function. */ 2246 if (DECL_NAMESPACE_SCOPE_P (olddecl) 2247 && DECL_CONTEXT (olddecl) != DECL_CONTEXT (newdecl) 2248 && ! decls_match (olddecl, newdecl)) 2249 return G_("%qD conflicts with used function"); 2250 2251 /* We'll complain about linkage mismatches in 2252 warn_extern_redeclared_static. */ 2253 2254 /* Defining the same name twice is no good. */ 2255 if (DECL_INITIAL (olddecl) != NULL_TREE 2256 && DECL_INITIAL (newdecl) != NULL_TREE) 2257 { 2258 if (DECL_NAME (olddecl) == NULL_TREE) 2259 return G_("%q#D not declared in class"); 2260 else if (!GNU_INLINE_P (olddecl) 2261 || GNU_INLINE_P (newdecl)) 2262 return G_("redefinition of %q#D"); 2263 } 2264 2265 if (DECL_DECLARED_INLINE_P (olddecl) && DECL_DECLARED_INLINE_P (newdecl)) 2266 { 2267 bool olda = GNU_INLINE_P (olddecl); 2268 bool newa = GNU_INLINE_P (newdecl); 2269 2270 if (olda != newa) 2271 { 2272 if (newa) 2273 return G_("%q+D redeclared inline with " 2274 "%<gnu_inline%> attribute"); 2275 else 2276 return G_("%q+D redeclared inline without " 2277 "%<gnu_inline%> attribute"); 2278 } 2279 } 2280 2281 return NULL; 2282 } 2283 else if (TREE_CODE (newdecl) == TEMPLATE_DECL) 2284 { 2285 tree nt, ot; 2286 2287 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL) 2288 { 2289 if (COMPLETE_TYPE_P (TREE_TYPE (newdecl)) 2290 && COMPLETE_TYPE_P (TREE_TYPE (olddecl))) 2291 return G_("redefinition of %q#D"); 2292 return NULL; 2293 } 2294 2295 if (TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) != FUNCTION_DECL 2296 || (DECL_TEMPLATE_RESULT (newdecl) 2297 == DECL_TEMPLATE_RESULT (olddecl))) 2298 return NULL; 2299 2300 nt = DECL_TEMPLATE_RESULT (newdecl); 2301 if (DECL_TEMPLATE_INFO (nt)) 2302 nt = DECL_TEMPLATE_RESULT (template_for_substitution (nt)); 2303 ot = DECL_TEMPLATE_RESULT (olddecl); 2304 if (DECL_TEMPLATE_INFO (ot)) 2305 ot = DECL_TEMPLATE_RESULT (template_for_substitution (ot)); 2306 if (DECL_INITIAL (nt) && DECL_INITIAL (ot) 2307 && (!GNU_INLINE_P (ot) || GNU_INLINE_P (nt))) 2308 return G_("redefinition of %q#D"); 2309 2310 if (DECL_DECLARED_INLINE_P (ot) && DECL_DECLARED_INLINE_P (nt)) 2311 { 2312 bool olda = GNU_INLINE_P (ot); 2313 bool newa = GNU_INLINE_P (nt); 2314 2315 if (olda != newa) 2316 { 2317 if (newa) 2318 return G_("%q+D redeclared inline with " 2319 "%<gnu_inline%> attribute"); 2320 else 2321 return G_("%q+D redeclared inline without " 2322 "%<gnu_inline%> attribute"); 2323 } 2324 } 2325 2326 /* Core issue #226 (C++0x): 2327 2328 If a friend function template declaration specifies a 2329 default template-argument, that declaration shall be a 2330 definition and shall be the only declaration of the 2331 function template in the translation unit. */ 2332 if ((cxx_dialect != cxx98) 2333 && TREE_CODE (ot) == FUNCTION_DECL && DECL_FRIEND_P (ot) 2334 && !check_default_tmpl_args (nt, DECL_TEMPLATE_PARMS (newdecl), 2335 /*is_primary=*/1, /*is_partial=*/0, 2336 /*is_friend_decl=*/2)) 2337 return G_("redeclaration of friend %q#D " 2338 "may not have default template arguments"); 2339 2340 return NULL; 2341 } 2342 else if (TREE_CODE (newdecl) == VAR_DECL 2343 && DECL_THREAD_LOCAL_P (newdecl) != DECL_THREAD_LOCAL_P (olddecl) 2344 && (! DECL_LANG_SPECIFIC (olddecl) 2345 || ! CP_DECL_THREADPRIVATE_P (olddecl) 2346 || DECL_THREAD_LOCAL_P (newdecl))) 2347 { 2348 /* Only variables can be thread-local, and all declarations must 2349 agree on this property. */ 2350 if (DECL_THREAD_LOCAL_P (newdecl)) 2351 return G_("thread-local declaration of %q#D follows " 2352 "non-thread-local declaration"); 2353 else 2354 return G_("non-thread-local declaration of %q#D follows " 2355 "thread-local declaration"); 2356 } 2357 else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl)) 2358 { 2359 /* The objects have been declared at namespace scope. If either 2360 is a member of an anonymous union, then this is an invalid 2361 redeclaration. For example: 2362 2363 int i; 2364 union { int i; }; 2365 2366 is invalid. */ 2367 if ((TREE_CODE (newdecl) == VAR_DECL && DECL_ANON_UNION_VAR_P (newdecl)) 2368 || (TREE_CODE (olddecl) == VAR_DECL && DECL_ANON_UNION_VAR_P (olddecl))) 2369 return G_("redeclaration of %q#D"); 2370 /* If at least one declaration is a reference, there is no 2371 conflict. For example: 2372 2373 int i = 3; 2374 extern int i; 2375 2376 is valid. */ 2377 if (DECL_EXTERNAL (newdecl) || DECL_EXTERNAL (olddecl)) 2378 return NULL; 2379 /* Reject two definitions. */ 2380 return G_("redefinition of %q#D"); 2381 } 2382 else 2383 { 2384 /* Objects declared with block scope: */ 2385 /* Reject two definitions, and reject a definition 2386 together with an external reference. */ 2387 if (!(DECL_EXTERNAL (newdecl) && DECL_EXTERNAL (olddecl))) 2388 return G_("redeclaration of %q#D"); 2389 return NULL; 2390 } 2391 } 2392 2393 /* Hash and equality functions for the named_label table. */ 2394 2395 static hashval_t 2396 named_label_entry_hash (const void *data) 2397 { 2398 const struct named_label_entry *ent = (const struct named_label_entry *) data; 2399 return DECL_UID (ent->label_decl); 2400 } 2401 2402 static int 2403 named_label_entry_eq (const void *a, const void *b) 2404 { 2405 const struct named_label_entry *ent_a = (const struct named_label_entry *) a; 2406 const struct named_label_entry *ent_b = (const struct named_label_entry *) b; 2407 return ent_a->label_decl == ent_b->label_decl; 2408 } 2409 2410 /* Create a new label, named ID. */ 2411 2412 static tree 2413 make_label_decl (tree id, int local_p) 2414 { 2415 struct named_label_entry *ent; 2416 void **slot; 2417 tree decl; 2418 2419 decl = build_decl (input_location, LABEL_DECL, id, void_type_node); 2420 2421 DECL_CONTEXT (decl) = current_function_decl; 2422 DECL_MODE (decl) = VOIDmode; 2423 C_DECLARED_LABEL_FLAG (decl) = local_p; 2424 2425 /* Say where one reference is to the label, for the sake of the 2426 error if it is not defined. */ 2427 DECL_SOURCE_LOCATION (decl) = input_location; 2428 2429 /* Record the fact that this identifier is bound to this label. */ 2430 SET_IDENTIFIER_LABEL_VALUE (id, decl); 2431 2432 /* Create the label htab for the function on demand. */ 2433 if (!named_labels) 2434 named_labels = htab_create_ggc (13, named_label_entry_hash, 2435 named_label_entry_eq, NULL); 2436 2437 /* Record this label on the list of labels used in this function. 2438 We do this before calling make_label_decl so that we get the 2439 IDENTIFIER_LABEL_VALUE before the new label is declared. */ 2440 ent = GGC_CNEW (struct named_label_entry); 2441 ent->label_decl = decl; 2442 2443 slot = htab_find_slot (named_labels, ent, INSERT); 2444 gcc_assert (*slot == NULL); 2445 *slot = ent; 2446 2447 return decl; 2448 } 2449 2450 /* Look for a label named ID in the current function. If one cannot 2451 be found, create one. (We keep track of used, but undefined, 2452 labels, and complain about them at the end of a function.) */ 2453 2454 tree 2455 lookup_label (tree id) 2456 { 2457 tree decl; 2458 2459 timevar_push (TV_NAME_LOOKUP); 2460 /* You can't use labels at global scope. */ 2461 if (current_function_decl == NULL_TREE) 2462 { 2463 error ("label %qE referenced outside of any function", id); 2464 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE); 2465 } 2466 2467 /* See if we've already got this label. */ 2468 decl = IDENTIFIER_LABEL_VALUE (id); 2469 if (decl != NULL_TREE && DECL_CONTEXT (decl) == current_function_decl) 2470 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl); 2471 2472 decl = make_label_decl (id, /*local_p=*/0); 2473 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl); 2474 } 2475 2476 /* Declare a local label named ID. */ 2477 2478 tree 2479 declare_local_label (tree id) 2480 { 2481 tree decl, shadow; 2482 2483 /* Add a new entry to the SHADOWED_LABELS list so that when we leave 2484 this scope we can restore the old value of IDENTIFIER_TYPE_VALUE. */ 2485 shadow = tree_cons (IDENTIFIER_LABEL_VALUE (id), NULL_TREE, 2486 current_binding_level->shadowed_labels); 2487 current_binding_level->shadowed_labels = shadow; 2488 2489 decl = make_label_decl (id, /*local_p=*/1); 2490 TREE_VALUE (shadow) = decl; 2491 2492 return decl; 2493 } 2494 2495 /* Returns nonzero if it is ill-formed to jump past the declaration of 2496 DECL. Returns 2 if it's also a real problem. */ 2497 2498 static int 2499 decl_jump_unsafe (tree decl) 2500 { 2501 /* [stmt.dcl]/3: A program that jumps from a point where a local variable 2502 with automatic storage duration is not in scope to a point where it is 2503 in scope is ill-formed unless the variable has scalar type, class type 2504 with a trivial default constructor and a trivial destructor, a 2505 cv-qualified version of one of these types, or an array of one of the 2506 preceding types and is declared without an initializer (8.5). */ 2507 tree type = TREE_TYPE (decl); 2508 2509 if (TREE_CODE (decl) != VAR_DECL || TREE_STATIC (decl) 2510 || type == error_mark_node) 2511 return 0; 2512 2513 type = strip_array_types (type); 2514 2515 if (type_has_nontrivial_default_init (TREE_TYPE (decl)) 2516 || DECL_NONTRIVIALLY_INITIALIZED_P (decl)) 2517 return 2; 2518 2519 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))) 2520 return 1; 2521 2522 return 0; 2523 } 2524 2525 /* A subroutine of check_previous_goto_1 to identify a branch to the user. */ 2526 2527 static void 2528 identify_goto (tree decl, const location_t *locus) 2529 { 2530 if (decl) 2531 permerror (input_location, "jump to label %qD", decl); 2532 else 2533 permerror (input_location, "jump to case label"); 2534 if (locus) 2535 permerror (*locus, " from here"); 2536 } 2537 2538 /* Check that a single previously seen jump to a newly defined label 2539 is OK. DECL is the LABEL_DECL or 0; LEVEL is the binding_level for 2540 the jump context; NAMES are the names in scope in LEVEL at the jump 2541 context; LOCUS is the source position of the jump or 0. Returns 2542 true if all is well. */ 2543 2544 static bool 2545 check_previous_goto_1 (tree decl, struct cp_binding_level* level, tree names, 2546 bool exited_omp, const location_t *locus) 2547 { 2548 struct cp_binding_level *b; 2549 bool identified = false, saw_eh = false, saw_omp = false; 2550 2551 if (exited_omp) 2552 { 2553 identify_goto (decl, locus); 2554 error (" exits OpenMP structured block"); 2555 identified = saw_omp = true; 2556 } 2557 2558 for (b = current_binding_level; b ; b = b->level_chain) 2559 { 2560 tree new_decls, old_decls = (b == level ? names : NULL_TREE); 2561 2562 for (new_decls = b->names; new_decls != old_decls; 2563 new_decls = TREE_CHAIN (new_decls)) 2564 { 2565 int problem = decl_jump_unsafe (new_decls); 2566 if (! problem) 2567 continue; 2568 2569 if (!identified) 2570 { 2571 identify_goto (decl, locus); 2572 identified = true; 2573 } 2574 if (problem > 1) 2575 error (" crosses initialization of %q+#D", new_decls); 2576 else 2577 permerror (input_location, " enters scope of %q+#D which has " 2578 "non-trivial destructor", new_decls); 2579 } 2580 2581 if (b == level) 2582 break; 2583 if ((b->kind == sk_try || b->kind == sk_catch) && !saw_eh) 2584 { 2585 if (!identified) 2586 { 2587 identify_goto (decl, locus); 2588 identified = true; 2589 } 2590 if (b->kind == sk_try) 2591 error (" enters try block"); 2592 else 2593 error (" enters catch block"); 2594 saw_eh = true; 2595 } 2596 if (b->kind == sk_omp && !saw_omp) 2597 { 2598 if (!identified) 2599 { 2600 identify_goto (decl, locus); 2601 identified = true; 2602 } 2603 error (" enters OpenMP structured block"); 2604 saw_omp = true; 2605 } 2606 } 2607 2608 return !identified; 2609 } 2610 2611 static void 2612 check_previous_goto (tree decl, struct named_label_use_entry *use) 2613 { 2614 check_previous_goto_1 (decl, use->binding_level, 2615 use->names_in_scope, use->in_omp_scope, 2616 &use->o_goto_locus); 2617 } 2618 2619 static bool 2620 check_switch_goto (struct cp_binding_level* level) 2621 { 2622 return check_previous_goto_1 (NULL_TREE, level, level->names, false, NULL); 2623 } 2624 2625 /* Check that a new jump to a label DECL is OK. Called by 2626 finish_goto_stmt. */ 2627 2628 void 2629 check_goto (tree decl) 2630 { 2631 struct named_label_entry *ent, dummy; 2632 bool saw_catch = false, identified = false; 2633 tree bad; 2634 2635 /* We can't know where a computed goto is jumping. 2636 So we assume that it's OK. */ 2637 if (TREE_CODE (decl) != LABEL_DECL) 2638 return; 2639 2640 /* We didn't record any information about this label when we created it, 2641 and there's not much point since it's trivial to analyze as a return. */ 2642 if (decl == cdtor_label) 2643 return; 2644 2645 dummy.label_decl = decl; 2646 ent = (struct named_label_entry *) htab_find (named_labels, &dummy); 2647 gcc_assert (ent != NULL); 2648 2649 /* If the label hasn't been defined yet, defer checking. */ 2650 if (! DECL_INITIAL (decl)) 2651 { 2652 struct named_label_use_entry *new_use; 2653 2654 /* Don't bother creating another use if the last goto had the 2655 same data, and will therefore create the same set of errors. */ 2656 if (ent->uses 2657 && ent->uses->names_in_scope == current_binding_level->names) 2658 return; 2659 2660 new_use = GGC_NEW (struct named_label_use_entry); 2661 new_use->binding_level = current_binding_level; 2662 new_use->names_in_scope = current_binding_level->names; 2663 new_use->o_goto_locus = input_location; 2664 new_use->in_omp_scope = false; 2665 2666 new_use->next = ent->uses; 2667 ent->uses = new_use; 2668 return; 2669 } 2670 2671 if (ent->in_try_scope || ent->in_catch_scope 2672 || ent->in_omp_scope || ent->bad_decls) 2673 { 2674 permerror (input_location, "jump to label %q+D", decl); 2675 permerror (input_location, " from here"); 2676 identified = true; 2677 } 2678 2679 for (bad = ent->bad_decls; bad; bad = TREE_CHAIN (bad)) 2680 { 2681 tree b = TREE_VALUE (bad); 2682 int u = decl_jump_unsafe (b); 2683 2684 if (u > 1 && DECL_ARTIFICIAL (b)) 2685 { 2686 /* Can't skip init of __exception_info. */ 2687 error_at (DECL_SOURCE_LOCATION (b), " enters catch block"); 2688 saw_catch = true; 2689 } 2690 else if (u > 1) 2691 error (" skips initialization of %q+#D", b); 2692 else 2693 permerror (input_location, " enters scope of %q+#D which has " 2694 "non-trivial destructor", b); 2695 } 2696 2697 if (ent->in_try_scope) 2698 error (" enters try block"); 2699 else if (ent->in_catch_scope && !saw_catch) 2700 error (" enters catch block"); 2701 2702 if (ent->in_omp_scope) 2703 error (" enters OpenMP structured block"); 2704 else if (flag_openmp) 2705 { 2706 struct cp_binding_level *b; 2707 for (b = current_binding_level; b ; b = b->level_chain) 2708 { 2709 if (b == ent->binding_level) 2710 break; 2711 if (b->kind == sk_omp) 2712 { 2713 if (!identified) 2714 { 2715 permerror (input_location, "jump to label %q+D", decl); 2716 permerror (input_location, " from here"); 2717 identified = true; 2718 } 2719 error (" exits OpenMP structured block"); 2720 break; 2721 } 2722 } 2723 } 2724 } 2725 2726 /* Check that a return is ok wrt OpenMP structured blocks. 2727 Called by finish_return_stmt. Returns true if all is well. */ 2728 2729 bool 2730 check_omp_return (void) 2731 { 2732 struct cp_binding_level *b; 2733 for (b = current_binding_level; b ; b = b->level_chain) 2734 if (b->kind == sk_omp) 2735 { 2736 error ("invalid exit from OpenMP structured block"); 2737 return false; 2738 } 2739 return true; 2740 } 2741 2742 /* Define a label, specifying the location in the source file. 2743 Return the LABEL_DECL node for the label. */ 2744 2745 tree 2746 define_label (location_t location, tree name) 2747 { 2748 struct named_label_entry *ent, dummy; 2749 struct cp_binding_level *p; 2750 tree decl; 2751 2752 timevar_push (TV_NAME_LOOKUP); 2753 2754 decl = lookup_label (name); 2755 2756 dummy.label_decl = decl; 2757 ent = (struct named_label_entry *) htab_find (named_labels, &dummy); 2758 gcc_assert (ent != NULL); 2759 2760 /* After labels, make any new cleanups in the function go into their 2761 own new (temporary) binding contour. */ 2762 for (p = current_binding_level; 2763 p->kind != sk_function_parms; 2764 p = p->level_chain) 2765 p->more_cleanups_ok = 0; 2766 2767 if (name == get_identifier ("wchar_t")) 2768 permerror (input_location, "label named wchar_t"); 2769 2770 if (DECL_INITIAL (decl) != NULL_TREE) 2771 { 2772 error ("duplicate label %qD", decl); 2773 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); 2774 } 2775 else 2776 { 2777 struct named_label_use_entry *use; 2778 2779 /* Mark label as having been defined. */ 2780 DECL_INITIAL (decl) = error_mark_node; 2781 /* Say where in the source. */ 2782 DECL_SOURCE_LOCATION (decl) = location; 2783 2784 ent->binding_level = current_binding_level; 2785 ent->names_in_scope = current_binding_level->names; 2786 2787 for (use = ent->uses; use ; use = use->next) 2788 check_previous_goto (decl, use); 2789 ent->uses = NULL; 2790 } 2791 2792 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl); 2793 } 2794 2795 struct cp_switch 2796 { 2797 struct cp_binding_level *level; 2798 struct cp_switch *next; 2799 /* The SWITCH_STMT being built. */ 2800 tree switch_stmt; 2801 /* A splay-tree mapping the low element of a case range to the high 2802 element, or NULL_TREE if there is no high element. Used to 2803 determine whether or not a new case label duplicates an old case 2804 label. We need a tree, rather than simply a hash table, because 2805 of the GNU case range extension. */ 2806 splay_tree cases; 2807 }; 2808 2809 /* A stack of the currently active switch statements. The innermost 2810 switch statement is on the top of the stack. There is no need to 2811 mark the stack for garbage collection because it is only active 2812 during the processing of the body of a function, and we never 2813 collect at that point. */ 2814 2815 static struct cp_switch *switch_stack; 2816 2817 /* Called right after a switch-statement condition is parsed. 2818 SWITCH_STMT is the switch statement being parsed. */ 2819 2820 void 2821 push_switch (tree switch_stmt) 2822 { 2823 struct cp_switch *p = XNEW (struct cp_switch); 2824 p->level = current_binding_level; 2825 p->next = switch_stack; 2826 p->switch_stmt = switch_stmt; 2827 p->cases = splay_tree_new (case_compare, NULL, NULL); 2828 switch_stack = p; 2829 } 2830 2831 void 2832 pop_switch (void) 2833 { 2834 struct cp_switch *cs = switch_stack; 2835 location_t switch_location; 2836 2837 /* Emit warnings as needed. */ 2838 if (EXPR_HAS_LOCATION (cs->switch_stmt)) 2839 switch_location = EXPR_LOCATION (cs->switch_stmt); 2840 else 2841 switch_location = input_location; 2842 if (!processing_template_decl) 2843 c_do_switch_warnings (cs->cases, switch_location, 2844 SWITCH_STMT_TYPE (cs->switch_stmt), 2845 SWITCH_STMT_COND (cs->switch_stmt)); 2846 2847 splay_tree_delete (cs->cases); 2848 switch_stack = switch_stack->next; 2849 free (cs); 2850 } 2851 2852 /* Note that we've seen a definition of a case label, and complain if this 2853 is a bad place for one. */ 2854 2855 tree 2856 finish_case_label (location_t loc, tree low_value, tree high_value) 2857 { 2858 tree cond, r; 2859 struct cp_binding_level *p; 2860 2861 if (processing_template_decl) 2862 { 2863 tree label; 2864 2865 /* For templates, just add the case label; we'll do semantic 2866 analysis at instantiation-time. */ 2867 label = build_decl (loc, LABEL_DECL, NULL_TREE, NULL_TREE); 2868 return add_stmt (build_case_label (loc, low_value, high_value, label)); 2869 } 2870 2871 /* Find the condition on which this switch statement depends. */ 2872 cond = SWITCH_STMT_COND (switch_stack->switch_stmt); 2873 if (cond && TREE_CODE (cond) == TREE_LIST) 2874 cond = TREE_VALUE (cond); 2875 2876 if (!check_switch_goto (switch_stack->level)) 2877 return error_mark_node; 2878 2879 r = c_add_case_label (loc, switch_stack->cases, cond, 2880 SWITCH_STMT_TYPE (switch_stack->switch_stmt), 2881 low_value, high_value); 2882 2883 /* After labels, make any new cleanups in the function go into their 2884 own new (temporary) binding contour. */ 2885 for (p = current_binding_level; 2886 p->kind != sk_function_parms; 2887 p = p->level_chain) 2888 p->more_cleanups_ok = 0; 2889 2890 return r; 2891 } 2892 2893 /* Hash a TYPENAME_TYPE. K is really of type `tree'. */ 2894 2895 static hashval_t 2896 typename_hash (const void* k) 2897 { 2898 hashval_t hash; 2899 const_tree const t = (const_tree) k; 2900 2901 hash = (htab_hash_pointer (TYPE_CONTEXT (t)) 2902 ^ htab_hash_pointer (DECL_NAME (TYPE_NAME (t)))); 2903 2904 return hash; 2905 } 2906 2907 typedef struct typename_info { 2908 tree scope; 2909 tree name; 2910 tree template_id; 2911 bool enum_p; 2912 bool class_p; 2913 } typename_info; 2914 2915 /* Compare two TYPENAME_TYPEs. K1 is really of type `tree', K2 is 2916 really of type `typename_info*' */ 2917 2918 static int 2919 typename_compare (const void * k1, const void * k2) 2920 { 2921 const_tree const t1 = (const_tree) k1; 2922 const typename_info *const t2 = (const typename_info *) k2; 2923 2924 return (DECL_NAME (TYPE_NAME (t1)) == t2->name 2925 && TYPE_CONTEXT (t1) == t2->scope 2926 && TYPENAME_TYPE_FULLNAME (t1) == t2->template_id 2927 && TYPENAME_IS_ENUM_P (t1) == t2->enum_p 2928 && TYPENAME_IS_CLASS_P (t1) == t2->class_p); 2929 } 2930 2931 /* Build a TYPENAME_TYPE. If the type is `typename T::t', CONTEXT is 2932 the type of `T', NAME is the IDENTIFIER_NODE for `t'. 2933 2934 Returns the new TYPENAME_TYPE. */ 2935 2936 static GTY ((param_is (union tree_node))) htab_t typename_htab; 2937 2938 static tree 2939 build_typename_type (tree context, tree name, tree fullname, 2940 enum tag_types tag_type) 2941 { 2942 tree t; 2943 tree d; 2944 typename_info ti; 2945 void **e; 2946 hashval_t hash; 2947 2948 if (typename_htab == NULL) 2949 typename_htab = htab_create_ggc (61, &typename_hash, 2950 &typename_compare, NULL); 2951 2952 ti.scope = FROB_CONTEXT (context); 2953 ti.name = name; 2954 ti.template_id = fullname; 2955 ti.enum_p = tag_type == enum_type; 2956 ti.class_p = (tag_type == class_type 2957 || tag_type == record_type 2958 || tag_type == union_type); 2959 hash = (htab_hash_pointer (ti.scope) 2960 ^ htab_hash_pointer (ti.name)); 2961 2962 /* See if we already have this type. */ 2963 e = htab_find_slot_with_hash (typename_htab, &ti, hash, INSERT); 2964 if (*e) 2965 t = (tree) *e; 2966 else 2967 { 2968 /* Build the TYPENAME_TYPE. */ 2969 t = cxx_make_type (TYPENAME_TYPE); 2970 TYPE_CONTEXT (t) = ti.scope; 2971 TYPENAME_TYPE_FULLNAME (t) = ti.template_id; 2972 TYPENAME_IS_ENUM_P (t) = ti.enum_p; 2973 TYPENAME_IS_CLASS_P (t) = ti.class_p; 2974 2975 /* Build the corresponding TYPE_DECL. */ 2976 d = build_decl (input_location, TYPE_DECL, name, t); 2977 TYPE_NAME (TREE_TYPE (d)) = d; 2978 TYPE_STUB_DECL (TREE_TYPE (d)) = d; 2979 DECL_CONTEXT (d) = FROB_CONTEXT (context); 2980 DECL_ARTIFICIAL (d) = 1; 2981 2982 /* Store it in the hash table. */ 2983 *e = t; 2984 2985 /* TYPENAME_TYPEs must always be compared structurally, because 2986 they may or may not resolve down to another type depending on 2987 the currently open classes. */ 2988 SET_TYPE_STRUCTURAL_EQUALITY (t); 2989 } 2990 2991 return t; 2992 } 2993 2994 /* Resolve `typename CONTEXT::NAME'. TAG_TYPE indicates the tag 2995 provided to name the type. Returns an appropriate type, unless an 2996 error occurs, in which case error_mark_node is returned. If we 2997 locate a non-artificial TYPE_DECL and TF_KEEP_TYPE_DECL is set, we 2998 return that, rather than the _TYPE it corresponds to, in other 2999 cases we look through the type decl. If TF_ERROR is set, complain 3000 about errors, otherwise be quiet. */ 3001 3002 tree 3003 make_typename_type (tree context, tree name, enum tag_types tag_type, 3004 tsubst_flags_t complain) 3005 { 3006 tree fullname; 3007 tree t; 3008 bool want_template; 3009 3010 if (name == error_mark_node 3011 || context == NULL_TREE 3012 || context == error_mark_node) 3013 return error_mark_node; 3014 3015 if (TYPE_P (name)) 3016 { 3017 if (!(TYPE_LANG_SPECIFIC (name) 3018 && (CLASSTYPE_IS_TEMPLATE (name) 3019 || CLASSTYPE_USE_TEMPLATE (name)))) 3020 name = TYPE_IDENTIFIER (name); 3021 else 3022 /* Create a TEMPLATE_ID_EXPR for the type. */ 3023 name = build_nt (TEMPLATE_ID_EXPR, 3024 CLASSTYPE_TI_TEMPLATE (name), 3025 CLASSTYPE_TI_ARGS (name)); 3026 } 3027 else if (TREE_CODE (name) == TYPE_DECL) 3028 name = DECL_NAME (name); 3029 3030 fullname = name; 3031 3032 if (TREE_CODE (name) == TEMPLATE_ID_EXPR) 3033 { 3034 name = TREE_OPERAND (name, 0); 3035 if (TREE_CODE (name) == TEMPLATE_DECL) 3036 name = TREE_OPERAND (fullname, 0) = DECL_NAME (name); 3037 else if (TREE_CODE (name) == OVERLOAD) 3038 { 3039 error ("%qD is not a type", name); 3040 return error_mark_node; 3041 } 3042 } 3043 if (TREE_CODE (name) == TEMPLATE_DECL) 3044 { 3045 error ("%qD used without template parameters", name); 3046 return error_mark_node; 3047 } 3048 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); 3049 gcc_assert (TYPE_P (context)); 3050 3051 if (!MAYBE_CLASS_TYPE_P (context)) 3052 { 3053 if (complain & tf_error) 3054 error ("%q#T is not a class", context); 3055 return error_mark_node; 3056 } 3057 3058 /* When the CONTEXT is a dependent type, NAME could refer to a 3059 dependent base class of CONTEXT. But look inside it anyway 3060 if CONTEXT is a currently open scope, in case it refers to a 3061 member of the current instantiation or a non-dependent base; 3062 lookup will stop when we hit a dependent base. */ 3063 if (!dependent_scope_p (context)) 3064 /* We should only set WANT_TYPE when we're a nested typename type. 3065 Then we can give better diagnostics if we find a non-type. */ 3066 t = lookup_field (context, name, 2, /*want_type=*/true); 3067 else 3068 t = NULL_TREE; 3069 3070 if ((!t || TREE_CODE (t) == TREE_LIST) && dependent_type_p (context)) 3071 return build_typename_type (context, name, fullname, tag_type); 3072 3073 want_template = TREE_CODE (fullname) == TEMPLATE_ID_EXPR; 3074 3075 if (!t) 3076 { 3077 if (complain & tf_error) 3078 error (want_template ? "no class template named %q#T in %q#T" 3079 : "no type named %q#T in %q#T", name, context); 3080 return error_mark_node; 3081 } 3082 3083 /* Pull out the template from an injected-class-name (or multiple). */ 3084 if (want_template) 3085 t = maybe_get_template_decl_from_type_decl (t); 3086 3087 if (TREE_CODE (t) == TREE_LIST) 3088 { 3089 if (complain & tf_error) 3090 { 3091 error ("lookup of %qT in %qT is ambiguous", name, context); 3092 print_candidates (t); 3093 } 3094 return error_mark_node; 3095 } 3096 3097 if (want_template && !DECL_CLASS_TEMPLATE_P (t)) 3098 { 3099 if (complain & tf_error) 3100 error ("%<typename %T::%D%> names %q#T, which is not a class template", 3101 context, name, t); 3102 return error_mark_node; 3103 } 3104 if (!want_template && TREE_CODE (t) != TYPE_DECL) 3105 { 3106 if (complain & tf_error) 3107 error ("%<typename %T::%D%> names %q#T, which is not a type", 3108 context, name, t); 3109 return error_mark_node; 3110 } 3111 3112 if (complain & tf_error) 3113 perform_or_defer_access_check (TYPE_BINFO (context), t, t); 3114 3115 /* If we are currently parsing a template and if T is a typedef accessed 3116 through CONTEXT then we need to remember and check access of T at 3117 template instantiation time. */ 3118 add_typedef_to_current_template_for_access_check (t, context, input_location); 3119 3120 if (want_template) 3121 return lookup_template_class (t, TREE_OPERAND (fullname, 1), 3122 NULL_TREE, context, 3123 /*entering_scope=*/0, 3124 tf_warning_or_error | tf_user); 3125 3126 if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl)) 3127 t = TREE_TYPE (t); 3128 3129 return t; 3130 } 3131 3132 /* Resolve `CONTEXT::template NAME'. Returns a TEMPLATE_DECL if the name 3133 can be resolved or an UNBOUND_CLASS_TEMPLATE, unless an error occurs, 3134 in which case error_mark_node is returned. 3135 3136 If PARM_LIST is non-NULL, also make sure that the template parameter 3137 list of TEMPLATE_DECL matches. 3138 3139 If COMPLAIN zero, don't complain about any errors that occur. */ 3140 3141 tree 3142 make_unbound_class_template (tree context, tree name, tree parm_list, 3143 tsubst_flags_t complain) 3144 { 3145 tree t; 3146 tree d; 3147 3148 if (TYPE_P (name)) 3149 name = TYPE_IDENTIFIER (name); 3150 else if (DECL_P (name)) 3151 name = DECL_NAME (name); 3152 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); 3153 3154 if (!dependent_type_p (context) 3155 || currently_open_class (context)) 3156 { 3157 tree tmpl = NULL_TREE; 3158 3159 if (MAYBE_CLASS_TYPE_P (context)) 3160 tmpl = lookup_field (context, name, 0, false); 3161 3162 if (!tmpl || !DECL_CLASS_TEMPLATE_P (tmpl)) 3163 { 3164 if (complain & tf_error) 3165 error ("no class template named %q#T in %q#T", name, context); 3166 return error_mark_node; 3167 } 3168 3169 if (parm_list 3170 && !comp_template_parms (DECL_TEMPLATE_PARMS (tmpl), parm_list)) 3171 { 3172 if (complain & tf_error) 3173 { 3174 error ("template parameters do not match template"); 3175 error ("%q+D declared here", tmpl); 3176 } 3177 return error_mark_node; 3178 } 3179 3180 if (complain & tf_error) 3181 perform_or_defer_access_check (TYPE_BINFO (context), tmpl, tmpl); 3182 3183 return tmpl; 3184 } 3185 3186 /* Build the UNBOUND_CLASS_TEMPLATE. */ 3187 t = cxx_make_type (UNBOUND_CLASS_TEMPLATE); 3188 TYPE_CONTEXT (t) = FROB_CONTEXT (context); 3189 TREE_TYPE (t) = NULL_TREE; 3190 SET_TYPE_STRUCTURAL_EQUALITY (t); 3191 3192 /* Build the corresponding TEMPLATE_DECL. */ 3193 d = build_decl (input_location, TEMPLATE_DECL, name, t); 3194 TYPE_NAME (TREE_TYPE (d)) = d; 3195 TYPE_STUB_DECL (TREE_TYPE (d)) = d; 3196 DECL_CONTEXT (d) = FROB_CONTEXT (context); 3197 DECL_ARTIFICIAL (d) = 1; 3198 DECL_TEMPLATE_PARMS (d) = parm_list; 3199 3200 return t; 3201 } 3202 3203 3204 3205 /* Push the declarations of builtin types into the namespace. 3206 RID_INDEX is the index of the builtin type in the array 3207 RID_POINTERS. NAME is the name used when looking up the builtin 3208 type. TYPE is the _TYPE node for the builtin type. */ 3209 3210 void 3211 record_builtin_type (enum rid rid_index, 3212 const char* name, 3213 tree type) 3214 { 3215 tree rname = NULL_TREE, tname = NULL_TREE; 3216 tree tdecl = NULL_TREE; 3217 3218 if ((int) rid_index < (int) RID_MAX) 3219 rname = ridpointers[(int) rid_index]; 3220 if (name) 3221 tname = get_identifier (name); 3222 3223 /* The calls to SET_IDENTIFIER_GLOBAL_VALUE below should be 3224 eliminated. Built-in types should not be looked up name; their 3225 names are keywords that the parser can recognize. However, there 3226 is code in c-common.c that uses identifier_global_value to look 3227 up built-in types by name. */ 3228 if (tname) 3229 { 3230 tdecl = build_decl (BUILTINS_LOCATION, TYPE_DECL, tname, type); 3231 DECL_ARTIFICIAL (tdecl) = 1; 3232 SET_IDENTIFIER_GLOBAL_VALUE (tname, tdecl); 3233 } 3234 if (rname) 3235 { 3236 if (!tdecl) 3237 { 3238 tdecl = build_decl (BUILTINS_LOCATION, TYPE_DECL, rname, type); 3239 DECL_ARTIFICIAL (tdecl) = 1; 3240 } 3241 SET_IDENTIFIER_GLOBAL_VALUE (rname, tdecl); 3242 } 3243 3244 if (!TYPE_NAME (type)) 3245 TYPE_NAME (type) = tdecl; 3246 3247 if (tdecl) 3248 debug_hooks->type_decl (tdecl, 0); 3249 } 3250 3251 /* Record one of the standard Java types. 3252 * Declare it as having the given NAME. 3253 * If SIZE > 0, it is the size of one of the integral types; 3254 * otherwise it is the negative of the size of one of the other types. */ 3255 3256 static tree 3257 record_builtin_java_type (const char* name, int size) 3258 { 3259 tree type, decl; 3260 if (size > 0) 3261 type = build_nonstandard_integer_type (size, 0); 3262 else if (size > -32) 3263 { 3264 tree stype; 3265 /* "__java_char" or ""__java_boolean". */ 3266 type = build_nonstandard_integer_type (-size, 1); 3267 /* Get the signed type cached and attached to the unsigned type, 3268 so it doesn't get garbage-collected at "random" times, 3269 causing potential codegen differences out of different UIDs 3270 and different alias set numbers. */ 3271 stype = build_nonstandard_integer_type (-size, 0); 3272 TREE_CHAIN (type) = stype; 3273 /*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/ 3274 } 3275 else 3276 { /* "__java_float" or ""__java_double". */ 3277 type = make_node (REAL_TYPE); 3278 TYPE_PRECISION (type) = - size; 3279 layout_type (type); 3280 } 3281 record_builtin_type (RID_MAX, name, type); 3282 decl = TYPE_NAME (type); 3283 3284 /* Suppress generate debug symbol entries for these types, 3285 since for normal C++ they are just clutter. 3286 However, push_lang_context undoes this if extern "Java" is seen. */ 3287 DECL_IGNORED_P (decl) = 1; 3288 3289 TYPE_FOR_JAVA (type) = 1; 3290 return type; 3291 } 3292 3293 /* Push a type into the namespace so that the back ends ignore it. */ 3294 3295 static void 3296 record_unknown_type (tree type, const char* name) 3297 { 3298 tree decl = pushdecl (build_decl (UNKNOWN_LOCATION, 3299 TYPE_DECL, get_identifier (name), type)); 3300 /* Make sure the "unknown type" typedecl gets ignored for debug info. */ 3301 DECL_IGNORED_P (decl) = 1; 3302 TYPE_DECL_SUPPRESS_DEBUG (decl) = 1; 3303 TYPE_SIZE (type) = TYPE_SIZE (void_type_node); 3304 TYPE_ALIGN (type) = 1; 3305 TYPE_USER_ALIGN (type) = 0; 3306 SET_TYPE_MODE (type, TYPE_MODE (void_type_node)); 3307 } 3308 3309 /* A string for which we should create an IDENTIFIER_NODE at 3310 startup. */ 3311 3312 typedef struct predefined_identifier 3313 { 3314 /* The name of the identifier. */ 3315 const char *const name; 3316 /* The place where the IDENTIFIER_NODE should be stored. */ 3317 tree *const node; 3318 /* Nonzero if this is the name of a constructor or destructor. */ 3319 const int ctor_or_dtor_p; 3320 } predefined_identifier; 3321 3322 /* Create all the predefined identifiers. */ 3323 3324 static void 3325 initialize_predefined_identifiers (void) 3326 { 3327 const predefined_identifier *pid; 3328 3329 /* A table of identifiers to create at startup. */ 3330 static const predefined_identifier predefined_identifiers[] = { 3331 { "C++", &lang_name_cplusplus, 0 }, 3332 { "C", &lang_name_c, 0 }, 3333 { "Java", &lang_name_java, 0 }, 3334 /* Some of these names have a trailing space so that it is 3335 impossible for them to conflict with names written by users. */ 3336 { "__ct ", &ctor_identifier, 1 }, 3337 { "__base_ctor ", &base_ctor_identifier, 1 }, 3338 { "__comp_ctor ", &complete_ctor_identifier, 1 }, 3339 { "__dt ", &dtor_identifier, 1 }, 3340 { "__comp_dtor ", &complete_dtor_identifier, 1 }, 3341 { "__base_dtor ", &base_dtor_identifier, 1 }, 3342 { "__deleting_dtor ", &deleting_dtor_identifier, 1 }, 3343 { IN_CHARGE_NAME, &in_charge_identifier, 0 }, 3344 { "nelts", &nelts_identifier, 0 }, 3345 { THIS_NAME, &this_identifier, 0 }, 3346 { VTABLE_DELTA_NAME, &delta_identifier, 0 }, 3347 { VTABLE_PFN_NAME, &pfn_identifier, 0 }, 3348 { "_vptr", &vptr_identifier, 0 }, 3349 { "__vtt_parm", &vtt_parm_identifier, 0 }, 3350 { "::", &global_scope_name, 0 }, 3351 { "std", &std_identifier, 0 }, 3352 { NULL, NULL, 0 } 3353 }; 3354 3355 for (pid = predefined_identifiers; pid->name; ++pid) 3356 { 3357 *pid->node = get_identifier (pid->name); 3358 if (pid->ctor_or_dtor_p) 3359 IDENTIFIER_CTOR_OR_DTOR_P (*pid->node) = 1; 3360 } 3361 } 3362 3363 /* Create the predefined scalar types of C, 3364 and some nodes representing standard constants (0, 1, (void *)0). 3365 Initialize the global binding level. 3366 Make definitions for built-in primitive functions. */ 3367 3368 void 3369 cxx_init_decl_processing (void) 3370 { 3371 tree void_ftype; 3372 tree void_ftype_ptr; 3373 3374 build_common_tree_nodes (flag_signed_char, false); 3375 3376 /* Create all the identifiers we need. */ 3377 initialize_predefined_identifiers (); 3378 3379 /* Create the global variables. */ 3380 push_to_top_level (); 3381 3382 current_function_decl = NULL_TREE; 3383 current_binding_level = NULL; 3384 /* Enter the global namespace. */ 3385 gcc_assert (global_namespace == NULL_TREE); 3386 global_namespace = build_lang_decl (NAMESPACE_DECL, global_scope_name, 3387 void_type_node); 3388 TREE_PUBLIC (global_namespace) = 1; 3389 begin_scope (sk_namespace, global_namespace); 3390 3391 current_lang_name = NULL_TREE; 3392 3393 if (flag_visibility_ms_compat) 3394 default_visibility = VISIBILITY_HIDDEN; 3395 3396 /* Initially, C. */ 3397 current_lang_name = lang_name_c; 3398 3399 /* Create the `std' namespace. */ 3400 push_namespace (std_identifier); 3401 std_node = current_namespace; 3402 pop_namespace (); 3403 3404 c_common_nodes_and_builtins (); 3405 3406 java_byte_type_node = record_builtin_java_type ("__java_byte", 8); 3407 java_short_type_node = record_builtin_java_type ("__java_short", 16); 3408 java_int_type_node = record_builtin_java_type ("__java_int", 32); 3409 java_long_type_node = record_builtin_java_type ("__java_long", 64); 3410 java_float_type_node = record_builtin_java_type ("__java_float", -32); 3411 java_double_type_node = record_builtin_java_type ("__java_double", -64); 3412 java_char_type_node = record_builtin_java_type ("__java_char", -16); 3413 java_boolean_type_node = record_builtin_java_type ("__java_boolean", -1); 3414 3415 integer_two_node = build_int_cst (NULL_TREE, 2); 3416 integer_three_node = build_int_cst (NULL_TREE, 3); 3417 3418 record_builtin_type (RID_BOOL, "bool", boolean_type_node); 3419 truthvalue_type_node = boolean_type_node; 3420 truthvalue_false_node = boolean_false_node; 3421 truthvalue_true_node = boolean_true_node; 3422 3423 empty_except_spec = build_tree_list (NULL_TREE, NULL_TREE); 3424 3425 #if 0 3426 record_builtin_type (RID_MAX, NULL, string_type_node); 3427 #endif 3428 3429 delta_type_node = ptrdiff_type_node; 3430 vtable_index_type = ptrdiff_type_node; 3431 3432 vtt_parm_type = build_pointer_type (const_ptr_type_node); 3433 void_ftype = build_function_type (void_type_node, void_list_node); 3434 void_ftype_ptr = build_function_type (void_type_node, 3435 tree_cons (NULL_TREE, 3436 ptr_type_node, 3437 void_list_node)); 3438 void_ftype_ptr 3439 = build_exception_variant (void_ftype_ptr, empty_except_spec); 3440 3441 /* C++ extensions */ 3442 3443 unknown_type_node = make_node (UNKNOWN_TYPE); 3444 record_unknown_type (unknown_type_node, "unknown type"); 3445 3446 /* Indirecting an UNKNOWN_TYPE node yields an UNKNOWN_TYPE node. */ 3447 TREE_TYPE (unknown_type_node) = unknown_type_node; 3448 3449 /* Looking up TYPE_POINTER_TO and TYPE_REFERENCE_TO yield the same 3450 result. */ 3451 TYPE_POINTER_TO (unknown_type_node) = unknown_type_node; 3452 TYPE_REFERENCE_TO (unknown_type_node) = unknown_type_node; 3453 3454 init_list_type_node = make_node (UNKNOWN_TYPE); 3455 record_unknown_type (init_list_type_node, "init list"); 3456 3457 { 3458 /* Make sure we get a unique function type, so we can give 3459 its pointer type a name. (This wins for gdb.) */ 3460 tree vfunc_type = make_node (FUNCTION_TYPE); 3461 TREE_TYPE (vfunc_type) = integer_type_node; 3462 TYPE_ARG_TYPES (vfunc_type) = NULL_TREE; 3463 layout_type (vfunc_type); 3464 3465 vtable_entry_type = build_pointer_type (vfunc_type); 3466 } 3467 record_builtin_type (RID_MAX, VTBL_PTR_TYPE, vtable_entry_type); 3468 3469 vtbl_type_node 3470 = build_cplus_array_type (vtable_entry_type, NULL_TREE); 3471 layout_type (vtbl_type_node); 3472 vtbl_type_node = build_qualified_type (vtbl_type_node, TYPE_QUAL_CONST); 3473 record_builtin_type (RID_MAX, NULL, vtbl_type_node); 3474 vtbl_ptr_type_node = build_pointer_type (vtable_entry_type); 3475 layout_type (vtbl_ptr_type_node); 3476 record_builtin_type (RID_MAX, NULL, vtbl_ptr_type_node); 3477 3478 push_namespace (get_identifier ("__cxxabiv1")); 3479 abi_node = current_namespace; 3480 pop_namespace (); 3481 3482 global_type_node = make_node (LANG_TYPE); 3483 record_unknown_type (global_type_node, "global type"); 3484 3485 /* Now, C++. */ 3486 current_lang_name = lang_name_cplusplus; 3487 3488 { 3489 tree bad_alloc_id; 3490 tree bad_alloc_type_node; 3491 tree bad_alloc_decl; 3492 tree newtype, deltype; 3493 tree ptr_ftype_sizetype; 3494 3495 push_namespace (std_identifier); 3496 bad_alloc_id = get_identifier ("bad_alloc"); 3497 bad_alloc_type_node = make_class_type (RECORD_TYPE); 3498 TYPE_CONTEXT (bad_alloc_type_node) = current_namespace; 3499 bad_alloc_decl 3500 = create_implicit_typedef (bad_alloc_id, bad_alloc_type_node); 3501 DECL_CONTEXT (bad_alloc_decl) = current_namespace; 3502 pop_namespace (); 3503 3504 ptr_ftype_sizetype 3505 = build_function_type (ptr_type_node, 3506 tree_cons (NULL_TREE, 3507 size_type_node, 3508 void_list_node)); 3509 newtype = build_exception_variant 3510 (ptr_ftype_sizetype, add_exception_specifier 3511 (NULL_TREE, bad_alloc_type_node, -1)); 3512 deltype = build_exception_variant (void_ftype_ptr, empty_except_spec); 3513 push_cp_library_fn (NEW_EXPR, newtype); 3514 push_cp_library_fn (VEC_NEW_EXPR, newtype); 3515 global_delete_fndecl = push_cp_library_fn (DELETE_EXPR, deltype); 3516 push_cp_library_fn (VEC_DELETE_EXPR, deltype); 3517 } 3518 3519 abort_fndecl 3520 = build_library_fn_ptr ("__cxa_pure_virtual", void_ftype); 3521 3522 /* Perform other language dependent initializations. */ 3523 init_class_processing (); 3524 init_rtti_processing (); 3525 init_template_processing (); 3526 3527 if (flag_exceptions) 3528 init_exception_processing (); 3529 3530 if (! supports_one_only ()) 3531 flag_weak = 0; 3532 3533 make_fname_decl = cp_make_fname_decl; 3534 start_fname_decls (); 3535 3536 /* Show we use EH for cleanups. */ 3537 if (flag_exceptions) 3538 using_eh_for_cleanups (); 3539 } 3540 3541 /* Generate an initializer for a function naming variable from 3542 NAME. NAME may be NULL, to indicate a dependent name. TYPE_P is 3543 filled in with the type of the init. */ 3544 3545 tree 3546 cp_fname_init (const char* name, tree *type_p) 3547 { 3548 tree domain = NULL_TREE; 3549 tree type; 3550 tree init = NULL_TREE; 3551 size_t length = 0; 3552 3553 if (name) 3554 { 3555 length = strlen (name); 3556 domain = build_index_type (size_int (length)); 3557 init = build_string (length + 1, name); 3558 } 3559 3560 type = build_qualified_type (char_type_node, TYPE_QUAL_CONST); 3561 type = build_cplus_array_type (type, domain); 3562 3563 *type_p = type; 3564 3565 if (init) 3566 TREE_TYPE (init) = type; 3567 else 3568 init = error_mark_node; 3569 3570 return init; 3571 } 3572 3573 /* Create the VAR_DECL for __FUNCTION__ etc. ID is the name to give 3574 the decl, LOC is the location to give the decl, NAME is the 3575 initialization string and TYPE_DEP indicates whether NAME depended 3576 on the type of the function. We make use of that to detect 3577 __PRETTY_FUNCTION__ inside a template fn. This is being done lazily 3578 at the point of first use, so we mustn't push the decl now. */ 3579 3580 static tree 3581 cp_make_fname_decl (location_t loc, tree id, int type_dep) 3582 { 3583 const char *const name = (type_dep && processing_template_decl 3584 ? NULL : fname_as_string (type_dep)); 3585 tree type; 3586 tree init = cp_fname_init (name, &type); 3587 tree decl = build_decl (loc, VAR_DECL, id, type); 3588 3589 if (name) 3590 free (CONST_CAST (char *, name)); 3591 3592 /* As we're using pushdecl_with_scope, we must set the context. */ 3593 DECL_CONTEXT (decl) = current_function_decl; 3594 DECL_PRETTY_FUNCTION_P (decl) = type_dep; 3595 3596 TREE_STATIC (decl) = 1; 3597 TREE_READONLY (decl) = 1; 3598 DECL_ARTIFICIAL (decl) = 1; 3599 3600 TREE_USED (decl) = 1; 3601 3602 if (current_function_decl) 3603 { 3604 struct cp_binding_level *b = current_binding_level; 3605 if (b->kind == sk_function_parms) 3606 return error_mark_node; 3607 while (b->level_chain->kind != sk_function_parms) 3608 b = b->level_chain; 3609 pushdecl_with_scope (decl, b, /*is_friend=*/false); 3610 cp_finish_decl (decl, init, /*init_const_expr_p=*/false, NULL_TREE, 3611 LOOKUP_ONLYCONVERTING); 3612 } 3613 else 3614 pushdecl_top_level_and_finish (decl, init); 3615 3616 return decl; 3617 } 3618 3619 static tree 3620 builtin_function_1 (tree decl, tree context, bool is_global) 3621 { 3622 tree id = DECL_NAME (decl); 3623 const char *name = IDENTIFIER_POINTER (id); 3624 3625 retrofit_lang_decl (decl); 3626 3627 DECL_ARTIFICIAL (decl) = 1; 3628 SET_OVERLOADED_OPERATOR_CODE (decl, ERROR_MARK); 3629 SET_DECL_LANGUAGE (decl, lang_c); 3630 /* Runtime library routines are, by definition, available in an 3631 external shared object. */ 3632 DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; 3633 DECL_VISIBILITY_SPECIFIED (decl) = 1; 3634 3635 DECL_CONTEXT (decl) = context; 3636 3637 if (is_global) 3638 pushdecl_top_level (decl); 3639 else 3640 pushdecl (decl); 3641 3642 /* A function in the user's namespace should have an explicit 3643 declaration before it is used. Mark the built-in function as 3644 anticipated but not actually declared. */ 3645 if (name[0] != '_' || name[1] != '_') 3646 DECL_ANTICIPATED (decl) = 1; 3647 else if (strncmp (name + 2, "builtin_", strlen ("builtin_")) != 0) 3648 { 3649 size_t len = strlen (name); 3650 3651 /* Treat __*_chk fortification functions as anticipated as well, 3652 unless they are __builtin_*. */ 3653 if (len > strlen ("___chk") 3654 && memcmp (name + len - strlen ("_chk"), 3655 "_chk", strlen ("_chk") + 1) == 0) 3656 DECL_ANTICIPATED (decl) = 1; 3657 } 3658 3659 return decl; 3660 } 3661 3662 tree 3663 cxx_builtin_function (tree decl) 3664 { 3665 tree id = DECL_NAME (decl); 3666 const char *name = IDENTIFIER_POINTER (id); 3667 /* All builtins that don't begin with an '_' should additionally 3668 go in the 'std' namespace. */ 3669 if (name[0] != '_') 3670 { 3671 tree decl2 = copy_node(decl); 3672 push_namespace (std_identifier); 3673 builtin_function_1 (decl2, std_node, false); 3674 pop_namespace (); 3675 } 3676 3677 return builtin_function_1 (decl, NULL_TREE, false); 3678 } 3679 3680 /* Like cxx_builtin_function, but guarantee the function is added to the global 3681 scope. This is to allow function specific options to add new machine 3682 dependent builtins when the target ISA changes via attribute((target(...))) 3683 which saves space on program startup if the program does not use non-generic 3684 ISAs. */ 3685 3686 tree 3687 cxx_builtin_function_ext_scope (tree decl) 3688 { 3689 3690 tree id = DECL_NAME (decl); 3691 const char *name = IDENTIFIER_POINTER (id); 3692 /* All builtins that don't begin with an '_' should additionally 3693 go in the 'std' namespace. */ 3694 if (name[0] != '_') 3695 { 3696 tree decl2 = copy_node(decl); 3697 push_namespace (std_identifier); 3698 builtin_function_1 (decl2, std_node, true); 3699 pop_namespace (); 3700 } 3701 3702 return builtin_function_1 (decl, NULL_TREE, true); 3703 } 3704 3705 /* Generate a FUNCTION_DECL with the typical flags for a runtime library 3706 function. Not called directly. */ 3707 3708 static tree 3709 build_library_fn_1 (tree name, enum tree_code operator_code, tree type) 3710 { 3711 tree fn = build_lang_decl (FUNCTION_DECL, name, type); 3712 DECL_EXTERNAL (fn) = 1; 3713 TREE_PUBLIC (fn) = 1; 3714 DECL_ARTIFICIAL (fn) = 1; 3715 SET_OVERLOADED_OPERATOR_CODE (fn, operator_code); 3716 SET_DECL_LANGUAGE (fn, lang_c); 3717 /* Runtime library routines are, by definition, available in an 3718 external shared object. */ 3719 DECL_VISIBILITY (fn) = VISIBILITY_DEFAULT; 3720 DECL_VISIBILITY_SPECIFIED (fn) = 1; 3721 return fn; 3722 } 3723 3724 /* Returns the _DECL for a library function with C linkage. 3725 We assume that such functions never throw; if this is incorrect, 3726 callers should unset TREE_NOTHROW. */ 3727 3728 static tree 3729 build_library_fn (tree name, tree type) 3730 { 3731 tree fn = build_library_fn_1 (name, ERROR_MARK, type); 3732 TREE_NOTHROW (fn) = 1; 3733 return fn; 3734 } 3735 3736 /* Returns the _DECL for a library function with C++ linkage. */ 3737 3738 static tree 3739 build_cp_library_fn (tree name, enum tree_code operator_code, tree type) 3740 { 3741 tree fn = build_library_fn_1 (name, operator_code, type); 3742 TREE_NOTHROW (fn) = TYPE_NOTHROW_P (type); 3743 DECL_CONTEXT (fn) = FROB_CONTEXT (current_namespace); 3744 SET_DECL_LANGUAGE (fn, lang_cplusplus); 3745 return fn; 3746 } 3747 3748 /* Like build_library_fn, but takes a C string instead of an 3749 IDENTIFIER_NODE. */ 3750 3751 tree 3752 build_library_fn_ptr (const char* name, tree type) 3753 { 3754 return build_library_fn (get_identifier (name), type); 3755 } 3756 3757 /* Like build_cp_library_fn, but takes a C string instead of an 3758 IDENTIFIER_NODE. */ 3759 3760 tree 3761 build_cp_library_fn_ptr (const char* name, tree type) 3762 { 3763 return build_cp_library_fn (get_identifier (name), ERROR_MARK, type); 3764 } 3765 3766 /* Like build_library_fn, but also pushes the function so that we will 3767 be able to find it via IDENTIFIER_GLOBAL_VALUE. Also, the function 3768 may throw exceptions listed in RAISES. */ 3769 3770 tree 3771 push_library_fn (tree name, tree type, tree raises) 3772 { 3773 tree fn; 3774 3775 if (raises) 3776 type = build_exception_variant (type, raises); 3777 3778 fn = build_library_fn (name, type); 3779 pushdecl_top_level (fn); 3780 return fn; 3781 } 3782 3783 /* Like build_cp_library_fn, but also pushes the function so that it 3784 will be found by normal lookup. */ 3785 3786 static tree 3787 push_cp_library_fn (enum tree_code operator_code, tree type) 3788 { 3789 tree fn = build_cp_library_fn (ansi_opname (operator_code), 3790 operator_code, 3791 type); 3792 pushdecl (fn); 3793 return fn; 3794 } 3795 3796 /* Like push_library_fn, but takes a TREE_LIST of parm types rather than 3797 a FUNCTION_TYPE. */ 3798 3799 tree 3800 push_void_library_fn (tree name, tree parmtypes) 3801 { 3802 tree type = build_function_type (void_type_node, parmtypes); 3803 return push_library_fn (name, type, NULL_TREE); 3804 } 3805 3806 /* Like push_library_fn, but also note that this function throws 3807 and does not return. Used for __throw_foo and the like. */ 3808 3809 tree 3810 push_throw_library_fn (tree name, tree type) 3811 { 3812 tree fn = push_library_fn (name, type, NULL_TREE); 3813 TREE_THIS_VOLATILE (fn) = 1; 3814 TREE_NOTHROW (fn) = 0; 3815 return fn; 3816 } 3817 3818 /* When we call finish_struct for an anonymous union, we create 3819 default copy constructors and such. But, an anonymous union 3820 shouldn't have such things; this function undoes the damage to the 3821 anonymous union type T. 3822 3823 (The reason that we create the synthesized methods is that we don't 3824 distinguish `union { int i; }' from `typedef union { int i; } U'. 3825 The first is an anonymous union; the second is just an ordinary 3826 union type.) */ 3827 3828 void 3829 fixup_anonymous_aggr (tree t) 3830 { 3831 tree *q; 3832 3833 /* Wipe out memory of synthesized methods. */ 3834 TYPE_HAS_USER_CONSTRUCTOR (t) = 0; 3835 TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0; 3836 TYPE_HAS_INIT_REF (t) = 0; 3837 TYPE_HAS_CONST_INIT_REF (t) = 0; 3838 TYPE_HAS_ASSIGN_REF (t) = 0; 3839 TYPE_HAS_CONST_ASSIGN_REF (t) = 0; 3840 3841 /* Splice the implicitly generated functions out of the TYPE_METHODS 3842 list. */ 3843 q = &TYPE_METHODS (t); 3844 while (*q) 3845 { 3846 if (DECL_ARTIFICIAL (*q)) 3847 *q = TREE_CHAIN (*q); 3848 else 3849 q = &TREE_CHAIN (*q); 3850 } 3851 3852 /* ISO C++ 9.5.3. Anonymous unions may not have function members. */ 3853 if (TYPE_METHODS (t)) 3854 { 3855 tree decl = TYPE_MAIN_DECL (t); 3856 3857 if (TREE_CODE (t) != UNION_TYPE) 3858 error_at (DECL_SOURCE_LOCATION (decl), 3859 "an anonymous struct cannot have function members"); 3860 else 3861 error_at (DECL_SOURCE_LOCATION (decl), 3862 "an anonymous union cannot have function members"); 3863 } 3864 3865 /* Anonymous aggregates cannot have fields with ctors, dtors or complex 3866 assignment operators (because they cannot have these methods themselves). 3867 For anonymous unions this is already checked because they are not allowed 3868 in any union, otherwise we have to check it. */ 3869 if (TREE_CODE (t) != UNION_TYPE) 3870 { 3871 tree field, type; 3872 3873 for (field = TYPE_FIELDS (t); field; field = TREE_CHAIN (field)) 3874 if (TREE_CODE (field) == FIELD_DECL) 3875 { 3876 type = TREE_TYPE (field); 3877 if (CLASS_TYPE_P (type)) 3878 { 3879 if (TYPE_NEEDS_CONSTRUCTING (type)) 3880 error ("member %q+#D with constructor not allowed " 3881 "in anonymous aggregate", field); 3882 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) 3883 error ("member %q+#D with destructor not allowed " 3884 "in anonymous aggregate", field); 3885 if (TYPE_HAS_COMPLEX_ASSIGN_REF (type)) 3886 error ("member %q+#D with copy assignment operator " 3887 "not allowed in anonymous aggregate", field); 3888 } 3889 } 3890 } 3891 } 3892 3893 /* Make sure that a declaration with no declarator is well-formed, i.e. 3894 just declares a tagged type or anonymous union. 3895 3896 Returns the type declared; or NULL_TREE if none. */ 3897 3898 tree 3899 check_tag_decl (cp_decl_specifier_seq *declspecs) 3900 { 3901 int saw_friend = declspecs->specs[(int)ds_friend] != 0; 3902 int saw_typedef = declspecs->specs[(int)ds_typedef] != 0; 3903 /* If a class, struct, or enum type is declared by the DECLSPECS 3904 (i.e, if a class-specifier, enum-specifier, or non-typename 3905 elaborated-type-specifier appears in the DECLSPECS), 3906 DECLARED_TYPE is set to the corresponding type. */ 3907 tree declared_type = NULL_TREE; 3908 bool error_p = false; 3909 3910 if (declspecs->multiple_types_p) 3911 error ("multiple types in one declaration"); 3912 else if (declspecs->redefined_builtin_type) 3913 { 3914 if (!in_system_header) 3915 permerror (input_location, "redeclaration of C++ built-in type %qT", 3916 declspecs->redefined_builtin_type); 3917 return NULL_TREE; 3918 } 3919 3920 if (declspecs->type 3921 && TYPE_P (declspecs->type) 3922 && ((TREE_CODE (declspecs->type) != TYPENAME_TYPE 3923 && MAYBE_CLASS_TYPE_P (declspecs->type)) 3924 || TREE_CODE (declspecs->type) == ENUMERAL_TYPE)) 3925 declared_type = declspecs->type; 3926 else if (declspecs->type == error_mark_node) 3927 error_p = true; 3928 if (declared_type == NULL_TREE && ! saw_friend && !error_p) 3929 permerror (input_location, "declaration does not declare anything"); 3930 /* Check for an anonymous union. */ 3931 else if (declared_type && RECORD_OR_UNION_CODE_P (TREE_CODE (declared_type)) 3932 && TYPE_ANONYMOUS_P (declared_type)) 3933 { 3934 /* 7/3 In a simple-declaration, the optional init-declarator-list 3935 can be omitted only when declaring a class (clause 9) or 3936 enumeration (7.2), that is, when the decl-specifier-seq contains 3937 either a class-specifier, an elaborated-type-specifier with 3938 a class-key (9.1), or an enum-specifier. In these cases and 3939 whenever a class-specifier or enum-specifier is present in the 3940 decl-specifier-seq, the identifiers in these specifiers are among 3941 the names being declared by the declaration (as class-name, 3942 enum-names, or enumerators, depending on the syntax). In such 3943 cases, and except for the declaration of an unnamed bit-field (9.6), 3944 the decl-specifier-seq shall introduce one or more names into the 3945 program, or shall redeclare a name introduced by a previous 3946 declaration. [Example: 3947 enum { }; // ill-formed 3948 typedef class { }; // ill-formed 3949 --end example] */ 3950 if (saw_typedef) 3951 { 3952 error ("missing type-name in typedef-declaration"); 3953 return NULL_TREE; 3954 } 3955 /* Anonymous unions are objects, so they can have specifiers. */; 3956 SET_ANON_AGGR_TYPE_P (declared_type); 3957 3958 if (TREE_CODE (declared_type) != UNION_TYPE && !in_system_header) 3959 pedwarn (input_location, OPT_pedantic, "ISO C++ prohibits anonymous structs"); 3960 } 3961 3962 else 3963 { 3964 if (declspecs->specs[(int)ds_inline] 3965 || declspecs->specs[(int)ds_virtual]) 3966 error ("%qs can only be specified for functions", 3967 declspecs->specs[(int)ds_inline] 3968 ? "inline" : "virtual"); 3969 else if (saw_friend 3970 && (!current_class_type 3971 || current_scope () != current_class_type)) 3972 error ("%<friend%> can only be specified inside a class"); 3973 else if (declspecs->specs[(int)ds_explicit]) 3974 error ("%<explicit%> can only be specified for constructors"); 3975 else if (declspecs->storage_class) 3976 error ("a storage class can only be specified for objects " 3977 "and functions"); 3978 else if (declspecs->specs[(int)ds_const] 3979 || declspecs->specs[(int)ds_volatile] 3980 || declspecs->specs[(int)ds_restrict] 3981 || declspecs->specs[(int)ds_thread]) 3982 error ("qualifiers can only be specified for objects " 3983 "and functions"); 3984 else if (saw_typedef) 3985 warning (0, "%<typedef%> was ignored in this declaration"); 3986 else if (declspecs->specs[(int) ds_constexpr]) 3987 error ("%<constexpr> cannot be used for type declarations"); 3988 } 3989 3990 return declared_type; 3991 } 3992 3993 /* Called when a declaration is seen that contains no names to declare. 3994 If its type is a reference to a structure, union or enum inherited 3995 from a containing scope, shadow that tag name for the current scope 3996 with a forward reference. 3997 If its type defines a new named structure or union 3998 or defines an enum, it is valid but we need not do anything here. 3999 Otherwise, it is an error. 4000 4001 C++: may have to grok the declspecs to learn about static, 4002 complain for anonymous unions. 4003 4004 Returns the TYPE declared -- or NULL_TREE if none. */ 4005 4006 tree 4007 shadow_tag (cp_decl_specifier_seq *declspecs) 4008 { 4009 tree t = check_tag_decl (declspecs); 4010 4011 if (!t) 4012 return NULL_TREE; 4013 4014 if (declspecs->attributes) 4015 { 4016 warning (0, "attribute ignored in declaration of %q+#T", t); 4017 warning (0, "attribute for %q+#T must follow the %qs keyword", 4018 t, class_key_or_enum_as_string (t)); 4019 4020 } 4021 4022 if (maybe_process_partial_specialization (t) == error_mark_node) 4023 return NULL_TREE; 4024 4025 /* This is where the variables in an anonymous union are 4026 declared. An anonymous union declaration looks like: 4027 union { ... } ; 4028 because there is no declarator after the union, the parser 4029 sends that declaration here. */ 4030 if (ANON_AGGR_TYPE_P (t)) 4031 { 4032 fixup_anonymous_aggr (t); 4033 4034 if (TYPE_FIELDS (t)) 4035 { 4036 tree decl = grokdeclarator (/*declarator=*/NULL, 4037 declspecs, NORMAL, 0, NULL); 4038 finish_anon_union (decl); 4039 } 4040 } 4041 4042 return t; 4043 } 4044 4045 /* Decode a "typename", such as "int **", returning a ..._TYPE node. */ 4046 4047 tree 4048 groktypename (cp_decl_specifier_seq *type_specifiers, 4049 const cp_declarator *declarator, 4050 bool is_template_arg) 4051 { 4052 tree attrs; 4053 tree type; 4054 enum decl_context context 4055 = is_template_arg ? TEMPLATE_TYPE_ARG : TYPENAME; 4056 attrs = type_specifiers->attributes; 4057 type_specifiers->attributes = NULL_TREE; 4058 type = grokdeclarator (declarator, type_specifiers, context, 0, &attrs); 4059 if (attrs && type != error_mark_node) 4060 { 4061 if (CLASS_TYPE_P (type)) 4062 warning (OPT_Wattributes, "ignoring attributes applied to class type %qT " 4063 "outside of definition", type); 4064 else if (MAYBE_CLASS_TYPE_P (type)) 4065 /* A template type parameter or other dependent type. */ 4066 warning (OPT_Wattributes, "ignoring attributes applied to dependent " 4067 "type %qT without an associated declaration", type); 4068 else 4069 cplus_decl_attributes (&type, attrs, 0); 4070 } 4071 return type; 4072 } 4073 4074 /* Process a DECLARATOR for a function-scope variable declaration, 4075 namespace-scope variable declaration, or function declaration. 4076 (Function definitions go through start_function; class member 4077 declarations appearing in the body of the class go through 4078 grokfield.) The DECL corresponding to the DECLARATOR is returned. 4079 If an error occurs, the error_mark_node is returned instead. 4080 4081 DECLSPECS are the decl-specifiers for the declaration. INITIALIZED is 4082 SD_INITIALIZED if an explicit initializer is present, or SD_DEFAULTED 4083 for an explicitly defaulted function, or SD_DELETED for an explicitly 4084 deleted function, but 0 (SD_UNINITIALIZED) if this is a variable 4085 implicitly initialized via a default constructor. ATTRIBUTES and 4086 PREFIX_ATTRIBUTES are GNU attributes associated with this declaration. 4087 *PUSHED_SCOPE_P is set to the scope entered in this function, if any; if 4088 set, the caller is responsible for calling pop_scope. */ 4089 4090 tree 4091 start_decl (const cp_declarator *declarator, 4092 cp_decl_specifier_seq *declspecs, 4093 int initialized, 4094 tree attributes, 4095 tree prefix_attributes, 4096 tree *pushed_scope_p) 4097 { 4098 tree decl; 4099 tree context; 4100 bool was_public; 4101 int flags; 4102 4103 *pushed_scope_p = NULL_TREE; 4104 4105 /* An object declared as __attribute__((deprecated)) suppresses 4106 warnings of uses of other deprecated items. */ 4107 if (lookup_attribute ("deprecated", attributes)) 4108 deprecated_state = DEPRECATED_SUPPRESS; 4109 4110 attributes = chainon (attributes, prefix_attributes); 4111 4112 decl = grokdeclarator (declarator, declspecs, NORMAL, initialized, 4113 &attributes); 4114 4115 deprecated_state = DEPRECATED_NORMAL; 4116 4117 if (decl == NULL_TREE || TREE_CODE (decl) == VOID_TYPE 4118 || decl == error_mark_node) 4119 return error_mark_node; 4120 4121 context = DECL_CONTEXT (decl); 4122 4123 if (context) 4124 { 4125 *pushed_scope_p = push_scope (context); 4126 4127 /* We are only interested in class contexts, later. */ 4128 if (TREE_CODE (context) == NAMESPACE_DECL) 4129 context = NULL_TREE; 4130 } 4131 4132 if (initialized) 4133 /* Is it valid for this decl to have an initializer at all? 4134 If not, set INITIALIZED to zero, which will indirectly 4135 tell `cp_finish_decl' to ignore the initializer once it is parsed. */ 4136 switch (TREE_CODE (decl)) 4137 { 4138 case TYPE_DECL: 4139 error ("typedef %qD is initialized (use decltype instead)", decl); 4140 return error_mark_node; 4141 4142 case FUNCTION_DECL: 4143 if (initialized == SD_DELETED) 4144 /* We'll handle the rest of the semantics later, but we need to 4145 set this now so it's visible to duplicate_decls. */ 4146 DECL_DELETED_FN (decl) = 1; 4147 break; 4148 4149 default: 4150 break; 4151 } 4152 4153 if (initialized) 4154 { 4155 if (! toplevel_bindings_p () 4156 && DECL_EXTERNAL (decl)) 4157 warning (0, "declaration of %q#D has %<extern%> and is initialized", 4158 decl); 4159 DECL_EXTERNAL (decl) = 0; 4160 if (toplevel_bindings_p ()) 4161 TREE_STATIC (decl) = 1; 4162 } 4163 4164 /* If this is a typedef that names the class for linkage purposes 4165 (7.1.3p8), apply any attributes directly to the type. */ 4166 if (TREE_CODE (decl) == TYPE_DECL 4167 && TAGGED_TYPE_P (TREE_TYPE (decl)) 4168 && decl == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (decl)))) 4169 flags = ATTR_FLAG_TYPE_IN_PLACE; 4170 else 4171 flags = 0; 4172 4173 /* Set attributes here so if duplicate decl, will have proper attributes. */ 4174 cplus_decl_attributes (&decl, attributes, flags); 4175 4176 /* Dllimported symbols cannot be defined. Static data members (which 4177 can be initialized in-class and dllimported) go through grokfield, 4178 not here, so we don't need to exclude those decls when checking for 4179 a definition. */ 4180 if (initialized && DECL_DLLIMPORT_P (decl)) 4181 { 4182 error ("definition of %q#D is marked %<dllimport%>", decl); 4183 DECL_DLLIMPORT_P (decl) = 0; 4184 } 4185 4186 /* If #pragma weak was used, mark the decl weak now. */ 4187 maybe_apply_pragma_weak (decl); 4188 4189 if (TREE_CODE (decl) == FUNCTION_DECL 4190 && DECL_DECLARED_INLINE_P (decl) 4191 && DECL_UNINLINABLE (decl) 4192 && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl))) 4193 warning (0, "inline function %q+D given attribute noinline", decl); 4194 4195 if (context && COMPLETE_TYPE_P (complete_type (context))) 4196 { 4197 if (TREE_CODE (decl) == VAR_DECL) 4198 { 4199 tree field = lookup_field (context, DECL_NAME (decl), 0, false); 4200 if (field == NULL_TREE || TREE_CODE (field) != VAR_DECL) 4201 error ("%q#D is not a static member of %q#T", decl, context); 4202 else 4203 { 4204 if (DECL_CONTEXT (field) != context) 4205 { 4206 if (!same_type_p (DECL_CONTEXT (field), context)) 4207 permerror (input_location, "ISO C++ does not permit %<%T::%D%> " 4208 "to be defined as %<%T::%D%>", 4209 DECL_CONTEXT (field), DECL_NAME (decl), 4210 context, DECL_NAME (decl)); 4211 DECL_CONTEXT (decl) = DECL_CONTEXT (field); 4212 } 4213 if (processing_specialization 4214 && template_class_depth (context) == 0 4215 && CLASSTYPE_TEMPLATE_SPECIALIZATION (context)) 4216 error ("template header not allowed in member definition " 4217 "of explicitly specialized class"); 4218 /* Static data member are tricky; an in-class initialization 4219 still doesn't provide a definition, so the in-class 4220 declaration will have DECL_EXTERNAL set, but will have an 4221 initialization. Thus, duplicate_decls won't warn 4222 about this situation, and so we check here. */ 4223 if (initialized && DECL_INITIALIZED_IN_CLASS_P (field)) 4224 error ("duplicate initialization of %qD", decl); 4225 if (duplicate_decls (decl, field, /*newdecl_is_friend=*/false)) 4226 decl = field; 4227 if (declspecs->specs[(int) ds_constexpr] 4228 && !DECL_DECLARED_CONSTEXPR_P (field)) 4229 error ("%qD declared %<constexpr%> outside its class", field); 4230 } 4231 } 4232 else 4233 { 4234 tree field = check_classfn (context, decl, 4235 (processing_template_decl 4236 > template_class_depth (context)) 4237 ? current_template_parms 4238 : NULL_TREE); 4239 if (field && field != error_mark_node 4240 && duplicate_decls (decl, field, 4241 /*newdecl_is_friend=*/false)) 4242 decl = field; 4243 } 4244 4245 /* cp_finish_decl sets DECL_EXTERNAL if DECL_IN_AGGR_P is set. */ 4246 DECL_IN_AGGR_P (decl) = 0; 4247 /* Do not mark DECL as an explicit specialization if it was not 4248 already marked as an instantiation; a declaration should 4249 never be marked as a specialization unless we know what 4250 template is being specialized. */ 4251 if (DECL_LANG_SPECIFIC (decl) && DECL_USE_TEMPLATE (decl)) 4252 { 4253 SET_DECL_TEMPLATE_SPECIALIZATION (decl); 4254 4255 /* [temp.expl.spec] An explicit specialization of a static data 4256 member of a template is a definition if the declaration 4257 includes an initializer; otherwise, it is a declaration. 4258 4259 We check for processing_specialization so this only applies 4260 to the new specialization syntax. */ 4261 if (!initialized && processing_specialization) 4262 DECL_EXTERNAL (decl) = 1; 4263 } 4264 4265 if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl)) 4266 permerror (input_location, "declaration of %q#D outside of class is not definition", 4267 decl); 4268 4269 if (!ensure_literal_type_for_constexpr_object (decl)) 4270 return error_mark_node; 4271 } 4272 4273 was_public = TREE_PUBLIC (decl); 4274 4275 /* Enter this declaration into the symbol table. */ 4276 decl = maybe_push_decl (decl); 4277 4278 if (processing_template_decl) 4279 decl = push_template_decl (decl); 4280 if (decl == error_mark_node) 4281 return error_mark_node; 4282 4283 /* Tell the back end to use or not use .common as appropriate. If we say 4284 -fconserve-space, we want this to save .data space, at the expense of 4285 wrong semantics. If we say -fno-conserve-space, we want this to 4286 produce errors about redefs; to do this we force variables into the 4287 data segment. */ 4288 if (flag_conserve_space 4289 && TREE_CODE (decl) == VAR_DECL 4290 && TREE_PUBLIC (decl) 4291 && !DECL_THREAD_LOCAL_P (decl) 4292 && !have_global_bss_p ()) 4293 DECL_COMMON (decl) = 1; 4294 4295 if (TREE_CODE (decl) == VAR_DECL 4296 && DECL_NAMESPACE_SCOPE_P (decl) && !TREE_PUBLIC (decl) && !was_public 4297 && !DECL_THIS_STATIC (decl) && !DECL_ARTIFICIAL (decl)) 4298 { 4299 /* This is a const variable with implicit 'static'. Set 4300 DECL_THIS_STATIC so we can tell it from variables that are 4301 !TREE_PUBLIC because of the anonymous namespace. */ 4302 gcc_assert (cp_type_readonly (TREE_TYPE (decl))); 4303 DECL_THIS_STATIC (decl) = 1; 4304 } 4305 4306 if (!processing_template_decl && TREE_CODE (decl) == VAR_DECL) 4307 start_decl_1 (decl, initialized); 4308 4309 return decl; 4310 } 4311 4312 /* Process the declaration of a variable DECL. INITIALIZED is true 4313 iff DECL is explicitly initialized. (INITIALIZED is false if the 4314 variable is initialized via an implicitly-called constructor.) 4315 This function must be called for ordinary variables (including, for 4316 example, implicit instantiations of templates), but must not be 4317 called for template declarations. */ 4318 4319 void 4320 start_decl_1 (tree decl, bool initialized) 4321 { 4322 tree type; 4323 bool complete_p; 4324 bool aggregate_definition_p; 4325 4326 gcc_assert (!processing_template_decl); 4327 4328 if (error_operand_p (decl)) 4329 return; 4330 4331 gcc_assert (TREE_CODE (decl) == VAR_DECL); 4332 4333 type = TREE_TYPE (decl); 4334 complete_p = COMPLETE_TYPE_P (type); 4335 aggregate_definition_p = MAYBE_CLASS_TYPE_P (type) && !DECL_EXTERNAL (decl); 4336 4337 /* If an explicit initializer is present, or if this is a definition 4338 of an aggregate, then we need a complete type at this point. 4339 (Scalars are always complete types, so there is nothing to 4340 check.) This code just sets COMPLETE_P; errors (if necessary) 4341 are issued below. */ 4342 if ((initialized || aggregate_definition_p) 4343 && !complete_p 4344 && COMPLETE_TYPE_P (complete_type (type))) 4345 { 4346 complete_p = true; 4347 /* We will not yet have set TREE_READONLY on DECL if the type 4348 was "const", but incomplete, before this point. But, now, we 4349 have a complete type, so we can try again. */ 4350 cp_apply_type_quals_to_decl (cp_type_quals (type), decl); 4351 } 4352 4353 if (initialized) 4354 /* Is it valid for this decl to have an initializer at all? */ 4355 { 4356 /* Don't allow initializations for incomplete types except for 4357 arrays which might be completed by the initialization. */ 4358 if (complete_p) 4359 ; /* A complete type is ok. */ 4360 else if (type_uses_auto (type)) 4361 ; /* An auto type is ok. */ 4362 else if (TREE_CODE (type) != ARRAY_TYPE) 4363 { 4364 error ("variable %q#D has initializer but incomplete type", decl); 4365 type = TREE_TYPE (decl) = error_mark_node; 4366 } 4367 else if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (type)))) 4368 { 4369 if (DECL_LANG_SPECIFIC (decl) && DECL_TEMPLATE_INFO (decl)) 4370 error ("elements of array %q#D have incomplete type", decl); 4371 /* else we already gave an error in start_decl. */ 4372 } 4373 } 4374 else if (aggregate_definition_p && !complete_p) 4375 { 4376 if (type_uses_auto (type)) 4377 error ("declaration of %q#D has no initializer", decl); 4378 else 4379 error ("aggregate %q#D has incomplete type and cannot be defined", 4380 decl); 4381 /* Change the type so that assemble_variable will give 4382 DECL an rtl we can live with: (mem (const_int 0)). */ 4383 type = TREE_TYPE (decl) = error_mark_node; 4384 } 4385 4386 /* Create a new scope to hold this declaration if necessary. 4387 Whether or not a new scope is necessary cannot be determined 4388 until after the type has been completed; if the type is a 4389 specialization of a class template it is not until after 4390 instantiation has occurred that TYPE_HAS_NONTRIVIAL_DESTRUCTOR 4391 will be set correctly. */ 4392 maybe_push_cleanup_level (type); 4393 } 4394 4395 /* Handle initialization of references. DECL, TYPE, and INIT have the 4396 same meaning as in cp_finish_decl. *CLEANUP must be NULL on entry, 4397 but will be set to a new CLEANUP_STMT if a temporary is created 4398 that must be destroyed subsequently. 4399 4400 Returns an initializer expression to use to initialize DECL, or 4401 NULL if the initialization can be performed statically. 4402 4403 Quotes on semantics can be found in ARM 8.4.3. */ 4404 4405 static tree 4406 grok_reference_init (tree decl, tree type, tree init, tree *cleanup) 4407 { 4408 tree tmp; 4409 4410 if (init == NULL_TREE) 4411 { 4412 if ((DECL_LANG_SPECIFIC (decl) == 0 4413 || DECL_IN_AGGR_P (decl) == 0) 4414 && ! DECL_THIS_EXTERN (decl)) 4415 error ("%qD declared as reference but not initialized", decl); 4416 return NULL_TREE; 4417 } 4418 4419 if (TREE_CODE (init) == TREE_LIST) 4420 init = build_x_compound_expr_from_list (init, "initializer"); 4421 4422 if (TREE_CODE (TREE_TYPE (type)) != ARRAY_TYPE 4423 && TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE) 4424 /* Note: default conversion is only called in very special cases. */ 4425 init = decay_conversion (init); 4426 4427 /* Convert INIT to the reference type TYPE. This may involve the 4428 creation of a temporary, whose lifetime must be the same as that 4429 of the reference. If so, a DECL_EXPR for the temporary will be 4430 added just after the DECL_EXPR for DECL. That's why we don't set 4431 DECL_INITIAL for local references (instead assigning to them 4432 explicitly); we need to allow the temporary to be initialized 4433 first. */ 4434 tmp = initialize_reference (type, init, decl, cleanup, tf_warning_or_error); 4435 4436 if (tmp == error_mark_node) 4437 return NULL_TREE; 4438 else if (tmp == NULL_TREE) 4439 { 4440 error ("cannot initialize %qT from %qT", type, TREE_TYPE (init)); 4441 return NULL_TREE; 4442 } 4443 4444 if (TREE_STATIC (decl) && !TREE_CONSTANT (tmp)) 4445 return tmp; 4446 4447 DECL_INITIAL (decl) = tmp; 4448 4449 return NULL_TREE; 4450 } 4451 4452 /* Subroutine of check_initializer. We're initializing a DECL of 4453 std::initializer_list<T> TYPE from a braced-init-list INIT, and need to 4454 extend the lifetime of the underlying array to match that of the decl, 4455 just like for reference initialization. CLEANUP is as for 4456 grok_reference_init. */ 4457 4458 static tree 4459 build_init_list_var_init (tree decl, tree type, tree init, tree *cleanup) 4460 { 4461 tree aggr_init, array, arrtype; 4462 init = perform_implicit_conversion (type, init, tf_warning_or_error); 4463 if (error_operand_p (init)) 4464 return error_mark_node; 4465 4466 aggr_init = TARGET_EXPR_INITIAL (init); 4467 init = build2 (INIT_EXPR, type, decl, init); 4468 4469 array = AGGR_INIT_EXPR_ARG (aggr_init, 1); 4470 arrtype = TREE_TYPE (array); 4471 STRIP_NOPS (array); 4472 gcc_assert (TREE_CODE (array) == ADDR_EXPR); 4473 array = TREE_OPERAND (array, 0); 4474 /* If the array is constant, finish_compound_literal already made it a 4475 static variable and we don't need to do anything here. */ 4476 if (decl && TREE_CODE (array) == TARGET_EXPR) 4477 { 4478 tree subinit; 4479 tree var = set_up_extended_ref_temp (decl, array, cleanup, &subinit); 4480 var = build_address (var); 4481 var = convert (arrtype, var); 4482 AGGR_INIT_EXPR_ARG (aggr_init, 1) = var; 4483 init = build2 (COMPOUND_EXPR, TREE_TYPE (init), subinit, init); 4484 } 4485 return init; 4486 } 4487 4488 /* Designated initializers in arrays are not supported in GNU C++. 4489 The parser cannot detect this error since it does not know whether 4490 a given brace-enclosed initializer is for a class type or for an 4491 array. This function checks that CE does not use a designated 4492 initializer. If it does, an error is issued. Returns true if CE 4493 is valid, i.e., does not have a designated initializer. */ 4494 4495 static bool 4496 check_array_designated_initializer (const constructor_elt *ce) 4497 { 4498 /* Designated initializers for array elements are not supported. */ 4499 if (ce->index) 4500 { 4501 /* The parser only allows identifiers as designated 4502 initializers. */ 4503 if (ce->index == error_mark_node) 4504 error ("name used in a GNU-style designated " 4505 "initializer for an array"); 4506 else 4507 { 4508 gcc_assert (TREE_CODE (ce->index) == IDENTIFIER_NODE); 4509 error ("name %qD used in a GNU-style designated " 4510 "initializer for an array", ce->index); 4511 } 4512 return false; 4513 } 4514 4515 return true; 4516 } 4517 4518 /* When parsing `int a[] = {1, 2};' we don't know the size of the 4519 array until we finish parsing the initializer. If that's the 4520 situation we're in, update DECL accordingly. */ 4521 4522 static void 4523 maybe_deduce_size_from_array_init (tree decl, tree init) 4524 { 4525 tree type = TREE_TYPE (decl); 4526 4527 if (TREE_CODE (type) == ARRAY_TYPE 4528 && TYPE_DOMAIN (type) == NULL_TREE 4529 && TREE_CODE (decl) != TYPE_DECL) 4530 { 4531 /* do_default is really a C-ism to deal with tentative definitions. 4532 But let's leave it here to ease the eventual merge. */ 4533 int do_default = !DECL_EXTERNAL (decl); 4534 tree initializer = init ? init : DECL_INITIAL (decl); 4535 int failure = 0; 4536 4537 /* Check that there are no designated initializers in INIT, as 4538 those are not supported in GNU C++, and as the middle-end 4539 will crash if presented with a non-numeric designated 4540 initializer. */ 4541 if (initializer && TREE_CODE (initializer) == CONSTRUCTOR) 4542 { 4543 VEC(constructor_elt,gc) *v = CONSTRUCTOR_ELTS (initializer); 4544 constructor_elt *ce; 4545 HOST_WIDE_INT i; 4546 for (i = 0; 4547 VEC_iterate (constructor_elt, v, i, ce); 4548 ++i) 4549 if (!check_array_designated_initializer (ce)) 4550 failure = 1; 4551 } 4552 4553 if (!failure) 4554 { 4555 failure = cp_complete_array_type (&TREE_TYPE (decl), initializer, 4556 do_default); 4557 if (failure == 1) 4558 { 4559 error ("initializer fails to determine size of %qD", decl); 4560 TREE_TYPE (decl) = error_mark_node; 4561 } 4562 else if (failure == 2) 4563 { 4564 if (do_default) 4565 { 4566 error ("array size missing in %qD", decl); 4567 TREE_TYPE (decl) = error_mark_node; 4568 } 4569 /* If a `static' var's size isn't known, make it extern as 4570 well as static, so it does not get allocated. If it's not 4571 `static', then don't mark it extern; finish_incomplete_decl 4572 will give it a default size and it will get allocated. */ 4573 else if (!pedantic && TREE_STATIC (decl) && !TREE_PUBLIC (decl)) 4574 DECL_EXTERNAL (decl) = 1; 4575 } 4576 else if (failure == 3) 4577 { 4578 error ("zero-size array %qD", decl); 4579 TREE_TYPE (decl) = error_mark_node; 4580 } 4581 } 4582 4583 cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl); 4584 4585 relayout_decl (decl); 4586 } 4587 } 4588 4589 /* Set DECL_SIZE, DECL_ALIGN, etc. for DECL (a VAR_DECL), and issue 4590 any appropriate error messages regarding the layout. */ 4591 4592 static void 4593 layout_var_decl (tree decl) 4594 { 4595 tree type; 4596 4597 type = TREE_TYPE (decl); 4598 if (type == error_mark_node) 4599 return; 4600 4601 /* If we haven't already layed out this declaration, do so now. 4602 Note that we must not call complete type for an external object 4603 because it's type might involve templates that we are not 4604 supposed to instantiate yet. (And it's perfectly valid to say 4605 `extern X x' for some incomplete type `X'.) */ 4606 if (!DECL_EXTERNAL (decl)) 4607 complete_type (type); 4608 if (!DECL_SIZE (decl) 4609 && TREE_TYPE (decl) != error_mark_node 4610 && (COMPLETE_TYPE_P (type) 4611 || (TREE_CODE (type) == ARRAY_TYPE 4612 && !TYPE_DOMAIN (type) 4613 && COMPLETE_TYPE_P (TREE_TYPE (type))))) 4614 layout_decl (decl, 0); 4615 4616 if (!DECL_EXTERNAL (decl) && DECL_SIZE (decl) == NULL_TREE) 4617 { 4618 /* An automatic variable with an incomplete type: that is an error. 4619 Don't talk about array types here, since we took care of that 4620 message in grokdeclarator. */ 4621 error ("storage size of %qD isn't known", decl); 4622 TREE_TYPE (decl) = error_mark_node; 4623 } 4624 #if 0 4625 /* Keep this code around in case we later want to control debug info 4626 based on whether a type is "used". (jason 1999-11-11) */ 4627 4628 else if (!DECL_EXTERNAL (decl) && MAYBE_CLASS_TYPE_P (ttype)) 4629 /* Let debugger know it should output info for this type. */ 4630 note_debug_info_needed (ttype); 4631 4632 if (TREE_STATIC (decl) && DECL_CLASS_SCOPE_P (decl)) 4633 note_debug_info_needed (DECL_CONTEXT (decl)); 4634 #endif 4635 4636 if ((DECL_EXTERNAL (decl) || TREE_STATIC (decl)) 4637 && DECL_SIZE (decl) != NULL_TREE 4638 && ! TREE_CONSTANT (DECL_SIZE (decl))) 4639 { 4640 if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST) 4641 constant_expression_warning (DECL_SIZE (decl)); 4642 else 4643 { 4644 error ("storage size of %qD isn't constant", decl); 4645 TREE_TYPE (decl) = error_mark_node; 4646 } 4647 } 4648 } 4649 4650 /* If a local static variable is declared in an inline function, or if 4651 we have a weak definition, we must endeavor to create only one 4652 instance of the variable at link-time. */ 4653 4654 void 4655 maybe_commonize_var (tree decl) 4656 { 4657 /* Static data in a function with comdat linkage also has comdat 4658 linkage. */ 4659 if (TREE_STATIC (decl) 4660 /* Don't mess with __FUNCTION__. */ 4661 && ! DECL_ARTIFICIAL (decl) 4662 && DECL_FUNCTION_SCOPE_P (decl) 4663 && vague_linkage_p (DECL_CONTEXT (decl))) 4664 { 4665 if (flag_weak) 4666 { 4667 /* With weak symbols, we simply make the variable COMDAT; 4668 that will cause copies in multiple translations units to 4669 be merged. */ 4670 comdat_linkage (decl); 4671 } 4672 else 4673 { 4674 if (DECL_INITIAL (decl) == NULL_TREE 4675 || DECL_INITIAL (decl) == error_mark_node) 4676 { 4677 /* Without weak symbols, we can use COMMON to merge 4678 uninitialized variables. */ 4679 TREE_PUBLIC (decl) = 1; 4680 DECL_COMMON (decl) = 1; 4681 } 4682 else 4683 { 4684 /* While for initialized variables, we must use internal 4685 linkage -- which means that multiple copies will not 4686 be merged. */ 4687 TREE_PUBLIC (decl) = 0; 4688 DECL_COMMON (decl) = 0; 4689 warning_at (input_location, 0, 4690 "sorry: semantics of inline function static " 4691 "data %q+#D are wrong (you'll wind up " 4692 "with multiple copies)", decl); 4693 warning_at (DECL_SOURCE_LOCATION (decl), 0, 4694 " you can work around this by removing " 4695 "the initializer"); 4696 } 4697 } 4698 } 4699 else if (DECL_LANG_SPECIFIC (decl) && DECL_COMDAT (decl)) 4700 /* Set it up again; we might have set DECL_INITIAL since the last 4701 time. */ 4702 comdat_linkage (decl); 4703 } 4704 4705 /* Issue an error message if DECL is an uninitialized const variable. */ 4706 4707 static void 4708 check_for_uninitialized_const_var (tree decl) 4709 { 4710 tree type = TREE_TYPE (decl); 4711 4712 if (TREE_CODE (decl) == VAR_DECL && DECL_DECLARED_CONSTEXPR_P (decl) 4713 && DECL_INITIAL (decl) == NULL) 4714 error ("missing initializer for constexpr %qD", decl); 4715 4716 /* ``Unless explicitly declared extern, a const object does not have 4717 external linkage and must be initialized. ($8.4; $12.1)'' ARM 4718 7.1.6 */ 4719 else if (TREE_CODE (decl) == VAR_DECL 4720 && TREE_CODE (type) != REFERENCE_TYPE 4721 && CP_TYPE_CONST_P (type) 4722 && !TYPE_NEEDS_CONSTRUCTING (type) 4723 && !DECL_INITIAL (decl)) 4724 error ("uninitialized const %qD", decl); 4725 } 4726 4727 4728 /* Structure holding the current initializer being processed by reshape_init. 4729 CUR is a pointer to the current element being processed, END is a pointer 4730 after the last element present in the initializer. */ 4731 typedef struct reshape_iterator_t 4732 { 4733 constructor_elt *cur; 4734 constructor_elt *end; 4735 } reshape_iter; 4736 4737 static tree reshape_init_r (tree, reshape_iter *, bool); 4738 4739 /* FIELD is a FIELD_DECL or NULL. In the former case, the value 4740 returned is the next FIELD_DECL (possibly FIELD itself) that can be 4741 initialized. If there are no more such fields, the return value 4742 will be NULL. */ 4743 4744 tree 4745 next_initializable_field (tree field) 4746 { 4747 while (field 4748 && (TREE_CODE (field) != FIELD_DECL 4749 || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field)) 4750 || DECL_ARTIFICIAL (field))) 4751 field = TREE_CHAIN (field); 4752 4753 return field; 4754 } 4755 4756 /* Subroutine of reshape_init_array and reshape_init_vector, which does 4757 the actual work. ELT_TYPE is the element type of the array. MAX_INDEX is an 4758 INTEGER_CST representing the size of the array minus one (the maximum index), 4759 or NULL_TREE if the array was declared without specifying the size. D is 4760 the iterator within the constructor. */ 4761 4762 static tree 4763 reshape_init_array_1 (tree elt_type, tree max_index, reshape_iter *d) 4764 { 4765 tree new_init; 4766 bool sized_array_p = (max_index != NULL_TREE); 4767 unsigned HOST_WIDE_INT max_index_cst = 0; 4768 unsigned HOST_WIDE_INT index; 4769 4770 /* The initializer for an array is always a CONSTRUCTOR. */ 4771 new_init = build_constructor (init_list_type_node, NULL); 4772 4773 if (sized_array_p) 4774 { 4775 /* Minus 1 is used for zero sized arrays. */ 4776 if (integer_all_onesp (max_index)) 4777 return new_init; 4778 4779 if (host_integerp (max_index, 1)) 4780 max_index_cst = tree_low_cst (max_index, 1); 4781 /* sizetype is sign extended, not zero extended. */ 4782 else 4783 max_index_cst = tree_low_cst (fold_convert (size_type_node, max_index), 4784 1); 4785 } 4786 4787 /* Loop until there are no more initializers. */ 4788 for (index = 0; 4789 d->cur != d->end && (!sized_array_p || index <= max_index_cst); 4790 ++index) 4791 { 4792 tree elt_init; 4793 4794 check_array_designated_initializer (d->cur); 4795 elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false); 4796 if (elt_init == error_mark_node) 4797 return error_mark_node; 4798 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), NULL_TREE, elt_init); 4799 } 4800 4801 return new_init; 4802 } 4803 4804 /* Subroutine of reshape_init_r, processes the initializers for arrays. 4805 Parameters are the same of reshape_init_r. */ 4806 4807 static tree 4808 reshape_init_array (tree type, reshape_iter *d) 4809 { 4810 tree max_index = NULL_TREE; 4811 4812 gcc_assert (TREE_CODE (type) == ARRAY_TYPE); 4813 4814 if (TYPE_DOMAIN (type)) 4815 max_index = array_type_nelts (type); 4816 4817 return reshape_init_array_1 (TREE_TYPE (type), max_index, d); 4818 } 4819 4820 /* Subroutine of reshape_init_r, processes the initializers for vectors. 4821 Parameters are the same of reshape_init_r. */ 4822 4823 static tree 4824 reshape_init_vector (tree type, reshape_iter *d) 4825 { 4826 tree max_index = NULL_TREE; 4827 tree rtype; 4828 4829 gcc_assert (TREE_CODE (type) == VECTOR_TYPE); 4830 4831 if (COMPOUND_LITERAL_P (d->cur->value)) 4832 { 4833 tree value = d->cur->value; 4834 if (!same_type_p (TREE_TYPE (value), type)) 4835 { 4836 error ("invalid type %qT as initializer for a vector of type %qT", 4837 TREE_TYPE (d->cur->value), type); 4838 value = error_mark_node; 4839 } 4840 ++d->cur; 4841 return value; 4842 } 4843 4844 /* For a vector, the representation type is a struct 4845 containing a single member which is an array of the 4846 appropriate size. */ 4847 rtype = TYPE_DEBUG_REPRESENTATION_TYPE (type); 4848 if (rtype && TYPE_DOMAIN (TREE_TYPE (TYPE_FIELDS (rtype)))) 4849 max_index = array_type_nelts (TREE_TYPE (TYPE_FIELDS (rtype))); 4850 4851 return reshape_init_array_1 (TREE_TYPE (type), max_index, d); 4852 } 4853 4854 /* Subroutine of reshape_init_r, processes the initializers for classes 4855 or union. Parameters are the same of reshape_init_r. */ 4856 4857 static tree 4858 reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p) 4859 { 4860 tree field; 4861 tree new_init; 4862 4863 gcc_assert (CLASS_TYPE_P (type)); 4864 4865 /* The initializer for a class is always a CONSTRUCTOR. */ 4866 new_init = build_constructor (init_list_type_node, NULL); 4867 field = next_initializable_field (TYPE_FIELDS (type)); 4868 4869 if (!field) 4870 { 4871 /* [dcl.init.aggr] 4872 4873 An initializer for an aggregate member that is an 4874 empty class shall have the form of an empty 4875 initializer-list {}. */ 4876 if (!first_initializer_p) 4877 { 4878 error ("initializer for %qT must be brace-enclosed", type); 4879 return error_mark_node; 4880 } 4881 return new_init; 4882 } 4883 4884 /* Loop through the initializable fields, gathering initializers. */ 4885 while (d->cur != d->end) 4886 { 4887 tree field_init; 4888 4889 /* Handle designated initializers, as an extension. */ 4890 if (d->cur->index) 4891 { 4892 field = lookup_field_1 (type, d->cur->index, /*want_type=*/false); 4893 4894 if (!field || TREE_CODE (field) != FIELD_DECL) 4895 { 4896 error ("%qT has no non-static data member named %qD", type, 4897 d->cur->index); 4898 return error_mark_node; 4899 } 4900 } 4901 4902 /* If we processed all the member of the class, we are done. */ 4903 if (!field) 4904 break; 4905 4906 field_init = reshape_init_r (TREE_TYPE (field), d, 4907 /*first_initializer_p=*/false); 4908 if (field_init == error_mark_node) 4909 return error_mark_node; 4910 4911 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), field, field_init); 4912 4913 /* [dcl.init.aggr] 4914 4915 When a union is initialized with a brace-enclosed 4916 initializer, the braces shall only contain an 4917 initializer for the first member of the union. */ 4918 if (TREE_CODE (type) == UNION_TYPE) 4919 break; 4920 4921 field = next_initializable_field (TREE_CHAIN (field)); 4922 } 4923 4924 return new_init; 4925 } 4926 4927 /* Subroutine of reshape_init, which processes a single initializer (part of 4928 a CONSTRUCTOR). TYPE is the type of the variable being initialized, D is the 4929 iterator within the CONSTRUCTOR which points to the initializer to process. 4930 FIRST_INITIALIZER_P is true if this is the first initializer of the 4931 outermost CONSTRUCTOR node. */ 4932 4933 static tree 4934 reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p) 4935 { 4936 tree init = d->cur->value; 4937 4938 if (error_operand_p (init)) 4939 return error_mark_node; 4940 4941 /* A non-aggregate type is always initialized with a single 4942 initializer. */ 4943 if (!CP_AGGREGATE_TYPE_P (type)) 4944 { 4945 /* It is invalid to initialize a non-aggregate type with a 4946 brace-enclosed initializer before C++0x. 4947 We need to check for BRACE_ENCLOSED_INITIALIZER_P here because 4948 of g++.old-deja/g++.mike/p7626.C: a pointer-to-member constant is 4949 a CONSTRUCTOR (with a record type). */ 4950 if (TREE_CODE (init) == CONSTRUCTOR 4951 && BRACE_ENCLOSED_INITIALIZER_P (init)) /* p7626.C */ 4952 { 4953 if (SCALAR_TYPE_P (type)) 4954 { 4955 error ("braces around scalar initializer for type %qT", type); 4956 init = error_mark_node; 4957 } 4958 else 4959 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); 4960 } 4961 4962 d->cur++; 4963 return init; 4964 } 4965 4966 /* [dcl.init.aggr] 4967 4968 All implicit type conversions (clause _conv_) are considered when 4969 initializing the aggregate member with an initializer from an 4970 initializer-list. If the initializer can initialize a member, 4971 the member is initialized. Otherwise, if the member is itself a 4972 non-empty subaggregate, brace elision is assumed and the 4973 initializer is considered for the initialization of the first 4974 member of the subaggregate. */ 4975 if (TREE_CODE (init) != CONSTRUCTOR 4976 /* But don't try this for the first initializer, since that would be 4977 looking through the outermost braces; A a2 = { a1 }; is not a 4978 valid aggregate initialization. */ 4979 && !first_initializer_p 4980 && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (init)) 4981 || can_convert_arg (type, TREE_TYPE (init), init, LOOKUP_NORMAL))) 4982 { 4983 d->cur++; 4984 return init; 4985 } 4986 4987 /* [dcl.init.string] 4988 4989 A char array (whether plain char, signed char, or unsigned char) 4990 can be initialized by a string-literal (optionally enclosed in 4991 braces); a wchar_t array can be initialized by a wide 4992 string-literal (optionally enclosed in braces). */ 4993 if (TREE_CODE (type) == ARRAY_TYPE 4994 && char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (type)))) 4995 { 4996 tree str_init = init; 4997 4998 /* Strip one level of braces if and only if they enclose a single 4999 element (as allowed by [dcl.init.string]). */ 5000 if (!first_initializer_p 5001 && TREE_CODE (str_init) == CONSTRUCTOR 5002 && VEC_length (constructor_elt, CONSTRUCTOR_ELTS (str_init)) == 1) 5003 { 5004 str_init = VEC_index (constructor_elt, 5005 CONSTRUCTOR_ELTS (str_init), 0)->value; 5006 } 5007 5008 /* If it's a string literal, then it's the initializer for the array 5009 as a whole. Otherwise, continue with normal initialization for 5010 array types (one value per array element). */ 5011 if (TREE_CODE (str_init) == STRING_CST) 5012 { 5013 d->cur++; 5014 return str_init; 5015 } 5016 } 5017 5018 /* The following cases are about aggregates. If we are not within a full 5019 initializer already, and there is not a CONSTRUCTOR, it means that there 5020 is a missing set of braces (that is, we are processing the case for 5021 which reshape_init exists). */ 5022 if (!first_initializer_p) 5023 { 5024 if (TREE_CODE (init) == CONSTRUCTOR) 5025 { 5026 if (TREE_TYPE (init) && TYPE_PTRMEMFUNC_P (TREE_TYPE (init))) 5027 /* There is no need to reshape pointer-to-member function 5028 initializers, as they are always constructed correctly 5029 by the front end. */ 5030 ; 5031 else if (COMPOUND_LITERAL_P (init)) 5032 /* For a nested compound literal, there is no need to reshape since 5033 brace elision is not allowed. Even if we decided to allow it, 5034 we should add a call to reshape_init in finish_compound_literal, 5035 before calling digest_init, so changing this code would still 5036 not be necessary. */ 5037 gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init)); 5038 else 5039 { 5040 ++d->cur; 5041 gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init)); 5042 return reshape_init (type, init); 5043 } 5044 } 5045 5046 warning (OPT_Wmissing_braces, "missing braces around initializer for %qT", 5047 type); 5048 } 5049 5050 /* Dispatch to specialized routines. */ 5051 if (CLASS_TYPE_P (type)) 5052 return reshape_init_class (type, d, first_initializer_p); 5053 else if (TREE_CODE (type) == ARRAY_TYPE) 5054 return reshape_init_array (type, d); 5055 else if (TREE_CODE (type) == VECTOR_TYPE) 5056 return reshape_init_vector (type, d); 5057 else 5058 gcc_unreachable(); 5059 } 5060 5061 /* Undo the brace-elision allowed by [dcl.init.aggr] in a 5062 brace-enclosed aggregate initializer. 5063 5064 INIT is the CONSTRUCTOR containing the list of initializers describing 5065 a brace-enclosed initializer for an entity of the indicated aggregate TYPE. 5066 It may not presently match the shape of the TYPE; for example: 5067 5068 struct S { int a; int b; }; 5069 struct S a[] = { 1, 2, 3, 4 }; 5070 5071 Here INIT will hold a VEC of four elements, rather than a 5072 VEC of two elements, each itself a VEC of two elements. This 5073 routine transforms INIT from the former form into the latter. The 5074 revised CONSTRUCTOR node is returned. */ 5075 5076 tree 5077 reshape_init (tree type, tree init) 5078 { 5079 VEC(constructor_elt, gc) *v; 5080 reshape_iter d; 5081 tree new_init; 5082 5083 gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init)); 5084 5085 v = CONSTRUCTOR_ELTS (init); 5086 5087 /* An empty constructor does not need reshaping, and it is always a valid 5088 initializer. */ 5089 if (VEC_empty (constructor_elt, v)) 5090 return init; 5091 5092 /* Recurse on this CONSTRUCTOR. */ 5093 d.cur = VEC_index (constructor_elt, v, 0); 5094 d.end = d.cur + VEC_length (constructor_elt, v); 5095 5096 new_init = reshape_init_r (type, &d, true); 5097 if (new_init == error_mark_node) 5098 return error_mark_node; 5099 5100 /* Make sure all the element of the constructor were used. Otherwise, 5101 issue an error about exceeding initializers. */ 5102 if (d.cur != d.end) 5103 error ("too many initializers for %qT", type); 5104 5105 return new_init; 5106 } 5107 5108 /* Verify array initializer. Returns true if errors have been reported. */ 5109 5110 bool 5111 check_array_initializer (tree decl, tree type, tree init) 5112 { 5113 tree element_type = TREE_TYPE (type); 5114 5115 /* The array type itself need not be complete, because the 5116 initializer may tell us how many elements are in the array. 5117 But, the elements of the array must be complete. */ 5118 if (!COMPLETE_TYPE_P (complete_type (element_type))) 5119 { 5120 if (decl) 5121 error ("elements of array %q#D have incomplete type", decl); 5122 else 5123 error ("elements of array %q#T have incomplete type", type); 5124 return true; 5125 } 5126 /* It is not valid to initialize a VLA. */ 5127 if (init 5128 && ((COMPLETE_TYPE_P (type) && !TREE_CONSTANT (TYPE_SIZE (type))) 5129 || !TREE_CONSTANT (TYPE_SIZE (element_type)))) 5130 { 5131 if (decl) 5132 error ("variable-sized object %qD may not be initialized", decl); 5133 else 5134 error ("variable-sized compound literal"); 5135 return true; 5136 } 5137 return false; 5138 } 5139 5140 /* Subroutine of check_initializer; args are passed down from that function. 5141 Set stmts_are_full_exprs_p to 1 across a call to build_aggr_init. */ 5142 5143 static tree 5144 build_aggr_init_full_exprs (tree decl, tree init, int flags) 5145 5146 { 5147 int saved_stmts_are_full_exprs_p = 0; 5148 if (building_stmt_tree ()) 5149 { 5150 saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p (); 5151 current_stmt_tree ()->stmts_are_full_exprs_p = 1; 5152 } 5153 init = build_aggr_init (decl, init, flags, tf_warning_or_error); 5154 if (building_stmt_tree ()) 5155 current_stmt_tree ()->stmts_are_full_exprs_p = 5156 saved_stmts_are_full_exprs_p; 5157 return init; 5158 } 5159 5160 /* Verify INIT (the initializer for DECL), and record the 5161 initialization in DECL_INITIAL, if appropriate. CLEANUP is as for 5162 grok_reference_init. 5163 5164 If the return value is non-NULL, it is an expression that must be 5165 evaluated dynamically to initialize DECL. */ 5166 5167 static tree 5168 check_initializer (tree decl, tree init, int flags, tree *cleanup) 5169 { 5170 tree type = TREE_TYPE (decl); 5171 tree init_code = NULL; 5172 5173 /* Things that are going to be initialized need to have complete 5174 type. */ 5175 TREE_TYPE (decl) = type = complete_type (TREE_TYPE (decl)); 5176 5177 if (type == error_mark_node) 5178 /* We will have already complained. */ 5179 return NULL_TREE; 5180 5181 if (TREE_CODE (type) == ARRAY_TYPE) 5182 { 5183 if (check_array_initializer (decl, type, init)) 5184 return NULL_TREE; 5185 } 5186 else if (!COMPLETE_TYPE_P (type)) 5187 { 5188 error ("%qD has incomplete type", decl); 5189 TREE_TYPE (decl) = error_mark_node; 5190 return NULL_TREE; 5191 } 5192 else 5193 /* There is no way to make a variable-sized class type in GNU C++. */ 5194 gcc_assert (TREE_CONSTANT (TYPE_SIZE (type))); 5195 5196 if (init && BRACE_ENCLOSED_INITIALIZER_P (init)) 5197 { 5198 int init_len = VEC_length (constructor_elt, CONSTRUCTOR_ELTS (init)); 5199 if (SCALAR_TYPE_P (type)) 5200 { 5201 if (init_len == 0) 5202 { 5203 maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); 5204 init = build_zero_init (type, NULL_TREE, false); 5205 } 5206 else if (init_len != 1) 5207 { 5208 error ("scalar object %qD requires one element in initializer", 5209 decl); 5210 TREE_TYPE (decl) = error_mark_node; 5211 return NULL_TREE; 5212 } 5213 } 5214 } 5215 5216 if (TREE_CODE (decl) == CONST_DECL) 5217 { 5218 gcc_assert (TREE_CODE (type) != REFERENCE_TYPE); 5219 5220 DECL_INITIAL (decl) = init; 5221 5222 gcc_assert (init != NULL_TREE); 5223 init = NULL_TREE; 5224 } 5225 else if (!DECL_EXTERNAL (decl) && TREE_CODE (type) == REFERENCE_TYPE) 5226 init = grok_reference_init (decl, type, init, cleanup); 5227 else if (init) 5228 { 5229 /* Do not reshape constructors of vectors (they don't need to be 5230 reshaped. */ 5231 if (BRACE_ENCLOSED_INITIALIZER_P (init)) 5232 { 5233 if (is_std_init_list (type)) 5234 return build_init_list_var_init (decl, type, init, cleanup); 5235 else if (TYPE_NON_AGGREGATE_CLASS (type)) 5236 { 5237 /* Don't reshape if the class has constructors. */ 5238 if (cxx_dialect == cxx98) 5239 error ("in C++98 %qD must be initialized by constructor, " 5240 "not by %<{...}%>", 5241 decl); 5242 } 5243 else if (TREE_CODE (type) == VECTOR_TYPE && TYPE_VECTOR_OPAQUE (type)) 5244 { 5245 error ("opaque vector types cannot be initialized"); 5246 init = error_mark_node; 5247 } 5248 else 5249 init = reshape_init (type, init); 5250 } 5251 5252 /* If DECL has an array type without a specific bound, deduce the 5253 array size from the initializer. */ 5254 maybe_deduce_size_from_array_init (decl, init); 5255 type = TREE_TYPE (decl); 5256 if (type == error_mark_node) 5257 return NULL_TREE; 5258 5259 if (TYPE_NEEDS_CONSTRUCTING (type) 5260 || (CLASS_TYPE_P (type) 5261 && !BRACE_ENCLOSED_INITIALIZER_P (init))) 5262 return build_aggr_init_full_exprs (decl, init, flags); 5263 else if (TREE_CODE (init) != TREE_VEC) 5264 { 5265 init_code = store_init_value (decl, init, flags); 5266 if (pedantic && TREE_CODE (type) == ARRAY_TYPE 5267 && DECL_INITIAL (decl) 5268 && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST 5269 && PAREN_STRING_LITERAL_P (DECL_INITIAL (decl))) 5270 warning (0, "array %qD initialized by parenthesized string literal %qE", 5271 decl, DECL_INITIAL (decl)); 5272 init = NULL; 5273 } 5274 } 5275 else if (DECL_EXTERNAL (decl)) 5276 ; 5277 else if (TYPE_P (type) && TYPE_NEEDS_CONSTRUCTING (type)) 5278 return build_aggr_init_full_exprs (decl, init, flags); 5279 else if (MAYBE_CLASS_TYPE_P (type)) 5280 { 5281 tree core_type = strip_array_types (type); 5282 5283 if (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type)) 5284 error ("structure %qD with uninitialized const members", decl); 5285 if (CLASSTYPE_REF_FIELDS_NEED_INIT (core_type)) 5286 error ("structure %qD with uninitialized reference members", decl); 5287 5288 check_for_uninitialized_const_var (decl); 5289 } 5290 else 5291 check_for_uninitialized_const_var (decl); 5292 5293 if (init && init != error_mark_node) 5294 init_code = build2 (INIT_EXPR, type, decl, init); 5295 5296 return init_code; 5297 } 5298 5299 /* If DECL is not a local variable, give it RTL. */ 5300 5301 static void 5302 make_rtl_for_nonlocal_decl (tree decl, tree init, const char* asmspec) 5303 { 5304 int toplev = toplevel_bindings_p (); 5305 int defer_p; 5306 const char *filename; 5307 5308 /* Set the DECL_ASSEMBLER_NAME for the object. */ 5309 if (asmspec) 5310 { 5311 /* The `register' keyword, when used together with an 5312 asm-specification, indicates that the variable should be 5313 placed in a particular register. */ 5314 if (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl)) 5315 { 5316 set_user_assembler_name (decl, asmspec); 5317 DECL_HARD_REGISTER (decl) = 1; 5318 } 5319 else 5320 { 5321 if (TREE_CODE (decl) == FUNCTION_DECL 5322 && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL) 5323 set_builtin_user_assembler_name (decl, asmspec); 5324 set_user_assembler_name (decl, asmspec); 5325 } 5326 } 5327 5328 /* Handle non-variables up front. */ 5329 if (TREE_CODE (decl) != VAR_DECL) 5330 { 5331 rest_of_decl_compilation (decl, toplev, at_eof); 5332 return; 5333 } 5334 5335 /* If we see a class member here, it should be a static data 5336 member. */ 5337 if (DECL_LANG_SPECIFIC (decl) && DECL_IN_AGGR_P (decl)) 5338 { 5339 gcc_assert (TREE_STATIC (decl)); 5340 /* An in-class declaration of a static data member should be 5341 external; it is only a declaration, and not a definition. */ 5342 if (init == NULL_TREE) 5343 gcc_assert (DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl)); 5344 } 5345 5346 /* We don't create any RTL for local variables. */ 5347 if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl)) 5348 return; 5349 5350 /* We defer emission of local statics until the corresponding 5351 DECL_EXPR is expanded. */ 5352 defer_p = DECL_FUNCTION_SCOPE_P (decl) || DECL_VIRTUAL_P (decl); 5353 5354 /* We try to defer namespace-scope static constants so that they are 5355 not emitted into the object file unnecessarily. */ 5356 filename = input_filename; 5357 if (!DECL_VIRTUAL_P (decl) 5358 && TREE_READONLY (decl) 5359 && DECL_INITIAL (decl) != NULL_TREE 5360 && DECL_INITIAL (decl) != error_mark_node 5361 && filename != NULL 5362 && ! EMPTY_CONSTRUCTOR_P (DECL_INITIAL (decl)) 5363 && toplev 5364 && !TREE_PUBLIC (decl)) 5365 { 5366 /* Fool with the linkage of static consts according to #pragma 5367 interface. */ 5368 struct c_fileinfo *finfo = get_fileinfo (filename); 5369 if (!finfo->interface_unknown && !TREE_PUBLIC (decl)) 5370 { 5371 TREE_PUBLIC (decl) = 1; 5372 DECL_EXTERNAL (decl) = finfo->interface_only; 5373 } 5374 5375 defer_p = 1; 5376 } 5377 /* Likewise for template instantiations. */ 5378 else if (DECL_LANG_SPECIFIC (decl) 5379 && DECL_IMPLICIT_INSTANTIATION (decl)) 5380 defer_p = 1; 5381 5382 /* If we're not deferring, go ahead and assemble the variable. */ 5383 if (!defer_p) 5384 rest_of_decl_compilation (decl, toplev, at_eof); 5385 } 5386 5387 /* walk_tree helper for wrap_temporary_cleanups, below. */ 5388 5389 static tree 5390 wrap_cleanups_r (tree *stmt_p, int *walk_subtrees, void *data) 5391 { 5392 if (TYPE_P (*stmt_p)) 5393 { 5394 *walk_subtrees = 0; 5395 return NULL_TREE; 5396 } 5397 5398 if (TREE_CODE (*stmt_p) == TARGET_EXPR) 5399 { 5400 tree guard = (tree)data; 5401 tree tcleanup = TARGET_EXPR_CLEANUP (*stmt_p); 5402 5403 tcleanup = build2 (TRY_CATCH_EXPR, void_type_node, tcleanup, guard); 5404 /* Tell honor_protect_cleanup_actions to handle this as a separate 5405 cleanup. */ 5406 TRY_CATCH_IS_CLEANUP (tcleanup) = 1; 5407 5408 TARGET_EXPR_CLEANUP (*stmt_p) = tcleanup; 5409 } 5410 5411 return NULL_TREE; 5412 } 5413 5414 /* We're initializing a local variable which has a cleanup GUARD. If there 5415 are any temporaries used in the initializer INIT of this variable, we 5416 need to wrap their cleanups with TRY_CATCH_EXPR (, GUARD) so that the 5417 variable will be cleaned up properly if one of them throws. 5418 5419 Unfortunately, there's no way to express this properly in terms of 5420 nesting, as the regions for the temporaries overlap the region for the 5421 variable itself; if there are two temporaries, the variable needs to be 5422 the first thing destroyed if either of them throws. However, we only 5423 want to run the variable's cleanup if it actually got constructed. So 5424 we need to guard the temporary cleanups with the variable's cleanup if 5425 they are run on the normal path, but not if they are run on the 5426 exceptional path. We implement this by telling 5427 honor_protect_cleanup_actions to strip the variable cleanup from the 5428 exceptional path. */ 5429 5430 static void 5431 wrap_temporary_cleanups (tree init, tree guard) 5432 { 5433 cp_walk_tree_without_duplicates (&init, wrap_cleanups_r, (void *)guard); 5434 } 5435 5436 /* Generate code to initialize DECL (a local variable). */ 5437 5438 static void 5439 initialize_local_var (tree decl, tree init) 5440 { 5441 tree type = TREE_TYPE (decl); 5442 tree cleanup; 5443 int already_used; 5444 5445 gcc_assert (TREE_CODE (decl) == VAR_DECL 5446 || TREE_CODE (decl) == RESULT_DECL); 5447 gcc_assert (!TREE_STATIC (decl)); 5448 5449 if (DECL_SIZE (decl) == NULL_TREE) 5450 { 5451 /* If we used it already as memory, it must stay in memory. */ 5452 DECL_INITIAL (decl) = NULL_TREE; 5453 TREE_ADDRESSABLE (decl) = TREE_USED (decl); 5454 return; 5455 } 5456 5457 if (type == error_mark_node) 5458 return; 5459 5460 /* Compute and store the initial value. */ 5461 already_used = TREE_USED (decl) || TREE_USED (type); 5462 5463 /* Generate a cleanup, if necessary. */ 5464 cleanup = cxx_maybe_build_cleanup (decl); 5465 5466 /* Perform the initialization. */ 5467 if (init) 5468 { 5469 int saved_stmts_are_full_exprs_p; 5470 5471 /* If we're only initializing a single object, guard the destructors 5472 of any temporaries used in its initializer with its destructor. 5473 This isn't right for arrays because each element initialization is 5474 a full-expression. */ 5475 if (cleanup && TREE_CODE (type) != ARRAY_TYPE) 5476 wrap_temporary_cleanups (init, cleanup); 5477 5478 gcc_assert (building_stmt_tree ()); 5479 saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p (); 5480 current_stmt_tree ()->stmts_are_full_exprs_p = 1; 5481 finish_expr_stmt (init); 5482 current_stmt_tree ()->stmts_are_full_exprs_p = 5483 saved_stmts_are_full_exprs_p; 5484 } 5485 5486 /* Set this to 0 so we can tell whether an aggregate which was 5487 initialized was ever used. Don't do this if it has a 5488 destructor, so we don't complain about the 'resource 5489 allocation is initialization' idiom. Now set 5490 attribute((unused)) on types so decls of that type will be 5491 marked used. (see TREE_USED, above.) */ 5492 if (TYPE_NEEDS_CONSTRUCTING (type) 5493 && ! already_used 5494 && TYPE_HAS_TRIVIAL_DESTRUCTOR (type) 5495 && DECL_NAME (decl)) 5496 TREE_USED (decl) = 0; 5497 else if (already_used) 5498 TREE_USED (decl) = 1; 5499 5500 if (cleanup) 5501 finish_decl_cleanup (decl, cleanup); 5502 } 5503 5504 /* DECL is a VAR_DECL for a compiler-generated variable with static 5505 storage duration (like a virtual table) whose initializer is a 5506 compile-time constant. INIT must be either a TREE_LIST of values, 5507 or a CONSTRUCTOR. Initialize the variable and provide it to the 5508 back end. */ 5509 5510 void 5511 initialize_artificial_var (tree decl, tree init) 5512 { 5513 gcc_assert (DECL_ARTIFICIAL (decl)); 5514 if (TREE_CODE (init) == TREE_LIST) 5515 init = build_constructor_from_list (TREE_TYPE (decl), init); 5516 gcc_assert (TREE_CODE (init) == CONSTRUCTOR); 5517 DECL_INITIAL (decl) = init; 5518 DECL_INITIALIZED_P (decl) = 1; 5519 determine_visibility (decl); 5520 layout_var_decl (decl); 5521 maybe_commonize_var (decl); 5522 make_rtl_for_nonlocal_decl (decl, init, /*asmspec=*/NULL); 5523 } 5524 5525 /* INIT is the initializer for a variable, as represented by the 5526 parser. Returns true iff INIT is value-dependent. */ 5527 5528 static bool 5529 value_dependent_init_p (tree init) 5530 { 5531 if (TREE_CODE (init) == TREE_LIST) 5532 /* A parenthesized initializer, e.g.: int i (3, 2); ? */ 5533 return any_value_dependent_elements_p (init); 5534 else if (TREE_CODE (init) == CONSTRUCTOR) 5535 /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */ 5536 { 5537 VEC(constructor_elt, gc) *elts; 5538 size_t nelts; 5539 size_t i; 5540 5541 elts = CONSTRUCTOR_ELTS (init); 5542 nelts = VEC_length (constructor_elt, elts); 5543 for (i = 0; i < nelts; ++i) 5544 if (value_dependent_init_p (VEC_index (constructor_elt, 5545 elts, i)->value)) 5546 return true; 5547 } 5548 else 5549 /* It must be a simple expression, e.g., int i = 3; */ 5550 return value_dependent_expression_p (init); 5551 5552 return false; 5553 } 5554 5555 /* Finish processing of a declaration; 5556 install its line number and initial value. 5557 If the length of an array type is not known before, 5558 it must be determined now, from the initial value, or it is an error. 5559 5560 INIT is the initializer (if any) for DECL. If INIT_CONST_EXPR_P is 5561 true, then INIT is an integral constant expression. 5562 5563 FLAGS is LOOKUP_ONLYCONVERTING if the = init syntax was used, else 0 5564 if the (init) syntax was used. */ 5565 5566 void 5567 cp_finish_decl (tree decl, tree init, bool init_const_expr_p, 5568 tree asmspec_tree, int flags) 5569 { 5570 tree type; 5571 tree cleanup; 5572 const char *asmspec = NULL; 5573 int was_readonly = 0; 5574 bool var_definition_p = false; 5575 int saved_processing_template_decl; 5576 tree auto_node; 5577 5578 if (decl == error_mark_node) 5579 return; 5580 else if (! decl) 5581 { 5582 if (init) 5583 error ("assignment (not initialization) in declaration"); 5584 return; 5585 } 5586 5587 gcc_assert (TREE_CODE (decl) != RESULT_DECL); 5588 /* Parameters are handled by store_parm_decls, not cp_finish_decl. */ 5589 gcc_assert (TREE_CODE (decl) != PARM_DECL); 5590 5591 type = TREE_TYPE (decl); 5592 if (type == error_mark_node) 5593 return; 5594 5595 /* Assume no cleanup is required. */ 5596 cleanup = NULL_TREE; 5597 saved_processing_template_decl = processing_template_decl; 5598 5599 /* If a name was specified, get the string. */ 5600 if (global_scope_p (current_binding_level)) 5601 asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree); 5602 if (asmspec_tree && asmspec_tree != error_mark_node) 5603 asmspec = TREE_STRING_POINTER (asmspec_tree); 5604 5605 if (current_class_type 5606 && CP_DECL_CONTEXT (decl) == current_class_type 5607 && TYPE_BEING_DEFINED (current_class_type) 5608 && (DECL_INITIAL (decl) || init)) 5609 DECL_INITIALIZED_IN_CLASS_P (decl) = 1; 5610 5611 auto_node = type_uses_auto (type); 5612 if (auto_node) 5613 { 5614 if (init == NULL_TREE) 5615 { 5616 error ("declaration of %q#D has no initializer", decl); 5617 TREE_TYPE (decl) = error_mark_node; 5618 return; 5619 } 5620 if (TREE_CODE (init) == TREE_LIST) 5621 init = build_x_compound_expr_from_list (init, "initializer"); 5622 if (describable_type (init)) 5623 { 5624 type = TREE_TYPE (decl) = do_auto_deduction (type, init, auto_node); 5625 if (type == error_mark_node) 5626 return; 5627 } 5628 } 5629 5630 if (init && TREE_CODE (decl) == FUNCTION_DECL) 5631 { 5632 tree clone; 5633 if (init == ridpointers[(int)RID_DELETE]) 5634 { 5635 /* FIXME check this is 1st decl. */ 5636 DECL_DELETED_FN (decl) = 1; 5637 DECL_DECLARED_INLINE_P (decl) = 1; 5638 DECL_INITIAL (decl) = error_mark_node; 5639 FOR_EACH_CLONE (clone, decl) 5640 { 5641 DECL_DELETED_FN (clone) = 1; 5642 DECL_DECLARED_INLINE_P (clone) = 1; 5643 DECL_INITIAL (clone) = error_mark_node; 5644 } 5645 init = NULL_TREE; 5646 } 5647 else if (init == ridpointers[(int)RID_DEFAULT]) 5648 { 5649 if (defaultable_fn_check (decl)) 5650 DECL_DEFAULTED_FN (decl) = 1; 5651 else 5652 DECL_INITIAL (decl) = NULL_TREE; 5653 } 5654 } 5655 5656 if (processing_template_decl) 5657 { 5658 bool type_dependent_p; 5659 5660 /* Add this declaration to the statement-tree. */ 5661 if (at_function_scope_p ()) 5662 add_decl_expr (decl); 5663 5664 type_dependent_p = dependent_type_p (type); 5665 5666 if (check_for_bare_parameter_packs (init)) 5667 { 5668 init = NULL_TREE; 5669 DECL_INITIAL (decl) = NULL_TREE; 5670 } 5671 5672 if (init && init_const_expr_p && TREE_CODE (decl) == VAR_DECL) 5673 { 5674 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = 1; 5675 if (DECL_INTEGRAL_CONSTANT_VAR_P (decl)) 5676 TREE_CONSTANT (decl) = 1; 5677 } 5678 5679 /* Generally, initializers in templates are expanded when the 5680 template is instantiated. But, if DECL is an integral 5681 constant static data member, then it can be used in future 5682 integral constant expressions, and its value must be 5683 available. */ 5684 if (!(init 5685 && DECL_CLASS_SCOPE_P (decl) 5686 && DECL_INTEGRAL_CONSTANT_VAR_P (decl) 5687 && !type_dependent_p 5688 && !value_dependent_init_p (init))) 5689 { 5690 if (init) 5691 DECL_INITIAL (decl) = init; 5692 if (TREE_CODE (decl) == VAR_DECL 5693 && !DECL_PRETTY_FUNCTION_P (decl) 5694 && !type_dependent_p) 5695 maybe_deduce_size_from_array_init (decl, init); 5696 goto finish_end; 5697 } 5698 5699 if (TREE_CODE (init) == TREE_LIST) 5700 { 5701 /* If the parenthesized-initializer form was used (e.g., 5702 "int A<N>::i(X)"), then INIT will be a TREE_LIST of initializer 5703 arguments. (There is generally only one.) We convert them 5704 individually. */ 5705 tree list = init; 5706 for (; list; list = TREE_CHAIN (list)) 5707 { 5708 tree elt = TREE_VALUE (list); 5709 TREE_VALUE (list) = fold_non_dependent_expr (elt); 5710 } 5711 } 5712 else 5713 init = fold_non_dependent_expr (init); 5714 processing_template_decl = 0; 5715 } 5716 5717 /* Take care of TYPE_DECLs up front. */ 5718 if (TREE_CODE (decl) == TYPE_DECL) 5719 { 5720 if (type != error_mark_node 5721 && MAYBE_CLASS_TYPE_P (type) && DECL_NAME (decl)) 5722 { 5723 if (TREE_TYPE (DECL_NAME (decl)) && TREE_TYPE (decl) != type) 5724 warning (0, "shadowing previous type declaration of %q#D", decl); 5725 set_identifier_type_value (DECL_NAME (decl), decl); 5726 } 5727 5728 /* If we have installed this as the canonical typedef for this 5729 type, and that type has not been defined yet, delay emitting 5730 the debug information for it, as we will emit it later. */ 5731 if (TYPE_MAIN_DECL (TREE_TYPE (decl)) == decl 5732 && !COMPLETE_TYPE_P (TREE_TYPE (decl))) 5733 TYPE_DECL_SUPPRESS_DEBUG (decl) = 1; 5734 5735 rest_of_decl_compilation (decl, DECL_CONTEXT (decl) == NULL_TREE, 5736 at_eof); 5737 goto finish_end; 5738 } 5739 5740 /* A reference will be modified here, as it is initialized. */ 5741 if (! DECL_EXTERNAL (decl) 5742 && TREE_READONLY (decl) 5743 && TREE_CODE (type) == REFERENCE_TYPE) 5744 { 5745 was_readonly = 1; 5746 TREE_READONLY (decl) = 0; 5747 } 5748 5749 if (TREE_CODE (decl) == VAR_DECL) 5750 { 5751 /* Only variables with trivial initialization and destruction can 5752 have thread-local storage. */ 5753 if (DECL_THREAD_LOCAL_P (decl) 5754 && (type_has_nontrivial_default_init (TREE_TYPE (decl)) 5755 || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))) 5756 error ("%qD cannot be thread-local because it has non-trivial " 5757 "type %qT", decl, TREE_TYPE (decl)); 5758 /* If this is a local variable that will need a mangled name, 5759 register it now. We must do this before processing the 5760 initializer for the variable, since the initialization might 5761 require a guard variable, and since the mangled name of the 5762 guard variable will depend on the mangled name of this 5763 variable. */ 5764 if (DECL_FUNCTION_SCOPE_P (decl) 5765 && TREE_STATIC (decl) 5766 && !DECL_ARTIFICIAL (decl)) 5767 { 5768 push_local_name (decl); 5769 if (DECL_CONSTRUCTOR_P (current_function_decl) 5770 || DECL_DESTRUCTOR_P (current_function_decl)) 5771 /* Normally local_decls is populated during GIMPLE lowering, 5772 but [cd]tors are never actually compiled directly. We need 5773 to put statics on the list so we can deal with the label 5774 address extension. */ 5775 cfun->local_decls = tree_cons (NULL_TREE, decl, 5776 cfun->local_decls); 5777 } 5778 5779 /* Convert the initializer to the type of DECL, if we have not 5780 already initialized DECL. */ 5781 if (!DECL_INITIALIZED_P (decl) 5782 /* If !DECL_EXTERNAL then DECL is being defined. In the 5783 case of a static data member initialized inside the 5784 class-specifier, there can be an initializer even if DECL 5785 is *not* defined. */ 5786 && (!DECL_EXTERNAL (decl) || init)) 5787 { 5788 if (TYPE_FOR_JAVA (type) && MAYBE_CLASS_TYPE_P (type)) 5789 { 5790 tree jclass 5791 = IDENTIFIER_GLOBAL_VALUE (get_identifier ("jclass")); 5792 /* Allow libjava/prims.cc define primitive classes. */ 5793 if (init != NULL_TREE 5794 || jclass == NULL_TREE 5795 || TREE_CODE (jclass) != TYPE_DECL 5796 || !POINTER_TYPE_P (TREE_TYPE (jclass)) 5797 || !same_type_ignoring_top_level_qualifiers_p 5798 (type, TREE_TYPE (TREE_TYPE (jclass)))) 5799 error ("Java object %qD not allocated with %<new%>", decl); 5800 init = NULL_TREE; 5801 } 5802 if (init) 5803 { 5804 DECL_NONTRIVIALLY_INITIALIZED_P (decl) = 1; 5805 if (init_const_expr_p) 5806 { 5807 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = 1; 5808 if (DECL_INTEGRAL_CONSTANT_VAR_P (decl)) 5809 TREE_CONSTANT (decl) = 1; 5810 } 5811 } 5812 init = check_initializer (decl, init, flags, &cleanup); 5813 /* Thread-local storage cannot be dynamically initialized. */ 5814 if (DECL_THREAD_LOCAL_P (decl) && init) 5815 { 5816 error ("%qD is thread-local and so cannot be dynamically " 5817 "initialized", decl); 5818 init = NULL_TREE; 5819 } 5820 5821 /* Check that the initializer for a static data member was a 5822 constant. Although we check in the parser that the 5823 initializer is an integral constant expression, we do not 5824 simplify division-by-zero at the point at which it 5825 occurs. Therefore, in: 5826 5827 struct S { static const int i = 7 / 0; }; 5828 5829 we issue an error at this point. It would 5830 probably be better to forbid division by zero in 5831 integral constant expressions. */ 5832 if (DECL_EXTERNAL (decl) && init) 5833 { 5834 error ("%qD cannot be initialized by a non-constant expression" 5835 " when being declared", decl); 5836 DECL_INITIALIZED_IN_CLASS_P (decl) = 0; 5837 init = NULL_TREE; 5838 } 5839 5840 /* Handle: 5841 5842 [dcl.init] 5843 5844 The memory occupied by any object of static storage 5845 duration is zero-initialized at program startup before 5846 any other initialization takes place. 5847 5848 We cannot create an appropriate initializer until after 5849 the type of DECL is finalized. If DECL_INITIAL is set, 5850 then the DECL is statically initialized, and any 5851 necessary zero-initialization has already been performed. */ 5852 if (TREE_STATIC (decl) && !DECL_INITIAL (decl)) 5853 DECL_INITIAL (decl) = build_zero_init (TREE_TYPE (decl), 5854 /*nelts=*/NULL_TREE, 5855 /*static_storage_p=*/true); 5856 /* Remember that the initialization for this variable has 5857 taken place. */ 5858 DECL_INITIALIZED_P (decl) = 1; 5859 /* This declaration is the definition of this variable, 5860 unless we are initializing a static data member within 5861 the class specifier. */ 5862 if (!DECL_EXTERNAL (decl)) 5863 var_definition_p = true; 5864 } 5865 /* If the variable has an array type, lay out the type, even if 5866 there is no initializer. It is valid to index through the 5867 array, and we must get TYPE_ALIGN set correctly on the array 5868 type. */ 5869 else if (TREE_CODE (type) == ARRAY_TYPE) 5870 layout_type (type); 5871 5872 if (!processing_template_decl 5873 && TREE_STATIC (decl) 5874 && !at_function_scope_p () 5875 && current_function_decl == NULL) 5876 /* So decl is a global variable or a static member of a 5877 non local class. Record the types it uses 5878 so that we can decide later to emit debug info for them. */ 5879 record_types_used_by_current_var_decl (decl); 5880 } 5881 else if (TREE_CODE (decl) == FIELD_DECL 5882 && TYPE_FOR_JAVA (type) && MAYBE_CLASS_TYPE_P (type)) 5883 error ("non-static data member %qD has Java class type", decl); 5884 5885 /* Add this declaration to the statement-tree. This needs to happen 5886 after the call to check_initializer so that the DECL_EXPR for a 5887 reference temp is added before the DECL_EXPR for the reference itself. */ 5888 if (at_function_scope_p ()) 5889 add_decl_expr (decl); 5890 5891 /* Let the middle end know about variables and functions -- but not 5892 static data members in uninstantiated class templates. */ 5893 if (!saved_processing_template_decl 5894 && (TREE_CODE (decl) == VAR_DECL 5895 || TREE_CODE (decl) == FUNCTION_DECL)) 5896 { 5897 if (TREE_CODE (decl) == VAR_DECL) 5898 { 5899 layout_var_decl (decl); 5900 maybe_commonize_var (decl); 5901 } 5902 5903 /* This needs to happen after the linkage is set. */ 5904 determine_visibility (decl); 5905 5906 if (var_definition_p && TREE_STATIC (decl)) 5907 { 5908 /* If a TREE_READONLY variable needs initialization 5909 at runtime, it is no longer readonly and we need to 5910 avoid MEM_READONLY_P being set on RTL created for it. */ 5911 if (init) 5912 { 5913 if (TREE_READONLY (decl)) 5914 TREE_READONLY (decl) = 0; 5915 was_readonly = 0; 5916 } 5917 else if (was_readonly) 5918 TREE_READONLY (decl) = 1; 5919 } 5920 5921 make_rtl_for_nonlocal_decl (decl, init, asmspec); 5922 5923 /* Check for abstractness of the type. Notice that there is no 5924 need to strip array types here since the check for those types 5925 is already done within create_array_type_for_decl. */ 5926 if (TREE_CODE (type) == FUNCTION_TYPE 5927 || TREE_CODE (type) == METHOD_TYPE) 5928 abstract_virtuals_error (decl, TREE_TYPE (type)); 5929 else 5930 abstract_virtuals_error (decl, type); 5931 5932 if (TREE_TYPE (decl) == error_mark_node) 5933 /* No initialization required. */ 5934 ; 5935 else if (TREE_CODE (decl) == FUNCTION_DECL) 5936 { 5937 if (init) 5938 { 5939 if (init == ridpointers[(int)RID_DEFAULT]) 5940 { 5941 /* An out-of-class default definition is defined at 5942 the point where it is explicitly defaulted. */ 5943 if (DECL_INITIAL (decl) == error_mark_node) 5944 synthesize_method (decl); 5945 } 5946 else 5947 error ("function %q#D is initialized like a variable", decl); 5948 } 5949 /* else no initialization required. */ 5950 } 5951 else if (DECL_EXTERNAL (decl) 5952 && ! (DECL_LANG_SPECIFIC (decl) 5953 && DECL_NOT_REALLY_EXTERN (decl))) 5954 { 5955 if (init) 5956 DECL_INITIAL (decl) = init; 5957 } 5958 /* A variable definition. */ 5959 else if (DECL_FUNCTION_SCOPE_P (decl) && !TREE_STATIC (decl)) 5960 /* Initialize the local variable. */ 5961 initialize_local_var (decl, init); 5962 5963 /* If a variable is defined, and then a subsequent 5964 definition with external linkage is encountered, we will 5965 get here twice for the same variable. We want to avoid 5966 calling expand_static_init more than once. For variables 5967 that are not static data members, we can call 5968 expand_static_init only when we actually process the 5969 initializer. It is not legal to redeclare a static data 5970 member, so this issue does not arise in that case. */ 5971 else if (var_definition_p && TREE_STATIC (decl)) 5972 expand_static_init (decl, init); 5973 } 5974 5975 /* If a CLEANUP_STMT was created to destroy a temporary bound to a 5976 reference, insert it in the statement-tree now. */ 5977 if (cleanup) 5978 push_cleanup (decl, cleanup, false); 5979 5980 finish_end: 5981 processing_template_decl = saved_processing_template_decl; 5982 5983 if (was_readonly) 5984 TREE_READONLY (decl) = 1; 5985 5986 /* If this was marked 'used', be sure it will be output. */ 5987 if (lookup_attribute ("used", DECL_ATTRIBUTES (decl))) 5988 mark_decl_referenced (decl); 5989 } 5990 5991 /* Returns a declaration for a VAR_DECL as if: 5992 5993 extern "C" TYPE NAME; 5994 5995 had been seen. Used to create compiler-generated global 5996 variables. */ 5997 5998 static tree 5999 declare_global_var (tree name, tree type) 6000 { 6001 tree decl; 6002 6003 push_to_top_level (); 6004 decl = build_decl (input_location, VAR_DECL, name, type); 6005 TREE_PUBLIC (decl) = 1; 6006 DECL_EXTERNAL (decl) = 1; 6007 DECL_ARTIFICIAL (decl) = 1; 6008 /* If the user has explicitly declared this variable (perhaps 6009 because the code we are compiling is part of a low-level runtime 6010 library), then it is possible that our declaration will be merged 6011 with theirs by pushdecl. */ 6012 decl = pushdecl (decl); 6013 cp_finish_decl (decl, NULL_TREE, false, NULL_TREE, 0); 6014 pop_from_top_level (); 6015 6016 return decl; 6017 } 6018 6019 /* Returns the type for the argument to "__cxa_atexit" (or "atexit", 6020 if "__cxa_atexit" is not being used) corresponding to the function 6021 to be called when the program exits. */ 6022 6023 static tree 6024 get_atexit_fn_ptr_type (void) 6025 { 6026 tree arg_types; 6027 tree fn_type; 6028 6029 if (!atexit_fn_ptr_type_node) 6030 { 6031 if (flag_use_cxa_atexit 6032 && !targetm.cxx.use_atexit_for_cxa_atexit ()) 6033 /* The parameter to "__cxa_atexit" is "void (*)(void *)". */ 6034 arg_types = tree_cons (NULL_TREE, ptr_type_node, void_list_node); 6035 else 6036 /* The parameter to "atexit" is "void (*)(void)". */ 6037 arg_types = void_list_node; 6038 6039 fn_type = build_function_type (void_type_node, arg_types); 6040 atexit_fn_ptr_type_node = build_pointer_type (fn_type); 6041 } 6042 6043 return atexit_fn_ptr_type_node; 6044 } 6045 6046 /* Returns a pointer to the `atexit' function. Note that if 6047 FLAG_USE_CXA_ATEXIT is nonzero, then this will actually be the new 6048 `__cxa_atexit' function specified in the IA64 C++ ABI. */ 6049 6050 static tree 6051 get_atexit_node (void) 6052 { 6053 tree atexit_fndecl; 6054 tree arg_types; 6055 tree fn_type; 6056 tree fn_ptr_type; 6057 const char *name; 6058 bool use_aeabi_atexit; 6059 6060 if (atexit_node) 6061 return atexit_node; 6062 6063 if (flag_use_cxa_atexit && !targetm.cxx.use_atexit_for_cxa_atexit ()) 6064 { 6065 /* The declaration for `__cxa_atexit' is: 6066 6067 int __cxa_atexit (void (*)(void *), void *, void *) 6068 6069 We build up the argument types and then then function type 6070 itself. */ 6071 6072 use_aeabi_atexit = targetm.cxx.use_aeabi_atexit (); 6073 /* First, build the pointer-to-function type for the first 6074 argument. */ 6075 fn_ptr_type = get_atexit_fn_ptr_type (); 6076 /* Then, build the rest of the argument types. */ 6077 arg_types = tree_cons (NULL_TREE, ptr_type_node, void_list_node); 6078 if (use_aeabi_atexit) 6079 { 6080 arg_types = tree_cons (NULL_TREE, fn_ptr_type, arg_types); 6081 arg_types = tree_cons (NULL_TREE, ptr_type_node, arg_types); 6082 } 6083 else 6084 { 6085 arg_types = tree_cons (NULL_TREE, ptr_type_node, arg_types); 6086 arg_types = tree_cons (NULL_TREE, fn_ptr_type, arg_types); 6087 } 6088 /* And the final __cxa_atexit type. */ 6089 fn_type = build_function_type (integer_type_node, arg_types); 6090 fn_ptr_type = build_pointer_type (fn_type); 6091 if (use_aeabi_atexit) 6092 name = "__aeabi_atexit"; 6093 else 6094 name = "__cxa_atexit"; 6095 } 6096 else 6097 { 6098 /* The declaration for `atexit' is: 6099 6100 int atexit (void (*)()); 6101 6102 We build up the argument types and then then function type 6103 itself. */ 6104 fn_ptr_type = get_atexit_fn_ptr_type (); 6105 arg_types = tree_cons (NULL_TREE, fn_ptr_type, void_list_node); 6106 /* Build the final atexit type. */ 6107 fn_type = build_function_type (integer_type_node, arg_types); 6108 name = "atexit"; 6109 } 6110 6111 /* Now, build the function declaration. */ 6112 push_lang_context (lang_name_c); 6113 atexit_fndecl = build_library_fn_ptr (name, fn_type); 6114 mark_used (atexit_fndecl); 6115 pop_lang_context (); 6116 atexit_node = decay_conversion (atexit_fndecl); 6117 6118 return atexit_node; 6119 } 6120 6121 /* Returns the __dso_handle VAR_DECL. */ 6122 6123 static tree 6124 get_dso_handle_node (void) 6125 { 6126 if (dso_handle_node) 6127 return dso_handle_node; 6128 6129 /* Declare the variable. */ 6130 dso_handle_node = declare_global_var (get_identifier ("__dso_handle"), 6131 ptr_type_node); 6132 6133 return dso_handle_node; 6134 } 6135 6136 /* Begin a new function with internal linkage whose job will be simply 6137 to destroy some particular variable. */ 6138 6139 static GTY(()) int start_cleanup_cnt; 6140 6141 static tree 6142 start_cleanup_fn (void) 6143 { 6144 char name[32]; 6145 tree fntype; 6146 tree fndecl; 6147 bool use_cxa_atexit = flag_use_cxa_atexit 6148 && !targetm.cxx.use_atexit_for_cxa_atexit (); 6149 6150 push_to_top_level (); 6151 6152 /* No need to mangle this. */ 6153 push_lang_context (lang_name_c); 6154 6155 /* Build the name of the function. */ 6156 sprintf (name, "__tcf_%d", start_cleanup_cnt++); 6157 /* Build the function declaration. */ 6158 fntype = TREE_TYPE (get_atexit_fn_ptr_type ()); 6159 fndecl = build_lang_decl (FUNCTION_DECL, get_identifier (name), fntype); 6160 /* It's a function with internal linkage, generated by the 6161 compiler. */ 6162 TREE_PUBLIC (fndecl) = 0; 6163 DECL_ARTIFICIAL (fndecl) = 1; 6164 /* Make the function `inline' so that it is only emitted if it is 6165 actually needed. It is unlikely that it will be inlined, since 6166 it is only called via a function pointer, but we avoid unnecessary 6167 emissions this way. */ 6168 DECL_DECLARED_INLINE_P (fndecl) = 1; 6169 DECL_INTERFACE_KNOWN (fndecl) = 1; 6170 /* Build the parameter. */ 6171 if (use_cxa_atexit) 6172 { 6173 tree parmdecl; 6174 6175 parmdecl = cp_build_parm_decl (NULL_TREE, ptr_type_node); 6176 DECL_CONTEXT (parmdecl) = fndecl; 6177 TREE_USED (parmdecl) = 1; 6178 DECL_ARGUMENTS (fndecl) = parmdecl; 6179 } 6180 6181 pushdecl (fndecl); 6182 start_preparsed_function (fndecl, NULL_TREE, SF_PRE_PARSED); 6183 6184 pop_lang_context (); 6185 6186 return current_function_decl; 6187 } 6188 6189 /* Finish the cleanup function begun by start_cleanup_fn. */ 6190 6191 static void 6192 end_cleanup_fn (void) 6193 { 6194 expand_or_defer_fn (finish_function (0)); 6195 6196 pop_from_top_level (); 6197 } 6198 6199 /* Generate code to handle the destruction of DECL, an object with 6200 static storage duration. */ 6201 6202 tree 6203 register_dtor_fn (tree decl) 6204 { 6205 tree cleanup; 6206 tree compound_stmt; 6207 tree args; 6208 tree fcall; 6209 tree type; 6210 bool use_dtor; 6211 6212 type = TREE_TYPE (decl); 6213 if (TYPE_HAS_TRIVIAL_DESTRUCTOR (type)) 6214 return void_zero_node; 6215 6216 /* If we're using "__cxa_atexit" (or "__aeabi_atexit"), and DECL is 6217 a class object, we can just pass the destructor to 6218 "__cxa_atexit"; we don't have to build a temporary function to do 6219 the cleanup. */ 6220 use_dtor = (flag_use_cxa_atexit 6221 && !targetm.cxx.use_atexit_for_cxa_atexit () 6222 && CLASS_TYPE_P (type)); 6223 if (use_dtor) 6224 { 6225 int idx; 6226 6227 /* Find the destructor. */ 6228 idx = lookup_fnfields_1 (type, complete_dtor_identifier); 6229 gcc_assert (idx >= 0); 6230 cleanup = VEC_index (tree, CLASSTYPE_METHOD_VEC (type), idx); 6231 /* Make sure it is accessible. */ 6232 perform_or_defer_access_check (TYPE_BINFO (type), cleanup, cleanup); 6233 } 6234 else 6235 { 6236 /* Call build_cleanup before we enter the anonymous function so 6237 that any access checks will be done relative to the current 6238 scope, rather than the scope of the anonymous function. */ 6239 build_cleanup (decl); 6240 6241 /* Now start the function. */ 6242 cleanup = start_cleanup_fn (); 6243 6244 /* Now, recompute the cleanup. It may contain SAVE_EXPRs that refer 6245 to the original function, rather than the anonymous one. That 6246 will make the back end think that nested functions are in use, 6247 which causes confusion. */ 6248 push_deferring_access_checks (dk_no_check); 6249 fcall = build_cleanup (decl); 6250 pop_deferring_access_checks (); 6251 6252 /* Create the body of the anonymous function. */ 6253 compound_stmt = begin_compound_stmt (BCS_FN_BODY); 6254 finish_expr_stmt (fcall); 6255 finish_compound_stmt (compound_stmt); 6256 end_cleanup_fn (); 6257 } 6258 6259 /* Call atexit with the cleanup function. */ 6260 mark_used (cleanup); 6261 cleanup = build_address (cleanup); 6262 if (flag_use_cxa_atexit && !targetm.cxx.use_atexit_for_cxa_atexit ()) 6263 { 6264 tree addr; 6265 6266 if (use_dtor) 6267 { 6268 /* We must convert CLEANUP to the type that "__cxa_atexit" 6269 expects. */ 6270 cleanup = build_nop (get_atexit_fn_ptr_type (), cleanup); 6271 /* "__cxa_atexit" will pass the address of DECL to the 6272 cleanup function. */ 6273 mark_used (decl); 6274 addr = build_address (decl); 6275 /* The declared type of the parameter to "__cxa_atexit" is 6276 "void *". For plain "T*", we could just let the 6277 machinery in cp_build_function_call convert it -- but if the 6278 type is "cv-qualified T *", then we need to convert it 6279 before passing it in, to avoid spurious errors. */ 6280 addr = build_nop (ptr_type_node, addr); 6281 } 6282 else 6283 /* Since the cleanup functions we build ignore the address 6284 they're given, there's no reason to pass the actual address 6285 in, and, in general, it's cheaper to pass NULL than any 6286 other value. */ 6287 addr = null_pointer_node; 6288 args = tree_cons (NULL_TREE, 6289 cp_build_unary_op (ADDR_EXPR, get_dso_handle_node (), 0, 6290 tf_warning_or_error), 6291 NULL_TREE); 6292 if (targetm.cxx.use_aeabi_atexit ()) 6293 { 6294 args = tree_cons (NULL_TREE, cleanup, args); 6295 args = tree_cons (NULL_TREE, addr, args); 6296 } 6297 else 6298 { 6299 args = tree_cons (NULL_TREE, addr, args); 6300 args = tree_cons (NULL_TREE, cleanup, args); 6301 } 6302 } 6303 else 6304 args = tree_cons (NULL_TREE, cleanup, NULL_TREE); 6305 return cp_build_function_call (get_atexit_node (), args, 6306 tf_warning_or_error); 6307 } 6308 6309 /* DECL is a VAR_DECL with static storage duration. INIT, if present, 6310 is its initializer. Generate code to handle the construction 6311 and destruction of DECL. */ 6312 6313 static void 6314 expand_static_init (tree decl, tree init) 6315 { 6316 gcc_assert (TREE_CODE (decl) == VAR_DECL); 6317 gcc_assert (TREE_STATIC (decl)); 6318 6319 /* Some variables require no initialization. */ 6320 if (!init 6321 && !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (decl)) 6322 && TYPE_HAS_TRIVIAL_DESTRUCTOR (TREE_TYPE (decl))) 6323 return; 6324 6325 if (DECL_FUNCTION_SCOPE_P (decl)) 6326 { 6327 /* Emit code to perform this initialization but once. */ 6328 tree if_stmt = NULL_TREE, inner_if_stmt = NULL_TREE; 6329 tree then_clause = NULL_TREE, inner_then_clause = NULL_TREE; 6330 tree guard, guard_addr; 6331 tree acquire_fn, release_fn, abort_fn; 6332 tree flag, begin; 6333 6334 /* Emit code to perform this initialization but once. This code 6335 looks like: 6336 6337 static <type> guard; 6338 if (!guard.first_byte) { 6339 if (__cxa_guard_acquire (&guard)) { 6340 bool flag = false; 6341 try { 6342 // Do initialization. 6343 flag = true; __cxa_guard_release (&guard); 6344 // Register variable for destruction at end of program. 6345 } catch { 6346 if (!flag) __cxa_guard_abort (&guard); 6347 } 6348 } 6349 6350 Note that the `flag' variable is only set to 1 *after* the 6351 initialization is complete. This ensures that an exception, 6352 thrown during the construction, will cause the variable to 6353 reinitialized when we pass through this code again, as per: 6354 6355 [stmt.dcl] 6356 6357 If the initialization exits by throwing an exception, the 6358 initialization is not complete, so it will be tried again 6359 the next time control enters the declaration. 6360 6361 This process should be thread-safe, too; multiple threads 6362 should not be able to initialize the variable more than 6363 once. */ 6364 6365 /* Create the guard variable. */ 6366 guard = get_guard (decl); 6367 6368 /* This optimization isn't safe on targets with relaxed memory 6369 consistency. On such targets we force synchronization in 6370 __cxa_guard_acquire. */ 6371 if (!targetm.relaxed_ordering || !flag_threadsafe_statics) 6372 { 6373 /* Begin the conditional initialization. */ 6374 if_stmt = begin_if_stmt (); 6375 finish_if_stmt_cond (get_guard_cond (guard), if_stmt); 6376 then_clause = begin_compound_stmt (BCS_NO_SCOPE); 6377 } 6378 6379 if (flag_threadsafe_statics) 6380 { 6381 guard_addr = build_address (guard); 6382 6383 acquire_fn = get_identifier ("__cxa_guard_acquire"); 6384 release_fn = get_identifier ("__cxa_guard_release"); 6385 abort_fn = get_identifier ("__cxa_guard_abort"); 6386 if (!get_global_value_if_present (acquire_fn, &acquire_fn)) 6387 { 6388 tree argtypes = tree_cons (NULL_TREE, TREE_TYPE (guard_addr), 6389 void_list_node); 6390 tree vfntype = build_function_type (void_type_node, argtypes); 6391 acquire_fn = push_library_fn 6392 (acquire_fn, build_function_type (integer_type_node, argtypes), 6393 NULL_TREE); 6394 release_fn = push_library_fn (release_fn, vfntype, NULL_TREE); 6395 abort_fn = push_library_fn (abort_fn, vfntype, NULL_TREE); 6396 } 6397 else 6398 { 6399 release_fn = identifier_global_value (release_fn); 6400 abort_fn = identifier_global_value (abort_fn); 6401 } 6402 6403 inner_if_stmt = begin_if_stmt (); 6404 finish_if_stmt_cond (build_call_n (acquire_fn, 1, guard_addr), 6405 inner_if_stmt); 6406 6407 inner_then_clause = begin_compound_stmt (BCS_NO_SCOPE); 6408 begin = get_target_expr (boolean_false_node); 6409 flag = TARGET_EXPR_SLOT (begin); 6410 6411 TARGET_EXPR_CLEANUP (begin) 6412 = build3 (COND_EXPR, void_type_node, flag, 6413 void_zero_node, 6414 build_call_n (abort_fn, 1, guard_addr)); 6415 CLEANUP_EH_ONLY (begin) = 1; 6416 6417 /* Do the initialization itself. */ 6418 init = add_stmt_to_compound (begin, init); 6419 init = add_stmt_to_compound 6420 (init, build2 (MODIFY_EXPR, void_type_node, flag, boolean_true_node)); 6421 init = add_stmt_to_compound 6422 (init, build_call_n (release_fn, 1, guard_addr)); 6423 } 6424 else 6425 init = add_stmt_to_compound (init, set_guard (guard)); 6426 6427 /* Use atexit to register a function for destroying this static 6428 variable. */ 6429 init = add_stmt_to_compound (init, register_dtor_fn (decl)); 6430 6431 finish_expr_stmt (init); 6432 6433 if (flag_threadsafe_statics) 6434 { 6435 finish_compound_stmt (inner_then_clause); 6436 finish_then_clause (inner_if_stmt); 6437 finish_if_stmt (inner_if_stmt); 6438 } 6439 6440 if (!targetm.relaxed_ordering || !flag_threadsafe_statics) 6441 { 6442 finish_compound_stmt (then_clause); 6443 finish_then_clause (if_stmt); 6444 finish_if_stmt (if_stmt); 6445 } 6446 } 6447 else 6448 static_aggregates = tree_cons (init, decl, static_aggregates); 6449 } 6450 6451 6452 /* Make TYPE a complete type based on INITIAL_VALUE. 6453 Return 0 if successful, 1 if INITIAL_VALUE can't be deciphered, 6454 2 if there was no information (in which case assume 0 if DO_DEFAULT), 6455 3 if the initializer list is empty (in pedantic mode). */ 6456 6457 int 6458 cp_complete_array_type (tree *ptype, tree initial_value, bool do_default) 6459 { 6460 int failure; 6461 tree type, elt_type; 6462 6463 if (initial_value) 6464 { 6465 unsigned HOST_WIDE_INT i; 6466 tree value; 6467 6468 /* An array of character type can be initialized from a 6469 brace-enclosed string constant. 6470 6471 FIXME: this code is duplicated from reshape_init. Probably 6472 we should just call reshape_init here? */ 6473 if (char_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (*ptype))) 6474 && TREE_CODE (initial_value) == CONSTRUCTOR 6475 && !VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (initial_value))) 6476 { 6477 VEC(constructor_elt,gc) *v = CONSTRUCTOR_ELTS (initial_value); 6478 tree value = VEC_index (constructor_elt, v, 0)->value; 6479 6480 if (TREE_CODE (value) == STRING_CST 6481 && VEC_length (constructor_elt, v) == 1) 6482 initial_value = value; 6483 } 6484 6485 /* If any of the elements are parameter packs, we can't actually 6486 complete this type now because the array size is dependent. */ 6487 if (TREE_CODE (initial_value) == CONSTRUCTOR) 6488 { 6489 FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (initial_value), 6490 i, value) 6491 { 6492 if (PACK_EXPANSION_P (value)) 6493 return 0; 6494 } 6495 } 6496 } 6497 6498 failure = complete_array_type (ptype, initial_value, do_default); 6499 6500 /* We can create the array before the element type is complete, which 6501 means that we didn't have these two bits set in the original type 6502 either. In completing the type, we are expected to propagate these 6503 bits. See also complete_type which does the same thing for arrays 6504 of fixed size. */ 6505 type = *ptype; 6506 if (TYPE_DOMAIN (type)) 6507 { 6508 elt_type = TREE_TYPE (type); 6509 TYPE_NEEDS_CONSTRUCTING (type) = TYPE_NEEDS_CONSTRUCTING (elt_type); 6510 TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) 6511 = TYPE_HAS_NONTRIVIAL_DESTRUCTOR (elt_type); 6512 } 6513 6514 return failure; 6515 } 6516 6517 /* Return zero if something is declared to be a member of type 6518 CTYPE when in the context of CUR_TYPE. STRING is the error 6519 message to print in that case. Otherwise, quietly return 1. */ 6520 6521 static int 6522 member_function_or_else (tree ctype, tree cur_type, enum overload_flags flags) 6523 { 6524 if (ctype && ctype != cur_type) 6525 { 6526 if (flags == DTOR_FLAG) 6527 error ("destructor for alien class %qT cannot be a member", ctype); 6528 else 6529 error ("constructor for alien class %qT cannot be a member", ctype); 6530 return 0; 6531 } 6532 return 1; 6533 } 6534 6535 /* Subroutine of `grokdeclarator'. */ 6536 6537 /* Generate errors possibly applicable for a given set of specifiers. 6538 This is for ARM $7.1.2. */ 6539 6540 static void 6541 bad_specifiers (tree object, 6542 const char* type, 6543 int virtualp, 6544 int quals, 6545 int inlinep, 6546 int friendp, 6547 int raises) 6548 { 6549 if (virtualp) 6550 error ("%qD declared as a %<virtual%> %s", object, type); 6551 if (inlinep) 6552 error ("%qD declared as an %<inline%> %s", object, type); 6553 if (quals) 6554 error ("%<const%> and %<volatile%> function specifiers on " 6555 "%qD invalid in %s declaration", 6556 object, type); 6557 if (friendp) 6558 error ("%q+D declared as a friend", object); 6559 if (raises 6560 && (TREE_CODE (object) == TYPE_DECL 6561 || (!TYPE_PTRFN_P (TREE_TYPE (object)) 6562 && !TYPE_REFFN_P (TREE_TYPE (object)) 6563 && !TYPE_PTRMEMFUNC_P (TREE_TYPE (object))))) 6564 error ("%q+D declared with an exception specification", object); 6565 } 6566 6567 /* DECL is a member function or static data member and is presently 6568 being defined. Check that the definition is taking place in a 6569 valid namespace. */ 6570 6571 static void 6572 check_class_member_definition_namespace (tree decl) 6573 { 6574 /* These checks only apply to member functions and static data 6575 members. */ 6576 gcc_assert (TREE_CODE (decl) == FUNCTION_DECL 6577 || TREE_CODE (decl) == VAR_DECL); 6578 /* We check for problems with specializations in pt.c in 6579 check_specialization_namespace, where we can issue better 6580 diagnostics. */ 6581 if (processing_specialization) 6582 return; 6583 /* There are no restrictions on the placement of 6584 explicit instantiations. */ 6585 if (processing_explicit_instantiation) 6586 return; 6587 /* [class.mfct] 6588 6589 A member function definition that appears outside of the 6590 class definition shall appear in a namespace scope enclosing 6591 the class definition. 6592 6593 [class.static.data] 6594 6595 The definition for a static data member shall appear in a 6596 namespace scope enclosing the member's class definition. */ 6597 if (!is_ancestor (current_namespace, DECL_CONTEXT (decl))) 6598 permerror (input_location, "definition of %qD is not in namespace enclosing %qT", 6599 decl, DECL_CONTEXT (decl)); 6600 } 6601 6602 /* Build a PARM_DECL for the "this" parameter. TYPE is the 6603 METHOD_TYPE for a non-static member function; QUALS are the 6604 cv-qualifiers that apply to the function. */ 6605 6606 tree 6607 build_this_parm (tree type, cp_cv_quals quals) 6608 { 6609 tree this_type; 6610 tree qual_type; 6611 tree parm; 6612 cp_cv_quals this_quals; 6613 6614 this_type = TREE_VALUE (TYPE_ARG_TYPES (type)); 6615 /* The `this' parameter is implicitly `const'; it cannot be 6616 assigned to. */ 6617 this_quals = (quals & TYPE_QUAL_RESTRICT) | TYPE_QUAL_CONST; 6618 qual_type = cp_build_qualified_type (this_type, this_quals); 6619 parm = build_artificial_parm (this_identifier, qual_type); 6620 cp_apply_type_quals_to_decl (this_quals, parm); 6621 return parm; 6622 } 6623 6624 /* CTYPE is class type, or null if non-class. 6625 TYPE is type this FUNCTION_DECL should have, either FUNCTION_TYPE 6626 or METHOD_TYPE. 6627 DECLARATOR is the function's name. 6628 PARMS is a chain of PARM_DECLs for the function. 6629 VIRTUALP is truthvalue of whether the function is virtual or not. 6630 FLAGS are to be passed through to `grokclassfn'. 6631 QUALS are qualifiers indicating whether the function is `const' 6632 or `volatile'. 6633 RAISES is a list of exceptions that this function can raise. 6634 CHECK is 1 if we must find this method in CTYPE, 0 if we should 6635 not look, and -1 if we should not call `grokclassfn' at all. 6636 6637 SFK is the kind of special function (if any) for the new function. 6638 6639 Returns `NULL_TREE' if something goes wrong, after issuing 6640 applicable error messages. */ 6641 6642 static tree 6643 grokfndecl (tree ctype, 6644 tree type, 6645 tree declarator, 6646 tree parms, 6647 tree orig_declarator, 6648 int virtualp, 6649 enum overload_flags flags, 6650 cp_cv_quals quals, 6651 tree raises, 6652 int check, 6653 int friendp, 6654 int publicp, 6655 int inlinep, 6656 special_function_kind sfk, 6657 bool funcdef_flag, 6658 int template_count, 6659 tree in_namespace, 6660 tree* attrlist, 6661 location_t location) 6662 { 6663 tree decl; 6664 int staticp = ctype && TREE_CODE (type) == FUNCTION_TYPE; 6665 tree t; 6666 6667 if (raises) 6668 type = build_exception_variant (type, raises); 6669 6670 decl = build_lang_decl (FUNCTION_DECL, declarator, type); 6671 6672 /* If we have an explicit location, use it, otherwise use whatever 6673 build_lang_decl used (probably input_location). */ 6674 if (location != UNKNOWN_LOCATION) 6675 DECL_SOURCE_LOCATION (decl) = location; 6676 6677 if (TREE_CODE (type) == METHOD_TYPE) 6678 { 6679 tree parm; 6680 parm = build_this_parm (type, quals); 6681 TREE_CHAIN (parm) = parms; 6682 parms = parm; 6683 } 6684 DECL_ARGUMENTS (decl) = parms; 6685 for (t = parms; t; t = TREE_CHAIN (t)) 6686 DECL_CONTEXT (t) = decl; 6687 /* Propagate volatile out from type to decl. */ 6688 if (TYPE_VOLATILE (type)) 6689 TREE_THIS_VOLATILE (decl) = 1; 6690 6691 /* Setup decl according to sfk. */ 6692 switch (sfk) 6693 { 6694 case sfk_constructor: 6695 case sfk_copy_constructor: 6696 case sfk_move_constructor: 6697 DECL_CONSTRUCTOR_P (decl) = 1; 6698 break; 6699 case sfk_destructor: 6700 DECL_DESTRUCTOR_P (decl) = 1; 6701 break; 6702 default: 6703 break; 6704 } 6705 6706 /* If pointers to member functions use the least significant bit to 6707 indicate whether a function is virtual, ensure a pointer 6708 to this function will have that bit clear. */ 6709 if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn 6710 && TREE_CODE (type) == METHOD_TYPE 6711 && DECL_ALIGN (decl) < 2 * BITS_PER_UNIT) 6712 DECL_ALIGN (decl) = 2 * BITS_PER_UNIT; 6713 6714 if (friendp 6715 && TREE_CODE (orig_declarator) == TEMPLATE_ID_EXPR) 6716 { 6717 if (funcdef_flag) 6718 error 6719 ("defining explicit specialization %qD in friend declaration", 6720 orig_declarator); 6721 else 6722 { 6723 tree fns = TREE_OPERAND (orig_declarator, 0); 6724 tree args = TREE_OPERAND (orig_declarator, 1); 6725 6726 if (PROCESSING_REAL_TEMPLATE_DECL_P ()) 6727 { 6728 /* Something like `template <class T> friend void f<T>()'. */ 6729 error ("invalid use of template-id %qD in declaration " 6730 "of primary template", 6731 orig_declarator); 6732 return NULL_TREE; 6733 } 6734 6735 6736 /* A friend declaration of the form friend void f<>(). Record 6737 the information in the TEMPLATE_ID_EXPR. */ 6738 SET_DECL_IMPLICIT_INSTANTIATION (decl); 6739 6740 if (TREE_CODE (fns) == COMPONENT_REF) 6741 { 6742 /* Due to bison parser ickiness, we will have already looked 6743 up an operator_name or PFUNCNAME within the current class 6744 (see template_id in parse.y). If the current class contains 6745 such a name, we'll get a COMPONENT_REF here. Undo that. */ 6746 6747 gcc_assert (TREE_TYPE (TREE_OPERAND (fns, 0)) 6748 == current_class_type); 6749 fns = TREE_OPERAND (fns, 1); 6750 } 6751 gcc_assert (TREE_CODE (fns) == IDENTIFIER_NODE 6752 || TREE_CODE (fns) == OVERLOAD); 6753 DECL_TEMPLATE_INFO (decl) = build_template_info (fns, args); 6754 6755 for (t = TYPE_ARG_TYPES (TREE_TYPE (decl)); t; t = TREE_CHAIN (t)) 6756 if (TREE_PURPOSE (t) 6757 && TREE_CODE (TREE_PURPOSE (t)) == DEFAULT_ARG) 6758 { 6759 error ("default arguments are not allowed in declaration " 6760 "of friend template specialization %qD", 6761 decl); 6762 return NULL_TREE; 6763 } 6764 6765 if (inlinep) 6766 { 6767 error ("%<inline%> is not allowed in declaration of friend " 6768 "template specialization %qD", 6769 decl); 6770 return NULL_TREE; 6771 } 6772 } 6773 } 6774 6775 /* If this decl has namespace scope, set that up. */ 6776 if (in_namespace) 6777 set_decl_namespace (decl, in_namespace, friendp); 6778 else if (!ctype) 6779 DECL_CONTEXT (decl) = FROB_CONTEXT (current_namespace); 6780 6781 /* `main' and builtins have implicit 'C' linkage. */ 6782 if ((MAIN_NAME_P (declarator) 6783 || (IDENTIFIER_LENGTH (declarator) > 10 6784 && IDENTIFIER_POINTER (declarator)[0] == '_' 6785 && IDENTIFIER_POINTER (declarator)[1] == '_' 6786 && strncmp (IDENTIFIER_POINTER (declarator)+2, "builtin_", 8) == 0)) 6787 && current_lang_name == lang_name_cplusplus 6788 && ctype == NULL_TREE 6789 /* NULL_TREE means global namespace. */ 6790 && DECL_CONTEXT (decl) == NULL_TREE) 6791 SET_DECL_LANGUAGE (decl, lang_c); 6792 6793 /* Should probably propagate const out from type to decl I bet (mrs). */ 6794 if (staticp) 6795 { 6796 DECL_STATIC_FUNCTION_P (decl) = 1; 6797 DECL_CONTEXT (decl) = ctype; 6798 } 6799 6800 if (ctype) 6801 { 6802 DECL_CONTEXT (decl) = ctype; 6803 if (funcdef_flag) 6804 check_class_member_definition_namespace (decl); 6805 } 6806 6807 if (ctype == NULL_TREE && DECL_MAIN_P (decl)) 6808 { 6809 if (processing_template_decl) 6810 error ("cannot declare %<::main%> to be a template"); 6811 if (inlinep) 6812 error ("cannot declare %<::main%> to be inline"); 6813 if (!publicp) 6814 error ("cannot declare %<::main%> to be static"); 6815 inlinep = 0; 6816 publicp = 1; 6817 } 6818 6819 /* Members of anonymous types and local classes have no linkage; make 6820 them internal. If a typedef is made later, this will be changed. */ 6821 if (ctype && (TYPE_ANONYMOUS_P (ctype) 6822 || decl_function_context (TYPE_MAIN_DECL (ctype)))) 6823 publicp = 0; 6824 6825 if (publicp && cxx_dialect == cxx98) 6826 { 6827 /* [basic.link]: A name with no linkage (notably, the name of a class 6828 or enumeration declared in a local scope) shall not be used to 6829 declare an entity with linkage. 6830 6831 DR 757 relaxes this restriction for C++0x. */ 6832 t = no_linkage_check (TREE_TYPE (decl), 6833 /*relaxed_p=*/false); 6834 if (t) 6835 { 6836 if (TYPE_ANONYMOUS_P (t)) 6837 { 6838 if (DECL_EXTERN_C_P (decl)) 6839 /* Allow this; it's pretty common in C. */; 6840 else 6841 { 6842 permerror (input_location, "non-local function %q#D uses anonymous type", 6843 decl); 6844 if (DECL_ORIGINAL_TYPE (TYPE_NAME (t))) 6845 permerror (input_location, "%q+#D does not refer to the unqualified " 6846 "type, so it is not used for linkage", 6847 TYPE_NAME (t)); 6848 } 6849 } 6850 else 6851 permerror (input_location, "non-local function %q#D uses local type %qT", decl, t); 6852 } 6853 } 6854 6855 TREE_PUBLIC (decl) = publicp; 6856 if (! publicp) 6857 { 6858 DECL_INTERFACE_KNOWN (decl) = 1; 6859 DECL_NOT_REALLY_EXTERN (decl) = 1; 6860 } 6861 6862 /* If the declaration was declared inline, mark it as such. */ 6863 if (inlinep) 6864 DECL_DECLARED_INLINE_P (decl) = 1; 6865 6866 DECL_EXTERNAL (decl) = 1; 6867 if (quals && TREE_CODE (type) == FUNCTION_TYPE) 6868 { 6869 error (ctype 6870 ? G_("static member function %qD cannot have cv-qualifier") 6871 : G_("non-member function %qD cannot have cv-qualifier"), 6872 decl); 6873 quals = TYPE_UNQUALIFIED; 6874 } 6875 6876 if (IDENTIFIER_OPNAME_P (DECL_NAME (decl)) 6877 && !grok_op_properties (decl, /*complain=*/true)) 6878 return NULL_TREE; 6879 6880 if (funcdef_flag) 6881 /* Make the init_value nonzero so pushdecl knows this is not 6882 tentative. error_mark_node is replaced later with the BLOCK. */ 6883 DECL_INITIAL (decl) = error_mark_node; 6884 6885 if (TYPE_NOTHROW_P (type) || nothrow_libfn_p (decl)) 6886 TREE_NOTHROW (decl) = 1; 6887 6888 /* Caller will do the rest of this. */ 6889 if (check < 0) 6890 return decl; 6891 6892 if (ctype != NULL_TREE) 6893 grokclassfn (ctype, decl, flags); 6894 6895 decl = check_explicit_specialization (orig_declarator, decl, 6896 template_count, 6897 2 * funcdef_flag + 6898 4 * (friendp != 0)); 6899 if (decl == error_mark_node) 6900 return NULL_TREE; 6901 6902 if (attrlist) 6903 { 6904 cplus_decl_attributes (&decl, *attrlist, 0); 6905 *attrlist = NULL_TREE; 6906 } 6907 6908 /* Check main's type after attributes have been applied. */ 6909 if (ctype == NULL_TREE && DECL_MAIN_P (decl)) 6910 { 6911 if (!same_type_p (TREE_TYPE (TREE_TYPE (decl)), 6912 integer_type_node)) 6913 { 6914 tree oldtypeargs = TYPE_ARG_TYPES (TREE_TYPE (decl)); 6915 tree newtype; 6916 error ("%<::main%> must return %<int%>"); 6917 newtype = build_function_type (integer_type_node, oldtypeargs); 6918 TREE_TYPE (decl) = newtype; 6919 } 6920 if (warn_main) 6921 check_main_parameter_types (decl); 6922 } 6923 6924 if (ctype != NULL_TREE 6925 && (! TYPE_FOR_JAVA (ctype) || check_java_method (decl)) 6926 && check) 6927 { 6928 tree old_decl = check_classfn (ctype, decl, 6929 (processing_template_decl 6930 > template_class_depth (ctype)) 6931 ? current_template_parms 6932 : NULL_TREE); 6933 6934 if (old_decl == error_mark_node) 6935 return NULL_TREE; 6936 6937 if (old_decl) 6938 { 6939 tree ok; 6940 tree pushed_scope; 6941 6942 if (TREE_CODE (old_decl) == TEMPLATE_DECL) 6943 /* Because grokfndecl is always supposed to return a 6944 FUNCTION_DECL, we pull out the DECL_TEMPLATE_RESULT 6945 here. We depend on our callers to figure out that its 6946 really a template that's being returned. */ 6947 old_decl = DECL_TEMPLATE_RESULT (old_decl); 6948 6949 if (DECL_STATIC_FUNCTION_P (old_decl) 6950 && TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE) 6951 /* Remove the `this' parm added by grokclassfn. 6952 XXX Isn't this done in start_function, too? */ 6953 revert_static_member_fn (decl); 6954 if (DECL_ARTIFICIAL (old_decl)) 6955 { 6956 error ("definition of implicitly-declared %qD", old_decl); 6957 return NULL_TREE; 6958 } 6959 6960 /* Since we've smashed OLD_DECL to its 6961 DECL_TEMPLATE_RESULT, we must do the same to DECL. */ 6962 if (TREE_CODE (decl) == TEMPLATE_DECL) 6963 decl = DECL_TEMPLATE_RESULT (decl); 6964 6965 /* Attempt to merge the declarations. This can fail, in 6966 the case of some invalid specialization declarations. */ 6967 pushed_scope = push_scope (ctype); 6968 ok = duplicate_decls (decl, old_decl, friendp); 6969 if (pushed_scope) 6970 pop_scope (pushed_scope); 6971 if (!ok) 6972 { 6973 error ("no %q#D member function declared in class %qT", 6974 decl, ctype); 6975 return NULL_TREE; 6976 } 6977 return old_decl; 6978 } 6979 } 6980 6981 if (DECL_CONSTRUCTOR_P (decl) && !grok_ctor_properties (ctype, decl)) 6982 return NULL_TREE; 6983 6984 if (ctype == NULL_TREE || check) 6985 return decl; 6986 6987 if (virtualp) 6988 DECL_VIRTUAL_P (decl) = 1; 6989 6990 return decl; 6991 } 6992 6993 /* DECL is a VAR_DECL for a static data member. Set flags to reflect 6994 the linkage that DECL will receive in the object file. */ 6995 6996 static void 6997 set_linkage_for_static_data_member (tree decl) 6998 { 6999 /* A static data member always has static storage duration and 7000 external linkage. Note that static data members are forbidden in 7001 local classes -- the only situation in which a class has 7002 non-external linkage. */ 7003 TREE_PUBLIC (decl) = 1; 7004 TREE_STATIC (decl) = 1; 7005 /* For non-template classes, static data members are always put 7006 out in exactly those files where they are defined, just as 7007 with ordinary namespace-scope variables. */ 7008 if (!processing_template_decl) 7009 DECL_INTERFACE_KNOWN (decl) = 1; 7010 } 7011 7012 /* Create a VAR_DECL named NAME with the indicated TYPE. 7013 7014 If SCOPE is non-NULL, it is the class type or namespace containing 7015 the variable. If SCOPE is NULL, the variable should is created in 7016 the innermost enclosings scope. */ 7017 7018 static tree 7019 grokvardecl (tree type, 7020 tree name, 7021 const cp_decl_specifier_seq *declspecs, 7022 int initialized, 7023 int constp, 7024 tree scope) 7025 { 7026 tree decl; 7027 tree explicit_scope; 7028 7029 gcc_assert (!name || TREE_CODE (name) == IDENTIFIER_NODE); 7030 7031 /* Compute the scope in which to place the variable, but remember 7032 whether or not that scope was explicitly specified by the user. */ 7033 explicit_scope = scope; 7034 if (!scope) 7035 { 7036 /* An explicit "extern" specifier indicates a namespace-scope 7037 variable. */ 7038 if (declspecs->storage_class == sc_extern) 7039 scope = current_namespace; 7040 else if (!at_function_scope_p ()) 7041 scope = current_scope (); 7042 } 7043 7044 if (scope 7045 && (/* If the variable is a namespace-scope variable declared in a 7046 template, we need DECL_LANG_SPECIFIC. */ 7047 (TREE_CODE (scope) == NAMESPACE_DECL && processing_template_decl) 7048 /* Similarly for namespace-scope variables with language linkage 7049 other than C++. */ 7050 || (TREE_CODE (scope) == NAMESPACE_DECL 7051 && current_lang_name != lang_name_cplusplus) 7052 /* Similarly for static data members. */ 7053 || TYPE_P (scope))) 7054 decl = build_lang_decl (VAR_DECL, name, type); 7055 else 7056 decl = build_decl (input_location, VAR_DECL, name, type); 7057 7058 if (explicit_scope && TREE_CODE (explicit_scope) == NAMESPACE_DECL) 7059 set_decl_namespace (decl, explicit_scope, 0); 7060 else 7061 DECL_CONTEXT (decl) = FROB_CONTEXT (scope); 7062 7063 if (declspecs->storage_class == sc_extern) 7064 { 7065 DECL_THIS_EXTERN (decl) = 1; 7066 DECL_EXTERNAL (decl) = !initialized; 7067 } 7068 7069 if (DECL_CLASS_SCOPE_P (decl)) 7070 { 7071 set_linkage_for_static_data_member (decl); 7072 /* This function is only called with out-of-class definitions. */ 7073 DECL_EXTERNAL (decl) = 0; 7074 check_class_member_definition_namespace (decl); 7075 } 7076 /* At top level, either `static' or no s.c. makes a definition 7077 (perhaps tentative), and absence of `static' makes it public. */ 7078 else if (toplevel_bindings_p ()) 7079 { 7080 TREE_PUBLIC (decl) = (declspecs->storage_class != sc_static 7081 && (DECL_THIS_EXTERN (decl) || ! constp)); 7082 TREE_STATIC (decl) = ! DECL_EXTERNAL (decl); 7083 } 7084 /* Not at top level, only `static' makes a static definition. */ 7085 else 7086 { 7087 TREE_STATIC (decl) = declspecs->storage_class == sc_static; 7088 TREE_PUBLIC (decl) = DECL_EXTERNAL (decl); 7089 } 7090 7091 if (declspecs->specs[(int)ds_thread]) 7092 DECL_TLS_MODEL (decl) = decl_default_tls_model (decl); 7093 7094 /* If the type of the decl has no linkage, make sure that we'll 7095 notice that in mark_used. */ 7096 if (cxx_dialect > cxx98 7097 && decl_linkage (decl) != lk_none 7098 && DECL_LANG_SPECIFIC (decl) == NULL 7099 && !DECL_EXTERN_C_P (decl) 7100 && no_linkage_check (TREE_TYPE (decl), /*relaxed_p=*/false)) 7101 retrofit_lang_decl (decl); 7102 7103 if (TREE_PUBLIC (decl)) 7104 { 7105 /* [basic.link]: A name with no linkage (notably, the name of a class 7106 or enumeration declared in a local scope) shall not be used to 7107 declare an entity with linkage. 7108 7109 DR 757 relaxes this restriction for C++0x. */ 7110 tree t = (cxx_dialect > cxx98 ? NULL_TREE 7111 : no_linkage_check (TREE_TYPE (decl), /*relaxed_p=*/false)); 7112 if (t) 7113 { 7114 if (TYPE_ANONYMOUS_P (t)) 7115 { 7116 if (DECL_EXTERN_C_P (decl)) 7117 /* Allow this; it's pretty common in C. */ 7118 ; 7119 else 7120 { 7121 /* DRs 132, 319 and 389 seem to indicate types with 7122 no linkage can only be used to declare extern "C" 7123 entities. Since it's not always an error in the 7124 ISO C++ 90 Standard, we only issue a warning. */ 7125 warning (0, "non-local variable %q#D uses anonymous type", 7126 decl); 7127 if (DECL_ORIGINAL_TYPE (TYPE_NAME (t))) 7128 warning (0, "%q+#D does not refer to the unqualified " 7129 "type, so it is not used for linkage", 7130 TYPE_NAME (t)); 7131 } 7132 } 7133 else 7134 warning (0, "non-local variable %q#D uses local type %qT", decl, t); 7135 } 7136 } 7137 else 7138 DECL_INTERFACE_KNOWN (decl) = 1; 7139 7140 return decl; 7141 } 7142 7143 /* Create and return a canonical pointer to member function type, for 7144 TYPE, which is a POINTER_TYPE to a METHOD_TYPE. */ 7145 7146 tree 7147 build_ptrmemfunc_type (tree type) 7148 { 7149 tree field, fields; 7150 tree t; 7151 tree unqualified_variant = NULL_TREE; 7152 7153 if (type == error_mark_node) 7154 return type; 7155 7156 /* If a canonical type already exists for this type, use it. We use 7157 this method instead of type_hash_canon, because it only does a 7158 simple equality check on the list of field members. */ 7159 7160 if ((t = TYPE_GET_PTRMEMFUNC_TYPE (type))) 7161 return t; 7162 7163 /* Make sure that we always have the unqualified pointer-to-member 7164 type first. */ 7165 if (cp_type_quals (type) != TYPE_UNQUALIFIED) 7166 unqualified_variant 7167 = build_ptrmemfunc_type (TYPE_MAIN_VARIANT (type)); 7168 7169 t = make_class_type (RECORD_TYPE); 7170 xref_basetypes (t, NULL_TREE); 7171 7172 /* Let the front end know this is a pointer to member function... */ 7173 TYPE_PTRMEMFUNC_FLAG (t) = 1; 7174 /* ... and not really a class type. */ 7175 SET_CLASS_TYPE_P (t, 0); 7176 7177 field = build_decl (input_location, FIELD_DECL, pfn_identifier, type); 7178 fields = field; 7179 7180 field = build_decl (input_location, FIELD_DECL, delta_identifier, 7181 delta_type_node); 7182 TREE_CHAIN (field) = fields; 7183 fields = field; 7184 7185 finish_builtin_struct (t, "__ptrmemfunc_type", fields, ptr_type_node); 7186 7187 /* Zap out the name so that the back end will give us the debugging 7188 information for this anonymous RECORD_TYPE. */ 7189 TYPE_NAME (t) = NULL_TREE; 7190 7191 /* If this is not the unqualified form of this pointer-to-member 7192 type, set the TYPE_MAIN_VARIANT for this type to be the 7193 unqualified type. Since they are actually RECORD_TYPEs that are 7194 not variants of each other, we must do this manually. 7195 As we just built a new type there is no need to do yet another copy. */ 7196 if (cp_type_quals (type) != TYPE_UNQUALIFIED) 7197 { 7198 int type_quals = cp_type_quals (type); 7199 TYPE_READONLY (t) = (type_quals & TYPE_QUAL_CONST) != 0; 7200 TYPE_VOLATILE (t) = (type_quals & TYPE_QUAL_VOLATILE) != 0; 7201 TYPE_RESTRICT (t) = (type_quals & TYPE_QUAL_RESTRICT) != 0; 7202 TYPE_MAIN_VARIANT (t) = unqualified_variant; 7203 TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (unqualified_variant); 7204 TYPE_NEXT_VARIANT (unqualified_variant) = t; 7205 TREE_TYPE (TYPE_BINFO (t)) = t; 7206 } 7207 7208 /* Cache this pointer-to-member type so that we can find it again 7209 later. */ 7210 TYPE_SET_PTRMEMFUNC_TYPE (type, t); 7211 7212 if (TYPE_STRUCTURAL_EQUALITY_P (type)) 7213 SET_TYPE_STRUCTURAL_EQUALITY (t); 7214 else if (TYPE_CANONICAL (type) != type) 7215 TYPE_CANONICAL (t) = build_ptrmemfunc_type (TYPE_CANONICAL (type)); 7216 7217 return t; 7218 } 7219 7220 /* Create and return a pointer to data member type. */ 7221 7222 tree 7223 build_ptrmem_type (tree class_type, tree member_type) 7224 { 7225 if (TREE_CODE (member_type) == METHOD_TYPE) 7226 { 7227 tree arg_types = TYPE_ARG_TYPES (member_type); 7228 cp_cv_quals quals = cp_type_quals (TREE_TYPE (TREE_VALUE (arg_types))); 7229 member_type = build_memfn_type (member_type, class_type, quals); 7230 return build_ptrmemfunc_type (build_pointer_type (member_type)); 7231 } 7232 else 7233 { 7234 gcc_assert (TREE_CODE (member_type) != FUNCTION_TYPE); 7235 return build_offset_type (class_type, member_type); 7236 } 7237 } 7238 7239 /* DECL is a VAR_DECL defined in-class, whose TYPE is also given. 7240 Check to see that the definition is valid. Issue appropriate error 7241 messages. Return 1 if the definition is particularly bad, or 0 7242 otherwise. */ 7243 7244 int 7245 check_static_variable_definition (tree decl, tree type) 7246 { 7247 /* Motion 10 at San Diego: If a static const integral data member is 7248 initialized with an integral constant expression, the initializer 7249 may appear either in the declaration (within the class), or in 7250 the definition, but not both. If it appears in the class, the 7251 member is a member constant. The file-scope definition is always 7252 required. */ 7253 if (!ARITHMETIC_TYPE_P (type) && TREE_CODE (type) != ENUMERAL_TYPE) 7254 { 7255 error ("invalid in-class initialization of static data member " 7256 "of non-integral type %qT", 7257 type); 7258 /* If we just return the declaration, crashes will sometimes 7259 occur. We therefore return void_type_node, as if this were a 7260 friend declaration, to cause callers to completely ignore 7261 this declaration. */ 7262 return 1; 7263 } 7264 else if (!CP_TYPE_CONST_P (type)) 7265 error ("ISO C++ forbids in-class initialization of non-const " 7266 "static member %qD", 7267 decl); 7268 else if (!INTEGRAL_OR_ENUMERATION_TYPE_P (type)) 7269 pedwarn (input_location, OPT_pedantic, "ISO C++ forbids initialization of member constant " 7270 "%qD of non-integral type %qT", decl, type); 7271 7272 return 0; 7273 } 7274 7275 /* Given the SIZE (i.e., number of elements) in an array, compute an 7276 appropriate index type for the array. If non-NULL, NAME is the 7277 name of the thing being declared. */ 7278 7279 tree 7280 compute_array_index_type (tree name, tree size) 7281 { 7282 tree type; 7283 tree itype; 7284 tree abi_1_itype = NULL_TREE; 7285 7286 if (error_operand_p (size)) 7287 return error_mark_node; 7288 7289 type = TREE_TYPE (size); 7290 /* The array bound must be an integer type. */ 7291 if (!dependent_type_p (type) && !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) 7292 { 7293 if (name) 7294 error ("size of array %qD has non-integral type %qT", name, type); 7295 else 7296 error ("size of array has non-integral type %qT", type); 7297 size = integer_one_node; 7298 type = TREE_TYPE (size); 7299 } 7300 7301 /* We can only call value_dependent_expression_p on integral constant 7302 expressions; the parser adds a dummy NOP_EXPR with TREE_SIDE_EFFECTS 7303 set if this isn't one. */ 7304 if (processing_template_decl 7305 && (TREE_SIDE_EFFECTS (size) || value_dependent_expression_p (size))) 7306 { 7307 /* We cannot do any checking for a SIZE that isn't known to be 7308 constant. Just build the index type and mark that it requires 7309 structural equality checks. */ 7310 itype = build_index_type (build_min (MINUS_EXPR, sizetype, 7311 size, integer_one_node)); 7312 TYPE_DEPENDENT_P (itype) = 1; 7313 TYPE_DEPENDENT_P_VALID (itype) = 1; 7314 SET_TYPE_STRUCTURAL_EQUALITY (itype); 7315 return itype; 7316 } 7317 7318 if (!abi_version_at_least (2) && processing_template_decl) 7319 /* For abi-1, we handled all instances in templates the same way, 7320 even when they were non-dependent. This affects the manglings 7321 produced. So, we do the normal checking for non-dependent 7322 sizes, but at the end we'll return the same type that abi-1 7323 would have, but with TYPE_CANONICAL set to the "right" 7324 value that the current ABI would provide. */ 7325 abi_1_itype = build_index_type (build_min (MINUS_EXPR, sizetype, 7326 size, integer_one_node)); 7327 7328 /* The size might be the result of a cast. */ 7329 STRIP_TYPE_NOPS (size); 7330 7331 /* It might be a const variable or enumeration constant. */ 7332 size = integral_constant_value (size); 7333 7334 /* Normally, the array-bound will be a constant. */ 7335 if (TREE_CODE (size) == INTEGER_CST) 7336 { 7337 /* Check to see if the array bound overflowed. Make that an 7338 error, no matter how generous we're being. */ 7339 constant_expression_error (size); 7340 7341 /* An array must have a positive number of elements. */ 7342 if (INT_CST_LT (size, integer_zero_node)) 7343 { 7344 if (name) 7345 error ("size of array %qD is negative", name); 7346 else 7347 error ("size of array is negative"); 7348 size = integer_one_node; 7349 } 7350 /* As an extension we allow zero-sized arrays. We always allow 7351 them in system headers because glibc uses them. */ 7352 else if (integer_zerop (size) && !in_system_header) 7353 { 7354 if (name) 7355 pedwarn (input_location, OPT_pedantic, "ISO C++ forbids zero-size array %qD", name); 7356 else 7357 pedwarn (input_location, OPT_pedantic, "ISO C++ forbids zero-size array"); 7358 } 7359 } 7360 else if (TREE_CONSTANT (size)) 7361 { 7362 /* `(int) &fn' is not a valid array bound. */ 7363 if (name) 7364 error ("size of array %qD is not an integral constant-expression", 7365 name); 7366 else 7367 error ("size of array is not an integral constant-expression"); 7368 size = integer_one_node; 7369 } 7370 else if (pedantic && warn_vla != 0) 7371 { 7372 if (name) 7373 pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name); 7374 else 7375 pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array"); 7376 } 7377 else if (warn_vla > 0) 7378 { 7379 if (name) 7380 warning (OPT_Wvla, 7381 "variable length array %qD is used", name); 7382 else 7383 warning (OPT_Wvla, 7384 "variable length array is used"); 7385 } 7386 7387 if (processing_template_decl && !TREE_CONSTANT (size)) 7388 /* A variable sized array. */ 7389 itype = build_min (MINUS_EXPR, sizetype, size, integer_one_node); 7390 else 7391 { 7392 HOST_WIDE_INT saved_processing_template_decl; 7393 7394 /* Compute the index of the largest element in the array. It is 7395 one less than the number of elements in the array. We save 7396 and restore PROCESSING_TEMPLATE_DECL so that computations in 7397 cp_build_binary_op will be appropriately folded. */ 7398 saved_processing_template_decl = processing_template_decl; 7399 processing_template_decl = 0; 7400 itype = cp_build_binary_op (input_location, 7401 MINUS_EXPR, 7402 cp_convert (ssizetype, size), 7403 cp_convert (ssizetype, integer_one_node), 7404 tf_warning_or_error); 7405 itype = fold (itype); 7406 processing_template_decl = saved_processing_template_decl; 7407 7408 if (!TREE_CONSTANT (itype)) 7409 /* A variable sized array. */ 7410 itype = variable_size (itype); 7411 /* Make sure that there was no overflow when creating to a signed 7412 index type. (For example, on a 32-bit machine, an array with 7413 size 2^32 - 1 is too big.) */ 7414 else if (TREE_CODE (itype) == INTEGER_CST 7415 && TREE_OVERFLOW (itype)) 7416 { 7417 error ("overflow in array dimension"); 7418 TREE_OVERFLOW (itype) = 0; 7419 } 7420 } 7421 7422 /* Create and return the appropriate index type. */ 7423 if (abi_1_itype) 7424 { 7425 tree t = build_index_type (itype); 7426 TYPE_CANONICAL (abi_1_itype) = TYPE_CANONICAL (t); 7427 return abi_1_itype; 7428 } 7429 else 7430 return build_index_type (itype); 7431 } 7432 7433 /* Returns the scope (if any) in which the entity declared by 7434 DECLARATOR will be located. If the entity was declared with an 7435 unqualified name, NULL_TREE is returned. */ 7436 7437 tree 7438 get_scope_of_declarator (const cp_declarator *declarator) 7439 { 7440 while (declarator && declarator->kind != cdk_id) 7441 declarator = declarator->declarator; 7442 7443 /* If the declarator-id is a SCOPE_REF, the scope in which the 7444 declaration occurs is the first operand. */ 7445 if (declarator 7446 && declarator->u.id.qualifying_scope) 7447 return declarator->u.id.qualifying_scope; 7448 7449 /* Otherwise, the declarator is not a qualified name; the entity will 7450 be declared in the current scope. */ 7451 return NULL_TREE; 7452 } 7453 7454 /* Returns an ARRAY_TYPE for an array with SIZE elements of the 7455 indicated TYPE. If non-NULL, NAME is the NAME of the declaration 7456 with this type. */ 7457 7458 static tree 7459 create_array_type_for_decl (tree name, tree type, tree size) 7460 { 7461 tree itype = NULL_TREE; 7462 7463 /* If things have already gone awry, bail now. */ 7464 if (type == error_mark_node || size == error_mark_node) 7465 return error_mark_node; 7466 7467 /* If there are some types which cannot be array elements, 7468 issue an error-message and return. */ 7469 switch (TREE_CODE (type)) 7470 { 7471 case VOID_TYPE: 7472 if (name) 7473 error ("declaration of %qD as array of void", name); 7474 else 7475 error ("creating array of void"); 7476 return error_mark_node; 7477 7478 case FUNCTION_TYPE: 7479 if (name) 7480 error ("declaration of %qD as array of functions", name); 7481 else 7482 error ("creating array of functions"); 7483 return error_mark_node; 7484 7485 case REFERENCE_TYPE: 7486 if (name) 7487 error ("declaration of %qD as array of references", name); 7488 else 7489 error ("creating array of references"); 7490 return error_mark_node; 7491 7492 case METHOD_TYPE: 7493 if (name) 7494 error ("declaration of %qD as array of function members", name); 7495 else 7496 error ("creating array of function members"); 7497 return error_mark_node; 7498 7499 default: 7500 break; 7501 } 7502 7503 /* [dcl.array] 7504 7505 The constant expressions that specify the bounds of the arrays 7506 can be omitted only for the first member of the sequence. */ 7507 if (TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type)) 7508 { 7509 if (name) 7510 error ("declaration of %qD as multidimensional array must " 7511 "have bounds for all dimensions except the first", 7512 name); 7513 else 7514 error ("multidimensional array must have bounds for all " 7515 "dimensions except the first"); 7516 7517 return error_mark_node; 7518 } 7519 7520 /* Figure out the index type for the array. */ 7521 if (size) 7522 itype = compute_array_index_type (name, size); 7523 7524 /* [dcl.array] 7525 T is called the array element type; this type shall not be [...] an 7526 abstract class type. */ 7527 abstract_virtuals_error (name, type); 7528 7529 return build_cplus_array_type (type, itype); 7530 } 7531 7532 /* Check that it's OK to declare a function with the indicated TYPE. 7533 SFK indicates the kind of special function (if any) that this 7534 function is. OPTYPE is the type given in a conversion operator 7535 declaration, or the class type for a constructor/destructor. 7536 Returns the actual return type of the function; that 7537 may be different than TYPE if an error occurs, or for certain 7538 special functions. */ 7539 7540 static tree 7541 check_special_function_return_type (special_function_kind sfk, 7542 tree type, 7543 tree optype) 7544 { 7545 switch (sfk) 7546 { 7547 case sfk_constructor: 7548 if (type) 7549 error ("return type specification for constructor invalid"); 7550 7551 if (targetm.cxx.cdtor_returns_this () && !TYPE_FOR_JAVA (optype)) 7552 type = build_pointer_type (optype); 7553 else 7554 type = void_type_node; 7555 break; 7556 7557 case sfk_destructor: 7558 if (type) 7559 error ("return type specification for destructor invalid"); 7560 /* We can't use the proper return type here because we run into 7561 problems with ambiguous bases and covariant returns. 7562 Java classes are left unchanged because (void *) isn't a valid 7563 Java type, and we don't want to change the Java ABI. */ 7564 if (targetm.cxx.cdtor_returns_this () && !TYPE_FOR_JAVA (optype)) 7565 type = build_pointer_type (void_type_node); 7566 else 7567 type = void_type_node; 7568 break; 7569 7570 case sfk_conversion: 7571 if (type) 7572 error ("return type specified for %<operator %T%>", optype); 7573 type = optype; 7574 break; 7575 7576 default: 7577 gcc_unreachable (); 7578 } 7579 7580 return type; 7581 } 7582 7583 /* A variable or data member (whose unqualified name is IDENTIFIER) 7584 has been declared with the indicated TYPE. If the TYPE is not 7585 acceptable, issue an error message and return a type to use for 7586 error-recovery purposes. */ 7587 7588 tree 7589 check_var_type (tree identifier, tree type) 7590 { 7591 if (VOID_TYPE_P (type)) 7592 { 7593 if (!identifier) 7594 error ("unnamed variable or field declared void"); 7595 else if (TREE_CODE (identifier) == IDENTIFIER_NODE) 7596 { 7597 gcc_assert (!IDENTIFIER_OPNAME_P (identifier)); 7598 error ("variable or field %qE declared void", identifier); 7599 } 7600 else 7601 error ("variable or field declared void"); 7602 type = error_mark_node; 7603 } 7604 7605 return type; 7606 } 7607 7608 /* Given declspecs and a declarator (abstract or otherwise), determine 7609 the name and type of the object declared and construct a DECL node 7610 for it. 7611 7612 DECLSPECS points to the representation of declaration-specifier 7613 sequence that precedes declarator. 7614 7615 DECL_CONTEXT says which syntactic context this declaration is in: 7616 NORMAL for most contexts. Make a VAR_DECL or FUNCTION_DECL or TYPE_DECL. 7617 FUNCDEF for a function definition. Like NORMAL but a few different 7618 error messages in each case. Return value may be zero meaning 7619 this definition is too screwy to try to parse. 7620 MEMFUNCDEF for a function definition. Like FUNCDEF but prepares to 7621 handle member functions (which have FIELD context). 7622 Return value may be zero meaning this definition is too screwy to 7623 try to parse. 7624 PARM for a parameter declaration (either within a function prototype 7625 or before a function body). Make a PARM_DECL, or return void_type_node. 7626 TPARM for a template parameter declaration. 7627 CATCHPARM for a parameter declaration before a catch clause. 7628 TYPENAME if for a typename (in a cast or sizeof). 7629 Don't make a DECL node; just return the ..._TYPE node. 7630 FIELD for a struct or union field; make a FIELD_DECL. 7631 BITFIELD for a field with specified width. 7632 7633 INITIALIZED is as for start_decl. 7634 7635 ATTRLIST is a pointer to the list of attributes, which may be NULL 7636 if there are none; *ATTRLIST may be modified if attributes from inside 7637 the declarator should be applied to the declaration. 7638 7639 When this function is called, scoping variables (such as 7640 CURRENT_CLASS_TYPE) should reflect the scope in which the 7641 declaration occurs, not the scope in which the new declaration will 7642 be placed. For example, on: 7643 7644 void S::f() { ... } 7645 7646 when grokdeclarator is called for `S::f', the CURRENT_CLASS_TYPE 7647 should not be `S'. 7648 7649 Returns a DECL (if a declarator is present), a TYPE (if there is no 7650 declarator, in cases like "struct S;"), or the ERROR_MARK_NODE if an 7651 error occurs. */ 7652 7653 tree 7654 grokdeclarator (const cp_declarator *declarator, 7655 const cp_decl_specifier_seq *declspecs, 7656 enum decl_context decl_context, 7657 int initialized, 7658 tree* attrlist) 7659 { 7660 tree type = NULL_TREE; 7661 int longlong = 0; 7662 int virtualp, explicitp, friendp, inlinep, staticp; 7663 int explicit_int = 0; 7664 int explicit_char = 0; 7665 int defaulted_int = 0; 7666 tree dependent_name = NULL_TREE; 7667 7668 tree typedef_decl = NULL_TREE; 7669 const char *name = NULL; 7670 tree typedef_type = NULL_TREE; 7671 /* True if this declarator is a function definition. */ 7672 bool funcdef_flag = false; 7673 cp_declarator_kind innermost_code = cdk_error; 7674 int bitfield = 0; 7675 #if 0 7676 /* See the code below that used this. */ 7677 tree decl_attr = NULL_TREE; 7678 #endif 7679 7680 /* Keep track of what sort of function is being processed 7681 so that we can warn about default return values, or explicit 7682 return values which do not match prescribed defaults. */ 7683 special_function_kind sfk = sfk_none; 7684 7685 tree dname = NULL_TREE; 7686 tree ctor_return_type = NULL_TREE; 7687 enum overload_flags flags = NO_SPECIAL; 7688 /* cv-qualifiers that apply to the declarator, for a declaration of 7689 a member function. */ 7690 cp_cv_quals memfn_quals = TYPE_UNQUALIFIED; 7691 /* cv-qualifiers that apply to the type specified by the DECLSPECS. */ 7692 int type_quals; 7693 tree raises = NULL_TREE; 7694 int template_count = 0; 7695 tree returned_attrs = NULL_TREE; 7696 tree parms = NULL_TREE; 7697 const cp_declarator *id_declarator; 7698 /* The unqualified name of the declarator; either an 7699 IDENTIFIER_NODE, BIT_NOT_EXPR, or TEMPLATE_ID_EXPR. */ 7700 tree unqualified_id; 7701 /* The class type, if any, in which this entity is located, 7702 or NULL_TREE if none. Note that this value may be different from 7703 the current class type; for example if an attempt is made to declare 7704 "A::f" inside "B", this value will be "A". */ 7705 tree ctype = current_class_type; 7706 /* The NAMESPACE_DECL for the namespace in which this entity is 7707 located. If an unqualified name is used to declare the entity, 7708 this value will be NULL_TREE, even if the entity is located at 7709 namespace scope. */ 7710 tree in_namespace = NULL_TREE; 7711 cp_storage_class storage_class; 7712 bool unsigned_p, signed_p, short_p, long_p, thread_p; 7713 bool type_was_error_mark_node = false; 7714 bool parameter_pack_p = declarator? declarator->parameter_pack_p : false; 7715 bool template_type_arg = false; 7716 bool template_parm_flag = false; 7717 bool constexpr_p = declspecs->specs[(int) ds_constexpr]; 7718 const char *errmsg; 7719 7720 signed_p = declspecs->specs[(int)ds_signed]; 7721 unsigned_p = declspecs->specs[(int)ds_unsigned]; 7722 short_p = declspecs->specs[(int)ds_short]; 7723 long_p = declspecs->specs[(int)ds_long]; 7724 longlong = declspecs->specs[(int)ds_long] >= 2; 7725 thread_p = declspecs->specs[(int)ds_thread]; 7726 7727 if (decl_context == FUNCDEF) 7728 funcdef_flag = true, decl_context = NORMAL; 7729 else if (decl_context == MEMFUNCDEF) 7730 funcdef_flag = true, decl_context = FIELD; 7731 else if (decl_context == BITFIELD) 7732 bitfield = 1, decl_context = FIELD; 7733 else if (decl_context == TEMPLATE_TYPE_ARG) 7734 template_type_arg = true, decl_context = TYPENAME; 7735 else if (decl_context == TPARM) 7736 template_parm_flag = true, decl_context = PARM; 7737 7738 if (initialized > 1) 7739 funcdef_flag = true; 7740 7741 /* Look inside a declarator for the name being declared 7742 and get it as a string, for an error message. */ 7743 for (id_declarator = declarator; 7744 id_declarator; 7745 id_declarator = id_declarator->declarator) 7746 { 7747 if (id_declarator->kind != cdk_id) 7748 innermost_code = id_declarator->kind; 7749 7750 switch (id_declarator->kind) 7751 { 7752 case cdk_function: 7753 if (id_declarator->declarator 7754 && id_declarator->declarator->kind == cdk_id) 7755 { 7756 sfk = id_declarator->declarator->u.id.sfk; 7757 if (sfk == sfk_destructor) 7758 flags = DTOR_FLAG; 7759 } 7760 break; 7761 7762 case cdk_id: 7763 { 7764 tree qualifying_scope = id_declarator->u.id.qualifying_scope; 7765 tree decl = id_declarator->u.id.unqualified_name; 7766 if (!decl) 7767 break; 7768 if (qualifying_scope) 7769 { 7770 if (at_function_scope_p ()) 7771 { 7772 /* [dcl.meaning] 7773 7774 A declarator-id shall not be qualified except 7775 for ... 7776 7777 None of the cases are permitted in block 7778 scope. */ 7779 if (qualifying_scope == global_namespace) 7780 error ("invalid use of qualified-name %<::%D%>", 7781 decl); 7782 else if (TYPE_P (qualifying_scope)) 7783 error ("invalid use of qualified-name %<%T::%D%>", 7784 qualifying_scope, decl); 7785 else 7786 error ("invalid use of qualified-name %<%D::%D%>", 7787 qualifying_scope, decl); 7788 return error_mark_node; 7789 } 7790 else if (TYPE_P (qualifying_scope)) 7791 { 7792 ctype = qualifying_scope; 7793 if (innermost_code != cdk_function 7794 && current_class_type 7795 && !UNIQUELY_DERIVED_FROM_P (ctype, 7796 current_class_type)) 7797 { 7798 error ("type %qT is not derived from type %qT", 7799 ctype, current_class_type); 7800 return error_mark_node; 7801 } 7802 } 7803 else if (TREE_CODE (qualifying_scope) == NAMESPACE_DECL) 7804 in_namespace = qualifying_scope; 7805 } 7806 switch (TREE_CODE (decl)) 7807 { 7808 case BIT_NOT_EXPR: 7809 { 7810 tree type; 7811 7812 if (innermost_code != cdk_function) 7813 { 7814 error ("declaration of %qD as non-function", decl); 7815 return error_mark_node; 7816 } 7817 else if (!qualifying_scope 7818 && !(current_class_type && at_class_scope_p ())) 7819 { 7820 error ("declaration of %qD as non-member", decl); 7821 return error_mark_node; 7822 } 7823 7824 type = TREE_OPERAND (decl, 0); 7825 if (TYPE_P (type)) 7826 type = constructor_name (type); 7827 name = identifier_to_locale (IDENTIFIER_POINTER (type)); 7828 dname = decl; 7829 } 7830 break; 7831 7832 case TEMPLATE_ID_EXPR: 7833 { 7834 tree fns = TREE_OPERAND (decl, 0); 7835 7836 dname = fns; 7837 if (TREE_CODE (dname) != IDENTIFIER_NODE) 7838 { 7839 gcc_assert (is_overloaded_fn (dname)); 7840 dname = DECL_NAME (get_first_fn (dname)); 7841 } 7842 } 7843 /* Fall through. */ 7844 7845 case IDENTIFIER_NODE: 7846 if (TREE_CODE (decl) == IDENTIFIER_NODE) 7847 dname = decl; 7848 7849 if (C_IS_RESERVED_WORD (dname)) 7850 { 7851 error ("declarator-id missing; using reserved word %qD", 7852 dname); 7853 name = identifier_to_locale (IDENTIFIER_POINTER (dname)); 7854 } 7855 else if (!IDENTIFIER_TYPENAME_P (dname)) 7856 name = identifier_to_locale (IDENTIFIER_POINTER (dname)); 7857 else 7858 { 7859 gcc_assert (flags == NO_SPECIAL); 7860 flags = TYPENAME_FLAG; 7861 ctor_return_type = TREE_TYPE (dname); 7862 sfk = sfk_conversion; 7863 if (is_typename_at_global_scope (dname)) 7864 name = identifier_to_locale (IDENTIFIER_POINTER (dname)); 7865 else 7866 name = "<invalid operator>"; 7867 } 7868 break; 7869 7870 default: 7871 gcc_unreachable (); 7872 } 7873 break; 7874 } 7875 7876 case cdk_array: 7877 case cdk_pointer: 7878 case cdk_reference: 7879 case cdk_ptrmem: 7880 break; 7881 7882 case cdk_error: 7883 return error_mark_node; 7884 7885 default: 7886 gcc_unreachable (); 7887 } 7888 if (id_declarator->kind == cdk_id) 7889 break; 7890 } 7891 7892 /* [dcl.fct.edf] 7893 7894 The declarator in a function-definition shall have the form 7895 D1 ( parameter-declaration-clause) ... */ 7896 if (funcdef_flag && innermost_code != cdk_function) 7897 { 7898 error ("function definition does not declare parameters"); 7899 return error_mark_node; 7900 } 7901 7902 if (((dname && IDENTIFIER_OPNAME_P (dname)) || flags == TYPENAME_FLAG) 7903 && innermost_code != cdk_function 7904 && ! (ctype && !declspecs->any_specifiers_p)) 7905 { 7906 error ("declaration of %qD as non-function", dname); 7907 return error_mark_node; 7908 } 7909 7910 /* Anything declared one level down from the top level 7911 must be one of the parameters of a function 7912 (because the body is at least two levels down). */ 7913 7914 /* This heuristic cannot be applied to C++ nodes! Fixed, however, 7915 by not allowing C++ class definitions to specify their parameters 7916 with xdecls (must be spec.d in the parmlist). 7917 7918 Since we now wait to push a class scope until we are sure that 7919 we are in a legitimate method context, we must set oldcname 7920 explicitly (since current_class_name is not yet alive). 7921 7922 We also want to avoid calling this a PARM if it is in a namespace. */ 7923 7924 if (decl_context == NORMAL && !toplevel_bindings_p ()) 7925 { 7926 struct cp_binding_level *b = current_binding_level; 7927 current_binding_level = b->level_chain; 7928 if (current_binding_level != 0 && toplevel_bindings_p ()) 7929 decl_context = PARM; 7930 current_binding_level = b; 7931 } 7932 7933 if (name == NULL) 7934 name = decl_context == PARM ? "parameter" : "type name"; 7935 7936 /* If there were multiple types specified in the decl-specifier-seq, 7937 issue an error message. */ 7938 if (declspecs->multiple_types_p) 7939 { 7940 error ("two or more data types in declaration of %qs", name); 7941 return error_mark_node; 7942 } 7943 7944 if (declspecs->conflicting_specifiers_p) 7945 { 7946 error ("conflicting specifiers in declaration of %qs", name); 7947 return error_mark_node; 7948 } 7949 7950 /* Extract the basic type from the decl-specifier-seq. */ 7951 type = declspecs->type; 7952 if (type == error_mark_node) 7953 { 7954 type = NULL_TREE; 7955 type_was_error_mark_node = true; 7956 } 7957 /* If the entire declaration is itself tagged as deprecated then 7958 suppress reports of deprecated items. */ 7959 if (type && TREE_DEPRECATED (type) 7960 && deprecated_state != DEPRECATED_SUPPRESS) 7961 warn_deprecated_use (type, NULL_TREE); 7962 if (type && TREE_CODE (type) == TYPE_DECL) 7963 { 7964 typedef_decl = type; 7965 type = TREE_TYPE (typedef_decl); 7966 if (TREE_DEPRECATED (type) 7967 && DECL_ARTIFICIAL (typedef_decl) 7968 && deprecated_state != DEPRECATED_SUPPRESS) 7969 warn_deprecated_use (type, NULL_TREE); 7970 } 7971 /* No type at all: default to `int', and set DEFAULTED_INT 7972 because it was not a user-defined typedef. */ 7973 if (type == NULL_TREE && (signed_p || unsigned_p || long_p || short_p)) 7974 { 7975 /* These imply 'int'. */ 7976 type = integer_type_node; 7977 defaulted_int = 1; 7978 } 7979 /* Gather flags. */ 7980 explicit_int = declspecs->explicit_int_p; 7981 explicit_char = declspecs->explicit_char_p; 7982 7983 #if 0 7984 /* See the code below that used this. */ 7985 if (typedef_decl) 7986 decl_attr = DECL_ATTRIBUTES (typedef_decl); 7987 #endif 7988 typedef_type = type; 7989 7990 7991 if (sfk != sfk_conversion) 7992 ctor_return_type = ctype; 7993 7994 if (sfk != sfk_none) 7995 type = check_special_function_return_type (sfk, type, 7996 ctor_return_type); 7997 else if (type == NULL_TREE) 7998 { 7999 int is_main; 8000 8001 explicit_int = -1; 8002 8003 /* We handle `main' specially here, because 'main () { }' is so 8004 common. With no options, it is allowed. With -Wreturn-type, 8005 it is a warning. It is only an error with -pedantic-errors. */ 8006 is_main = (funcdef_flag 8007 && dname && MAIN_NAME_P (dname) 8008 && ctype == NULL_TREE 8009 && in_namespace == NULL_TREE 8010 && current_namespace == global_namespace); 8011 8012 if (type_was_error_mark_node) 8013 /* We've already issued an error, don't complain more. */; 8014 else if (in_system_header || flag_ms_extensions) 8015 /* Allow it, sigh. */; 8016 else if (! is_main) 8017 permerror (input_location, "ISO C++ forbids declaration of %qs with no type", name); 8018 else if (pedantic) 8019 pedwarn (input_location, OPT_pedantic, 8020 "ISO C++ forbids declaration of %qs with no type", name); 8021 else 8022 warning (OPT_Wreturn_type, 8023 "ISO C++ forbids declaration of %qs with no type", name); 8024 8025 type = integer_type_node; 8026 } 8027 8028 ctype = NULL_TREE; 8029 8030 /* Now process the modifiers that were specified 8031 and check for invalid combinations. */ 8032 8033 /* Long double is a special combination. */ 8034 if (long_p && !longlong && TYPE_MAIN_VARIANT (type) == double_type_node) 8035 { 8036 long_p = false; 8037 type = build_qualified_type (long_double_type_node, 8038 cp_type_quals (type)); 8039 } 8040 8041 /* Check all other uses of type modifiers. */ 8042 8043 if (unsigned_p || signed_p || long_p || short_p) 8044 { 8045 int ok = 0; 8046 8047 if ((signed_p || unsigned_p) && TREE_CODE (type) != INTEGER_TYPE) 8048 error ("%<signed%> or %<unsigned%> invalid for %qs", name); 8049 else if (signed_p && unsigned_p) 8050 error ("%<signed%> and %<unsigned%> specified together for %qs", name); 8051 else if (longlong && TREE_CODE (type) != INTEGER_TYPE) 8052 error ("%<long long%> invalid for %qs", name); 8053 else if (long_p && TREE_CODE (type) == REAL_TYPE) 8054 error ("%<long%> invalid for %qs", name); 8055 else if (short_p && TREE_CODE (type) == REAL_TYPE) 8056 error ("%<short%> invalid for %qs", name); 8057 else if ((long_p || short_p) && TREE_CODE (type) != INTEGER_TYPE) 8058 error ("%<long%> or %<short%> invalid for %qs", name); 8059 else if ((long_p || short_p) && explicit_char) 8060 error ("%<long%> or %<short%> specified with char for %qs", name); 8061 else if (long_p && short_p) 8062 error ("%<long%> and %<short%> specified together for %qs", name); 8063 else if (type == char16_type_node || type == char32_type_node) 8064 { 8065 if (signed_p || unsigned_p) 8066 error ("%<signed%> or %<unsigned%> invalid for %qs", name); 8067 else if (short_p || long_p) 8068 error ("%<short%> or %<long%> invalid for %qs", name); 8069 } 8070 else 8071 { 8072 ok = 1; 8073 if (!explicit_int && !defaulted_int && !explicit_char && pedantic) 8074 { 8075 pedwarn (input_location, OPT_pedantic, 8076 "long, short, signed or unsigned used invalidly for %qs", 8077 name); 8078 if (flag_pedantic_errors) 8079 ok = 0; 8080 } 8081 } 8082 8083 /* Discard the type modifiers if they are invalid. */ 8084 if (! ok) 8085 { 8086 unsigned_p = false; 8087 signed_p = false; 8088 long_p = false; 8089 short_p = false; 8090 longlong = 0; 8091 } 8092 } 8093 8094 /* Decide whether an integer type is signed or not. 8095 Optionally treat bitfields as signed by default. */ 8096 if (unsigned_p 8097 /* [class.bit] 8098 8099 It is implementation-defined whether a plain (neither 8100 explicitly signed or unsigned) char, short, int, or long 8101 bit-field is signed or unsigned. 8102 8103 Naturally, we extend this to long long as well. Note that 8104 this does not include wchar_t. */ 8105 || (bitfield && !flag_signed_bitfields 8106 && !signed_p 8107 /* A typedef for plain `int' without `signed' can be 8108 controlled just like plain `int', but a typedef for 8109 `signed int' cannot be so controlled. */ 8110 && !(typedef_decl 8111 && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl)) 8112 && TREE_CODE (type) == INTEGER_TYPE 8113 && !same_type_p (TYPE_MAIN_VARIANT (type), wchar_type_node))) 8114 { 8115 if (longlong) 8116 type = long_long_unsigned_type_node; 8117 else if (long_p) 8118 type = long_unsigned_type_node; 8119 else if (short_p) 8120 type = short_unsigned_type_node; 8121 else if (type == char_type_node) 8122 type = unsigned_char_type_node; 8123 else if (typedef_decl) 8124 type = unsigned_type_for (type); 8125 else 8126 type = unsigned_type_node; 8127 } 8128 else if (signed_p && type == char_type_node) 8129 type = signed_char_type_node; 8130 else if (longlong) 8131 type = long_long_integer_type_node; 8132 else if (long_p) 8133 type = long_integer_type_node; 8134 else if (short_p) 8135 type = short_integer_type_node; 8136 8137 if (declspecs->specs[(int)ds_complex]) 8138 { 8139 if (TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != REAL_TYPE) 8140 error ("complex invalid for %qs", name); 8141 /* If we just have "complex", it is equivalent to 8142 "complex double", but if any modifiers at all are specified it is 8143 the complex form of TYPE. E.g, "complex short" is 8144 "complex short int". */ 8145 8146 else if (defaulted_int && ! longlong 8147 && ! (long_p || short_p || signed_p || unsigned_p)) 8148 type = complex_double_type_node; 8149 else if (type == integer_type_node) 8150 type = complex_integer_type_node; 8151 else if (type == float_type_node) 8152 type = complex_float_type_node; 8153 else if (type == double_type_node) 8154 type = complex_double_type_node; 8155 else if (type == long_double_type_node) 8156 type = complex_long_double_type_node; 8157 else 8158 type = build_complex_type (type); 8159 } 8160 8161 type_quals = TYPE_UNQUALIFIED; 8162 if (declspecs->specs[(int)ds_const]) 8163 type_quals |= TYPE_QUAL_CONST; 8164 /* A `constexpr' specifier used in an object declaration declares 8165 the object as `const'. */ 8166 if (constexpr_p) 8167 { 8168 if (innermost_code == cdk_function) 8169 ; 8170 else if (declspecs->specs[(int)ds_const] != 0) 8171 error ("both %<const%> and %<constexpr%> cannot be used here"); 8172 else 8173 type_quals |= TYPE_QUAL_CONST; 8174 } 8175 if (declspecs->specs[(int)ds_volatile]) 8176 type_quals |= TYPE_QUAL_VOLATILE; 8177 if (declspecs->specs[(int)ds_restrict]) 8178 type_quals |= TYPE_QUAL_RESTRICT; 8179 if (sfk == sfk_conversion && type_quals != TYPE_UNQUALIFIED) 8180 error ("qualifiers are not allowed on declaration of %<operator %T%>", 8181 ctor_return_type); 8182 8183 if (TREE_CODE (type) == FUNCTION_TYPE 8184 && type_quals != TYPE_UNQUALIFIED) 8185 { 8186 /* This was an error in C++98 (cv-qualifiers cannot be added to 8187 a function type), but DR 295 makes the code well-formed by 8188 dropping the extra qualifiers. */ 8189 if (pedantic && cxx_dialect == cxx98) 8190 { 8191 tree bad_type = build_qualified_type (type, type_quals); 8192 pedwarn (input_location, OPT_pedantic, 8193 "ignoring %qV qualifiers added to function type %qT", 8194 bad_type, type); 8195 } 8196 type_quals = TYPE_UNQUALIFIED; 8197 } 8198 type_quals |= cp_type_quals (type); 8199 type = cp_build_qualified_type_real 8200 (type, type_quals, ((typedef_decl && !DECL_ARTIFICIAL (typedef_decl) 8201 ? tf_ignore_bad_quals : 0) | tf_warning_or_error)); 8202 /* We might have ignored or rejected some of the qualifiers. */ 8203 type_quals = cp_type_quals (type); 8204 8205 staticp = 0; 8206 inlinep = !! declspecs->specs[(int)ds_inline]; 8207 virtualp = !! declspecs->specs[(int)ds_virtual]; 8208 explicitp = !! declspecs->specs[(int)ds_explicit]; 8209 8210 storage_class = declspecs->storage_class; 8211 if (storage_class == sc_static) 8212 staticp = 1 + (decl_context == FIELD); 8213 8214 if (virtualp && staticp == 2) 8215 { 8216 error ("member %qD cannot be declared both virtual and static", dname); 8217 storage_class = sc_none; 8218 staticp = 0; 8219 } 8220 friendp = !! declspecs->specs[(int)ds_friend]; 8221 8222 if (dependent_name && !friendp) 8223 { 8224 error ("%<%T::%D%> is not a valid declarator", ctype, dependent_name); 8225 return error_mark_node; 8226 } 8227 8228 /* Issue errors about use of storage classes for parameters. */ 8229 if (decl_context == PARM) 8230 { 8231 if (declspecs->specs[(int)ds_typedef]) 8232 { 8233 error ("typedef declaration invalid in parameter declaration"); 8234 return error_mark_node; 8235 } 8236 else if (template_parm_flag && storage_class != sc_none) 8237 { 8238 error ("storage class specified for template parameter %qs", name); 8239 return error_mark_node; 8240 } 8241 else if (storage_class == sc_static 8242 || storage_class == sc_extern 8243 || thread_p) 8244 error ("storage class specifiers invalid in parameter declarations"); 8245 8246 if (type_uses_auto (type)) 8247 { 8248 error ("parameter declared %<auto%>"); 8249 type = error_mark_node; 8250 } 8251 8252 /* Function parameters cannot be constexpr. If we saw one, moan 8253 and pretend it wasn't there. */ 8254 if (constexpr_p) 8255 { 8256 error ("a parameter cannot be declared %<constexpr%>"); 8257 constexpr_p = 0; 8258 } 8259 } 8260 8261 /* Give error if `virtual' is used outside of class declaration. */ 8262 if (virtualp 8263 && (current_class_name == NULL_TREE || decl_context != FIELD)) 8264 { 8265 error ("%<virtual%> outside class declaration"); 8266 virtualp = 0; 8267 } 8268 8269 /* Static anonymous unions are dealt with here. */ 8270 if (staticp && decl_context == TYPENAME 8271 && declspecs->type 8272 && ANON_AGGR_TYPE_P (declspecs->type)) 8273 decl_context = FIELD; 8274 8275 /* Warn about storage classes that are invalid for certain 8276 kinds of declarations (parameters, typenames, etc.). */ 8277 if (thread_p 8278 && ((storage_class 8279 && storage_class != sc_extern 8280 && storage_class != sc_static) 8281 || declspecs->specs[(int)ds_typedef])) 8282 { 8283 error ("multiple storage classes in declaration of %qs", name); 8284 thread_p = false; 8285 } 8286 if (decl_context != NORMAL 8287 && ((storage_class != sc_none 8288 && storage_class != sc_mutable) 8289 || thread_p)) 8290 { 8291 if ((decl_context == PARM || decl_context == CATCHPARM) 8292 && (storage_class == sc_register 8293 || storage_class == sc_auto)) 8294 ; 8295 else if (declspecs->specs[(int)ds_typedef]) 8296 ; 8297 else if (decl_context == FIELD 8298 /* C++ allows static class elements. */ 8299 && storage_class == sc_static) 8300 /* C++ also allows inlines and signed and unsigned elements, 8301 but in those cases we don't come in here. */ 8302 ; 8303 else 8304 { 8305 if (decl_context == FIELD) 8306 error ("storage class specified for %qs", name); 8307 else 8308 { 8309 if (decl_context == PARM || decl_context == CATCHPARM) 8310 error ("storage class specified for parameter %qs", name); 8311 else 8312 error ("storage class specified for typename"); 8313 } 8314 if (storage_class == sc_register 8315 || storage_class == sc_auto 8316 || storage_class == sc_extern 8317 || thread_p) 8318 storage_class = sc_none; 8319 } 8320 } 8321 else if (storage_class == sc_extern && funcdef_flag 8322 && ! toplevel_bindings_p ()) 8323 error ("nested function %qs declared %<extern%>", name); 8324 else if (toplevel_bindings_p ()) 8325 { 8326 if (storage_class == sc_auto) 8327 error ("top-level declaration of %qs specifies %<auto%>", name); 8328 } 8329 else if (thread_p 8330 && storage_class != sc_extern 8331 && storage_class != sc_static) 8332 { 8333 error ("function-scope %qs implicitly auto and declared %<__thread%>", 8334 name); 8335 thread_p = false; 8336 } 8337 8338 if (storage_class && friendp) 8339 { 8340 error ("storage class specifiers invalid in friend function declarations"); 8341 storage_class = sc_none; 8342 staticp = 0; 8343 } 8344 8345 if (!id_declarator) 8346 unqualified_id = NULL_TREE; 8347 else 8348 { 8349 unqualified_id = id_declarator->u.id.unqualified_name; 8350 switch (TREE_CODE (unqualified_id)) 8351 { 8352 case BIT_NOT_EXPR: 8353 unqualified_id = TREE_OPERAND (unqualified_id, 0); 8354 if (TYPE_P (unqualified_id)) 8355 unqualified_id = constructor_name (unqualified_id); 8356 break; 8357 8358 case IDENTIFIER_NODE: 8359 case TEMPLATE_ID_EXPR: 8360 break; 8361 8362 default: 8363 gcc_unreachable (); 8364 } 8365 } 8366 8367 /* Determine the type of the entity declared by recurring on the 8368 declarator. */ 8369 for (; declarator; declarator = declarator->declarator) 8370 { 8371 const cp_declarator *inner_declarator; 8372 tree attrs; 8373 8374 if (type == error_mark_node) 8375 return error_mark_node; 8376 8377 attrs = declarator->attributes; 8378 if (attrs) 8379 { 8380 int attr_flags; 8381 8382 attr_flags = 0; 8383 if (declarator == NULL || declarator->kind == cdk_id) 8384 attr_flags |= (int) ATTR_FLAG_DECL_NEXT; 8385 if (declarator->kind == cdk_function) 8386 attr_flags |= (int) ATTR_FLAG_FUNCTION_NEXT; 8387 if (declarator->kind == cdk_array) 8388 attr_flags |= (int) ATTR_FLAG_ARRAY_NEXT; 8389 returned_attrs = decl_attributes (&type, 8390 chainon (returned_attrs, attrs), 8391 attr_flags); 8392 } 8393 8394 if (declarator->kind == cdk_id) 8395 break; 8396 8397 inner_declarator = declarator->declarator; 8398 8399 switch (declarator->kind) 8400 { 8401 case cdk_array: 8402 type = create_array_type_for_decl (dname, type, 8403 declarator->u.array.bounds); 8404 break; 8405 8406 case cdk_function: 8407 { 8408 tree arg_types; 8409 int funcdecl_p; 8410 8411 /* Declaring a function type. 8412 Make sure we have a valid type for the function to return. */ 8413 8414 if (type_quals != TYPE_UNQUALIFIED) 8415 { 8416 if (SCALAR_TYPE_P (type) || VOID_TYPE_P (type)) 8417 warning (OPT_Wignored_qualifiers, 8418 "type qualifiers ignored on function return type"); 8419 /* We now know that the TYPE_QUALS don't apply to the 8420 decl, but to its return type. */ 8421 type_quals = TYPE_UNQUALIFIED; 8422 } 8423 errmsg = targetm.invalid_return_type (type); 8424 if (errmsg) 8425 { 8426 error (errmsg); 8427 type = integer_type_node; 8428 } 8429 8430 /* Error about some types functions can't return. */ 8431 8432 if (TREE_CODE (type) == FUNCTION_TYPE) 8433 { 8434 error ("%qs declared as function returning a function", name); 8435 return error_mark_node; 8436 } 8437 if (TREE_CODE (type) == ARRAY_TYPE) 8438 { 8439 error ("%qs declared as function returning an array", name); 8440 return error_mark_node; 8441 } 8442 8443 /* Pick up type qualifiers which should be applied to `this'. */ 8444 memfn_quals = declarator->u.function.qualifiers; 8445 8446 /* Pick up the exception specifications. */ 8447 raises = declarator->u.function.exception_specification; 8448 8449 /* Say it's a definition only for the CALL_EXPR 8450 closest to the identifier. */ 8451 funcdecl_p = inner_declarator && inner_declarator->kind == cdk_id; 8452 8453 /* Handle a late-specified return type. */ 8454 if (funcdecl_p) 8455 { 8456 if (type_uses_auto (type)) 8457 { 8458 if (!declarator->u.function.late_return_type) 8459 { 8460 error ("%qs function uses %<auto%> type specifier without" 8461 " late return type", name); 8462 return error_mark_node; 8463 } 8464 else if (!is_auto (type)) 8465 { 8466 error ("%qs function with late return type has" 8467 " %qT as its type rather than plain %<auto%>", 8468 name, type); 8469 return error_mark_node; 8470 } 8471 } 8472 else if (declarator->u.function.late_return_type) 8473 { 8474 error ("%qs function with late return type not declared" 8475 " with %<auto%> type specifier", name); 8476 return error_mark_node; 8477 } 8478 } 8479 type = splice_late_return_type 8480 (type, declarator->u.function.late_return_type); 8481 if (type == error_mark_node) 8482 return error_mark_node; 8483 8484 if (ctype == NULL_TREE 8485 && decl_context == FIELD 8486 && funcdecl_p 8487 && (friendp == 0 || dname == current_class_name)) 8488 ctype = current_class_type; 8489 8490 if (ctype && (sfk == sfk_constructor 8491 || sfk == sfk_destructor)) 8492 { 8493 /* We are within a class's scope. If our declarator name 8494 is the same as the class name, and we are defining 8495 a function, then it is a constructor/destructor, and 8496 therefore returns a void type. */ 8497 8498 /* ISO C++ 12.4/2. A destructor may not be declared 8499 const or volatile. A destructor may not be 8500 static. 8501 8502 ISO C++ 12.1. A constructor may not be declared 8503 const or volatile. A constructor may not be 8504 virtual. A constructor may not be static. */ 8505 if (staticp == 2) 8506 error ((flags == DTOR_FLAG) 8507 ? "destructor cannot be static member function" 8508 : "constructor cannot be static member function"); 8509 if (memfn_quals) 8510 { 8511 error ((flags == DTOR_FLAG) 8512 ? "destructors may not be cv-qualified" 8513 : "constructors may not be cv-qualified"); 8514 memfn_quals = TYPE_UNQUALIFIED; 8515 } 8516 8517 if (decl_context == FIELD 8518 && !member_function_or_else (ctype, 8519 current_class_type, 8520 flags)) 8521 return error_mark_node; 8522 8523 if (flags != DTOR_FLAG) 8524 { 8525 /* It's a constructor. */ 8526 if (explicitp == 1) 8527 explicitp = 2; 8528 if (virtualp) 8529 { 8530 permerror (input_location, "constructors cannot be declared virtual"); 8531 virtualp = 0; 8532 } 8533 if (decl_context == FIELD 8534 && sfk != sfk_constructor) 8535 return error_mark_node; 8536 } 8537 if (decl_context == FIELD) 8538 staticp = 0; 8539 } 8540 else if (friendp) 8541 { 8542 if (initialized) 8543 error ("can't initialize friend function %qs", name); 8544 if (virtualp) 8545 { 8546 /* Cannot be both friend and virtual. */ 8547 error ("virtual functions cannot be friends"); 8548 friendp = 0; 8549 } 8550 if (decl_context == NORMAL) 8551 error ("friend declaration not in class definition"); 8552 if (current_function_decl && funcdef_flag) 8553 error ("can't define friend function %qs in a local " 8554 "class definition", 8555 name); 8556 } 8557 else if (ctype && sfk == sfk_conversion) 8558 { 8559 if (explicitp == 1) 8560 { 8561 maybe_warn_cpp0x (CPP0X_EXPLICIT_CONVERSION); 8562 explicitp = 2; 8563 } 8564 } 8565 8566 /* It is not allowed to use `constexpr' in a function 8567 declaration that is not a definition. 8568 That is too strict, though. */ 8569 if (constexpr_p && !funcdef_flag) 8570 { 8571 error ("the %<constexpr%> specifier cannot be used in " 8572 "a function declaration that is not a definition"); 8573 constexpr_p = false; 8574 } 8575 8576 /* A constexpr non-static member function is implicitly const. */ 8577 if (constexpr_p && decl_context == FIELD && staticp == 0 8578 && sfk != sfk_constructor && sfk != sfk_destructor) 8579 memfn_quals |= TYPE_QUAL_CONST; 8580 8581 arg_types = grokparms (declarator->u.function.parameters, 8582 &parms); 8583 8584 if (inner_declarator 8585 && inner_declarator->kind == cdk_id 8586 && inner_declarator->u.id.sfk == sfk_destructor 8587 && arg_types != void_list_node) 8588 { 8589 error ("destructors may not have parameters"); 8590 arg_types = void_list_node; 8591 parms = NULL_TREE; 8592 } 8593 8594 type = build_function_type (type, arg_types); 8595 } 8596 break; 8597 8598 case cdk_pointer: 8599 case cdk_reference: 8600 case cdk_ptrmem: 8601 /* Filter out pointers-to-references and references-to-references. 8602 We can get these if a TYPE_DECL is used. */ 8603 8604 if (TREE_CODE (type) == REFERENCE_TYPE) 8605 { 8606 if (declarator->kind != cdk_reference) 8607 { 8608 error ("cannot declare pointer to %q#T", type); 8609 type = TREE_TYPE (type); 8610 } 8611 8612 /* In C++0x, we allow reference to reference declarations 8613 that occur indirectly through typedefs [7.1.3/8 dcl.typedef] 8614 and template type arguments [14.3.1/4 temp.arg.type]. The 8615 check for direct reference to reference declarations, which 8616 are still forbidden, occurs below. Reasoning behind the change 8617 can be found in DR106, DR540, and the rvalue reference 8618 proposals. */ 8619 else if (cxx_dialect == cxx98) 8620 { 8621 error ("cannot declare reference to %q#T", type); 8622 type = TREE_TYPE (type); 8623 } 8624 } 8625 else if (VOID_TYPE_P (type)) 8626 { 8627 if (declarator->kind == cdk_reference) 8628 error ("cannot declare reference to %q#T", type); 8629 else if (declarator->kind == cdk_ptrmem) 8630 error ("cannot declare pointer to %q#T member", type); 8631 } 8632 8633 /* We now know that the TYPE_QUALS don't apply to the decl, 8634 but to the target of the pointer. */ 8635 type_quals = TYPE_UNQUALIFIED; 8636 8637 if (declarator->kind == cdk_ptrmem 8638 && (TREE_CODE (type) == FUNCTION_TYPE 8639 || (memfn_quals && TREE_CODE (type) == METHOD_TYPE))) 8640 { 8641 memfn_quals |= cp_type_quals (type); 8642 type = build_memfn_type (type, 8643 declarator->u.pointer.class_type, 8644 memfn_quals); 8645 memfn_quals = TYPE_UNQUALIFIED; 8646 } 8647 8648 if (TREE_CODE (type) == FUNCTION_TYPE 8649 && cp_type_quals (type) != TYPE_UNQUALIFIED) 8650 error (declarator->kind == cdk_reference 8651 ? G_("cannot declare reference to qualified function type %qT") 8652 : G_("cannot declare pointer to qualified function type %qT"), 8653 type); 8654 8655 /* When the pointed-to type involves components of variable size, 8656 care must be taken to ensure that the size evaluation code is 8657 emitted early enough to dominate all the possible later uses 8658 and late enough for the variables on which it depends to have 8659 been assigned. 8660 8661 This is expected to happen automatically when the pointed-to 8662 type has a name/declaration of it's own, but special attention 8663 is required if the type is anonymous. 8664 8665 We handle the NORMAL and FIELD contexts here by inserting a 8666 dummy statement that just evaluates the size at a safe point 8667 and ensures it is not deferred until e.g. within a deeper 8668 conditional context (c++/43555). 8669 8670 We expect nothing to be needed here for PARM or TYPENAME. 8671 Evaluating the size at this point for TYPENAME would 8672 actually be incorrect, as we might be in the middle of an 8673 expression with side effects on the pointed-to type size 8674 "arguments" prior to the pointer declaration point and the 8675 size evaluation could end up prior to the side effects. */ 8676 8677 if (!TYPE_NAME (type) 8678 && (decl_context == NORMAL || decl_context == FIELD) 8679 && at_function_scope_p () 8680 && variably_modified_type_p (type, NULL_TREE)) 8681 finish_expr_stmt (TYPE_SIZE (type)); 8682 8683 if (declarator->kind == cdk_reference) 8684 { 8685 /* In C++0x, the type we are creating a reference to might be 8686 a typedef which is itself a reference type. In that case, 8687 we follow the reference collapsing rules in 8688 [7.1.3/8 dcl.typedef] to create the final reference type: 8689 8690 "If a typedef TD names a type that is a reference to a type 8691 T, an attempt to create the type 'lvalue reference to cv TD' 8692 creates the type 'lvalue reference to T,' while an attempt 8693 to create the type "rvalue reference to cv TD' creates the 8694 type TD." 8695 */ 8696 if (!VOID_TYPE_P (type)) 8697 type = cp_build_reference_type 8698 ((TREE_CODE (type) == REFERENCE_TYPE 8699 ? TREE_TYPE (type) : type), 8700 (declarator->u.reference.rvalue_ref 8701 && (TREE_CODE(type) != REFERENCE_TYPE 8702 || TYPE_REF_IS_RVALUE (type)))); 8703 8704 /* In C++0x, we need this check for direct reference to 8705 reference declarations, which are forbidden by 8706 [8.3.2/5 dcl.ref]. Reference to reference declarations 8707 are only allowed indirectly through typedefs and template 8708 type arguments. Example: 8709 8710 void foo(int & &); // invalid ref-to-ref decl 8711 8712 typedef int & int_ref; 8713 void foo(int_ref &); // valid ref-to-ref decl 8714 */ 8715 if (inner_declarator && inner_declarator->kind == cdk_reference) 8716 error ("cannot declare reference to %q#T, which is not " 8717 "a typedef or a template type argument", type); 8718 } 8719 else if (TREE_CODE (type) == METHOD_TYPE) 8720 type = build_ptrmemfunc_type (build_pointer_type (type)); 8721 else if (declarator->kind == cdk_ptrmem) 8722 { 8723 gcc_assert (TREE_CODE (declarator->u.pointer.class_type) 8724 != NAMESPACE_DECL); 8725 if (declarator->u.pointer.class_type == error_mark_node) 8726 /* We will already have complained. */ 8727 type = error_mark_node; 8728 else 8729 type = build_ptrmem_type (declarator->u.pointer.class_type, 8730 type); 8731 } 8732 else 8733 type = build_pointer_type (type); 8734 8735 /* Process a list of type modifier keywords (such as 8736 const or volatile) that were given inside the `*' or `&'. */ 8737 8738 if (declarator->u.pointer.qualifiers) 8739 { 8740 type 8741 = cp_build_qualified_type (type, 8742 declarator->u.pointer.qualifiers); 8743 type_quals = cp_type_quals (type); 8744 } 8745 ctype = NULL_TREE; 8746 break; 8747 8748 case cdk_error: 8749 break; 8750 8751 default: 8752 gcc_unreachable (); 8753 } 8754 } 8755 8756 if (unqualified_id && TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR 8757 && TREE_CODE (type) != FUNCTION_TYPE 8758 && TREE_CODE (type) != METHOD_TYPE) 8759 { 8760 error ("template-id %qD used as a declarator", 8761 unqualified_id); 8762 unqualified_id = dname; 8763 } 8764 8765 /* If TYPE is a FUNCTION_TYPE, but the function name was explicitly 8766 qualified with a class-name, turn it into a METHOD_TYPE, unless 8767 we know that the function is static. We take advantage of this 8768 opportunity to do other processing that pertains to entities 8769 explicitly declared to be class members. Note that if DECLARATOR 8770 is non-NULL, we know it is a cdk_id declarator; otherwise, we 8771 would not have exited the loop above. */ 8772 if (declarator 8773 && declarator->u.id.qualifying_scope 8774 && TYPE_P (declarator->u.id.qualifying_scope)) 8775 { 8776 tree t; 8777 8778 ctype = declarator->u.id.qualifying_scope; 8779 ctype = TYPE_MAIN_VARIANT (ctype); 8780 t = ctype; 8781 while (t != NULL_TREE && CLASS_TYPE_P (t)) 8782 { 8783 /* You're supposed to have one `template <...>' for every 8784 template class, but you don't need one for a full 8785 specialization. For example: 8786 8787 template <class T> struct S{}; 8788 template <> struct S<int> { void f(); }; 8789 void S<int>::f () {} 8790 8791 is correct; there shouldn't be a `template <>' for the 8792 definition of `S<int>::f'. */ 8793 if (CLASSTYPE_TEMPLATE_SPECIALIZATION (t) 8794 && !any_dependent_template_arguments_p (CLASSTYPE_TI_ARGS (t))) 8795 /* T is an explicit (not partial) specialization. All 8796 containing classes must therefore also be explicitly 8797 specialized. */ 8798 break; 8799 if ((CLASSTYPE_USE_TEMPLATE (t) || CLASSTYPE_IS_TEMPLATE (t)) 8800 && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (t))) 8801 template_count += 1; 8802 8803 t = TYPE_MAIN_DECL (t); 8804 t = DECL_CONTEXT (t); 8805 } 8806 8807 if (ctype == current_class_type) 8808 { 8809 if (friendp) 8810 { 8811 permerror (input_location, "member functions are implicitly friends of their class"); 8812 friendp = 0; 8813 } 8814 else 8815 permerror (declarator->id_loc, 8816 "extra qualification %<%T::%> on member %qs", 8817 ctype, name); 8818 } 8819 else if (/* If the qualifying type is already complete, then we 8820 can skip the following checks. */ 8821 !COMPLETE_TYPE_P (ctype) 8822 && (/* If the function is being defined, then 8823 qualifying type must certainly be complete. */ 8824 funcdef_flag 8825 /* A friend declaration of "T::f" is OK, even if 8826 "T" is a template parameter. But, if this 8827 function is not a friend, the qualifying type 8828 must be a class. */ 8829 || (!friendp && !CLASS_TYPE_P (ctype)) 8830 /* For a declaration, the type need not be 8831 complete, if either it is dependent (since there 8832 is no meaningful definition of complete in that 8833 case) or the qualifying class is currently being 8834 defined. */ 8835 || !(dependent_type_p (ctype) 8836 || currently_open_class (ctype))) 8837 /* Check that the qualifying type is complete. */ 8838 && !complete_type_or_else (ctype, NULL_TREE)) 8839 return error_mark_node; 8840 else if (TREE_CODE (type) == FUNCTION_TYPE) 8841 { 8842 tree sname = declarator->u.id.unqualified_name; 8843 8844 if (current_class_type 8845 && (!friendp || funcdef_flag)) 8846 { 8847 error (funcdef_flag 8848 ? "cannot define member function %<%T::%s%> within %<%T%>" 8849 : "cannot declare member function %<%T::%s%> within %<%T%>", 8850 ctype, name, current_class_type); 8851 return error_mark_node; 8852 } 8853 8854 /* It is not permitted to define a member function outside ist 8855 membership class as `constexpr'. */ 8856 if (constexpr_p) 8857 error ("a constexpr function cannot be defined " 8858 "outside of its class"); 8859 8860 if (TREE_CODE (sname) == IDENTIFIER_NODE 8861 && NEW_DELETE_OPNAME_P (sname)) 8862 /* Overloaded operator new and operator delete 8863 are always static functions. */ 8864 ; 8865 else 8866 type = build_memfn_type (type, ctype, memfn_quals); 8867 } 8868 else if (declspecs->specs[(int)ds_typedef] 8869 && current_class_type) 8870 { 8871 error ("cannot declare member %<%T::%s%> within %qT", 8872 ctype, name, current_class_type); 8873 return error_mark_node; 8874 } 8875 } 8876 8877 /* Now TYPE has the actual type. */ 8878 8879 if (returned_attrs) 8880 { 8881 if (attrlist) 8882 *attrlist = chainon (returned_attrs, *attrlist); 8883 else 8884 attrlist = &returned_attrs; 8885 } 8886 8887 /* Handle parameter packs. */ 8888 if (parameter_pack_p) 8889 { 8890 if (decl_context == PARM) 8891 /* Turn the type into a pack expansion.*/ 8892 type = make_pack_expansion (type); 8893 else 8894 error ("non-parameter %qs cannot be a parameter pack", name); 8895 } 8896 8897 /* Did array size calculations overflow? */ 8898 8899 if (TREE_CODE (type) == ARRAY_TYPE 8900 && COMPLETE_TYPE_P (type) 8901 && TREE_CODE (TYPE_SIZE_UNIT (type)) == INTEGER_CST 8902 && TREE_OVERFLOW (TYPE_SIZE_UNIT (type))) 8903 { 8904 error ("size of array %qs is too large", name); 8905 /* If we proceed with the array type as it is, we'll eventually 8906 crash in tree_low_cst(). */ 8907 type = error_mark_node; 8908 } 8909 8910 if ((decl_context == FIELD || decl_context == PARM) 8911 && !processing_template_decl 8912 && variably_modified_type_p (type, NULL_TREE)) 8913 { 8914 if (decl_context == FIELD) 8915 error ("data member may not have variably modified type %qT", type); 8916 else 8917 error ("parameter may not have variably modified type %qT", type); 8918 type = error_mark_node; 8919 } 8920 8921 if (explicitp == 1 || (explicitp && friendp)) 8922 { 8923 /* [dcl.fct.spec] The explicit specifier shall only be used in 8924 declarations of constructors within a class definition. */ 8925 error ("only declarations of constructors can be %<explicit%>"); 8926 explicitp = 0; 8927 } 8928 8929 if (storage_class == sc_mutable) 8930 { 8931 if (decl_context != FIELD || friendp) 8932 { 8933 error ("non-member %qs cannot be declared %<mutable%>", name); 8934 storage_class = sc_none; 8935 } 8936 else if (decl_context == TYPENAME || declspecs->specs[(int)ds_typedef]) 8937 { 8938 error ("non-object member %qs cannot be declared %<mutable%>", name); 8939 storage_class = sc_none; 8940 } 8941 else if (TREE_CODE (type) == FUNCTION_TYPE 8942 || TREE_CODE (type) == METHOD_TYPE) 8943 { 8944 error ("function %qs cannot be declared %<mutable%>", name); 8945 storage_class = sc_none; 8946 } 8947 else if (staticp) 8948 { 8949 error ("static %qs cannot be declared %<mutable%>", name); 8950 storage_class = sc_none; 8951 } 8952 else if (type_quals & TYPE_QUAL_CONST) 8953 { 8954 error ("const %qs cannot be declared %<mutable%>", name); 8955 storage_class = sc_none; 8956 } 8957 } 8958 8959 /* If this is declaring a typedef name, return a TYPE_DECL. */ 8960 if (declspecs->specs[(int)ds_typedef] && decl_context != TYPENAME) 8961 { 8962 tree decl; 8963 8964 /* Note that the grammar rejects storage classes 8965 in typenames, fields or parameters. */ 8966 if (current_lang_name == lang_name_java) 8967 TYPE_FOR_JAVA (type) = 1; 8968 8969 /* This declaration: 8970 8971 typedef void f(int) const; 8972 8973 declares a function type which is not a member of any 8974 particular class, but which is cv-qualified; for 8975 example "f S::*" declares a pointer to a const-qualified 8976 member function of S. We record the cv-qualification in the 8977 function type. */ 8978 if (memfn_quals && TREE_CODE (type) == FUNCTION_TYPE) 8979 { 8980 type = cp_build_qualified_type (type, memfn_quals); 8981 8982 /* We have now dealt with these qualifiers. */ 8983 memfn_quals = TYPE_UNQUALIFIED; 8984 } 8985 8986 if (decl_context == FIELD) 8987 decl = build_lang_decl (TYPE_DECL, unqualified_id, type); 8988 else 8989 decl = build_decl (input_location, TYPE_DECL, unqualified_id, type); 8990 if (id_declarator && declarator->u.id.qualifying_scope) { 8991 error_at (DECL_SOURCE_LOCATION (decl), 8992 "typedef name may not be a nested-name-specifier"); 8993 TREE_TYPE (decl) = error_mark_node; 8994 } 8995 8996 if (decl_context != FIELD) 8997 { 8998 if (!current_function_decl) 8999 DECL_CONTEXT (decl) = FROB_CONTEXT (current_namespace); 9000 else if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (current_function_decl) 9001 || (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P 9002 (current_function_decl))) 9003 /* The TYPE_DECL is "abstract" because there will be 9004 clones of this constructor/destructor, and there will 9005 be copies of this TYPE_DECL generated in those 9006 clones. */ 9007 DECL_ABSTRACT (decl) = 1; 9008 } 9009 else if (constructor_name_p (unqualified_id, current_class_type)) 9010 permerror (input_location, "ISO C++ forbids nested type %qD with same name " 9011 "as enclosing class", 9012 unqualified_id); 9013 9014 /* If the user declares "typedef struct {...} foo" then the 9015 struct will have an anonymous name. Fill that name in now. 9016 Nothing can refer to it, so nothing needs know about the name 9017 change. */ 9018 if (type != error_mark_node 9019 && unqualified_id 9020 && TYPE_NAME (type) 9021 && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL 9022 && TYPE_ANONYMOUS_P (type) 9023 && cp_type_quals (type) == TYPE_UNQUALIFIED) 9024 { 9025 tree t; 9026 9027 /* Replace the anonymous name with the real name everywhere. */ 9028 for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) 9029 { 9030 if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t))) 9031 { 9032 debug_hooks->set_name (t, decl); 9033 TYPE_NAME (t) = decl; 9034 } 9035 } 9036 9037 if (TYPE_LANG_SPECIFIC (type)) 9038 TYPE_WAS_ANONYMOUS (type) = 1; 9039 9040 /* If this is a typedef within a template class, the nested 9041 type is a (non-primary) template. The name for the 9042 template needs updating as well. */ 9043 if (TYPE_LANG_SPECIFIC (type) && CLASSTYPE_TEMPLATE_INFO (type)) 9044 DECL_NAME (CLASSTYPE_TI_TEMPLATE (type)) 9045 = TYPE_IDENTIFIER (type); 9046 9047 /* Adjust linkage now that we aren't anonymous anymore. */ 9048 set_linkage_according_to_type (type, TYPE_MAIN_DECL (type)); 9049 determine_visibility (TYPE_MAIN_DECL (type)); 9050 9051 /* FIXME remangle member functions; member functions of a 9052 type with external linkage have external linkage. */ 9053 } 9054 9055 if (signed_p 9056 || (typedef_decl && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl))) 9057 C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1; 9058 9059 bad_specifiers (decl, "type", virtualp, 9060 memfn_quals != TYPE_UNQUALIFIED, 9061 inlinep, friendp, raises != NULL_TREE); 9062 9063 return decl; 9064 } 9065 9066 /* Detect the case of an array type of unspecified size 9067 which came, as such, direct from a typedef name. 9068 We must copy the type, so that the array's domain can be 9069 individually set by the object's initializer. */ 9070 9071 if (type && typedef_type 9072 && TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type) 9073 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (typedef_type)) 9074 type = build_cplus_array_type (TREE_TYPE (type), NULL_TREE); 9075 9076 /* Detect where we're using a typedef of function type to declare a 9077 function. PARMS will not be set, so we must create it now. */ 9078 9079 if (type == typedef_type && TREE_CODE (type) == FUNCTION_TYPE) 9080 { 9081 tree decls = NULL_TREE; 9082 tree args; 9083 9084 for (args = TYPE_ARG_TYPES (type); 9085 args && args != void_list_node; 9086 args = TREE_CHAIN (args)) 9087 { 9088 tree decl = cp_build_parm_decl (NULL_TREE, TREE_VALUE (args)); 9089 9090 TREE_CHAIN (decl) = decls; 9091 decls = decl; 9092 } 9093 9094 parms = nreverse (decls); 9095 9096 if (decl_context != TYPENAME) 9097 { 9098 /* A cv-qualifier-seq shall only be part of the function type 9099 for a non-static member function. [8.3.5/4 dcl.fct] */ 9100 if (cp_type_quals (type) != TYPE_UNQUALIFIED 9101 && (current_class_type == NULL_TREE || staticp) ) 9102 { 9103 error (staticp 9104 ? G_("qualified function types cannot be used to " 9105 "declare static member functions") 9106 : G_("qualified function types cannot be used to " 9107 "declare free functions")); 9108 type = TYPE_MAIN_VARIANT (type); 9109 } 9110 9111 /* The qualifiers on the function type become the qualifiers on 9112 the non-static member function. */ 9113 memfn_quals |= cp_type_quals (type); 9114 type_quals = TYPE_UNQUALIFIED; 9115 } 9116 } 9117 9118 /* If this is a type name (such as, in a cast or sizeof), 9119 compute the type and return it now. */ 9120 9121 if (decl_context == TYPENAME) 9122 { 9123 /* Note that the grammar rejects storage classes 9124 in typenames, fields or parameters. */ 9125 if (type_quals != TYPE_UNQUALIFIED) 9126 type_quals = TYPE_UNQUALIFIED; 9127 9128 /* Special case: "friend class foo" looks like a TYPENAME context. */ 9129 if (friendp) 9130 { 9131 if (type_quals != TYPE_UNQUALIFIED) 9132 { 9133 error ("type qualifiers specified for friend class declaration"); 9134 type_quals = TYPE_UNQUALIFIED; 9135 } 9136 if (inlinep) 9137 { 9138 error ("%<inline%> specified for friend class declaration"); 9139 inlinep = 0; 9140 } 9141 9142 if (!current_aggr) 9143 { 9144 /* Don't allow friend declaration without a class-key. */ 9145 if (TREE_CODE (type) == TEMPLATE_TYPE_PARM) 9146 permerror (input_location, "template parameters cannot be friends"); 9147 else if (TREE_CODE (type) == TYPENAME_TYPE) 9148 permerror (input_location, "friend declaration requires class-key, " 9149 "i.e. %<friend class %T::%D%>", 9150 TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type)); 9151 else 9152 permerror (input_location, "friend declaration requires class-key, " 9153 "i.e. %<friend %#T%>", 9154 type); 9155 } 9156 9157 /* Only try to do this stuff if we didn't already give up. */ 9158 if (type != integer_type_node) 9159 { 9160 /* A friendly class? */ 9161 if (current_class_type) 9162 make_friend_class (current_class_type, TYPE_MAIN_VARIANT (type), 9163 /*complain=*/true); 9164 else 9165 error ("trying to make class %qT a friend of global scope", 9166 type); 9167 9168 type = void_type_node; 9169 } 9170 } 9171 else if (memfn_quals) 9172 { 9173 if (ctype == NULL_TREE 9174 && TREE_CODE (type) == METHOD_TYPE) 9175 ctype = TYPE_METHOD_BASETYPE (type); 9176 9177 if (ctype) 9178 type = build_memfn_type (type, ctype, memfn_quals); 9179 /* Core issue #547: need to allow this in template type args. */ 9180 else if (template_type_arg && TREE_CODE (type) == FUNCTION_TYPE) 9181 type = cp_build_qualified_type (type, memfn_quals); 9182 else 9183 error ("invalid qualifiers on non-member function type"); 9184 } 9185 9186 return type; 9187 } 9188 else if (unqualified_id == NULL_TREE && decl_context != PARM 9189 && decl_context != CATCHPARM 9190 && TREE_CODE (type) != UNION_TYPE 9191 && ! bitfield) 9192 { 9193 error ("abstract declarator %qT used as declaration", type); 9194 return error_mark_node; 9195 } 9196 9197 /* Only functions may be declared using an operator-function-id. */ 9198 if (unqualified_id 9199 && IDENTIFIER_OPNAME_P (unqualified_id) 9200 && TREE_CODE (type) != FUNCTION_TYPE 9201 && TREE_CODE (type) != METHOD_TYPE) 9202 { 9203 error ("declaration of %qD as non-function", unqualified_id); 9204 return error_mark_node; 9205 } 9206 9207 /* We don't check parameter types here because we can emit a better 9208 error message later. */ 9209 if (decl_context != PARM) 9210 { 9211 type = check_var_type (unqualified_id, type); 9212 if (type == error_mark_node) 9213 return error_mark_node; 9214 } 9215 9216 /* Now create the decl, which may be a VAR_DECL, a PARM_DECL 9217 or a FUNCTION_DECL, depending on DECL_CONTEXT and TYPE. */ 9218 9219 if (decl_context == PARM || decl_context == CATCHPARM) 9220 { 9221 if (ctype || in_namespace) 9222 error ("cannot use %<::%> in parameter declaration"); 9223 9224 /* A parameter declared as an array of T is really a pointer to T. 9225 One declared as a function is really a pointer to a function. 9226 One declared as a member is really a pointer to member. */ 9227 9228 if (TREE_CODE (type) == ARRAY_TYPE) 9229 { 9230 /* Transfer const-ness of array into that of type pointed to. */ 9231 type = build_pointer_type (TREE_TYPE (type)); 9232 type_quals = TYPE_UNQUALIFIED; 9233 } 9234 else if (TREE_CODE (type) == FUNCTION_TYPE) 9235 type = build_pointer_type (type); 9236 } 9237 9238 { 9239 tree decl; 9240 9241 if (decl_context == PARM) 9242 { 9243 decl = cp_build_parm_decl (unqualified_id, type); 9244 9245 bad_specifiers (decl, "parameter", virtualp, 9246 memfn_quals != TYPE_UNQUALIFIED, 9247 inlinep, friendp, raises != NULL_TREE); 9248 } 9249 else if (decl_context == FIELD) 9250 { 9251 /* The C99 flexible array extension. */ 9252 if (!staticp && TREE_CODE (type) == ARRAY_TYPE 9253 && TYPE_DOMAIN (type) == NULL_TREE) 9254 { 9255 tree itype = compute_array_index_type (dname, integer_zero_node); 9256 type = build_cplus_array_type (TREE_TYPE (type), itype); 9257 } 9258 9259 if (type == error_mark_node) 9260 { 9261 /* Happens when declaring arrays of sizes which 9262 are error_mark_node, for example. */ 9263 decl = NULL_TREE; 9264 } 9265 else if (in_namespace && !friendp) 9266 { 9267 /* Something like struct S { int N::j; }; */ 9268 error ("invalid use of %<::%>"); 9269 return error_mark_node; 9270 } 9271 else if (TREE_CODE (type) == FUNCTION_TYPE) 9272 { 9273 int publicp = 0; 9274 tree function_context; 9275 9276 if (friendp == 0) 9277 { 9278 if (ctype == NULL_TREE) 9279 ctype = current_class_type; 9280 9281 if (ctype == NULL_TREE) 9282 { 9283 error ("can't make %qD into a method -- not in a class", 9284 unqualified_id); 9285 return error_mark_node; 9286 } 9287 9288 /* ``A union may [ ... ] not [ have ] virtual functions.'' 9289 ARM 9.5 */ 9290 if (virtualp && TREE_CODE (ctype) == UNION_TYPE) 9291 { 9292 error ("function %qD declared virtual inside a union", 9293 unqualified_id); 9294 return error_mark_node; 9295 } 9296 9297 if (NEW_DELETE_OPNAME_P (unqualified_id)) 9298 { 9299 if (virtualp) 9300 { 9301 error ("%qD cannot be declared virtual, since it " 9302 "is always static", 9303 unqualified_id); 9304 virtualp = 0; 9305 } 9306 } 9307 else if (staticp < 2) 9308 type = build_memfn_type (type, ctype, memfn_quals); 9309 } 9310 9311 /* Check that the name used for a destructor makes sense. */ 9312 if (sfk == sfk_destructor) 9313 { 9314 tree uqname = id_declarator->u.id.unqualified_name; 9315 9316 if (!ctype) 9317 { 9318 gcc_assert (friendp); 9319 error ("expected qualified name in friend declaration " 9320 "for destructor %qD", uqname); 9321 return error_mark_node; 9322 } 9323 9324 if (!check_dtor_name (ctype, TREE_OPERAND (uqname, 0))) 9325 { 9326 error ("declaration of %qD as member of %qT", 9327 uqname, ctype); 9328 return error_mark_node; 9329 } 9330 if (constexpr_p) 9331 error ("a destructor cannot be %<constexpr%>"); 9332 } 9333 else if (sfk == sfk_constructor && friendp) 9334 { 9335 error ("expected qualified name in friend declaration " 9336 "for constructor %qD", 9337 id_declarator->u.id.unqualified_name); 9338 return error_mark_node; 9339 } 9340 9341 /* Tell grokfndecl if it needs to set TREE_PUBLIC on the node. */ 9342 function_context = (ctype != NULL_TREE) ? 9343 decl_function_context (TYPE_MAIN_DECL (ctype)) : NULL_TREE; 9344 publicp = (! friendp || ! staticp) 9345 && function_context == NULL_TREE; 9346 decl = grokfndecl (ctype, type, 9347 TREE_CODE (unqualified_id) != TEMPLATE_ID_EXPR 9348 ? unqualified_id : dname, 9349 parms, 9350 unqualified_id, 9351 virtualp, flags, memfn_quals, raises, 9352 friendp ? -1 : 0, friendp, publicp, 9353 inlinep || constexpr_p, 9354 sfk, 9355 funcdef_flag, template_count, in_namespace, 9356 attrlist, declarator->id_loc); 9357 if (decl == NULL_TREE) 9358 return error_mark_node; 9359 #if 0 9360 /* This clobbers the attrs stored in `decl' from `attrlist'. */ 9361 /* The decl and setting of decl_attr is also turned off. */ 9362 decl = build_decl_attribute_variant (decl, decl_attr); 9363 #endif 9364 9365 /* [class.conv.ctor] 9366 9367 A constructor declared without the function-specifier 9368 explicit that can be called with a single parameter 9369 specifies a conversion from the type of its first 9370 parameter to the type of its class. Such a constructor 9371 is called a converting constructor. */ 9372 if (explicitp == 2) 9373 DECL_NONCONVERTING_P (decl) = 1; 9374 } 9375 else if (TREE_CODE (type) == METHOD_TYPE) 9376 { 9377 /* We only get here for friend declarations of 9378 members of other classes. */ 9379 /* All method decls are public, so tell grokfndecl to set 9380 TREE_PUBLIC, also. */ 9381 decl = grokfndecl (ctype, type, 9382 TREE_CODE (unqualified_id) != TEMPLATE_ID_EXPR 9383 ? unqualified_id : dname, 9384 parms, 9385 unqualified_id, 9386 virtualp, flags, memfn_quals, raises, 9387 friendp ? -1 : 0, friendp, 1, 0, sfk, 9388 funcdef_flag, template_count, in_namespace, 9389 attrlist, 9390 declarator->id_loc); 9391 if (decl == NULL_TREE) 9392 return error_mark_node; 9393 } 9394 else if (!staticp && !dependent_type_p (type) 9395 && !COMPLETE_TYPE_P (complete_type (type)) 9396 && (TREE_CODE (type) != ARRAY_TYPE || initialized == 0)) 9397 { 9398 if (unqualified_id) 9399 error ("field %qD has incomplete type", unqualified_id); 9400 else 9401 error ("name %qT has incomplete type", type); 9402 9403 /* If we're instantiating a template, tell them which 9404 instantiation made the field's type be incomplete. */ 9405 if (current_class_type 9406 && TYPE_NAME (current_class_type) 9407 && IDENTIFIER_TEMPLATE (TYPE_IDENTIFIER (current_class_type)) 9408 && declspecs->type 9409 && declspecs->type == type) 9410 error (" in instantiation of template %qT", 9411 current_class_type); 9412 9413 return error_mark_node; 9414 } 9415 else 9416 { 9417 if (friendp) 9418 { 9419 error ("%qE is neither function nor member function; " 9420 "cannot be declared friend", unqualified_id); 9421 friendp = 0; 9422 } 9423 decl = NULL_TREE; 9424 } 9425 9426 if (friendp) 9427 { 9428 /* Friends are treated specially. */ 9429 if (ctype == current_class_type) 9430 ; /* We already issued a permerror. */ 9431 else if (decl && DECL_NAME (decl)) 9432 { 9433 if (template_class_depth (current_class_type) == 0) 9434 { 9435 decl = check_explicit_specialization 9436 (unqualified_id, decl, template_count, 9437 2 * funcdef_flag + 4); 9438 if (decl == error_mark_node) 9439 return error_mark_node; 9440 } 9441 9442 DECL_DECLARED_CONSTEXPR_P (decl) = constexpr_p; 9443 decl = do_friend (ctype, unqualified_id, decl, 9444 *attrlist, flags, 9445 funcdef_flag); 9446 return decl; 9447 } 9448 else 9449 return error_mark_node; 9450 } 9451 9452 /* Structure field. It may not be a function, except for C++. */ 9453 9454 if (decl == NULL_TREE) 9455 { 9456 if (initialized) 9457 { 9458 if (!staticp) 9459 { 9460 /* An attempt is being made to initialize a non-static 9461 member. But, from [class.mem]: 9462 9463 4 A member-declarator can contain a 9464 constant-initializer only if it declares a static 9465 member (_class.static_) of integral or enumeration 9466 type, see _class.static.data_. 9467 9468 This used to be relatively common practice, but 9469 the rest of the compiler does not correctly 9470 handle the initialization unless the member is 9471 static so we make it static below. */ 9472 permerror (input_location, "ISO C++ forbids initialization of member %qD", 9473 unqualified_id); 9474 permerror (input_location, "making %qD static", unqualified_id); 9475 staticp = 1; 9476 } 9477 9478 if (uses_template_parms (type)) 9479 /* We'll check at instantiation time. */ 9480 ; 9481 else if (check_static_variable_definition (unqualified_id, 9482 type)) 9483 /* If we just return the declaration, crashes 9484 will sometimes occur. We therefore return 9485 void_type_node, as if this was a friend 9486 declaration, to cause callers to completely 9487 ignore this declaration. */ 9488 return error_mark_node; 9489 } 9490 9491 if (staticp) 9492 { 9493 /* C++ allows static class members. All other work 9494 for this is done by grokfield. */ 9495 decl = build_lang_decl (VAR_DECL, unqualified_id, type); 9496 set_linkage_for_static_data_member (decl); 9497 /* Even if there is an in-class initialization, DECL 9498 is considered undefined until an out-of-class 9499 definition is provided. */ 9500 DECL_EXTERNAL (decl) = 1; 9501 9502 if (thread_p) 9503 DECL_TLS_MODEL (decl) = decl_default_tls_model (decl); 9504 } 9505 else 9506 { 9507 if (constexpr_p) 9508 error ("non-static data member %qE declared %<constexpr%>", 9509 unqualified_id); 9510 decl = build_decl (input_location, 9511 FIELD_DECL, unqualified_id, type); 9512 DECL_NONADDRESSABLE_P (decl) = bitfield; 9513 if (bitfield && !unqualified_id) 9514 TREE_NO_WARNING (decl) = 1; 9515 9516 if (storage_class == sc_mutable) 9517 { 9518 DECL_MUTABLE_P (decl) = 1; 9519 storage_class = sc_none; 9520 } 9521 } 9522 9523 bad_specifiers (decl, "field", virtualp, 9524 memfn_quals != TYPE_UNQUALIFIED, 9525 inlinep, friendp, raises != NULL_TREE); 9526 } 9527 } 9528 else if (TREE_CODE (type) == FUNCTION_TYPE 9529 || TREE_CODE (type) == METHOD_TYPE) 9530 { 9531 tree original_name; 9532 int publicp = 0; 9533 9534 if (!unqualified_id) 9535 return error_mark_node; 9536 9537 if (TREE_CODE (unqualified_id) == TEMPLATE_ID_EXPR) 9538 original_name = dname; 9539 else 9540 original_name = unqualified_id; 9541 9542 if (storage_class == sc_auto) 9543 error ("storage class %<auto%> invalid for function %qs", name); 9544 else if (storage_class == sc_register) 9545 error ("storage class %<register%> invalid for function %qs", name); 9546 else if (thread_p) 9547 error ("storage class %<__thread%> invalid for function %qs", name); 9548 9549 /* Function declaration not at top level. 9550 Storage classes other than `extern' are not allowed 9551 and `extern' makes no difference. */ 9552 if (! toplevel_bindings_p () 9553 && (storage_class == sc_static 9554 || declspecs->specs[(int)ds_inline]) 9555 && pedantic) 9556 { 9557 if (storage_class == sc_static) 9558 pedwarn (input_location, OPT_pedantic, 9559 "%<static%> specified invalid for function %qs " 9560 "declared out of global scope", name); 9561 else 9562 pedwarn (input_location, OPT_pedantic, 9563 "%<inline%> specifier invalid for function %qs " 9564 "declared out of global scope", name); 9565 } 9566 9567 if (ctype != NULL_TREE 9568 && TREE_CODE (ctype) != NAMESPACE_DECL && !MAYBE_CLASS_TYPE_P (ctype)) 9569 { 9570 error ("%q#T is not a class or a namespace", ctype); 9571 ctype = NULL_TREE; 9572 } 9573 9574 if (ctype == NULL_TREE) 9575 { 9576 if (virtualp) 9577 { 9578 error ("virtual non-class function %qs", name); 9579 virtualp = 0; 9580 } 9581 else if (sfk == sfk_constructor 9582 || sfk == sfk_destructor) 9583 { 9584 error (funcdef_flag 9585 ? "%qs defined in a non-class scope" 9586 : "%qs declared in a non-class scope", name); 9587 sfk = sfk_none; 9588 } 9589 } 9590 else if (TREE_CODE (type) == FUNCTION_TYPE && staticp < 2 9591 && !NEW_DELETE_OPNAME_P (original_name)) 9592 type = build_method_type_directly (ctype, 9593 TREE_TYPE (type), 9594 TYPE_ARG_TYPES (type)); 9595 9596 /* Record presence of `static'. */ 9597 publicp = (ctype != NULL_TREE 9598 || storage_class == sc_extern 9599 || storage_class != sc_static); 9600 9601 decl = grokfndecl (ctype, type, original_name, parms, unqualified_id, 9602 virtualp, flags, memfn_quals, raises, 9603 1, friendp, 9604 publicp, inlinep || constexpr_p, sfk, funcdef_flag, 9605 template_count, in_namespace, attrlist, 9606 declarator->id_loc); 9607 if (decl == NULL_TREE) 9608 return error_mark_node; 9609 9610 if (staticp == 1) 9611 { 9612 int invalid_static = 0; 9613 9614 /* Don't allow a static member function in a class, and forbid 9615 declaring main to be static. */ 9616 if (TREE_CODE (type) == METHOD_TYPE) 9617 { 9618 permerror (input_location, "cannot declare member function %qD to have " 9619 "static linkage", decl); 9620 invalid_static = 1; 9621 } 9622 else if (current_function_decl) 9623 { 9624 /* FIXME need arm citation */ 9625 error ("cannot declare static function inside another function"); 9626 invalid_static = 1; 9627 } 9628 9629 if (invalid_static) 9630 { 9631 staticp = 0; 9632 storage_class = sc_none; 9633 } 9634 } 9635 } 9636 else 9637 { 9638 /* It's a variable. */ 9639 9640 /* An uninitialized decl with `extern' is a reference. */ 9641 decl = grokvardecl (type, unqualified_id, 9642 declspecs, 9643 initialized, 9644 (type_quals & TYPE_QUAL_CONST) != 0, 9645 ctype ? ctype : in_namespace); 9646 bad_specifiers (decl, "variable", virtualp, 9647 memfn_quals != TYPE_UNQUALIFIED, 9648 inlinep, friendp, raises != NULL_TREE); 9649 9650 if (ctype) 9651 { 9652 DECL_CONTEXT (decl) = ctype; 9653 if (staticp == 1) 9654 { 9655 permerror (input_location, "%<static%> may not be used when defining " 9656 "(as opposed to declaring) a static data member"); 9657 staticp = 0; 9658 storage_class = sc_none; 9659 } 9660 if (storage_class == sc_register && TREE_STATIC (decl)) 9661 { 9662 error ("static member %qD declared %<register%>", decl); 9663 storage_class = sc_none; 9664 } 9665 if (storage_class == sc_extern && pedantic) 9666 { 9667 pedwarn (input_location, OPT_pedantic, 9668 "cannot explicitly declare member %q#D to have " 9669 "extern linkage", decl); 9670 storage_class = sc_none; 9671 } 9672 } 9673 } 9674 9675 if (storage_class == sc_extern && initialized && !funcdef_flag) 9676 { 9677 if (toplevel_bindings_p ()) 9678 { 9679 /* It's common practice (and completely valid) to have a const 9680 be initialized and declared extern. */ 9681 if (!(type_quals & TYPE_QUAL_CONST)) 9682 warning (0, "%qs initialized and declared %<extern%>", name); 9683 } 9684 else 9685 { 9686 error ("%qs has both %<extern%> and initializer", name); 9687 return error_mark_node; 9688 } 9689 } 9690 9691 /* Record `register' declaration for warnings on & 9692 and in case doing stupid register allocation. */ 9693 9694 if (storage_class == sc_register) 9695 DECL_REGISTER (decl) = 1; 9696 else if (storage_class == sc_extern) 9697 DECL_THIS_EXTERN (decl) = 1; 9698 else if (storage_class == sc_static) 9699 DECL_THIS_STATIC (decl) = 1; 9700 9701 /* Don't forget constexprness. */ 9702 if (VAR_OR_FUNCTION_DECL_P (decl)) 9703 DECL_DECLARED_CONSTEXPR_P (decl) = constexpr_p; 9704 9705 /* Record constancy and volatility on the DECL itself . There's 9706 no need to do this when processing a template; we'll do this 9707 for the instantiated declaration based on the type of DECL. */ 9708 if (!processing_template_decl) 9709 cp_apply_type_quals_to_decl (type_quals, decl); 9710 9711 return decl; 9712 } 9713 } 9714 9715 /* Subroutine of start_function. Ensure that each of the parameter 9716 types (as listed in PARMS) is complete, as is required for a 9717 function definition. */ 9718 9719 static void 9720 require_complete_types_for_parms (tree parms) 9721 { 9722 for (; parms; parms = TREE_CHAIN (parms)) 9723 { 9724 if (dependent_type_p (TREE_TYPE (parms))) 9725 continue; 9726 if (!VOID_TYPE_P (TREE_TYPE (parms)) 9727 && complete_type_or_else (TREE_TYPE (parms), parms)) 9728 { 9729 relayout_decl (parms); 9730 DECL_ARG_TYPE (parms) = type_passed_as (TREE_TYPE (parms)); 9731 } 9732 else 9733 /* grokparms or complete_type_or_else will have already issued 9734 an error. */ 9735 TREE_TYPE (parms) = error_mark_node; 9736 } 9737 } 9738 9739 /* Returns nonzero if T is a local variable. */ 9740 9741 int 9742 local_variable_p (const_tree t) 9743 { 9744 if ((TREE_CODE (t) == VAR_DECL 9745 /* A VAR_DECL with a context that is a _TYPE is a static data 9746 member. */ 9747 && !TYPE_P (CP_DECL_CONTEXT (t)) 9748 /* Any other non-local variable must be at namespace scope. */ 9749 && !DECL_NAMESPACE_SCOPE_P (t)) 9750 || (TREE_CODE (t) == PARM_DECL)) 9751 return 1; 9752 9753 return 0; 9754 } 9755 9756 /* Like local_variable_p, but suitable for use as a tree-walking 9757 function. */ 9758 9759 static tree 9760 local_variable_p_walkfn (tree *tp, int *walk_subtrees, 9761 void *data ATTRIBUTE_UNUSED) 9762 { 9763 if (local_variable_p (*tp) && !DECL_ARTIFICIAL (*tp)) 9764 return *tp; 9765 else if (TYPE_P (*tp)) 9766 *walk_subtrees = 0; 9767 9768 return NULL_TREE; 9769 } 9770 9771 9772 /* Check that ARG, which is a default-argument expression for a 9773 parameter DECL, is valid. Returns ARG, or ERROR_MARK_NODE, if 9774 something goes wrong. DECL may also be a _TYPE node, rather than a 9775 DECL, if there is no DECL available. */ 9776 9777 tree 9778 check_default_argument (tree decl, tree arg) 9779 { 9780 tree var; 9781 tree decl_type; 9782 9783 if (TREE_CODE (arg) == DEFAULT_ARG) 9784 /* We get a DEFAULT_ARG when looking at an in-class declaration 9785 with a default argument. Ignore the argument for now; we'll 9786 deal with it after the class is complete. */ 9787 return arg; 9788 9789 if (TYPE_P (decl)) 9790 { 9791 decl_type = decl; 9792 decl = NULL_TREE; 9793 } 9794 else 9795 decl_type = TREE_TYPE (decl); 9796 9797 if (arg == error_mark_node 9798 || decl == error_mark_node 9799 || TREE_TYPE (arg) == error_mark_node 9800 || decl_type == error_mark_node) 9801 /* Something already went wrong. There's no need to check 9802 further. */ 9803 return error_mark_node; 9804 9805 /* [dcl.fct.default] 9806 9807 A default argument expression is implicitly converted to the 9808 parameter type. */ 9809 if (!TREE_TYPE (arg) 9810 || !can_convert_arg (decl_type, TREE_TYPE (arg), arg, LOOKUP_NORMAL)) 9811 { 9812 if (decl) 9813 error ("default argument for %q#D has type %qT", 9814 decl, TREE_TYPE (arg)); 9815 else 9816 error ("default argument for parameter of type %qT has type %qT", 9817 decl_type, TREE_TYPE (arg)); 9818 9819 return error_mark_node; 9820 } 9821 9822 /* [dcl.fct.default] 9823 9824 Local variables shall not be used in default argument 9825 expressions. 9826 9827 The keyword `this' shall not be used in a default argument of a 9828 member function. */ 9829 var = cp_walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL); 9830 if (var) 9831 { 9832 error ("default argument %qE uses local variable %qD", arg, var); 9833 return error_mark_node; 9834 } 9835 9836 /* All is well. */ 9837 return arg; 9838 } 9839 9840 /* Returns a deprecated type used within TYPE, or NULL_TREE if none. */ 9841 9842 static tree 9843 type_is_deprecated (tree type) 9844 { 9845 enum tree_code code; 9846 if (TREE_DEPRECATED (type)) 9847 return type; 9848 if (TYPE_NAME (type) 9849 && TREE_DEPRECATED (TYPE_NAME (type))) 9850 return type; 9851 9852 /* Do warn about using typedefs to a deprecated class. */ 9853 if (TAGGED_TYPE_P (type) && type != TYPE_MAIN_VARIANT (type)) 9854 return type_is_deprecated (TYPE_MAIN_VARIANT (type)); 9855 9856 code = TREE_CODE (type); 9857 9858 if (code == POINTER_TYPE || code == REFERENCE_TYPE 9859 || code == OFFSET_TYPE || code == FUNCTION_TYPE 9860 || code == METHOD_TYPE || code == ARRAY_TYPE) 9861 return type_is_deprecated (TREE_TYPE (type)); 9862 9863 if (TYPE_PTRMEMFUNC_P (type)) 9864 return type_is_deprecated 9865 (TREE_TYPE (TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type)))); 9866 9867 return NULL_TREE; 9868 } 9869 9870 /* Decode the list of parameter types for a function type. 9871 Given the list of things declared inside the parens, 9872 return a list of types. 9873 9874 If this parameter does not end with an ellipsis, we append 9875 void_list_node. 9876 9877 *PARMS is set to the chain of PARM_DECLs created. */ 9878 9879 static tree 9880 grokparms (tree parmlist, tree *parms) 9881 { 9882 tree result = NULL_TREE; 9883 tree decls = NULL_TREE; 9884 tree parm; 9885 int any_error = 0; 9886 9887 for (parm = parmlist; parm != NULL_TREE; parm = TREE_CHAIN (parm)) 9888 { 9889 tree type = NULL_TREE; 9890 tree init = TREE_PURPOSE (parm); 9891 tree decl = TREE_VALUE (parm); 9892 const char *errmsg; 9893 9894 if (parm == void_list_node) 9895 break; 9896 9897 if (! decl || TREE_TYPE (decl) == error_mark_node) 9898 continue; 9899 9900 type = TREE_TYPE (decl); 9901 if (VOID_TYPE_P (type)) 9902 { 9903 if (same_type_p (type, void_type_node) 9904 && DECL_SELF_REFERENCE_P (type) 9905 && !DECL_NAME (decl) && !result && TREE_CHAIN (parm) == void_list_node) 9906 /* this is a parmlist of `(void)', which is ok. */ 9907 break; 9908 cxx_incomplete_type_error (decl, type); 9909 /* It's not a good idea to actually create parameters of 9910 type `void'; other parts of the compiler assume that a 9911 void type terminates the parameter list. */ 9912 type = error_mark_node; 9913 TREE_TYPE (decl) = error_mark_node; 9914 } 9915 9916 if (type != error_mark_node 9917 && TYPE_FOR_JAVA (type) 9918 && MAYBE_CLASS_TYPE_P (type)) 9919 { 9920 error ("parameter %qD has Java class type", decl); 9921 type = error_mark_node; 9922 TREE_TYPE (decl) = error_mark_node; 9923 init = NULL_TREE; 9924 } 9925 9926 if (type != error_mark_node 9927 && (errmsg = targetm.invalid_parameter_type (type))) 9928 { 9929 error (errmsg); 9930 type = error_mark_node; 9931 TREE_TYPE (decl) = error_mark_node; 9932 } 9933 9934 if (type != error_mark_node) 9935 { 9936 if (deprecated_state != DEPRECATED_SUPPRESS) 9937 { 9938 tree deptype = type_is_deprecated (type); 9939 if (deptype) 9940 warn_deprecated_use (deptype, NULL_TREE); 9941 } 9942 9943 /* Top-level qualifiers on the parameters are 9944 ignored for function types. */ 9945 type = cp_build_qualified_type (type, 0); 9946 if (TREE_CODE (type) == METHOD_TYPE) 9947 { 9948 error ("parameter %qD invalidly declared method type", decl); 9949 type = build_pointer_type (type); 9950 TREE_TYPE (decl) = type; 9951 } 9952 else if (abstract_virtuals_error (decl, type)) 9953 any_error = 1; /* Seems like a good idea. */ 9954 else if (POINTER_TYPE_P (type)) 9955 { 9956 /* [dcl.fct]/6, parameter types cannot contain pointers 9957 (references) to arrays of unknown bound. */ 9958 tree t = TREE_TYPE (type); 9959 int ptr = TYPE_PTR_P (type); 9960 9961 while (1) 9962 { 9963 if (TYPE_PTR_P (t)) 9964 ptr = 1; 9965 else if (TREE_CODE (t) != ARRAY_TYPE) 9966 break; 9967 else if (!TYPE_DOMAIN (t)) 9968 break; 9969 t = TREE_TYPE (t); 9970 } 9971 if (TREE_CODE (t) == ARRAY_TYPE) 9972 error (ptr 9973 ? G_("parameter %qD includes pointer to array of " 9974 "unknown bound %qT") 9975 : G_("parameter %qD includes reference to array of " 9976 "unknown bound %qT"), 9977 decl, t); 9978 } 9979 9980 if (any_error) 9981 init = NULL_TREE; 9982 else if (init && !processing_template_decl) 9983 init = check_default_argument (decl, init); 9984 } 9985 9986 if (TREE_CODE (decl) == PARM_DECL 9987 && FUNCTION_PARAMETER_PACK_P (decl) 9988 && TREE_CHAIN (parm) 9989 && TREE_CHAIN (parm) != void_list_node) 9990 error ("parameter packs must be at the end of the parameter list"); 9991 9992 TREE_CHAIN (decl) = decls; 9993 decls = decl; 9994 result = tree_cons (init, type, result); 9995 } 9996 decls = nreverse (decls); 9997 result = nreverse (result); 9998 if (parm) 9999 result = chainon (result, void_list_node); 10000 *parms = decls; 10001 10002 return result; 10003 } 10004 10005 10006 /* D is a constructor or overloaded `operator='. 10007 10008 Let T be the class in which D is declared. Then, this function 10009 returns: 10010 10011 -1 if D's is an ill-formed constructor or copy assignment operator 10012 whose first parameter is of type `T'. 10013 0 if D is not a copy constructor or copy assignment 10014 operator. 10015 1 if D is a copy constructor or copy assignment operator whose 10016 first parameter is a reference to non-const qualified T. 10017 2 if D is a copy constructor or copy assignment operator whose 10018 first parameter is a reference to const qualified T. 10019 10020 This function can be used as a predicate. Positive values indicate 10021 a copy constructor and nonzero values indicate a copy assignment 10022 operator. */ 10023 10024 int 10025 copy_fn_p (const_tree d) 10026 { 10027 tree args; 10028 tree arg_type; 10029 int result = 1; 10030 10031 gcc_assert (DECL_FUNCTION_MEMBER_P (d)); 10032 10033 if (TREE_CODE (d) == TEMPLATE_DECL 10034 || (DECL_TEMPLATE_INFO (d) 10035 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (d)))) 10036 /* Instantiations of template member functions are never copy 10037 functions. Note that member functions of templated classes are 10038 represented as template functions internally, and we must 10039 accept those as copy functions. */ 10040 return 0; 10041 10042 args = FUNCTION_FIRST_USER_PARMTYPE (d); 10043 if (!args) 10044 return 0; 10045 10046 arg_type = TREE_VALUE (args); 10047 if (arg_type == error_mark_node) 10048 return 0; 10049 10050 if (TYPE_MAIN_VARIANT (arg_type) == DECL_CONTEXT (d)) 10051 { 10052 /* Pass by value copy assignment operator. */ 10053 result = -1; 10054 } 10055 else if (TREE_CODE (arg_type) == REFERENCE_TYPE 10056 && !TYPE_REF_IS_RVALUE (arg_type) 10057 && TYPE_MAIN_VARIANT (TREE_TYPE (arg_type)) == DECL_CONTEXT (d)) 10058 { 10059 if (CP_TYPE_CONST_P (TREE_TYPE (arg_type))) 10060 result = 2; 10061 } 10062 else 10063 return 0; 10064 10065 args = TREE_CHAIN (args); 10066 10067 if (args && args != void_list_node && !TREE_PURPOSE (args)) 10068 /* There are more non-optional args. */ 10069 return 0; 10070 10071 return result; 10072 } 10073 10074 /* D is a constructor or overloaded `operator='. 10075 10076 Let T be the class in which D is declared. Then, this function 10077 returns true when D is a move constructor or move assignment 10078 operator, false otherwise. */ 10079 10080 bool 10081 move_fn_p (const_tree d) 10082 { 10083 tree args; 10084 tree arg_type; 10085 bool result = false; 10086 10087 gcc_assert (DECL_FUNCTION_MEMBER_P (d)); 10088 10089 if (cxx_dialect == cxx98) 10090 /* There are no move constructors if we are in C++98 mode. */ 10091 return false; 10092 10093 if (TREE_CODE (d) == TEMPLATE_DECL 10094 || (DECL_TEMPLATE_INFO (d) 10095 && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (d)))) 10096 /* Instantiations of template member functions are never copy 10097 functions. Note that member functions of templated classes are 10098 represented as template functions internally, and we must 10099 accept those as copy functions. */ 10100 return 0; 10101 10102 args = FUNCTION_FIRST_USER_PARMTYPE (d); 10103 if (!args) 10104 return 0; 10105 10106 arg_type = TREE_VALUE (args); 10107 if (arg_type == error_mark_node) 10108 return 0; 10109 10110 if (TREE_CODE (arg_type) == REFERENCE_TYPE 10111 && TYPE_REF_IS_RVALUE (arg_type) 10112 && same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (arg_type)), 10113 DECL_CONTEXT (d))) 10114 result = true; 10115 10116 args = TREE_CHAIN (args); 10117 10118 if (args && args != void_list_node && !TREE_PURPOSE (args)) 10119 /* There are more non-optional args. */ 10120 return false; 10121 10122 return result; 10123 } 10124 10125 /* Remember any special properties of member function DECL. */ 10126 10127 void 10128 grok_special_member_properties (tree decl) 10129 { 10130 tree class_type; 10131 10132 if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (decl)) 10133 return; 10134 10135 class_type = DECL_CONTEXT (decl); 10136 if (DECL_CONSTRUCTOR_P (decl)) 10137 { 10138 int ctor = copy_fn_p (decl); 10139 10140 if (!DECL_ARTIFICIAL (decl)) 10141 TYPE_HAS_USER_CONSTRUCTOR (class_type) = 1; 10142 10143 if (ctor > 0) 10144 { 10145 /* [class.copy] 10146 10147 A non-template constructor for class X is a copy 10148 constructor if its first parameter is of type X&, const 10149 X&, volatile X& or const volatile X&, and either there 10150 are no other parameters or else all other parameters have 10151 default arguments. */ 10152 TYPE_HAS_INIT_REF (class_type) = 1; 10153 if (user_provided_p (decl)) 10154 TYPE_HAS_COMPLEX_INIT_REF (class_type) = 1; 10155 if (ctor > 1) 10156 TYPE_HAS_CONST_INIT_REF (class_type) = 1; 10157 } 10158 else if (sufficient_parms_p (FUNCTION_FIRST_USER_PARMTYPE (decl))) 10159 { 10160 TYPE_HAS_DEFAULT_CONSTRUCTOR (class_type) = 1; 10161 if (user_provided_p (decl)) 10162 TYPE_HAS_COMPLEX_DFLT (class_type) = 1; 10163 } 10164 else if (is_list_ctor (decl)) 10165 TYPE_HAS_LIST_CTOR (class_type) = 1; 10166 } 10167 else if (DECL_OVERLOADED_OPERATOR_P (decl) == NOP_EXPR) 10168 { 10169 /* [class.copy] 10170 10171 A non-template assignment operator for class X is a copy 10172 assignment operator if its parameter is of type X, X&, const 10173 X&, volatile X& or const volatile X&. */ 10174 10175 int assop = copy_fn_p (decl); 10176 10177 if (assop) 10178 { 10179 TYPE_HAS_ASSIGN_REF (class_type) = 1; 10180 if (user_provided_p (decl)) 10181 TYPE_HAS_COMPLEX_ASSIGN_REF (class_type) = 1; 10182 if (assop != 1) 10183 TYPE_HAS_CONST_ASSIGN_REF (class_type) = 1; 10184 } 10185 } 10186 } 10187 10188 /* Check a constructor DECL has the correct form. Complains 10189 if the class has a constructor of the form X(X). */ 10190 10191 int 10192 grok_ctor_properties (const_tree ctype, const_tree decl) 10193 { 10194 int ctor_parm = copy_fn_p (decl); 10195 10196 if (ctor_parm < 0) 10197 { 10198 /* [class.copy] 10199 10200 A declaration of a constructor for a class X is ill-formed if 10201 its first parameter is of type (optionally cv-qualified) X 10202 and either there are no other parameters or else all other 10203 parameters have default arguments. 10204 10205 We *don't* complain about member template instantiations that 10206 have this form, though; they can occur as we try to decide 10207 what constructor to use during overload resolution. Since 10208 overload resolution will never prefer such a constructor to 10209 the non-template copy constructor (which is either explicitly 10210 or implicitly defined), there's no need to worry about their 10211 existence. Theoretically, they should never even be 10212 instantiated, but that's hard to forestall. */ 10213 error ("invalid constructor; you probably meant %<%T (const %T&)%>", 10214 ctype, ctype); 10215 return 0; 10216 } 10217 10218 return 1; 10219 } 10220 10221 /* An operator with this code is unary, but can also be binary. */ 10222 10223 static int 10224 ambi_op_p (enum tree_code code) 10225 { 10226 return (code == INDIRECT_REF 10227 || code == ADDR_EXPR 10228 || code == UNARY_PLUS_EXPR 10229 || code == NEGATE_EXPR 10230 || code == PREINCREMENT_EXPR 10231 || code == PREDECREMENT_EXPR); 10232 } 10233 10234 /* An operator with this name can only be unary. */ 10235 10236 static int 10237 unary_op_p (enum tree_code code) 10238 { 10239 return (code == TRUTH_NOT_EXPR 10240 || code == BIT_NOT_EXPR 10241 || code == COMPONENT_REF 10242 || code == TYPE_EXPR); 10243 } 10244 10245 /* DECL is a declaration for an overloaded operator. If COMPLAIN is true, 10246 errors are issued for invalid declarations. */ 10247 10248 bool 10249 grok_op_properties (tree decl, bool complain) 10250 { 10251 tree argtypes = TYPE_ARG_TYPES (TREE_TYPE (decl)); 10252 tree argtype; 10253 int methodp = (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE); 10254 tree name = DECL_NAME (decl); 10255 enum tree_code operator_code; 10256 int arity; 10257 bool ellipsis_p; 10258 tree class_type; 10259 10260 /* Count the number of arguments and check for ellipsis. */ 10261 for (argtype = argtypes, arity = 0; 10262 argtype && argtype != void_list_node; 10263 argtype = TREE_CHAIN (argtype)) 10264 ++arity; 10265 ellipsis_p = !argtype; 10266 10267 class_type = DECL_CONTEXT (decl); 10268 if (class_type && !CLASS_TYPE_P (class_type)) 10269 class_type = NULL_TREE; 10270 10271 if (DECL_CONV_FN_P (decl)) 10272 operator_code = TYPE_EXPR; 10273 else 10274 do 10275 { 10276 #define DEF_OPERATOR(NAME, CODE, MANGLING, ARITY, ASSN_P) \ 10277 if (ansi_opname (CODE) == name) \ 10278 { \ 10279 operator_code = (CODE); \ 10280 break; \ 10281 } \ 10282 else if (ansi_assopname (CODE) == name) \ 10283 { \ 10284 operator_code = (CODE); \ 10285 DECL_ASSIGNMENT_OPERATOR_P (decl) = 1; \ 10286 break; \ 10287 } 10288 10289 #include "operators.def" 10290 #undef DEF_OPERATOR 10291 10292 gcc_unreachable (); 10293 } 10294 while (0); 10295 gcc_assert (operator_code != MAX_TREE_CODES); 10296 SET_OVERLOADED_OPERATOR_CODE (decl, operator_code); 10297 10298 if (class_type) 10299 switch (operator_code) 10300 { 10301 case NEW_EXPR: 10302 TYPE_HAS_NEW_OPERATOR (class_type) = 1; 10303 break; 10304 10305 case DELETE_EXPR: 10306 TYPE_GETS_DELETE (class_type) |= 1; 10307 break; 10308 10309 case VEC_NEW_EXPR: 10310 TYPE_HAS_ARRAY_NEW_OPERATOR (class_type) = 1; 10311 break; 10312 10313 case VEC_DELETE_EXPR: 10314 TYPE_GETS_DELETE (class_type) |= 2; 10315 break; 10316 10317 default: 10318 break; 10319 } 10320 10321 /* [basic.std.dynamic.allocation]/1: 10322 10323 A program is ill-formed if an allocation function is declared 10324 in a namespace scope other than global scope or declared static 10325 in global scope. 10326 10327 The same also holds true for deallocation functions. */ 10328 if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR 10329 || operator_code == DELETE_EXPR || operator_code == VEC_DELETE_EXPR) 10330 { 10331 if (DECL_NAMESPACE_SCOPE_P (decl)) 10332 { 10333 if (CP_DECL_CONTEXT (decl) != global_namespace) 10334 { 10335 error ("%qD may not be declared within a namespace", decl); 10336 return false; 10337 } 10338 else if (!TREE_PUBLIC (decl)) 10339 { 10340 error ("%qD may not be declared as static", decl); 10341 return false; 10342 } 10343 } 10344 } 10345 10346 if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR) 10347 { 10348 TREE_TYPE (decl) = coerce_new_type (TREE_TYPE (decl)); 10349 DECL_IS_OPERATOR_NEW (decl) = 1; 10350 } 10351 else if (operator_code == DELETE_EXPR || operator_code == VEC_DELETE_EXPR) 10352 TREE_TYPE (decl) = coerce_delete_type (TREE_TYPE (decl)); 10353 else 10354 { 10355 /* An operator function must either be a non-static member function 10356 or have at least one parameter of a class, a reference to a class, 10357 an enumeration, or a reference to an enumeration. 13.4.0.6 */ 10358 if (! methodp || DECL_STATIC_FUNCTION_P (decl)) 10359 { 10360 if (operator_code == TYPE_EXPR 10361 || operator_code == CALL_EXPR 10362 || operator_code == COMPONENT_REF 10363 || operator_code == ARRAY_REF 10364 || operator_code == NOP_EXPR) 10365 { 10366 error ("%qD must be a nonstatic member function", decl); 10367 return false; 10368 } 10369 else 10370 { 10371 tree p; 10372 10373 if (DECL_STATIC_FUNCTION_P (decl)) 10374 { 10375 error ("%qD must be either a non-static member " 10376 "function or a non-member function", decl); 10377 return false; 10378 } 10379 10380 for (p = argtypes; p && p != void_list_node; p = TREE_CHAIN (p)) 10381 { 10382 tree arg = non_reference (TREE_VALUE (p)); 10383 if (arg == error_mark_node) 10384 return false; 10385 10386 /* MAYBE_CLASS_TYPE_P, rather than CLASS_TYPE_P, is used 10387 because these checks are performed even on 10388 template functions. */ 10389 if (MAYBE_CLASS_TYPE_P (arg) 10390 || TREE_CODE (arg) == ENUMERAL_TYPE) 10391 break; 10392 } 10393 10394 if (!p || p == void_list_node) 10395 { 10396 if (complain) 10397 error ("%qD must have an argument of class or " 10398 "enumerated type", decl); 10399 return false; 10400 } 10401 } 10402 } 10403 10404 /* There are no restrictions on the arguments to an overloaded 10405 "operator ()". */ 10406 if (operator_code == CALL_EXPR) 10407 return true; 10408 10409 /* Warn about conversion operators that will never be used. */ 10410 if (IDENTIFIER_TYPENAME_P (name) 10411 && ! DECL_TEMPLATE_INFO (decl) 10412 && warn_conversion 10413 /* Warn only declaring the function; there is no need to 10414 warn again about out-of-class definitions. */ 10415 && class_type == current_class_type) 10416 { 10417 tree t = TREE_TYPE (name); 10418 int ref = (TREE_CODE (t) == REFERENCE_TYPE); 10419 10420 if (ref) 10421 t = TYPE_MAIN_VARIANT (TREE_TYPE (t)); 10422 10423 if (TREE_CODE (t) == VOID_TYPE) 10424 warning (OPT_Wconversion, 10425 ref 10426 ? G_("conversion to a reference to void " 10427 "will never use a type conversion operator") 10428 : G_("conversion to void " 10429 "will never use a type conversion operator")); 10430 else if (class_type) 10431 { 10432 if (t == class_type) 10433 warning (OPT_Wconversion, 10434 ref 10435 ? G_("conversion to a reference to the same type " 10436 "will never use a type conversion operator") 10437 : G_("conversion to the same type " 10438 "will never use a type conversion operator")); 10439 /* Don't force t to be complete here. */ 10440 else if (MAYBE_CLASS_TYPE_P (t) 10441 && COMPLETE_TYPE_P (t) 10442 && DERIVED_FROM_P (t, class_type)) 10443 warning (OPT_Wconversion, 10444 ref 10445 ? G_("conversion to a reference to a base class " 10446 "will never use a type conversion operator") 10447 : G_("conversion to a base class " 10448 "will never use a type conversion operator")); 10449 } 10450 10451 } 10452 10453 if (operator_code == COND_EXPR) 10454 { 10455 /* 13.4.0.3 */ 10456 error ("ISO C++ prohibits overloading operator ?:"); 10457 return false; 10458 } 10459 else if (ellipsis_p) 10460 { 10461 error ("%qD must not have variable number of arguments", decl); 10462 return false; 10463 } 10464 else if (ambi_op_p (operator_code)) 10465 { 10466 if (arity == 1) 10467 /* We pick the one-argument operator codes by default, so 10468 we don't have to change anything. */ 10469 ; 10470 else if (arity == 2) 10471 { 10472 /* If we thought this was a unary operator, we now know 10473 it to be a binary operator. */ 10474 switch (operator_code) 10475 { 10476 case INDIRECT_REF: 10477 operator_code = MULT_EXPR; 10478 break; 10479 10480 case ADDR_EXPR: 10481 operator_code = BIT_AND_EXPR; 10482 break; 10483 10484 case UNARY_PLUS_EXPR: 10485 operator_code = PLUS_EXPR; 10486 break; 10487 10488 case NEGATE_EXPR: 10489 operator_code = MINUS_EXPR; 10490 break; 10491 10492 case PREINCREMENT_EXPR: 10493 operator_code = POSTINCREMENT_EXPR; 10494 break; 10495 10496 case PREDECREMENT_EXPR: 10497 operator_code = POSTDECREMENT_EXPR; 10498 break; 10499 10500 default: 10501 gcc_unreachable (); 10502 } 10503 10504 SET_OVERLOADED_OPERATOR_CODE (decl, operator_code); 10505 10506 if ((operator_code == POSTINCREMENT_EXPR 10507 || operator_code == POSTDECREMENT_EXPR) 10508 && ! processing_template_decl 10509 && ! same_type_p (TREE_VALUE (TREE_CHAIN (argtypes)), integer_type_node)) 10510 { 10511 if (methodp) 10512 error ("postfix %qD must take %<int%> as its argument", 10513 decl); 10514 else 10515 error ("postfix %qD must take %<int%> as its second " 10516 "argument", decl); 10517 return false; 10518 } 10519 } 10520 else 10521 { 10522 if (methodp) 10523 error ("%qD must take either zero or one argument", decl); 10524 else 10525 error ("%qD must take either one or two arguments", decl); 10526 return false; 10527 } 10528 10529 /* More Effective C++ rule 6. */ 10530 if (warn_ecpp 10531 && (operator_code == POSTINCREMENT_EXPR 10532 || operator_code == POSTDECREMENT_EXPR 10533 || operator_code == PREINCREMENT_EXPR 10534 || operator_code == PREDECREMENT_EXPR)) 10535 { 10536 tree arg = TREE_VALUE (argtypes); 10537 tree ret = TREE_TYPE (TREE_TYPE (decl)); 10538 if (methodp || TREE_CODE (arg) == REFERENCE_TYPE) 10539 arg = TREE_TYPE (arg); 10540 arg = TYPE_MAIN_VARIANT (arg); 10541 if (operator_code == PREINCREMENT_EXPR 10542 || operator_code == PREDECREMENT_EXPR) 10543 { 10544 if (TREE_CODE (ret) != REFERENCE_TYPE 10545 || !same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (ret)), 10546 arg)) 10547 warning (OPT_Weffc__, "prefix %qD should return %qT", decl, 10548 build_reference_type (arg)); 10549 } 10550 else 10551 { 10552 if (!same_type_p (TYPE_MAIN_VARIANT (ret), arg)) 10553 warning (OPT_Weffc__, "postfix %qD should return %qT", decl, arg); 10554 } 10555 } 10556 } 10557 else if (unary_op_p (operator_code)) 10558 { 10559 if (arity != 1) 10560 { 10561 if (methodp) 10562 error ("%qD must take %<void%>", decl); 10563 else 10564 error ("%qD must take exactly one argument", decl); 10565 return false; 10566 } 10567 } 10568 else /* if (binary_op_p (operator_code)) */ 10569 { 10570 if (arity != 2) 10571 { 10572 if (methodp) 10573 error ("%qD must take exactly one argument", decl); 10574 else 10575 error ("%qD must take exactly two arguments", decl); 10576 return false; 10577 } 10578 10579 /* More Effective C++ rule 7. */ 10580 if (warn_ecpp 10581 && (operator_code == TRUTH_ANDIF_EXPR 10582 || operator_code == TRUTH_ORIF_EXPR 10583 || operator_code == COMPOUND_EXPR)) 10584 warning (OPT_Weffc__, "user-defined %qD always evaluates both arguments", 10585 decl); 10586 } 10587 10588 /* Effective C++ rule 23. */ 10589 if (warn_ecpp 10590 && arity == 2 10591 && !DECL_ASSIGNMENT_OPERATOR_P (decl) 10592 && (operator_code == PLUS_EXPR 10593 || operator_code == MINUS_EXPR 10594 || operator_code == TRUNC_DIV_EXPR 10595 || operator_code == MULT_EXPR 10596 || operator_code == TRUNC_MOD_EXPR) 10597 && TREE_CODE (TREE_TYPE (TREE_TYPE (decl))) == REFERENCE_TYPE) 10598 warning (OPT_Weffc__, "%qD should return by value", decl); 10599 10600 /* [over.oper]/8 */ 10601 for (; argtypes && argtypes != void_list_node; 10602 argtypes = TREE_CHAIN (argtypes)) 10603 if (TREE_PURPOSE (argtypes)) 10604 { 10605 TREE_PURPOSE (argtypes) = NULL_TREE; 10606 if (operator_code == POSTINCREMENT_EXPR 10607 || operator_code == POSTDECREMENT_EXPR) 10608 { 10609 pedwarn (input_location, OPT_pedantic, "%qD cannot have default arguments", 10610 decl); 10611 } 10612 else 10613 { 10614 error ("%qD cannot have default arguments", decl); 10615 return false; 10616 } 10617 } 10618 } 10619 return true; 10620 } 10621 10622 /* Return a string giving the keyword associate with CODE. */ 10623 10624 static const char * 10625 tag_name (enum tag_types code) 10626 { 10627 switch (code) 10628 { 10629 case record_type: 10630 return "struct"; 10631 case class_type: 10632 return "class"; 10633 case union_type: 10634 return "union"; 10635 case enum_type: 10636 return "enum"; 10637 case typename_type: 10638 return "typename"; 10639 default: 10640 gcc_unreachable (); 10641 } 10642 } 10643 10644 /* Name lookup in an elaborated-type-specifier (after the keyword 10645 indicated by TAG_CODE) has found the TYPE_DECL DECL. If the 10646 elaborated-type-specifier is invalid, issue a diagnostic and return 10647 error_mark_node; otherwise, return the *_TYPE to which it referred. 10648 If ALLOW_TEMPLATE_P is true, TYPE may be a class template. */ 10649 10650 tree 10651 check_elaborated_type_specifier (enum tag_types tag_code, 10652 tree decl, 10653 bool allow_template_p) 10654 { 10655 tree type; 10656 10657 /* In the case of: 10658 10659 struct S { struct S *p; }; 10660 10661 name lookup will find the TYPE_DECL for the implicit "S::S" 10662 typedef. Adjust for that here. */ 10663 if (DECL_SELF_REFERENCE_P (decl)) 10664 decl = TYPE_NAME (TREE_TYPE (decl)); 10665 10666 type = TREE_TYPE (decl); 10667 10668 /* Check TEMPLATE_TYPE_PARM first because DECL_IMPLICIT_TYPEDEF_P 10669 is false for this case as well. */ 10670 if (TREE_CODE (type) == TEMPLATE_TYPE_PARM) 10671 { 10672 error ("using template type parameter %qT after %qs", 10673 type, tag_name (tag_code)); 10674 return error_mark_node; 10675 } 10676 /* [dcl.type.elab] 10677 10678 If the identifier resolves to a typedef-name or a template 10679 type-parameter, the elaborated-type-specifier is ill-formed. 10680 10681 In other words, the only legitimate declaration to use in the 10682 elaborated type specifier is the implicit typedef created when 10683 the type is declared. */ 10684 else if (!DECL_IMPLICIT_TYPEDEF_P (decl) 10685 && !DECL_SELF_REFERENCE_P (decl) 10686 && tag_code != typename_type) 10687 { 10688 error ("using typedef-name %qD after %qs", decl, tag_name (tag_code)); 10689 error ("%q+D has a previous declaration here", decl); 10690 return error_mark_node; 10691 } 10692 else if (TREE_CODE (type) != RECORD_TYPE 10693 && TREE_CODE (type) != UNION_TYPE 10694 && tag_code != enum_type 10695 && tag_code != typename_type) 10696 { 10697 error ("%qT referred to as %qs", type, tag_name (tag_code)); 10698 error ("%q+T has a previous declaration here", type); 10699 return error_mark_node; 10700 } 10701 else if (TREE_CODE (type) != ENUMERAL_TYPE 10702 && tag_code == enum_type) 10703 { 10704 error ("%qT referred to as enum", type); 10705 error ("%q+T has a previous declaration here", type); 10706 return error_mark_node; 10707 } 10708 else if (!allow_template_p 10709 && TREE_CODE (type) == RECORD_TYPE 10710 && CLASSTYPE_IS_TEMPLATE (type)) 10711 { 10712 /* If a class template appears as elaborated type specifier 10713 without a template header such as: 10714 10715 template <class T> class C {}; 10716 void f(class C); // No template header here 10717 10718 then the required template argument is missing. */ 10719 error ("template argument required for %<%s %T%>", 10720 tag_name (tag_code), 10721 DECL_NAME (CLASSTYPE_TI_TEMPLATE (type))); 10722 return error_mark_node; 10723 } 10724 10725 return type; 10726 } 10727 10728 /* Lookup NAME in elaborate type specifier in scope according to 10729 SCOPE and issue diagnostics if necessary. 10730 Return *_TYPE node upon success, NULL_TREE when the NAME is not 10731 found, and ERROR_MARK_NODE for type error. */ 10732 10733 static tree 10734 lookup_and_check_tag (enum tag_types tag_code, tree name, 10735 tag_scope scope, bool template_header_p) 10736 { 10737 tree t; 10738 tree decl; 10739 if (scope == ts_global) 10740 { 10741 /* First try ordinary name lookup, ignoring hidden class name 10742 injected via friend declaration. */ 10743 decl = lookup_name_prefer_type (name, 2); 10744 /* If that fails, the name will be placed in the smallest 10745 non-class, non-function-prototype scope according to 3.3.1/5. 10746 We may already have a hidden name declared as friend in this 10747 scope. So lookup again but not ignoring hidden names. 10748 If we find one, that name will be made visible rather than 10749 creating a new tag. */ 10750 if (!decl) 10751 decl = lookup_type_scope (name, ts_within_enclosing_non_class); 10752 } 10753 else 10754 decl = lookup_type_scope (name, scope); 10755 10756 if (decl && DECL_CLASS_TEMPLATE_P (decl)) 10757 decl = DECL_TEMPLATE_RESULT (decl); 10758 10759 if (decl && TREE_CODE (decl) == TYPE_DECL) 10760 { 10761 /* Look for invalid nested type: 10762 class C { 10763 class C {}; 10764 }; */ 10765 if (scope == ts_current && DECL_SELF_REFERENCE_P (decl)) 10766 { 10767 error ("%qD has the same name as the class in which it is " 10768 "declared", 10769 decl); 10770 return error_mark_node; 10771 } 10772 10773 /* Two cases we need to consider when deciding if a class 10774 template is allowed as an elaborated type specifier: 10775 1. It is a self reference to its own class. 10776 2. It comes with a template header. 10777 10778 For example: 10779 10780 template <class T> class C { 10781 class C *c1; // DECL_SELF_REFERENCE_P is true 10782 class D; 10783 }; 10784 template <class U> class C; // template_header_p is true 10785 template <class T> class C<T>::D { 10786 class C *c2; // DECL_SELF_REFERENCE_P is true 10787 }; */ 10788 10789 t = check_elaborated_type_specifier (tag_code, 10790 decl, 10791 template_header_p 10792 | DECL_SELF_REFERENCE_P (decl)); 10793 return t; 10794 } 10795 else if (decl && TREE_CODE (decl) == TREE_LIST) 10796 { 10797 error ("reference to %qD is ambiguous", name); 10798 print_candidates (decl); 10799 return error_mark_node; 10800 } 10801 else 10802 return NULL_TREE; 10803 } 10804 10805 /* Get the struct, enum or union (TAG_CODE says which) with tag NAME. 10806 Define the tag as a forward-reference if it is not defined. 10807 10808 If a declaration is given, process it here, and report an error if 10809 multiple declarations are not identical. 10810 10811 SCOPE is TS_CURRENT when this is also a definition. Only look in 10812 the current frame for the name (since C++ allows new names in any 10813 scope.) It is TS_WITHIN_ENCLOSING_NON_CLASS if this is a friend 10814 declaration. Only look beginning from the current scope outward up 10815 till the nearest non-class scope. Otherwise it is TS_GLOBAL. 10816 10817 TEMPLATE_HEADER_P is true when this declaration is preceded by 10818 a set of template parameters. */ 10819 10820 tree 10821 xref_tag (enum tag_types tag_code, tree name, 10822 tag_scope scope, bool template_header_p) 10823 { 10824 enum tree_code code; 10825 tree t; 10826 tree context = NULL_TREE; 10827 10828 timevar_push (TV_NAME_LOOKUP); 10829 10830 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); 10831 10832 switch (tag_code) 10833 { 10834 case record_type: 10835 case class_type: 10836 code = RECORD_TYPE; 10837 break; 10838 case union_type: 10839 code = UNION_TYPE; 10840 break; 10841 case enum_type: 10842 code = ENUMERAL_TYPE; 10843 break; 10844 default: 10845 gcc_unreachable (); 10846 } 10847 10848 /* In case of anonymous name, xref_tag is only called to 10849 make type node and push name. Name lookup is not required. */ 10850 if (ANON_AGGRNAME_P (name)) 10851 t = NULL_TREE; 10852 else 10853 t = lookup_and_check_tag (tag_code, name, 10854 scope, template_header_p); 10855 10856 if (t == error_mark_node) 10857 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); 10858 10859 if (scope != ts_current && t && current_class_type 10860 && template_class_depth (current_class_type) 10861 && template_header_p) 10862 { 10863 /* Since SCOPE is not TS_CURRENT, we are not looking at a 10864 definition of this tag. Since, in addition, we are currently 10865 processing a (member) template declaration of a template 10866 class, we must be very careful; consider: 10867 10868 template <class X> 10869 struct S1 10870 10871 template <class U> 10872 struct S2 10873 { template <class V> 10874 friend struct S1; }; 10875 10876 Here, the S2::S1 declaration should not be confused with the 10877 outer declaration. In particular, the inner version should 10878 have a template parameter of level 2, not level 1. This 10879 would be particularly important if the member declaration 10880 were instead: 10881 10882 template <class V = U> friend struct S1; 10883 10884 say, when we should tsubst into `U' when instantiating 10885 S2. On the other hand, when presented with: 10886 10887 template <class T> 10888 struct S1 { 10889 template <class U> 10890 struct S2 {}; 10891 template <class U> 10892 friend struct S2; 10893 }; 10894 10895 we must find the inner binding eventually. We 10896 accomplish this by making sure that the new type we 10897 create to represent this declaration has the right 10898 TYPE_CONTEXT. */ 10899 context = TYPE_CONTEXT (t); 10900 t = NULL_TREE; 10901 } 10902 10903 if (! t) 10904 { 10905 /* If no such tag is yet defined, create a forward-reference node 10906 and record it as the "definition". 10907 When a real declaration of this type is found, 10908 the forward-reference will be altered into a real type. */ 10909 if (code == ENUMERAL_TYPE) 10910 { 10911 error ("use of enum %q#D without previous declaration", name); 10912 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); 10913 } 10914 else 10915 { 10916 t = make_class_type (code); 10917 TYPE_CONTEXT (t) = context; 10918 t = pushtag (name, t, scope); 10919 } 10920 } 10921 else 10922 { 10923 if (template_header_p && MAYBE_CLASS_TYPE_P (t)) 10924 { 10925 if (!redeclare_class_template (t, current_template_parms)) 10926 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); 10927 } 10928 else if (!processing_template_decl 10929 && CLASS_TYPE_P (t) 10930 && CLASSTYPE_IS_TEMPLATE (t)) 10931 { 10932 error ("redeclaration of %qT as a non-template", t); 10933 error ("previous declaration %q+D", t); 10934 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node); 10935 } 10936 10937 /* Make injected friend class visible. */ 10938 if (scope != ts_within_enclosing_non_class 10939 && hidden_name_p (TYPE_NAME (t))) 10940 { 10941 DECL_ANTICIPATED (TYPE_NAME (t)) = 0; 10942 DECL_FRIEND_P (TYPE_NAME (t)) = 0; 10943 10944 if (TYPE_TEMPLATE_INFO (t)) 10945 { 10946 DECL_ANTICIPATED (TYPE_TI_TEMPLATE (t)) = 0; 10947 DECL_FRIEND_P (TYPE_TI_TEMPLATE (t)) = 0; 10948 } 10949 } 10950 } 10951 10952 POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t); 10953 } 10954 10955 tree 10956 xref_tag_from_type (tree old, tree id, tag_scope scope) 10957 { 10958 enum tag_types tag_kind; 10959 10960 if (TREE_CODE (old) == RECORD_TYPE) 10961 tag_kind = (CLASSTYPE_DECLARED_CLASS (old) ? class_type : record_type); 10962 else 10963 tag_kind = union_type; 10964 10965 if (id == NULL_TREE) 10966 id = TYPE_IDENTIFIER (old); 10967 10968 return xref_tag (tag_kind, id, scope, false); 10969 } 10970 10971 /* Create the binfo hierarchy for REF with (possibly NULL) base list 10972 BASE_LIST. For each element on BASE_LIST the TREE_PURPOSE is an 10973 access_* node, and the TREE_VALUE is the type of the base-class. 10974 Non-NULL TREE_TYPE indicates virtual inheritance. 10975 10976 Returns true if the binfo hierarchy was successfully created, 10977 false if an error was detected. */ 10978 10979 bool 10980 xref_basetypes (tree ref, tree base_list) 10981 { 10982 tree *basep; 10983 tree binfo, base_binfo; 10984 unsigned max_vbases = 0; /* Maximum direct & indirect virtual bases. */ 10985 unsigned max_bases = 0; /* Maximum direct bases. */ 10986 int i; 10987 tree default_access; 10988 tree igo_prev; /* Track Inheritance Graph Order. */ 10989 10990 if (ref == error_mark_node) 10991 return false; 10992 10993 /* The base of a derived class is private by default, all others are 10994 public. */ 10995 default_access = (TREE_CODE (ref) == RECORD_TYPE 10996 && CLASSTYPE_DECLARED_CLASS (ref) 10997 ? access_private_node : access_public_node); 10998 10999 /* First, make sure that any templates in base-classes are 11000 instantiated. This ensures that if we call ourselves recursively 11001 we do not get confused about which classes are marked and which 11002 are not. */ 11003 basep = &base_list; 11004 while (*basep) 11005 { 11006 tree basetype = TREE_VALUE (*basep); 11007 11008 if (!(processing_template_decl && uses_template_parms (basetype)) 11009 && !complete_type_or_else (basetype, NULL)) 11010 /* An incomplete type. Remove it from the list. */ 11011 *basep = TREE_CHAIN (*basep); 11012 else 11013 { 11014 max_bases++; 11015 if (TREE_TYPE (*basep)) 11016 max_vbases++; 11017 if (CLASS_TYPE_P (basetype)) 11018 max_vbases += VEC_length (tree, CLASSTYPE_VBASECLASSES (basetype)); 11019 basep = &TREE_CHAIN (*basep); 11020 } 11021 } 11022 11023 TYPE_MARKED_P (ref) = 1; 11024 11025 /* The binfo slot should be empty, unless this is an (ill-formed) 11026 redefinition. */ 11027 gcc_assert (!TYPE_BINFO (ref) || TYPE_SIZE (ref)); 11028 gcc_assert (TYPE_MAIN_VARIANT (ref) == ref); 11029 11030 binfo = make_tree_binfo (max_bases); 11031 11032 TYPE_BINFO (ref) = binfo; 11033 BINFO_OFFSET (binfo) = size_zero_node; 11034 BINFO_TYPE (binfo) = ref; 11035 11036 /* Apply base-class info set up to the variants of this type. */ 11037 fixup_type_variants (ref); 11038 11039 if (max_bases) 11040 { 11041 BINFO_BASE_ACCESSES (binfo) = VEC_alloc (tree, gc, max_bases); 11042 /* An aggregate cannot have baseclasses. */ 11043 CLASSTYPE_NON_AGGREGATE (ref) = 1; 11044 11045 if (TREE_CODE (ref) == UNION_TYPE) 11046 { 11047 error ("derived union %qT invalid", ref); 11048 return false; 11049 } 11050 } 11051 11052 if (max_bases > 1) 11053 { 11054 if (TYPE_FOR_JAVA (ref)) 11055 { 11056 error ("Java class %qT cannot have multiple bases", ref); 11057 return false; 11058 } 11059 } 11060 11061 if (max_vbases) 11062 { 11063 CLASSTYPE_VBASECLASSES (ref) = VEC_alloc (tree, gc, max_vbases); 11064 11065 if (TYPE_FOR_JAVA (ref)) 11066 { 11067 error ("Java class %qT cannot have virtual bases", ref); 11068 return false; 11069 } 11070 } 11071 11072 for (igo_prev = binfo; base_list; base_list = TREE_CHAIN (base_list)) 11073 { 11074 tree access = TREE_PURPOSE (base_list); 11075 int via_virtual = TREE_TYPE (base_list) != NULL_TREE; 11076 tree basetype = TREE_VALUE (base_list); 11077 11078 if (access == access_default_node) 11079 access = default_access; 11080 11081 if (PACK_EXPANSION_P (basetype)) 11082 basetype = PACK_EXPANSION_PATTERN (basetype); 11083 if (TREE_CODE (basetype) == TYPE_DECL) 11084 basetype = TREE_TYPE (basetype); 11085 if (!MAYBE_CLASS_TYPE_P (basetype) || TREE_CODE (basetype) == UNION_TYPE) 11086 { 11087 error ("base type %qT fails to be a struct or class type", 11088 basetype); 11089 return false; 11090 } 11091 11092 if (TYPE_FOR_JAVA (basetype) && (current_lang_depth () == 0)) 11093 TYPE_FOR_JAVA (ref) = 1; 11094 11095 base_binfo = NULL_TREE; 11096 if (CLASS_TYPE_P (basetype) && !dependent_type_p (basetype)) 11097 { 11098 base_binfo = TYPE_BINFO (basetype); 11099 /* The original basetype could have been a typedef'd type. */ 11100 basetype = BINFO_TYPE (base_binfo); 11101 11102 /* Inherit flags from the base. */ 11103 TYPE_HAS_NEW_OPERATOR (ref) 11104 |= TYPE_HAS_NEW_OPERATOR (basetype); 11105 TYPE_HAS_ARRAY_NEW_OPERATOR (ref) 11106 |= TYPE_HAS_ARRAY_NEW_OPERATOR (basetype); 11107 TYPE_GETS_DELETE (ref) |= TYPE_GETS_DELETE (basetype); 11108 TYPE_HAS_CONVERSION (ref) |= TYPE_HAS_CONVERSION (basetype); 11109 CLASSTYPE_DIAMOND_SHAPED_P (ref) 11110 |= CLASSTYPE_DIAMOND_SHAPED_P (basetype); 11111 CLASSTYPE_REPEATED_BASE_P (ref) 11112 |= CLASSTYPE_REPEATED_BASE_P (basetype); 11113 } 11114 11115 /* We must do this test after we've seen through a typedef 11116 type. */ 11117 if (TYPE_MARKED_P (basetype)) 11118 { 11119 if (basetype == ref) 11120 error ("recursive type %qT undefined", basetype); 11121 else 11122 error ("duplicate base type %qT invalid", basetype); 11123 return false; 11124 } 11125 11126 if (PACK_EXPANSION_P (TREE_VALUE (base_list))) 11127 /* Regenerate the pack expansion for the bases. */ 11128 basetype = make_pack_expansion (basetype); 11129 11130 TYPE_MARKED_P (basetype) = 1; 11131 11132 base_binfo = copy_binfo (base_binfo, basetype, ref, 11133 &igo_prev, via_virtual); 11134 if (!BINFO_INHERITANCE_CHAIN (base_binfo)) 11135 BINFO_INHERITANCE_CHAIN (base_binfo) = binfo; 11136 11137 BINFO_BASE_APPEND (binfo, base_binfo); 11138 BINFO_BASE_ACCESS_APPEND (binfo, access); 11139 } 11140 11141 if (VEC_space (tree, CLASSTYPE_VBASECLASSES (ref), 1)) 11142 /* If we have space in the vbase vector, we must have shared at 11143 least one of them, and are therefore diamond shaped. */ 11144 CLASSTYPE_DIAMOND_SHAPED_P (ref) = 1; 11145 11146 /* Unmark all the types. */ 11147 for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++) 11148 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 0; 11149 TYPE_MARKED_P (ref) = 0; 11150 11151 /* Now see if we have a repeated base type. */ 11152 if (!CLASSTYPE_REPEATED_BASE_P (ref)) 11153 { 11154 for (base_binfo = binfo; base_binfo; 11155 base_binfo = TREE_CHAIN (base_binfo)) 11156 { 11157 if (TYPE_MARKED_P (BINFO_TYPE (base_binfo))) 11158 { 11159 CLASSTYPE_REPEATED_BASE_P (ref) = 1; 11160 break; 11161 } 11162 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 1; 11163 } 11164 for (base_binfo = binfo; base_binfo; 11165 base_binfo = TREE_CHAIN (base_binfo)) 11166 if (TYPE_MARKED_P (BINFO_TYPE (base_binfo))) 11167 TYPE_MARKED_P (BINFO_TYPE (base_binfo)) = 0; 11168 else 11169 break; 11170 } 11171 11172 return true; 11173 } 11174 11175 11176 /* Begin compiling the definition of an enumeration type. 11177 NAME is its name, 11178 11179 UNDERLYING_TYPE is the type that will be used as the storage for 11180 the enumeration type. This should be NULL_TREE if no storage type 11181 was specified. 11182 11183 SCOPED_ENUM_P is true if this is a scoped enumeration type. 11184 11185 Returns the type object, as yet incomplete. 11186 Also records info about it so that build_enumerator 11187 may be used to declare the individual values as they are read. */ 11188 11189 tree 11190 start_enum (tree name, tree underlying_type, bool scoped_enum_p) 11191 { 11192 tree enumtype; 11193 11194 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); 11195 11196 /* If this is the real definition for a previous forward reference, 11197 fill in the contents in the same object that used to be the 11198 forward reference. */ 11199 11200 enumtype = lookup_and_check_tag (enum_type, name, 11201 /*tag_scope=*/ts_current, 11202 /*template_header_p=*/false); 11203 11204 if (enumtype != NULL_TREE && TREE_CODE (enumtype) == ENUMERAL_TYPE) 11205 { 11206 error_at (input_location, "multiple definition of %q#T", enumtype); 11207 error_at (DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (enumtype)), 11208 "previous definition here"); 11209 /* Clear out TYPE_VALUES, and start again. */ 11210 TYPE_VALUES (enumtype) = NULL_TREE; 11211 } 11212 else 11213 { 11214 /* In case of error, make a dummy enum to allow parsing to 11215 continue. */ 11216 if (enumtype == error_mark_node) 11217 name = make_anon_name (); 11218 11219 enumtype = cxx_make_type (ENUMERAL_TYPE); 11220 enumtype = pushtag (name, enumtype, /*tag_scope=*/ts_current); 11221 } 11222 11223 if (enumtype == error_mark_node) 11224 return enumtype; 11225 11226 if (scoped_enum_p) 11227 { 11228 SET_SCOPED_ENUM_P (enumtype, 1); 11229 begin_scope (sk_scoped_enum, enumtype); 11230 11231 /* [C++0x dcl.enum]p5: 11232 11233 If not explicitly specified, the underlying type of a scoped 11234 enumeration type is int. */ 11235 if (!underlying_type) 11236 underlying_type = integer_type_node; 11237 } 11238 11239 if (underlying_type) 11240 { 11241 if (CP_INTEGRAL_TYPE_P (underlying_type)) 11242 { 11243 TYPE_MIN_VALUE (enumtype) = TYPE_MIN_VALUE (underlying_type); 11244 TYPE_MAX_VALUE (enumtype) = TYPE_MAX_VALUE (underlying_type); 11245 TYPE_SIZE (enumtype) = TYPE_SIZE (underlying_type); 11246 TYPE_SIZE_UNIT (enumtype) = TYPE_SIZE_UNIT (underlying_type); 11247 SET_TYPE_MODE (enumtype, TYPE_MODE (underlying_type)); 11248 TYPE_PRECISION (enumtype) = TYPE_PRECISION (underlying_type); 11249 TYPE_ALIGN (enumtype) = TYPE_ALIGN (underlying_type); 11250 TYPE_USER_ALIGN (enumtype) = TYPE_USER_ALIGN (underlying_type); 11251 TYPE_UNSIGNED (enumtype) = TYPE_UNSIGNED (underlying_type); 11252 ENUM_UNDERLYING_TYPE (enumtype) = underlying_type; 11253 } 11254 else if (!dependent_type_p (underlying_type)) 11255 error ("underlying type %<%T%> of %<%T%> must be an integral type", 11256 underlying_type, enumtype); 11257 } 11258 11259 return enumtype; 11260 } 11261 11262 /* After processing and defining all the values of an enumeration type, 11263 install their decls in the enumeration type and finish it off. 11264 ENUMTYPE is the type object and VALUES a list of name-value pairs. */ 11265 11266 void 11267 finish_enum (tree enumtype) 11268 { 11269 tree values; 11270 tree decl; 11271 tree minnode; 11272 tree maxnode; 11273 tree value; 11274 tree t; 11275 bool unsignedp; 11276 bool use_short_enum; 11277 int lowprec; 11278 int highprec; 11279 int precision; 11280 unsigned int itk; 11281 tree underlying_type = NULL_TREE; 11282 bool fixed_underlying_type_p 11283 = ENUM_UNDERLYING_TYPE (enumtype) != NULL_TREE; 11284 11285 /* We built up the VALUES in reverse order. */ 11286 TYPE_VALUES (enumtype) = nreverse (TYPE_VALUES (enumtype)); 11287 11288 /* For an enum defined in a template, just set the type of the values; 11289 all further processing is postponed until the template is 11290 instantiated. We need to set the type so that tsubst of a CONST_DECL 11291 works. */ 11292 if (processing_template_decl) 11293 { 11294 for (values = TYPE_VALUES (enumtype); 11295 values; 11296 values = TREE_CHAIN (values)) 11297 TREE_TYPE (TREE_VALUE (values)) = enumtype; 11298 if (at_function_scope_p ()) 11299 add_stmt (build_min (TAG_DEFN, enumtype)); 11300 if (SCOPED_ENUM_P (enumtype)) 11301 finish_scope (); 11302 return; 11303 } 11304 11305 /* Determine the minimum and maximum values of the enumerators. */ 11306 if (TYPE_VALUES (enumtype)) 11307 { 11308 minnode = maxnode = NULL_TREE; 11309 11310 for (values = TYPE_VALUES (enumtype); 11311 values; 11312 values = TREE_CHAIN (values)) 11313 { 11314 decl = TREE_VALUE (values); 11315 11316 /* [dcl.enum]: Following the closing brace of an enum-specifier, 11317 each enumerator has the type of its enumeration. Prior to the 11318 closing brace, the type of each enumerator is the type of its 11319 initializing value. */ 11320 TREE_TYPE (decl) = enumtype; 11321 11322 /* Update the minimum and maximum values, if appropriate. */ 11323 value = DECL_INITIAL (decl); 11324 if (value == error_mark_node) 11325 value = integer_zero_node; 11326 /* Figure out what the minimum and maximum values of the 11327 enumerators are. */ 11328 if (!minnode) 11329 minnode = maxnode = value; 11330 else if (tree_int_cst_lt (maxnode, value)) 11331 maxnode = value; 11332 else if (tree_int_cst_lt (value, minnode)) 11333 minnode = value; 11334 } 11335 } 11336 else 11337 /* [dcl.enum] 11338 11339 If the enumerator-list is empty, the underlying type is as if 11340 the enumeration had a single enumerator with value 0. */ 11341 minnode = maxnode = integer_zero_node; 11342 11343 /* Compute the number of bits require to represent all values of the 11344 enumeration. We must do this before the type of MINNODE and 11345 MAXNODE are transformed, since tree_int_cst_min_precision relies 11346 on the TREE_TYPE of the value it is passed. */ 11347 unsignedp = tree_int_cst_sgn (minnode) >= 0; 11348 lowprec = tree_int_cst_min_precision (minnode, unsignedp); 11349 highprec = tree_int_cst_min_precision (maxnode, unsignedp); 11350 precision = MAX (lowprec, highprec); 11351 11352 if (!fixed_underlying_type_p) 11353 { 11354 /* Determine the underlying type of the enumeration. 11355 11356 [dcl.enum] 11357 11358 The underlying type of an enumeration is an integral type that 11359 can represent all the enumerator values defined in the 11360 enumeration. It is implementation-defined which integral type is 11361 used as the underlying type for an enumeration except that the 11362 underlying type shall not be larger than int unless the value of 11363 an enumerator cannot fit in an int or unsigned int. 11364 11365 We use "int" or an "unsigned int" as the underlying type, even if 11366 a smaller integral type would work, unless the user has 11367 explicitly requested that we use the smallest possible type. The 11368 user can request that for all enumerations with a command line 11369 flag, or for just one enumeration with an attribute. */ 11370 11371 use_short_enum = flag_short_enums 11372 || lookup_attribute ("packed", TYPE_ATTRIBUTES (enumtype)); 11373 11374 for (itk = (use_short_enum ? itk_char : itk_int); 11375 itk != itk_none; 11376 itk++) 11377 { 11378 underlying_type = integer_types[itk]; 11379 if (TYPE_PRECISION (underlying_type) >= precision 11380 && TYPE_UNSIGNED (underlying_type) == unsignedp) 11381 break; 11382 } 11383 if (itk == itk_none) 11384 { 11385 /* DR 377 11386 11387 IF no integral type can represent all the enumerator values, the 11388 enumeration is ill-formed. */ 11389 error ("no integral type can represent all of the enumerator values " 11390 "for %qT", enumtype); 11391 precision = TYPE_PRECISION (long_long_integer_type_node); 11392 underlying_type = integer_types[itk_unsigned_long_long]; 11393 } 11394 11395 /* [dcl.enum] 11396 11397 The value of sizeof() applied to an enumeration type, an object 11398 of an enumeration type, or an enumerator, is the value of sizeof() 11399 applied to the underlying type. */ 11400 TYPE_SIZE (enumtype) = TYPE_SIZE (underlying_type); 11401 TYPE_SIZE_UNIT (enumtype) = TYPE_SIZE_UNIT (underlying_type); 11402 SET_TYPE_MODE (enumtype, TYPE_MODE (underlying_type)); 11403 TYPE_ALIGN (enumtype) = TYPE_ALIGN (underlying_type); 11404 TYPE_USER_ALIGN (enumtype) = TYPE_USER_ALIGN (underlying_type); 11405 TYPE_UNSIGNED (enumtype) = TYPE_UNSIGNED (underlying_type); 11406 11407 /* Set the underlying type of the enumeration type to the 11408 computed enumeration type, restricted to the enumerator 11409 values. */ 11410 ENUM_UNDERLYING_TYPE (enumtype) 11411 = build_distinct_type_copy (underlying_type); 11412 set_min_and_max_values_for_integral_type 11413 (ENUM_UNDERLYING_TYPE (enumtype), precision, unsignedp); 11414 } 11415 else 11416 underlying_type = ENUM_UNDERLYING_TYPE (enumtype); 11417 11418 /* Compute the minimum and maximum values for the type. 11419 11420 [dcl.enum] 11421 11422 For an enumeration where emin is the smallest enumerator and emax 11423 is the largest, the values of the enumeration are the values of the 11424 underlying type in the range bmin to bmax, where bmin and bmax are, 11425 respectively, the smallest and largest values of the smallest bit- 11426 field that can store emin and emax. */ 11427 11428 /* The middle-end currently assumes that types with TYPE_PRECISION 11429 narrower than their underlying type are suitably zero or sign 11430 extended to fill their mode. g++ doesn't make these guarantees. 11431 Until the middle-end can represent such paradoxical types, we 11432 set the TYPE_PRECISION to the width of the underlying type. */ 11433 TYPE_PRECISION (enumtype) = TYPE_PRECISION (underlying_type); 11434 11435 set_min_and_max_values_for_integral_type (enumtype, precision, unsignedp); 11436 11437 /* Convert each of the enumerators to the type of the underlying 11438 type of the enumeration. */ 11439 for (values = TYPE_VALUES (enumtype); values; values = TREE_CHAIN (values)) 11440 { 11441 location_t saved_location; 11442 11443 decl = TREE_VALUE (values); 11444 saved_location = input_location; 11445 input_location = DECL_SOURCE_LOCATION (decl); 11446 if (fixed_underlying_type_p) 11447 /* If the enumeration type has a fixed underlying type, we 11448 already checked all of the enumerator values. */ 11449 value = DECL_INITIAL (decl); 11450 else 11451 value = perform_implicit_conversion (underlying_type, 11452 DECL_INITIAL (decl), 11453 tf_warning_or_error); 11454 input_location = saved_location; 11455 11456 /* Do not clobber shared ints. */ 11457 value = copy_node (value); 11458 11459 TREE_TYPE (value) = enumtype; 11460 DECL_INITIAL (decl) = value; 11461 } 11462 11463 /* Fix up all variant types of this enum type. */ 11464 for (t = TYPE_MAIN_VARIANT (enumtype); t; t = TYPE_NEXT_VARIANT (t)) 11465 { 11466 TYPE_VALUES (t) = TYPE_VALUES (enumtype); 11467 TYPE_MIN_VALUE (t) = TYPE_MIN_VALUE (enumtype); 11468 TYPE_MAX_VALUE (t) = TYPE_MAX_VALUE (enumtype); 11469 TYPE_SIZE (t) = TYPE_SIZE (enumtype); 11470 TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (enumtype); 11471 SET_TYPE_MODE (t, TYPE_MODE (enumtype)); 11472 TYPE_PRECISION (t) = TYPE_PRECISION (enumtype); 11473 TYPE_ALIGN (t) = TYPE_ALIGN (enumtype); 11474 TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (enumtype); 11475 TYPE_UNSIGNED (t) = TYPE_UNSIGNED (enumtype); 11476 ENUM_UNDERLYING_TYPE (t) = ENUM_UNDERLYING_TYPE (enumtype); 11477 } 11478 11479 /* Finish up the scope of a scoped enumeration. */ 11480 if (SCOPED_ENUM_P (enumtype)) 11481 finish_scope (); 11482 11483 /* Finish debugging output for this type. */ 11484 rest_of_type_compilation (enumtype, namespace_bindings_p ()); 11485 } 11486 11487 /* Build and install a CONST_DECL for an enumeration constant of the 11488 enumeration type ENUMTYPE whose NAME and VALUE (if any) are provided. 11489 Assignment of sequential values by default is handled here. */ 11490 11491 void 11492 build_enumerator (tree name, tree value, tree enumtype) 11493 { 11494 tree decl; 11495 tree context; 11496 tree type; 11497 11498 /* If the VALUE was erroneous, pretend it wasn't there; that will 11499 result in the enum being assigned the next value in sequence. */ 11500 if (value == error_mark_node) 11501 value = NULL_TREE; 11502 11503 /* Remove no-op casts from the value. */ 11504 if (value) 11505 STRIP_TYPE_NOPS (value); 11506 11507 if (! processing_template_decl) 11508 { 11509 /* Validate and default VALUE. */ 11510 if (value != NULL_TREE) 11511 { 11512 value = integral_constant_value (value); 11513 11514 if (TREE_CODE (value) == INTEGER_CST) 11515 { 11516 value = perform_integral_promotions (value); 11517 constant_expression_warning (value); 11518 } 11519 else 11520 { 11521 error ("enumerator value for %qD is not an integer constant", name); 11522 value = NULL_TREE; 11523 } 11524 } 11525 11526 /* Default based on previous value. */ 11527 if (value == NULL_TREE) 11528 { 11529 if (TYPE_VALUES (enumtype)) 11530 { 11531 HOST_WIDE_INT hi; 11532 unsigned HOST_WIDE_INT lo; 11533 tree prev_value; 11534 bool overflowed; 11535 11536 /* The next value is the previous value plus one. 11537 add_double doesn't know the type of the target expression, 11538 so we must check with int_fits_type_p as well. */ 11539 prev_value = DECL_INITIAL (TREE_VALUE (TYPE_VALUES (enumtype))); 11540 if (error_operand_p (prev_value)) 11541 value = error_mark_node; 11542 else 11543 { 11544 overflowed = add_double (TREE_INT_CST_LOW (prev_value), 11545 TREE_INT_CST_HIGH (prev_value), 11546 1, 0, &lo, &hi); 11547 value = build_int_cst_wide (TREE_TYPE (prev_value), lo, hi); 11548 overflowed 11549 |= !int_fits_type_p (value, TREE_TYPE (prev_value)); 11550 11551 if (overflowed) 11552 { 11553 error ("overflow in enumeration values at %qD", name); 11554 value = error_mark_node; 11555 } 11556 } 11557 } 11558 else 11559 value = integer_zero_node; 11560 } 11561 11562 /* Remove no-op casts from the value. */ 11563 STRIP_TYPE_NOPS (value); 11564 11565 /* If the underlying type of the enum is fixed, check whether 11566 the enumerator values fits in the underlying type. If it 11567 does not fit, the program is ill-formed [C++0x dcl.enum]. */ 11568 if (ENUM_UNDERLYING_TYPE (enumtype) 11569 && value 11570 && TREE_CODE (value) == INTEGER_CST 11571 && !int_fits_type_p (value, ENUM_UNDERLYING_TYPE (enumtype))) 11572 { 11573 error ("enumerator value %E is too large for underlying type %<%T%>", 11574 value, ENUM_UNDERLYING_TYPE (enumtype)); 11575 11576 /* Silently convert the value so that we can continue. */ 11577 value = perform_implicit_conversion (ENUM_UNDERLYING_TYPE (enumtype), 11578 value, tf_none); 11579 } 11580 } 11581 11582 /* C++ associates enums with global, function, or class declarations. */ 11583 context = current_scope (); 11584 11585 /* Build the actual enumeration constant. Note that the enumeration 11586 constants have the underlying type of the enum (if it is fixed) 11587 or the type of their initializer (if the underlying type of the 11588 enum is not fixed): 11589 11590 [ C++0x dcl.enum ] 11591 11592 If the underlying type is fixed, the type of each enumerator 11593 prior to the closing brace is the underlying type; if the 11594 initializing value of an enumerator cannot be represented by 11595 the underlying type, the program is ill-formed. If the 11596 underlying type is not fixed, the type of each enumerator is 11597 the type of its initializing value. 11598 11599 If the underlying type is not fixed, it will be computed by 11600 finish_enum and we will reset the type of this enumerator. Of 11601 course, if we're processing a template, there may be no value. */ 11602 type = value ? TREE_TYPE (value) : NULL_TREE; 11603 11604 if (context && context == current_class_type) 11605 /* This enum declaration is local to the class. We need the full 11606 lang_decl so that we can record DECL_CLASS_CONTEXT, for example. */ 11607 decl = build_lang_decl (CONST_DECL, name, type); 11608 else 11609 /* It's a global enum, or it's local to a function. (Note local to 11610 a function could mean local to a class method. */ 11611 decl = build_decl (input_location, CONST_DECL, name, type); 11612 11613 DECL_CONTEXT (decl) = FROB_CONTEXT (context); 11614 TREE_CONSTANT (decl) = 1; 11615 TREE_READONLY (decl) = 1; 11616 DECL_INITIAL (decl) = value; 11617 11618 if (context && context == current_class_type && !SCOPED_ENUM_P (enumtype)) 11619 /* In something like `struct S { enum E { i = 7 }; };' we put `i' 11620 on the TYPE_FIELDS list for `S'. (That's so that you can say 11621 things like `S::i' later.) */ 11622 finish_member_declaration (decl); 11623 else 11624 pushdecl (decl); 11625 11626 /* Add this enumeration constant to the list for this type. */ 11627 TYPE_VALUES (enumtype) = tree_cons (name, decl, TYPE_VALUES (enumtype)); 11628 } 11629 11630 /* Look for an enumerator with the given NAME within the enumeration 11631 type ENUMTYPE. This routine is used primarily for qualified name 11632 lookup into an enumerator in C++0x, e.g., 11633 11634 enum class Color { Red, Green, Blue }; 11635 11636 Color color = Color::Red; 11637 11638 Returns the value corresponding to the enumerator, or 11639 NULL_TREE if no such enumerator was found. */ 11640 tree 11641 lookup_enumerator (tree enumtype, tree name) 11642 { 11643 tree e; 11644 gcc_assert (enumtype && TREE_CODE (enumtype) == ENUMERAL_TYPE); 11645 11646 e = purpose_member (name, TYPE_VALUES (enumtype)); 11647 return e? TREE_VALUE (e) : NULL_TREE; 11648 } 11649 11650 11651 /* We're defining DECL. Make sure that its type is OK. */ 11652 11653 static void 11654 check_function_type (tree decl, tree current_function_parms) 11655 { 11656 tree fntype = TREE_TYPE (decl); 11657 tree return_type = complete_type (TREE_TYPE (fntype)); 11658 11659 /* In a function definition, arg types must be complete. */ 11660 require_complete_types_for_parms (current_function_parms); 11661 11662 /* constexpr functions must have literal argument types and 11663 literal return type. */ 11664 validate_constexpr_fundecl (decl); 11665 11666 if (dependent_type_p (return_type)) 11667 return; 11668 if (!COMPLETE_OR_VOID_TYPE_P (return_type) 11669 || (TYPE_FOR_JAVA (return_type) && MAYBE_CLASS_TYPE_P (return_type))) 11670 { 11671 tree args = TYPE_ARG_TYPES (fntype); 11672 11673 if (!COMPLETE_OR_VOID_TYPE_P (return_type)) 11674 error ("return type %q#T is incomplete", return_type); 11675 else 11676 error ("return type has Java class type %q#T", return_type); 11677 11678 /* Make it return void instead. */ 11679 if (TREE_CODE (fntype) == METHOD_TYPE) 11680 fntype = build_method_type_directly (TREE_TYPE (TREE_VALUE (args)), 11681 void_type_node, 11682 TREE_CHAIN (args)); 11683 else 11684 fntype = build_function_type (void_type_node, args); 11685 fntype 11686 = build_exception_variant (fntype, 11687 TYPE_RAISES_EXCEPTIONS (TREE_TYPE (decl))); 11688 fntype = (cp_build_type_attribute_variant 11689 (fntype, TYPE_ATTRIBUTES (TREE_TYPE (decl)))); 11690 TREE_TYPE (decl) = fntype; 11691 } 11692 else 11693 abstract_virtuals_error (decl, TREE_TYPE (fntype)); 11694 } 11695 11696 /* Create the FUNCTION_DECL for a function definition. 11697 DECLSPECS and DECLARATOR are the parts of the declaration; 11698 they describe the function's name and the type it returns, 11699 but twisted together in a fashion that parallels the syntax of C. 11700 11701 FLAGS is a bitwise or of SF_PRE_PARSED (indicating that the 11702 DECLARATOR is really the DECL for the function we are about to 11703 process and that DECLSPECS should be ignored), SF_INCLASS_INLINE 11704 indicating that the function is an inline defined in-class. 11705 11706 This function creates a binding context for the function body 11707 as well as setting up the FUNCTION_DECL in current_function_decl. 11708 11709 For C++, we must first check whether that datum makes any sense. 11710 For example, "class A local_a(1,2);" means that variable local_a 11711 is an aggregate of type A, which should have a constructor 11712 applied to it with the argument list [1, 2]. 11713 11714 On entry, DECL_INITIAL (decl1) should be NULL_TREE or error_mark_node, 11715 or may be a BLOCK if the function has been defined previously 11716 in this translation unit. On exit, DECL_INITIAL (decl1) will be 11717 error_mark_node if the function has never been defined, or 11718 a BLOCK if the function has been defined somewhere. */ 11719 11720 void 11721 start_preparsed_function (tree decl1, tree attrs, int flags) 11722 { 11723 tree ctype = NULL_TREE; 11724 tree fntype; 11725 tree restype; 11726 int doing_friend = 0; 11727 struct cp_binding_level *bl; 11728 tree current_function_parms; 11729 struct c_fileinfo *finfo 11730 = get_fileinfo (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1))); 11731 bool honor_interface; 11732 11733 /* Sanity check. */ 11734 gcc_assert (TREE_CODE (TREE_VALUE (void_list_node)) == VOID_TYPE); 11735 gcc_assert (TREE_CHAIN (void_list_node) == NULL_TREE); 11736 11737 fntype = TREE_TYPE (decl1); 11738 if (TREE_CODE (fntype) == METHOD_TYPE) 11739 ctype = TYPE_METHOD_BASETYPE (fntype); 11740 11741 /* ISO C++ 11.4/5. A friend function defined in a class is in 11742 the (lexical) scope of the class in which it is defined. */ 11743 if (!ctype && DECL_FRIEND_P (decl1)) 11744 { 11745 ctype = DECL_FRIEND_CONTEXT (decl1); 11746 11747 /* CTYPE could be null here if we're dealing with a template; 11748 for example, `inline friend float foo()' inside a template 11749 will have no CTYPE set. */ 11750 if (ctype && TREE_CODE (ctype) != RECORD_TYPE) 11751 ctype = NULL_TREE; 11752 else 11753 doing_friend = 1; 11754 } 11755 11756 if (DECL_DECLARED_INLINE_P (decl1) 11757 && lookup_attribute ("noinline", attrs)) 11758 warning (0, "inline function %q+D given attribute noinline", decl1); 11759 11760 /* Handle gnu_inline attribute. */ 11761 if (GNU_INLINE_P (decl1)) 11762 { 11763 DECL_EXTERNAL (decl1) = 1; 11764 DECL_NOT_REALLY_EXTERN (decl1) = 0; 11765 DECL_INTERFACE_KNOWN (decl1) = 1; 11766 DECL_DISREGARD_INLINE_LIMITS (decl1) = 1; 11767 } 11768 11769 if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl1)) 11770 /* This is a constructor, we must ensure that any default args 11771 introduced by this definition are propagated to the clones 11772 now. The clones are used directly in overload resolution. */ 11773 adjust_clone_args (decl1); 11774 11775 /* Sometimes we don't notice that a function is a static member, and 11776 build a METHOD_TYPE for it. Fix that up now. */ 11777 if (ctype != NULL_TREE && DECL_STATIC_FUNCTION_P (decl1) 11778 && TREE_CODE (TREE_TYPE (decl1)) == METHOD_TYPE) 11779 { 11780 revert_static_member_fn (decl1); 11781 ctype = NULL_TREE; 11782 } 11783 11784 /* Set up current_class_type, and enter the scope of the class, if 11785 appropriate. */ 11786 if (ctype) 11787 push_nested_class (ctype); 11788 else if (DECL_STATIC_FUNCTION_P (decl1)) 11789 push_nested_class (DECL_CONTEXT (decl1)); 11790 11791 /* Now that we have entered the scope of the class, we must restore 11792 the bindings for any template parameters surrounding DECL1, if it 11793 is an inline member template. (Order is important; consider the 11794 case where a template parameter has the same name as a field of 11795 the class.) It is not until after this point that 11796 PROCESSING_TEMPLATE_DECL is guaranteed to be set up correctly. */ 11797 if (flags & SF_INCLASS_INLINE) 11798 maybe_begin_member_template_processing (decl1); 11799 11800 /* Effective C++ rule 15. */ 11801 if (warn_ecpp 11802 && DECL_OVERLOADED_OPERATOR_P (decl1) == NOP_EXPR 11803 && TREE_CODE (TREE_TYPE (fntype)) == VOID_TYPE) 11804 warning (OPT_Weffc__, "%<operator=%> should return a reference to %<*this%>"); 11805 11806 /* Make the init_value nonzero so pushdecl knows this is not tentative. 11807 error_mark_node is replaced below (in poplevel) with the BLOCK. */ 11808 if (!DECL_INITIAL (decl1)) 11809 DECL_INITIAL (decl1) = error_mark_node; 11810 11811 /* This function exists in static storage. 11812 (This does not mean `static' in the C sense!) */ 11813 TREE_STATIC (decl1) = 1; 11814 11815 /* We must call push_template_decl after current_class_type is set 11816 up. (If we are processing inline definitions after exiting a 11817 class scope, current_class_type will be NULL_TREE until set above 11818 by push_nested_class.) */ 11819 if (processing_template_decl) 11820 { 11821 /* FIXME: Handle error_mark_node more gracefully. */ 11822 tree newdecl1 = push_template_decl (decl1); 11823 if (newdecl1 != error_mark_node) 11824 decl1 = newdecl1; 11825 } 11826 11827 /* We are now in the scope of the function being defined. */ 11828 current_function_decl = decl1; 11829 11830 /* Save the parm names or decls from this function's declarator 11831 where store_parm_decls will find them. */ 11832 current_function_parms = DECL_ARGUMENTS (decl1); 11833 11834 /* Make sure the parameter and return types are reasonable. When 11835 you declare a function, these types can be incomplete, but they 11836 must be complete when you define the function. */ 11837 check_function_type (decl1, current_function_parms); 11838 11839 /* Build the return declaration for the function. */ 11840 restype = TREE_TYPE (fntype); 11841 if (DECL_RESULT (decl1) == NULL_TREE) 11842 { 11843 tree resdecl; 11844 11845 resdecl = build_decl (input_location, RESULT_DECL, 0, restype); 11846 DECL_ARTIFICIAL (resdecl) = 1; 11847 DECL_IGNORED_P (resdecl) = 1; 11848 DECL_RESULT (decl1) = resdecl; 11849 11850 cp_apply_type_quals_to_decl (cp_type_quals (restype), resdecl); 11851 } 11852 11853 /* Let the user know we're compiling this function. */ 11854 announce_function (decl1); 11855 11856 /* Record the decl so that the function name is defined. 11857 If we already have a decl for this name, and it is a FUNCTION_DECL, 11858 use the old decl. */ 11859 if (!processing_template_decl && !(flags & SF_PRE_PARSED)) 11860 { 11861 /* A specialization is not used to guide overload resolution. */ 11862 if (!DECL_FUNCTION_MEMBER_P (decl1) 11863 && !(DECL_USE_TEMPLATE (decl1) && 11864 PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl1)))) 11865 { 11866 tree olddecl = pushdecl (decl1); 11867 11868 if (olddecl == error_mark_node) 11869 /* If something went wrong when registering the declaration, 11870 use DECL1; we have to have a FUNCTION_DECL to use when 11871 parsing the body of the function. */ 11872 ; 11873 else 11874 { 11875 /* Otherwise, OLDDECL is either a previous declaration 11876 of the same function or DECL1 itself. */ 11877 11878 if (warn_missing_declarations 11879 && olddecl == decl1 11880 && !DECL_MAIN_P (decl1) 11881 && TREE_PUBLIC (decl1) 11882 && !DECL_DECLARED_INLINE_P (decl1)) 11883 { 11884 tree context; 11885 11886 /* Check whether DECL1 is in an anonymous 11887 namespace. */ 11888 for (context = DECL_CONTEXT (decl1); 11889 context; 11890 context = DECL_CONTEXT (context)) 11891 { 11892 if (TREE_CODE (context) == NAMESPACE_DECL 11893 && DECL_NAME (context) == NULL_TREE) 11894 break; 11895 } 11896 11897 if (context == NULL) 11898 warning (OPT_Wmissing_declarations, 11899 "no previous declaration for %q+D", decl1); 11900 } 11901 11902 decl1 = olddecl; 11903 } 11904 } 11905 else 11906 { 11907 /* We need to set the DECL_CONTEXT. */ 11908 if (!DECL_CONTEXT (decl1) && DECL_TEMPLATE_INFO (decl1)) 11909 DECL_CONTEXT (decl1) = DECL_CONTEXT (DECL_TI_TEMPLATE (decl1)); 11910 } 11911 fntype = TREE_TYPE (decl1); 11912 11913 /* If #pragma weak applies, mark the decl appropriately now. 11914 The pragma only applies to global functions. Because 11915 determining whether or not the #pragma applies involves 11916 computing the mangled name for the declaration, we cannot 11917 apply the pragma until after we have merged this declaration 11918 with any previous declarations; if the original declaration 11919 has a linkage specification, that specification applies to 11920 the definition as well, and may affect the mangled name. */ 11921 if (!DECL_CONTEXT (decl1)) 11922 maybe_apply_pragma_weak (decl1); 11923 } 11924 11925 /* Reset this in case the call to pushdecl changed it. */ 11926 current_function_decl = decl1; 11927 11928 gcc_assert (DECL_INITIAL (decl1)); 11929 11930 /* This function may already have been parsed, in which case just 11931 return; our caller will skip over the body without parsing. */ 11932 if (DECL_INITIAL (decl1) != error_mark_node) 11933 return; 11934 11935 /* Initialize RTL machinery. We cannot do this until 11936 CURRENT_FUNCTION_DECL and DECL_RESULT are set up. We do this 11937 even when processing a template; this is how we get 11938 CFUN set up, and our per-function variables initialized. 11939 FIXME factor out the non-RTL stuff. */ 11940 bl = current_binding_level; 11941 allocate_struct_function (decl1, processing_template_decl); 11942 11943 /* Initialize the language data structures. Whenever we start 11944 a new function, we destroy temporaries in the usual way. */ 11945 cfun->language = GGC_CNEW (struct language_function); 11946 current_stmt_tree ()->stmts_are_full_exprs_p = 1; 11947 current_binding_level = bl; 11948 11949 /* Even though we're inside a function body, we still don't want to 11950 call expand_expr to calculate the size of a variable-sized array. 11951 We haven't necessarily assigned RTL to all variables yet, so it's 11952 not safe to try to expand expressions involving them. */ 11953 cfun->dont_save_pending_sizes_p = 1; 11954 11955 /* Start the statement-tree, start the tree now. */ 11956 DECL_SAVED_TREE (decl1) = push_stmt_list (); 11957 11958 /* If we are (erroneously) defining a function that we have already 11959 defined before, wipe out what we knew before. */ 11960 if (!DECL_PENDING_INLINE_P (decl1)) 11961 DECL_SAVED_FUNCTION_DATA (decl1) = NULL; 11962 11963 if (ctype && !doing_friend && !DECL_STATIC_FUNCTION_P (decl1)) 11964 { 11965 /* We know that this was set up by `grokclassfn'. We do not 11966 wait until `store_parm_decls', since evil parse errors may 11967 never get us to that point. Here we keep the consistency 11968 between `current_class_type' and `current_class_ptr'. */ 11969 tree t = DECL_ARGUMENTS (decl1); 11970 11971 gcc_assert (t != NULL_TREE && TREE_CODE (t) == PARM_DECL); 11972 gcc_assert (TREE_CODE (TREE_TYPE (t)) == POINTER_TYPE); 11973 11974 cp_function_chain->x_current_class_ref 11975 = cp_build_indirect_ref (t, RO_NULL, tf_warning_or_error); 11976 cp_function_chain->x_current_class_ptr = t; 11977 11978 /* Constructors and destructors need to know whether they're "in 11979 charge" of initializing virtual base classes. */ 11980 t = TREE_CHAIN (t); 11981 if (DECL_HAS_IN_CHARGE_PARM_P (decl1)) 11982 { 11983 current_in_charge_parm = t; 11984 t = TREE_CHAIN (t); 11985 } 11986 if (DECL_HAS_VTT_PARM_P (decl1)) 11987 { 11988 gcc_assert (DECL_NAME (t) == vtt_parm_identifier); 11989 current_vtt_parm = t; 11990 } 11991 } 11992 11993 honor_interface = (!DECL_TEMPLATE_INSTANTIATION (decl1) 11994 /* Implicitly-defined methods (like the 11995 destructor for a class in which no destructor 11996 is explicitly declared) must not be defined 11997 until their definition is needed. So, we 11998 ignore interface specifications for 11999 compiler-generated functions. */ 12000 && !DECL_ARTIFICIAL (decl1)); 12001 12002 if (DECL_INTERFACE_KNOWN (decl1)) 12003 { 12004 tree ctx = decl_function_context (decl1); 12005 12006 if (DECL_NOT_REALLY_EXTERN (decl1)) 12007 DECL_EXTERNAL (decl1) = 0; 12008 12009 if (ctx != NULL_TREE && DECL_DECLARED_INLINE_P (ctx) 12010 && TREE_PUBLIC (ctx)) 12011 /* This is a function in a local class in an extern inline 12012 function. */ 12013 comdat_linkage (decl1); 12014 } 12015 /* If this function belongs to an interface, it is public. 12016 If it belongs to someone else's interface, it is also external. 12017 This only affects inlines and template instantiations. */ 12018 else if (!finfo->interface_unknown && honor_interface) 12019 { 12020 if (DECL_DECLARED_INLINE_P (decl1) 12021 || DECL_TEMPLATE_INSTANTIATION (decl1) 12022 || processing_template_decl) 12023 { 12024 DECL_EXTERNAL (decl1) 12025 = (finfo->interface_only 12026 || (DECL_DECLARED_INLINE_P (decl1) 12027 && ! flag_implement_inlines 12028 && !DECL_VINDEX (decl1))); 12029 12030 /* For WIN32 we also want to put these in linkonce sections. */ 12031 maybe_make_one_only (decl1); 12032 } 12033 else 12034 DECL_EXTERNAL (decl1) = 0; 12035 DECL_INTERFACE_KNOWN (decl1) = 1; 12036 /* If this function is in an interface implemented in this file, 12037 make sure that the back end knows to emit this function 12038 here. */ 12039 if (!DECL_EXTERNAL (decl1)) 12040 mark_needed (decl1); 12041 } 12042 else if (finfo->interface_unknown && finfo->interface_only 12043 && honor_interface) 12044 { 12045 /* If MULTIPLE_SYMBOL_SPACES is defined and we saw a #pragma 12046 interface, we will have both finfo->interface_unknown and 12047 finfo->interface_only set. In that case, we don't want to 12048 use the normal heuristics because someone will supply a 12049 #pragma implementation elsewhere, and deducing it here would 12050 produce a conflict. */ 12051 comdat_linkage (decl1); 12052 DECL_EXTERNAL (decl1) = 0; 12053 DECL_INTERFACE_KNOWN (decl1) = 1; 12054 DECL_DEFER_OUTPUT (decl1) = 1; 12055 } 12056 else 12057 { 12058 /* This is a definition, not a reference. 12059 So clear DECL_EXTERNAL, unless this is a GNU extern inline. */ 12060 if (!GNU_INLINE_P (decl1)) 12061 DECL_EXTERNAL (decl1) = 0; 12062 12063 if ((DECL_DECLARED_INLINE_P (decl1) 12064 || DECL_TEMPLATE_INSTANTIATION (decl1)) 12065 && ! DECL_INTERFACE_KNOWN (decl1)) 12066 DECL_DEFER_OUTPUT (decl1) = 1; 12067 else 12068 DECL_INTERFACE_KNOWN (decl1) = 1; 12069 } 12070 12071 /* Determine the ELF visibility attribute for the function. We must not 12072 do this before calling "pushdecl", as we must allow "duplicate_decls" 12073 to merge any attributes appropriately. We also need to wait until 12074 linkage is set. */ 12075 if (!DECL_CLONED_FUNCTION_P (decl1)) 12076 determine_visibility (decl1); 12077 12078 begin_scope (sk_function_parms, decl1); 12079 12080 ++function_depth; 12081 12082 if (DECL_DESTRUCTOR_P (decl1) 12083 || (DECL_CONSTRUCTOR_P (decl1) 12084 && targetm.cxx.cdtor_returns_this ())) 12085 { 12086 cdtor_label = build_decl (input_location, 12087 LABEL_DECL, NULL_TREE, NULL_TREE); 12088 DECL_CONTEXT (cdtor_label) = current_function_decl; 12089 } 12090 12091 start_fname_decls (); 12092 12093 store_parm_decls (current_function_parms); 12094 } 12095 12096 12097 /* Like start_preparsed_function, except that instead of a 12098 FUNCTION_DECL, this function takes DECLSPECS and DECLARATOR. 12099 12100 Returns 1 on success. If the DECLARATOR is not suitable for a function 12101 (it defines a datum instead), we return 0, which tells 12102 yyparse to report a parse error. */ 12103 12104 int 12105 start_function (cp_decl_specifier_seq *declspecs, 12106 const cp_declarator *declarator, 12107 tree attrs) 12108 { 12109 tree decl1; 12110 12111 decl1 = grokdeclarator (declarator, declspecs, FUNCDEF, 1, &attrs); 12112 if (decl1 == error_mark_node) 12113 return 0; 12114 /* If the declarator is not suitable for a function definition, 12115 cause a syntax error. */ 12116 if (decl1 == NULL_TREE || TREE_CODE (decl1) != FUNCTION_DECL) 12117 { 12118 error ("invalid function declaration"); 12119 return 0; 12120 } 12121 12122 if (DECL_MAIN_P (decl1)) 12123 /* main must return int. grokfndecl should have corrected it 12124 (and issued a diagnostic) if the user got it wrong. */ 12125 gcc_assert (same_type_p (TREE_TYPE (TREE_TYPE (decl1)), 12126 integer_type_node)); 12127 12128 start_preparsed_function (decl1, attrs, /*flags=*/SF_DEFAULT); 12129 12130 return 1; 12131 } 12132 12133 /* Returns true iff an EH_SPEC_BLOCK should be created in the body of 12134 FN. */ 12135 12136 static bool 12137 use_eh_spec_block (tree fn) 12138 { 12139 return (flag_exceptions && flag_enforce_eh_specs 12140 && !processing_template_decl 12141 && TYPE_RAISES_EXCEPTIONS (TREE_TYPE (fn)) 12142 /* We insert the EH_SPEC_BLOCK only in the original 12143 function; then, it is copied automatically to the 12144 clones. */ 12145 && !DECL_CLONED_FUNCTION_P (fn) 12146 /* Implicitly-generated constructors and destructors have 12147 exception specifications. However, those specifications 12148 are the union of the possible exceptions specified by the 12149 constructors/destructors for bases and members, so no 12150 unallowed exception will ever reach this function. By 12151 not creating the EH_SPEC_BLOCK we save a little memory, 12152 and we avoid spurious warnings about unreachable 12153 code. */ 12154 && !DECL_ARTIFICIAL (fn)); 12155 } 12156 12157 /* Store the parameter declarations into the current function declaration. 12158 This is called after parsing the parameter declarations, before 12159 digesting the body of the function. 12160 12161 Also install to binding contour return value identifier, if any. */ 12162 12163 static void 12164 store_parm_decls (tree current_function_parms) 12165 { 12166 tree fndecl = current_function_decl; 12167 tree parm; 12168 12169 /* This is a chain of any other decls that came in among the parm 12170 declarations. If a parm is declared with enum {foo, bar} x; 12171 then CONST_DECLs for foo and bar are put here. */ 12172 tree nonparms = NULL_TREE; 12173 12174 if (current_function_parms) 12175 { 12176 /* This case is when the function was defined with an ANSI prototype. 12177 The parms already have decls, so we need not do anything here 12178 except record them as in effect 12179 and complain if any redundant old-style parm decls were written. */ 12180 12181 tree specparms = current_function_parms; 12182 tree next; 12183 12184 /* Must clear this because it might contain TYPE_DECLs declared 12185 at class level. */ 12186 current_binding_level->names = NULL; 12187 12188 /* If we're doing semantic analysis, then we'll call pushdecl 12189 for each of these. We must do them in reverse order so that 12190 they end in the correct forward order. */ 12191 specparms = nreverse (specparms); 12192 12193 for (parm = specparms; parm; parm = next) 12194 { 12195 next = TREE_CHAIN (parm); 12196 if (TREE_CODE (parm) == PARM_DECL) 12197 { 12198 if (DECL_NAME (parm) == NULL_TREE 12199 || TREE_CODE (parm) != VOID_TYPE) 12200 pushdecl (parm); 12201 else 12202 error ("parameter %qD declared void", parm); 12203 } 12204 else 12205 { 12206 /* If we find an enum constant or a type tag, 12207 put it aside for the moment. */ 12208 TREE_CHAIN (parm) = NULL_TREE; 12209 nonparms = chainon (nonparms, parm); 12210 } 12211 } 12212 12213 /* Get the decls in their original chain order and record in the 12214 function. This is all and only the PARM_DECLs that were 12215 pushed into scope by the loop above. */ 12216 DECL_ARGUMENTS (fndecl) = getdecls (); 12217 } 12218 else 12219 DECL_ARGUMENTS (fndecl) = NULL_TREE; 12220 12221 /* Now store the final chain of decls for the arguments 12222 as the decl-chain of the current lexical scope. 12223 Put the enumerators in as well, at the front so that 12224 DECL_ARGUMENTS is not modified. */ 12225 current_binding_level->names = chainon (nonparms, DECL_ARGUMENTS (fndecl)); 12226 12227 if (use_eh_spec_block (current_function_decl)) 12228 current_eh_spec_block = begin_eh_spec_block (); 12229 } 12230 12231 12232 /* We have finished doing semantic analysis on DECL, but have not yet 12233 generated RTL for its body. Save away our current state, so that 12234 when we want to generate RTL later we know what to do. */ 12235 12236 static void 12237 save_function_data (tree decl) 12238 { 12239 struct language_function *f; 12240 12241 /* Save the language-specific per-function data so that we can 12242 get it back when we really expand this function. */ 12243 gcc_assert (!DECL_PENDING_INLINE_P (decl)); 12244 12245 /* Make a copy. */ 12246 f = GGC_NEW (struct language_function); 12247 memcpy (f, cp_function_chain, sizeof (struct language_function)); 12248 DECL_SAVED_FUNCTION_DATA (decl) = f; 12249 12250 /* Clear out the bits we don't need. */ 12251 f->base.x_stmt_tree.x_cur_stmt_list = NULL_TREE; 12252 f->bindings = NULL; 12253 f->x_local_names = NULL; 12254 } 12255 12256 12257 /* Set the return value of the constructor (if present). */ 12258 12259 static void 12260 finish_constructor_body (void) 12261 { 12262 tree val; 12263 tree exprstmt; 12264 12265 if (targetm.cxx.cdtor_returns_this () 12266 && (! TYPE_FOR_JAVA (current_class_type))) 12267 { 12268 /* Any return from a constructor will end up here. */ 12269 add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label)); 12270 12271 val = DECL_ARGUMENTS (current_function_decl); 12272 val = build2 (MODIFY_EXPR, TREE_TYPE (val), 12273 DECL_RESULT (current_function_decl), val); 12274 /* Return the address of the object. */ 12275 exprstmt = build_stmt (input_location, RETURN_EXPR, val); 12276 add_stmt (exprstmt); 12277 } 12278 } 12279 12280 /* Do all the processing for the beginning of a destructor; set up the 12281 vtable pointers and cleanups for bases and members. */ 12282 12283 static void 12284 begin_destructor_body (void) 12285 { 12286 tree compound_stmt; 12287 12288 /* If the CURRENT_CLASS_TYPE is incomplete, we will have already 12289 issued an error message. We still want to try to process the 12290 body of the function, but initialize_vtbl_ptrs will crash if 12291 TYPE_BINFO is NULL. */ 12292 if (COMPLETE_TYPE_P (current_class_type)) 12293 { 12294 compound_stmt = begin_compound_stmt (0); 12295 /* Make all virtual function table pointers in non-virtual base 12296 classes point to CURRENT_CLASS_TYPE's virtual function 12297 tables. */ 12298 initialize_vtbl_ptrs (current_class_ptr); 12299 finish_compound_stmt (compound_stmt); 12300 12301 /* And insert cleanups for our bases and members so that they 12302 will be properly destroyed if we throw. */ 12303 push_base_cleanups (); 12304 } 12305 } 12306 12307 /* At the end of every destructor we generate code to delete the object if 12308 necessary. Do that now. */ 12309 12310 static void 12311 finish_destructor_body (void) 12312 { 12313 tree exprstmt; 12314 12315 /* Any return from a destructor will end up here; that way all base 12316 and member cleanups will be run when the function returns. */ 12317 add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label)); 12318 12319 /* In a virtual destructor, we must call delete. */ 12320 if (DECL_VIRTUAL_P (current_function_decl)) 12321 { 12322 tree if_stmt; 12323 tree virtual_size = cxx_sizeof (current_class_type); 12324 12325 /* [class.dtor] 12326 12327 At the point of definition of a virtual destructor (including 12328 an implicit definition), non-placement operator delete shall 12329 be looked up in the scope of the destructor's class and if 12330 found shall be accessible and unambiguous. */ 12331 exprstmt = build_op_delete_call(DELETE_EXPR, current_class_ptr, 12332 virtual_size, 12333 /*global_p=*/false, 12334 /*placement=*/NULL_TREE, 12335 /*alloc_fn=*/NULL_TREE); 12336 12337 if_stmt = begin_if_stmt (); 12338 finish_if_stmt_cond (build2 (BIT_AND_EXPR, integer_type_node, 12339 current_in_charge_parm, 12340 integer_one_node), 12341 if_stmt); 12342 finish_expr_stmt (exprstmt); 12343 finish_then_clause (if_stmt); 12344 finish_if_stmt (if_stmt); 12345 } 12346 12347 if (targetm.cxx.cdtor_returns_this ()) 12348 { 12349 tree val; 12350 12351 val = DECL_ARGUMENTS (current_function_decl); 12352 val = build2 (MODIFY_EXPR, TREE_TYPE (val), 12353 DECL_RESULT (current_function_decl), val); 12354 /* Return the address of the object. */ 12355 exprstmt = build_stmt (input_location, RETURN_EXPR, val); 12356 add_stmt (exprstmt); 12357 } 12358 } 12359 12360 /* Do the necessary processing for the beginning of a function body, which 12361 in this case includes member-initializers, but not the catch clauses of 12362 a function-try-block. Currently, this means opening a binding level 12363 for the member-initializers (in a ctor) and member cleanups (in a dtor). */ 12364 12365 tree 12366 begin_function_body (void) 12367 { 12368 tree stmt; 12369 12370 if (! FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)) 12371 return NULL_TREE; 12372 12373 if (processing_template_decl) 12374 /* Do nothing now. */; 12375 else 12376 /* Always keep the BLOCK node associated with the outermost pair of 12377 curly braces of a function. These are needed for correct 12378 operation of dwarfout.c. */ 12379 keep_next_level (true); 12380 12381 stmt = begin_compound_stmt (BCS_FN_BODY); 12382 12383 if (processing_template_decl) 12384 /* Do nothing now. */; 12385 else if (DECL_DESTRUCTOR_P (current_function_decl)) 12386 begin_destructor_body (); 12387 12388 return stmt; 12389 } 12390 12391 /* Do the processing for the end of a function body. Currently, this means 12392 closing out the cleanups for fully-constructed bases and members, and in 12393 the case of the destructor, deleting the object if desired. Again, this 12394 is only meaningful for [cd]tors, since they are the only functions where 12395 there is a significant distinction between the main body and any 12396 function catch clauses. Handling, say, main() return semantics here 12397 would be wrong, as flowing off the end of a function catch clause for 12398 main() would also need to return 0. */ 12399 12400 void 12401 finish_function_body (tree compstmt) 12402 { 12403 if (compstmt == NULL_TREE) 12404 return; 12405 12406 /* Close the block. */ 12407 finish_compound_stmt (compstmt); 12408 12409 if (processing_template_decl) 12410 /* Do nothing now. */; 12411 else if (DECL_CONSTRUCTOR_P (current_function_decl)) 12412 finish_constructor_body (); 12413 else if (DECL_DESTRUCTOR_P (current_function_decl)) 12414 finish_destructor_body (); 12415 } 12416 12417 /* Given a function, returns the BLOCK corresponding to the outermost level 12418 of curly braces, skipping the artificial block created for constructor 12419 initializers. */ 12420 12421 tree 12422 outer_curly_brace_block (tree fndecl) 12423 { 12424 tree block = BLOCK_SUBBLOCKS (DECL_INITIAL (fndecl)); 12425 if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)) 12426 /* Skip the artificial function body block. */ 12427 block = BLOCK_SUBBLOCKS (block); 12428 return block; 12429 } 12430 12431 /* Finish up a function declaration and compile that function 12432 all the way to assembler language output. The free the storage 12433 for the function definition. 12434 12435 FLAGS is a bitwise or of the following values: 12436 2 - INCLASS_INLINE 12437 We just finished processing the body of an in-class inline 12438 function definition. (This processing will have taken place 12439 after the class definition is complete.) */ 12440 12441 tree 12442 finish_function (int flags) 12443 { 12444 tree fndecl = current_function_decl; 12445 tree fntype, ctype = NULL_TREE; 12446 int inclass_inline = (flags & 2) != 0; 12447 int nested; 12448 12449 /* When we get some parse errors, we can end up without a 12450 current_function_decl, so cope. */ 12451 if (fndecl == NULL_TREE) 12452 return error_mark_node; 12453 12454 gcc_assert (!defer_mark_used_calls); 12455 defer_mark_used_calls = true; 12456 12457 if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fndecl) 12458 && DECL_VIRTUAL_P (fndecl) 12459 && !processing_template_decl) 12460 { 12461 tree fnclass = DECL_CONTEXT (fndecl); 12462 if (fndecl == CLASSTYPE_KEY_METHOD (fnclass)) 12463 keyed_classes = tree_cons (NULL_TREE, fnclass, keyed_classes); 12464 } 12465 12466 nested = function_depth > 1; 12467 fntype = TREE_TYPE (fndecl); 12468 12469 /* TREE_READONLY (fndecl) = 1; 12470 This caused &foo to be of type ptr-to-const-function 12471 which then got a warning when stored in a ptr-to-function variable. */ 12472 12473 gcc_assert (building_stmt_tree ()); 12474 /* The current function is being defined, so its DECL_INITIAL should 12475 be set, and unless there's a multiple definition, it should be 12476 error_mark_node. */ 12477 gcc_assert (DECL_INITIAL (fndecl) == error_mark_node); 12478 12479 /* For a cloned function, we've already got all the code we need; 12480 there's no need to add any extra bits. */ 12481 if (!DECL_CLONED_FUNCTION_P (fndecl)) 12482 { 12483 if (DECL_MAIN_P (current_function_decl)) 12484 { 12485 tree stmt; 12486 12487 /* Make it so that `main' always returns 0 by default (or 12488 1 for VMS). */ 12489 #if VMS_TARGET 12490 stmt = finish_return_stmt (integer_one_node); 12491 #else 12492 stmt = finish_return_stmt (integer_zero_node); 12493 #endif 12494 /* Hack. We don't want the middle-end to warn that this 12495 return is unreachable, so put the statement on the 12496 special line 0. */ 12497 { 12498 location_t linezero = linemap_line_start (line_table, 0, 1); 12499 SET_EXPR_LOCATION (stmt, linezero); 12500 } 12501 } 12502 12503 if (use_eh_spec_block (current_function_decl)) 12504 finish_eh_spec_block (TYPE_RAISES_EXCEPTIONS 12505 (TREE_TYPE (current_function_decl)), 12506 current_eh_spec_block); 12507 } 12508 12509 /* If we're saving up tree structure, tie off the function now. */ 12510 DECL_SAVED_TREE (fndecl) = pop_stmt_list (DECL_SAVED_TREE (fndecl)); 12511 12512 finish_fname_decls (); 12513 12514 /* If this function can't throw any exceptions, remember that. */ 12515 if (!processing_template_decl 12516 && !cp_function_chain->can_throw 12517 && !flag_non_call_exceptions 12518 && !decl_replaceable_p (fndecl)) 12519 TREE_NOTHROW (fndecl) = 1; 12520 12521 /* This must come after expand_function_end because cleanups might 12522 have declarations (from inline functions) that need to go into 12523 this function's blocks. */ 12524 12525 /* If the current binding level isn't the outermost binding level 12526 for this function, either there is a bug, or we have experienced 12527 syntax errors and the statement tree is malformed. */ 12528 if (current_binding_level->kind != sk_function_parms) 12529 { 12530 /* Make sure we have already experienced errors. */ 12531 gcc_assert (errorcount); 12532 12533 /* Throw away the broken statement tree and extra binding 12534 levels. */ 12535 DECL_SAVED_TREE (fndecl) = alloc_stmt_list (); 12536 12537 while (current_binding_level->kind != sk_function_parms) 12538 { 12539 if (current_binding_level->kind == sk_class) 12540 pop_nested_class (); 12541 else 12542 poplevel (0, 0, 0); 12543 } 12544 } 12545 poplevel (1, 0, 1); 12546 12547 /* Statements should always be full-expressions at the outermost set 12548 of curly braces for a function. */ 12549 gcc_assert (stmts_are_full_exprs_p ()); 12550 12551 /* Set up the named return value optimization, if we can. Candidate 12552 variables are selected in check_return_expr. */ 12553 if (current_function_return_value) 12554 { 12555 tree r = current_function_return_value; 12556 tree outer; 12557 12558 if (r != error_mark_node 12559 /* This is only worth doing for fns that return in memory--and 12560 simpler, since we don't have to worry about promoted modes. */ 12561 && aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl)), fndecl) 12562 /* Only allow this for variables declared in the outer scope of 12563 the function so we know that their lifetime always ends with a 12564 return; see g++.dg/opt/nrv6.C. We could be more flexible if 12565 we were to do this optimization in tree-ssa. */ 12566 && (outer = outer_curly_brace_block (fndecl)) 12567 && chain_member (r, BLOCK_VARS (outer))) 12568 finalize_nrv (&DECL_SAVED_TREE (fndecl), r, DECL_RESULT (fndecl)); 12569 12570 current_function_return_value = NULL_TREE; 12571 } 12572 12573 /* Remember that we were in class scope. */ 12574 if (current_class_name) 12575 ctype = current_class_type; 12576 12577 /* Must mark the RESULT_DECL as being in this function. */ 12578 DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl; 12579 12580 /* Set the BLOCK_SUPERCONTEXT of the outermost function scope to point 12581 to the FUNCTION_DECL node itself. */ 12582 BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl; 12583 12584 /* Save away current state, if appropriate. */ 12585 if (!processing_template_decl) 12586 save_function_data (fndecl); 12587 12588 /* Complain if there's just no return statement. */ 12589 if (warn_return_type 12590 && TREE_CODE (TREE_TYPE (fntype)) != VOID_TYPE 12591 && !dependent_type_p (TREE_TYPE (fntype)) 12592 && !current_function_returns_value && !current_function_returns_null 12593 /* Don't complain if we abort or throw. */ 12594 && !current_function_returns_abnormally 12595 /* Don't complain if we are declared noreturn. */ 12596 && !TREE_THIS_VOLATILE (fndecl) 12597 && !DECL_NAME (DECL_RESULT (fndecl)) 12598 && !TREE_NO_WARNING (fndecl) 12599 /* Structor return values (if any) are set by the compiler. */ 12600 && !DECL_CONSTRUCTOR_P (fndecl) 12601 && !DECL_DESTRUCTOR_P (fndecl)) 12602 { 12603 warning (OPT_Wreturn_type, 12604 "no return statement in function returning non-void"); 12605 TREE_NO_WARNING (fndecl) = 1; 12606 } 12607 12608 /* Store the end of the function, so that we get good line number 12609 info for the epilogue. */ 12610 cfun->function_end_locus = input_location; 12611 12612 /* Genericize before inlining. */ 12613 if (!processing_template_decl) 12614 { 12615 struct language_function *f = DECL_SAVED_FUNCTION_DATA (fndecl); 12616 invoke_plugin_callbacks (PLUGIN_PRE_GENERICIZE, fndecl); 12617 cp_genericize (fndecl); 12618 /* Clear out the bits we don't need. */ 12619 f->x_current_class_ptr = NULL; 12620 f->x_current_class_ref = NULL; 12621 f->x_eh_spec_block = NULL; 12622 f->x_in_charge_parm = NULL; 12623 f->x_vtt_parm = NULL; 12624 f->x_return_value = NULL; 12625 f->bindings = NULL; 12626 f->extern_decl_map = NULL; 12627 } 12628 /* Clear out the bits we don't need. */ 12629 local_names = NULL; 12630 12631 /* We're leaving the context of this function, so zap cfun. It's still in 12632 DECL_STRUCT_FUNCTION, and we'll restore it in tree_rest_of_compilation. */ 12633 set_cfun (NULL); 12634 current_function_decl = NULL; 12635 12636 /* If this is an in-class inline definition, we may have to pop the 12637 bindings for the template parameters that we added in 12638 maybe_begin_member_template_processing when start_function was 12639 called. */ 12640 if (inclass_inline) 12641 maybe_end_member_template_processing (); 12642 12643 /* Leave the scope of the class. */ 12644 if (ctype) 12645 pop_nested_class (); 12646 12647 --function_depth; 12648 12649 /* Clean up. */ 12650 if (! nested) 12651 /* Let the error reporting routines know that we're outside a 12652 function. For a nested function, this value is used in 12653 cxx_pop_function_context and then reset via pop_function_context. */ 12654 current_function_decl = NULL_TREE; 12655 12656 defer_mark_used_calls = false; 12657 if (deferred_mark_used_calls) 12658 { 12659 unsigned int i; 12660 tree decl; 12661 12662 for (i = 0; VEC_iterate (tree, deferred_mark_used_calls, i, decl); i++) 12663 mark_used (decl); 12664 VEC_free (tree, gc, deferred_mark_used_calls); 12665 } 12666 12667 return fndecl; 12668 } 12669 12670 /* Create the FUNCTION_DECL for a function definition. 12671 DECLSPECS and DECLARATOR are the parts of the declaration; 12672 they describe the return type and the name of the function, 12673 but twisted together in a fashion that parallels the syntax of C. 12674 12675 This function creates a binding context for the function body 12676 as well as setting up the FUNCTION_DECL in current_function_decl. 12677 12678 Returns a FUNCTION_DECL on success. 12679 12680 If the DECLARATOR is not suitable for a function (it defines a datum 12681 instead), we return 0, which tells yyparse to report a parse error. 12682 12683 May return void_type_node indicating that this method is actually 12684 a friend. See grokfield for more details. 12685 12686 Came here with a `.pushlevel' . 12687 12688 DO NOT MAKE ANY CHANGES TO THIS CODE WITHOUT MAKING CORRESPONDING 12689 CHANGES TO CODE IN `grokfield'. */ 12690 12691 tree 12692 grokmethod (cp_decl_specifier_seq *declspecs, 12693 const cp_declarator *declarator, tree attrlist) 12694 { 12695 tree fndecl = grokdeclarator (declarator, declspecs, MEMFUNCDEF, 0, 12696 &attrlist); 12697 12698 if (fndecl == error_mark_node) 12699 return error_mark_node; 12700 12701 if (fndecl == NULL || TREE_CODE (fndecl) != FUNCTION_DECL) 12702 { 12703 error ("invalid member function declaration"); 12704 return error_mark_node; 12705 } 12706 12707 if (attrlist) 12708 cplus_decl_attributes (&fndecl, attrlist, 0); 12709 12710 /* Pass friends other than inline friend functions back. */ 12711 if (fndecl == void_type_node) 12712 return fndecl; 12713 12714 if (DECL_IN_AGGR_P (fndecl)) 12715 { 12716 if (DECL_CONTEXT (fndecl) 12717 && TREE_CODE (DECL_CONTEXT (fndecl)) != NAMESPACE_DECL) 12718 error ("%qD is already defined in class %qT", fndecl, 12719 DECL_CONTEXT (fndecl)); 12720 return error_mark_node; 12721 } 12722 12723 check_template_shadow (fndecl); 12724 12725 DECL_DECLARED_INLINE_P (fndecl) = 1; 12726 DECL_NO_INLINE_WARNING_P (fndecl) = 1; 12727 12728 /* We process method specializations in finish_struct_1. */ 12729 if (processing_template_decl && !DECL_TEMPLATE_SPECIALIZATION (fndecl)) 12730 { 12731 fndecl = push_template_decl (fndecl); 12732 if (fndecl == error_mark_node) 12733 return fndecl; 12734 } 12735 12736 if (! DECL_FRIEND_P (fndecl)) 12737 { 12738 if (TREE_CHAIN (fndecl)) 12739 { 12740 fndecl = copy_node (fndecl); 12741 TREE_CHAIN (fndecl) = NULL_TREE; 12742 } 12743 } 12744 12745 cp_finish_decl (fndecl, NULL_TREE, false, NULL_TREE, 0); 12746 12747 DECL_IN_AGGR_P (fndecl) = 1; 12748 return fndecl; 12749 } 12750 12751 12752 /* VAR is a VAR_DECL. If its type is incomplete, remember VAR so that 12753 we can lay it out later, when and if its type becomes complete. */ 12754 12755 void 12756 maybe_register_incomplete_var (tree var) 12757 { 12758 gcc_assert (TREE_CODE (var) == VAR_DECL); 12759 12760 /* Keep track of variables with incomplete types. */ 12761 if (!processing_template_decl && TREE_TYPE (var) != error_mark_node 12762 && DECL_EXTERNAL (var)) 12763 { 12764 tree inner_type = TREE_TYPE (var); 12765 12766 while (TREE_CODE (inner_type) == ARRAY_TYPE) 12767 inner_type = TREE_TYPE (inner_type); 12768 inner_type = TYPE_MAIN_VARIANT (inner_type); 12769 12770 if ((!COMPLETE_TYPE_P (inner_type) && CLASS_TYPE_P (inner_type)) 12771 /* RTTI TD entries are created while defining the type_info. */ 12772 || (TYPE_LANG_SPECIFIC (inner_type) 12773 && TYPE_BEING_DEFINED (inner_type))) 12774 incomplete_vars = tree_cons (inner_type, var, incomplete_vars); 12775 } 12776 } 12777 12778 /* Called when a class type (given by TYPE) is defined. If there are 12779 any existing VAR_DECLs whose type has been completed by this 12780 declaration, update them now. */ 12781 12782 void 12783 complete_vars (tree type) 12784 { 12785 tree *list = &incomplete_vars; 12786 12787 gcc_assert (CLASS_TYPE_P (type)); 12788 while (*list) 12789 { 12790 if (same_type_p (type, TREE_PURPOSE (*list))) 12791 { 12792 tree var = TREE_VALUE (*list); 12793 tree type = TREE_TYPE (var); 12794 /* Complete the type of the variable. The VAR_DECL itself 12795 will be laid out in expand_expr. */ 12796 complete_type (type); 12797 cp_apply_type_quals_to_decl (cp_type_quals (type), var); 12798 /* Remove this entry from the list. */ 12799 *list = TREE_CHAIN (*list); 12800 } 12801 else 12802 list = &TREE_CHAIN (*list); 12803 } 12804 12805 /* Check for pending declarations which may have abstract type. */ 12806 complete_type_check_abstract (type); 12807 } 12808 12809 /* If DECL is of a type which needs a cleanup, build and return an 12810 expression to perform that cleanup here. Return NULL_TREE if no 12811 cleanup need be done. */ 12812 12813 tree 12814 cxx_maybe_build_cleanup (tree decl) 12815 { 12816 tree type; 12817 tree attr; 12818 tree cleanup; 12819 12820 /* Assume no cleanup is required. */ 12821 cleanup = NULL_TREE; 12822 12823 if (error_operand_p (decl)) 12824 return cleanup; 12825 12826 /* Handle "__attribute__((cleanup))". We run the cleanup function 12827 before the destructor since the destructor is what actually 12828 terminates the lifetime of the object. */ 12829 attr = lookup_attribute ("cleanup", DECL_ATTRIBUTES (decl)); 12830 if (attr) 12831 { 12832 tree id; 12833 tree fn; 12834 tree arg; 12835 12836 /* Get the name specified by the user for the cleanup function. */ 12837 id = TREE_VALUE (TREE_VALUE (attr)); 12838 /* Look up the name to find the cleanup function to call. It is 12839 important to use lookup_name here because that is what is 12840 used in c-common.c:handle_cleanup_attribute when performing 12841 initial checks on the attribute. Note that those checks 12842 include ensuring that the function found is not an overloaded 12843 function, or an object with an overloaded call operator, 12844 etc.; we can rely on the fact that the function found is an 12845 ordinary FUNCTION_DECL. */ 12846 fn = lookup_name (id); 12847 arg = build_address (decl); 12848 mark_used (decl); 12849 cleanup = cp_build_function_call (fn, build_tree_list (NULL_TREE, 12850 arg), 12851 tf_warning_or_error); 12852 } 12853 /* Handle ordinary C++ destructors. */ 12854 type = TREE_TYPE (decl); 12855 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) 12856 { 12857 int flags = LOOKUP_NORMAL|LOOKUP_DESTRUCTOR; 12858 bool has_vbases = (TREE_CODE (type) == RECORD_TYPE 12859 && CLASSTYPE_VBASECLASSES (type)); 12860 tree addr; 12861 tree call; 12862 12863 if (TREE_CODE (type) == ARRAY_TYPE) 12864 addr = decl; 12865 else 12866 addr = build_address (decl); 12867 12868 /* Optimize for space over speed here. */ 12869 if (!has_vbases || flag_expensive_optimizations) 12870 flags |= LOOKUP_NONVIRTUAL; 12871 12872 call = build_delete (TREE_TYPE (addr), addr, 12873 sfk_complete_destructor, flags, 0); 12874 if (cleanup) 12875 cleanup = build_compound_expr (input_location, cleanup, call); 12876 else 12877 cleanup = call; 12878 } 12879 12880 /* build_delete sets the location of the destructor call to the 12881 current location, even though the destructor is going to be 12882 called later, at the end of the current scope. This can lead to 12883 a "jumpy" behaviour for users of debuggers when they step around 12884 the end of the block. So let's unset the location of the 12885 destructor call instead. */ 12886 if (cleanup != NULL && EXPR_P (cleanup)) 12887 SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION); 12888 return cleanup; 12889 } 12890 12891 12892 /* When a stmt has been parsed, this function is called. */ 12893 12894 void 12895 finish_stmt (void) 12896 { 12897 } 12898 12899 /* Return the FUNCTION_TYPE that corresponds to MEMFNTYPE, which can be a 12900 FUNCTION_DECL, METHOD_TYPE, FUNCTION_TYPE, pointer or reference to 12901 METHOD_TYPE or FUNCTION_TYPE, or pointer to member function. */ 12902 12903 tree 12904 static_fn_type (tree memfntype) 12905 { 12906 tree fntype; 12907 tree args; 12908 int quals; 12909 12910 if (TYPE_PTRMEMFUNC_P (memfntype)) 12911 memfntype = TYPE_PTRMEMFUNC_FN_TYPE (memfntype); 12912 if (POINTER_TYPE_P (memfntype) 12913 || TREE_CODE (memfntype) == FUNCTION_DECL) 12914 memfntype = TREE_TYPE (memfntype); 12915 if (TREE_CODE (memfntype) == FUNCTION_TYPE) 12916 return memfntype; 12917 gcc_assert (TREE_CODE (memfntype) == METHOD_TYPE); 12918 args = TYPE_ARG_TYPES (memfntype); 12919 fntype = build_function_type (TREE_TYPE (memfntype), TREE_CHAIN (args)); 12920 quals = cp_type_quals (TREE_TYPE (TREE_VALUE (args))); 12921 fntype = build_qualified_type (fntype, quals); 12922 fntype = (cp_build_type_attribute_variant 12923 (fntype, TYPE_ATTRIBUTES (memfntype))); 12924 fntype = (build_exception_variant 12925 (fntype, TYPE_RAISES_EXCEPTIONS (memfntype))); 12926 return fntype; 12927 } 12928 12929 /* DECL was originally constructed as a non-static member function, 12930 but turned out to be static. Update it accordingly. */ 12931 12932 void 12933 revert_static_member_fn (tree decl) 12934 { 12935 TREE_TYPE (decl) = static_fn_type (decl); 12936 12937 if (cp_type_quals (TREE_TYPE (decl)) != TYPE_UNQUALIFIED) 12938 error ("static member function %q#D declared with type qualifiers", decl); 12939 12940 if (DECL_ARGUMENTS (decl)) 12941 DECL_ARGUMENTS (decl) = TREE_CHAIN (DECL_ARGUMENTS (decl)); 12942 DECL_STATIC_FUNCTION_P (decl) = 1; 12943 } 12944 12945 /* Return which tree structure is used by T, or TS_CP_GENERIC if T is 12946 one of the language-independent trees. */ 12947 12948 enum cp_tree_node_structure_enum 12949 cp_tree_node_structure (union lang_tree_node * t) 12950 { 12951 switch (TREE_CODE (&t->generic)) 12952 { 12953 case DEFAULT_ARG: return TS_CP_DEFAULT_ARG; 12954 case IDENTIFIER_NODE: return TS_CP_IDENTIFIER; 12955 case OVERLOAD: return TS_CP_OVERLOAD; 12956 case TEMPLATE_PARM_INDEX: return TS_CP_TPI; 12957 case PTRMEM_CST: return TS_CP_PTRMEM; 12958 case BASELINK: return TS_CP_BASELINK; 12959 case STATIC_ASSERT: return TS_CP_STATIC_ASSERT; 12960 case ARGUMENT_PACK_SELECT: return TS_CP_ARGUMENT_PACK_SELECT; 12961 case TRAIT_EXPR: return TS_CP_TRAIT_EXPR; 12962 case LAMBDA_EXPR: return TS_CP_LAMBDA_EXPR; 12963 case TEMPLATE_INFO: return TS_CP_TEMPLATE_INFO; 12964 default: return TS_CP_GENERIC; 12965 } 12966 } 12967 12968 /* Build the void_list_node (void_type_node having been created). */ 12969 tree 12970 build_void_list_node (void) 12971 { 12972 tree t = build_tree_list (NULL_TREE, void_type_node); 12973 return t; 12974 } 12975 12976 bool 12977 cp_missing_noreturn_ok_p (tree decl) 12978 { 12979 /* A missing noreturn is ok for the `main' function. */ 12980 return DECL_MAIN_P (decl); 12981 } 12982 12983 /* Return the COMDAT group into which DECL should be placed. */ 12984 12985 tree 12986 cxx_comdat_group (tree decl) 12987 { 12988 tree name; 12989 12990 /* Virtual tables, construction virtual tables, and virtual table 12991 tables all go in a single COMDAT group, named after the primary 12992 virtual table. */ 12993 if (TREE_CODE (decl) == VAR_DECL && DECL_VTABLE_OR_VTT_P (decl)) 12994 name = DECL_ASSEMBLER_NAME (CLASSTYPE_VTABLES (DECL_CONTEXT (decl))); 12995 /* For all other DECLs, the COMDAT group is the mangled name of the 12996 declaration itself. */ 12997 else 12998 { 12999 while (DECL_THUNK_P (decl)) 13000 { 13001 /* If TARGET_USE_LOCAL_THUNK_ALIAS_P, use_thunk puts the thunk 13002 into the same section as the target function. In that case 13003 we must return target's name. */ 13004 tree target = THUNK_TARGET (decl); 13005 if (TARGET_USE_LOCAL_THUNK_ALIAS_P (target) 13006 && DECL_SECTION_NAME (target) != NULL 13007 && DECL_ONE_ONLY (target)) 13008 decl = target; 13009 else 13010 break; 13011 } 13012 name = DECL_ASSEMBLER_NAME (decl); 13013 } 13014 13015 return name; 13016 } 13017 13018 #include "gt-cp-decl.h" 13019