12004-12-31 Richard Henderson <rth@redhat.com> 2 3 PR middle-end/17799 4 * call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P. 5 * class.c (build_vtable): Don't conditionallize setting it 6 based on DWARF2_DEBUG. 7 (layout_class_type): Set DECL_IGNORED_P. 8 * decl2.c (get_guard): Likewise. 9 * rtti.c (get_tinfo_decl, build_lang_decl): Likewise. 10 * tree.c (build_local_temp): Likewise. 11 122004-12-30 Mark Mitchell <mark@codesourcery.com> 13 14 * cp-tree.h (cp_declarator): Split "name" field into 15 qualifying_scope and unqualified_name. 16 * decl.c (get_scope_of_declarator): Adjust accordingly. 17 (grokdeclarator): Likewise. 18 * decl2.c (grokfield): Likewise, and adjust call to 19 do_class_using_decl. 20 * name-lookup.c (do_class_using_decl): Split "decl" into 21 "scope" and "name". Remove unnecessary code. 22 * name-lookup.h (do_class_using_decl): Adjust declaration. 23 * parser.c (make_id_declarator): Split "id" into qualifying_scope 24 and unqualified_name. 25 (cp_parser_using_declaration): Adjust call to do_class_using_decl. 26 (cp_parser_direct_declarator): Adjust to handle the fact that 27 cp_parser_declarator_id no longer returns a SCOPE_REF. 28 (cp_parser_direct_declarator): Likewise. 29 (cp_parser_declarator_id): Do not create a SCOPE_REF for qualified 30 names. 31 (cp_parser_member_declaration): Adjust call to make_id_declarator. 32 (cp_parser_check_declarator_template_parameters): Do not expect a 33 SCOPE_REF. 34 35 * decl.c (duplicate_decls): Call ggc_free on declarations we will 36 not be needing any longer. 37 38 PR c++/19190 39 * cvt.c (convert_to_void): Do not use STRIP_NOPs. 40 412004-12-28 Richard Henderson <rth@redhat.com> 42 43 PR inline-asm/15740 44 * semantics.c (finish_asm_stmt): Resolve asm names. Validate input 45 constraints. Mark memory inputs addressable. 46 472004-12-27 Jason Merrill <jason@redhat.com> 48 49 * decl.c (expand_static_init): Don't use shortcut if 50 targetm.relaxed_ordering. 51 522004-12-27 Mark Mitchell <mark@codesourcery.com> 53 54 PR c++/19149 55 * decl.c (check_tag_decl): Robustify. 56 572004-12-23 Mark Mitchell <mark@codesourcery.com> 58 59 PR c++/17595 60 * parser.c (cp_parser_error): Issue better messages about 61 #pragma in locations where it is not permitted. 62 63 PR c++/17413 64 * pt.c (check_instantiated_args): Remove bogus SFINAE code. 65 66 * cvt.c (convert_to_void): Fix typo in comment. 67 682004-12-23 Alexandre Oliva <aoliva@redhat.com> 69 70 PR c++/18962 71 * pt.c (check_explicit_specialization): Use the argument list from 72 the definition in a template function specialization definition. 73 742004-12-23 Giovanni Bajo <giovannibajo@gcc.gnu.org> 75 76 PR c++/18733 77 * pt.c (check_explicit_specialization): Use special logic to validate 78 befriended specializations. 79 802004-12-22 Mark Mitchell <mark@codesourcery.com> 81 82 * rtti.c (emit_support_tinfos): Avoid using C99 semantics. 83 84 PR c++/18464 85 * call.c (build_this): In templates, do not bother with 86 build_unary_op. 87 * typeck.c (unary_complex_lvalue): In a template, always refuse 88 simplifications. 89 90 PR c++/18492 91 * cp-gimplify.c (cp_genericize): Relax assertion. 92 93 PR c++/11224 94 * cvt.c (convert_to_void): Warn about unused values. 95 96 PR c++/18257 97 * rtti.c (emit_support_tinfos): On systems without weak symbols, 98 emit the runtime library type-info objects as non-COMDAT. 99 1002004-12-21 Mark Mitchell <mark@codesourcery.com> 101 102 PR c++/18378 103 * call.c (convert_like_real): Do not permit the use of a copy 104 constructor to copy a packed field. 105 106 PR c++/19063 107 * decl.c (grokdeclarator): Return error_mark_node, not 108 void_type_node, to indicate errors. 109 * parser.c (cp_parser_template_parameter_list): Robustify. 110 (cp_parser_template_parameter): Likewise. 111 112 PR c++/19034 113 * tree.c (cp_tree_equal): Handle OVERLOAD. 114 1152004-12-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 116 117 * decl.c (define_label): Use POP_TIMEVAR_AND_RETURN. 118 * name-lookup.c (pushdecl_class_level): Likewise. 119 1202004-12-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 121 122 * name-lookup.c (pushtag): Add missing POP_TIMEVAR_AND_RETURN. 123 1242004-12-21 Andrew Pinski <pinskia@physics.uc.edu> 125 126 PR c++/18984 127 * cp-gimplify.c (cp_genericize_r): Don't insert first but instead 128 check to see if contains the pointer. Insert the statement before 129 returning. 130 1312004-12-21 Nathan Sidwell <nathan@codesourcery.com> 132 133 PR c++/14075 134 * decl.c (check_initializer): Check string initializer of array is 135 not parenthesized. 136 * cp-tree.h (PAREN_STRING_LITERAL_P): New. 137 * semantics.c (finish_parenthesized_expr): Mark a STRING_CST. 138 * error.c (dump_expr): <STRING_CST case> Add parens, if needed. 139 140 * cp-tree.def (TEMPLATE_TYPE_PARM, 141 BOUND_TEMPLATE_TEMPLATE_PARM, TYPE_OF_TYPE, TYPENAME_TYPE): Reorder 142 for better code efficiency. 143 * cp-tree.h (CLASS_TYPE_P): Short circuit IS_AGGR_TYPE check. 144 (CAN_HAVE_FULL_LANG_DECL_P): Reorder for better optimization. 145 (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P, 146 INTEGRAL_OR_ENUMERATION_TYPE_P, SCALAR_TYPE_P, 147 CP_AGGREGATE_TYPE_P, TYPE_PTROB_P, TYPE_REF_OBJ_P, 148 TYPE_PTROBV_P): Likewise. 149 150 PR c++/18975 151 * method.c (do_build_copy_constructor): Refactor. Don't const 152 qualify a mutable field. 153 (do_build_assign_ref): Likewise. 154 1552004-12-20 Matt Austern <austern@apple.com> 156 157 PR c++/19044 158 * decl.c (make_rtl_for_nonlocal_decl): Use 159 set_builtin_user_assembler_name. 160 1612004-12-19 Mark Mitchell <mark@codesourcery.com> 162 163 * cp-tree.h (note_decl_for_pch): New function. 164 * class.c (build_clone): Call note_decl_for_pch. 165 * semantics.c (finish_member_declaration): Likewise. 166 (note_decl_for_pch): New function. 167 1682004-12-17 Steven Bosscher <stevenb@suse.de> 169 170 * init.c (build_zero_init): max_index is the number of 171 elements, minus 1. 172 1732004-12-17 Nathan Sidwell <nathan@codesourcery.com> 174 175 PR c++/18721 176 * class.c (add_method): Do not push conversion operators into a 177 binding level. 178 179 * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE_TYPE): Reformat. 180 * error.c (dump_decl): <TYPE_DECL case> Remove extraneous braces. 181 1822004-12-16 Nathan Sidwell <nathan@codesourcery.com> 183 184 PR c++/18905 185 * cp-tree.h (integral_constant_value): Declare. 186 * call.c (null_ptr_cst_p): Use integral_constant_value, not 187 decl_constant_value. 188 (convert_like_real): Likewise. 189 * class.c (check_bitfield_decl): Likewise. 190 * cvt.c (ocp_convert): Likewise. 191 (convert): Remove unnecessary decl_constant_value call. 192 * decl.c (compute_array_index_type): Use integral_constant_value, 193 not decl_constant_value. 194 (build_enumerator): Likewise. 195 * decl2.c (grokfield): Likewise. 196 * init.c (decl_constant_value): Simplify. 197 (integral_constant_value): New. 198 * pt.c (fold_decl_constant_value): Use integral_constant_value, 199 remove subsequent check. 200 (tsubst): Use integral_constant_value, not decl_constant_value. 201 (tsubst_copy, unify): Likewise. 202 * typeck.c (decay_conversion): Likewise. 203 (build_compound_expr): Remove unnecessary decl_constant_value 204 calls. 205 (build_static_cast_1, build_reinterpret_cast_1): 206 (convert_for_assignment): Remove comment about not calling 207 decl_constant_value. 208 2092004-12-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 210 211 PR c++/18825 212 * pt.c (instantiate_class_template): Set input_location for 213 friend function. 214 (tsubst_friend_function): Don't set input_location here. 215 Make sure the context is complete if necessary. 216 2172004-12-15 Nathan Sidwell <nathan@codesourcery.com> 218 219 PR c++/18981 220 * parser.c (cp_parser_lookup_name): Remove unneeded TYPENAME_TYPE 221 flag setting. 222 2232004-12-14 Mark Mitchell <mark@codesourcery.com> 224 225 PR c++/18738 226 * decl.c (make_typename_type): Do not handle namespace-scoped 227 names here. 228 (tag_name): Handle typename_type. 229 (check_elaborated_type_specifier): Handle typenames. 230 * parser.c (cp_parser_diagnose_invalid_type_name): Improve 231 comment. 232 (cp_parser_elaborated_type_specifier): Use 233 cp_parser_diagnose_invalid_type_name. 234 2352004-12-14 Andrew Pinski <pinskia@physics.uc.edu> 236 237 PR c++/18965 238 * init.c (build_zero_init): If the max_index is 0, there is no 239 need to create a RANGE_EXPR. 240 2412004-12-14 Mark Mitchell <mark@codesourcery.com> 242 243 PR c++/18793 244 * cp-objcp-common.c (cp_expr_size): Loosen assertion. 245 2462004-12-14 Nathan Sidwell <nathan@codesourcery.com> 247 248 PR c++/18949 249 * pt.c (tsubst_copy_and_build): <INDIRECT_REF case> Check that a 250 REFERENCE_REF_P is dereferencing a reference type. 251 * typeck.c (build_static_cast): Convert from reference even in a 252 template. 253 (build_reinterpret_cast, build_const_cast, build_c_cast): Likewise. 254 2552004-12-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 256 257 * parser.c (cp_parser_uncommitted_to_tentative_parse_p): New function. 258 (cp_parser_name_lookup_error): Use it. 259 (cp_parser_check_for_invalid_template_id): Likewise. 260 (cp_parser_skip_to_closing_parenthesis): Likewise. 261 (cp_parser_nested_name_specifier_opt): Likewise. 262 (cp_parser_simple_declaration, cp_parser_template_id): Likewise. 263 (cp_parser_parameter_declaration_list): Likewise. 264 (cp_parser_parameter_declaration): Likewise. 265 (cp_parser_template_name): Let cp_parser_simulate_error perform 266 the checking. 267 (cp_parser_committed_to_tentative_parse): Remove. 268 2692004-12-13 Andrew Pinski <pinskia@physics.uc.edu> 270 271 PR c++/18968 272 * class.c (build_base_path): Convert the zero constant to the correct 273 type when comparing. 274 2752004-12-13 Mark Mitchell <mark@codesourcery.com> 276 277 PR c++/18925 278 * class.c (layout_class_type): Determine the visibility of static 279 data members. 280 2812004-12-12 Roger Sayle <roger@eyesopen.com> 282 283 PR middle-end/12454 284 * cp-gimplify.c (gimplify_if_stmt): Optimize the case where the 285 condition is a constant and the unexecuted clause is empty. 286 2872004-12-10 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 288 289 PR c++/18731 290 * parser.c (cp_parser_class_head): Reject typedef-name in class head. 291 2922004-12-09 Matt Austern <austern@apple.com> 293 294 PR c++/18514 295 * name-lookup.c (do_nonmember_using_decl): A real function 296 declaration takes precedence over an anticipated declaration. 297 2982004-12-09 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 299 300 * parser.c (cp_parser_member_declaration): Fix comment typo. 301 3022004-12-09 Alexandre Oliva <aoliva@redhat.com> 303 304 PR c++/18757 305 * parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID 306 if parsing failed. 307 3082004-12-09 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 309 310 PR c++/18073 311 * typeck.c (build_reinterpret_cast_1): Allow cast from vector type. 312 3132004-12-09 Nathan Sidwell <nathan@codesourcery.com> 314 315 PR c++/16681 316 * init.c (build_zero_init): Build a RANGE_EXPR for an array 317 initializer. 318 3192004-12-08 Kelley Cook <kcook@gcc.gnu.org> 320 321 * typeck.c: Remove DOS line endings. 322 3232004-12-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 324 325 PR c++/18100 326 * decl.c (lookup_and_check_tag): Diagnose nested class with 327 the same name as enclosing class. 328 3292004-12-08 Nathan Sidwell <nathan@codesourcery.com> 330 331 PR c++/18803 332 * cp-tree.h (REFERENCE_REF_P): New. 333 (CPTI_TYPE_INFO_TYPE): Rename to ... 334 (CPTI_CONST_TYPE_INFO_TYPE): ... here. 335 (CPTI_TYPE_INFO_REF_TYPE): Remove. 336 (type_info_type_node): Rename to ... 337 (const_type_info_type_node): ... here. 338 (type_info_ref_type): Remove. 339 * call.c (build_user_type_conversion): Reformat. 340 (resolve_args): Do not convert_from_reference. 341 (build_object_call): Call convert_from_reference. 342 (prep_operand): Do not convert_from_reference. 343 (build_new_method_call): Likewise. 344 * class.c (build_vfield_ref): Likewise. 345 * cvt.c (convert_to_reference): Likewise. 346 (convert_from_reference): Build INDIRECT_REF here, not with 347 build_indirect_ref. 348 (convert_force): Do not convert_from_reference. 349 (build_expr_type_conversion): Likewise. 350 * decl.c (grok_reference_init): Likewise. 351 * decl2.c (delete_sanity): Likewise. 352 * except.c (initialize_handler_parm): Use POINTER_TYPE_P. 353 * init.c (build_dtor_call): Do not convert_from_reference. 354 * parser.c (cp_parser_template_argument): Unwrap indirected 355 reference. Allow TEMPLATE_PARM_INDEX as an object parm. 356 * pt.c (tsubst_copy_and_build) <case INDIRECT_REF>: Use 357 convert_from_reference, if indicated. 358 <case CALL_EXPR>: Do not convert_from_reference. 359 <case PARM_DECL, VAR_DECL>: Convert_from_reference if needed. 360 (tsubst_initializer_list): Do not convert_from_reference. 361 * rtti.c (init_rtti_processing): Adjust node creation. 362 (throw_bad_typeid): Use const_type_info_type_node. 363 Do not convert_from_reference. 364 (typeid_ok_p): Use const_type_info_type_node. 365 (build_typeid, get_typeid): Always return type_info typed node. 366 (build_dynamic_cast_1): Dont convert_from_reference. Refactor. 367 * semantics.c (finish_stmt_expr_expr): Do not 368 convert_from_reference. 369 (finish_id_expression): Convert_from_reference as appropriate. 370 * typeck.c (decay_conversion): Do not convert_from_reference. 371 (finish_class_member_access_expr): Likewise. 372 (build_indirect_ref): Use POINTER_TYPE_P. 373 (convert_arguments): Do not convert_from_reference. 374 (build_modify_expr): Likewise. 375 (convert_for_initialization): Likewise. 376 * typeck2.c (build_x_arrow): Likewise. 377 3782004-12-07 Ziemowit Laski <zlaski@apple.com> 379 380 * cp-tree.h (struct lang_type_class): Rename 'objc_protocols' 381 field to 'objc_info'. 382 3832004-12-07 Kazu Hirata <kazu@cs.umass.edu> 384 385 * pt.c: Replace a use of first_rtl_op with TREE_CODE_LENGTH. 386 3872004-12-07 Roger Sayle <roger@eyesopen.com> 388 389 * name-lookup.c (leave_scope): We only need to update 390 class_binding_level when leaving a class scope. 391 3922004-12-06 Ziemowit Laski <zlaski@apple.com> 393 394 * cp-tree.h (struct lang_type_class): Add 'objc_protocols' field. 395 3962004-12-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 397 398 PR c++/17011, c++/17971 399 * pt.c (tsubst_copy) <FIELD_DECL case>: Check and diagnose 400 invalid field. 401 (tsubst_copy_and_build) <COMPONENT_REF case>: Check 402 error_mark_node after member substitution. 403 * semantics.c (finish_id_expression): Call 404 finish_non_static_data_member for non-dependent FIELD_DECL. 405 4062004-12-03 Nathan Sidwell <nathan@codesourcery.com> 407 408 PR c++/18782 409 * decl.c (grokdeclarator): Make sure class in pointer to member is 410 not a namespace. 411 4122004-12-02 Nathan Sidwell <nathan@codesourcery.com> 413 414 PR c++/18318 415 * parser.c (cp_parser_new_type_id): Move array size expression 416 checks from here ... 417 * init.c (build_new): ... to here. 418 4192004-12-02 Nathan Sidwell <nathan@codesourcery.com> 420 421 PR c++/18758 422 * parser.c (cp_parser_class_head): Return NULL_TREE when 423 push_template_decl fails. Update comment. 424 4252004-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 426 427 PR c++/15664, c++/18276 428 * pt.c (tsubst_decl) <TEMPLATE_DECL case>: Reorganize. Correctly 429 tsubst TEMPLATE_DECL that is a TEMPLATE_TEMPLATE_PARM. 430 4312004-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 432 433 PR c++/18123 434 * parser.c (cp_parser_type_specifier): Catch template declaration 435 of enum. 436 4372004-12-01 Matt Austern <austern@apple.com> 438 439 * name-lookup.c (namespace_binding): Omit alias check for global 440 namespace. 441 4422004-12-01 Nathan Sidwell <nathan@codesourcery.com> 443 444 PR c++/18729 445 * parser.c (cp_parser_class_name): Check decl's type is not 446 error_mark_node. 447 448 PR c++/17431 449 * call.c (standard_conversion): Add FLAGS parameter. Do not allow 450 derived to base conversion when checking constructor 451 accessibility. 452 (implicit_conversion): Pass FLAGS to standard_conversion. 453 (check_constructir_callable): Disallow conversion functions. 454 4552004-11-30 Kazu Hirata <kazu@cs.umass.edu> 456 457 * parser.c: Fix comment typos. 458 4592004-11-27 Mark Mitchell <mark@codesourcery.com> 460 461 PR c++/18368 462 * parser.c (cp_parser_check_for_definition_in_return_type): Take 463 the defined type as a parameter, and inform the user about the 464 possibility of a missing semicolon. 465 (cp_parser_explicit_instantiation): Adjust call to 466 cp_parser_check_for_definition_in_return_type. 467 (cp_parser_init_declarator): Likewise. 468 (cp_parser_member_declaration): Likewise. 469 470 PR c++/18674 471 * cp-tree.def (TYPENAME_TYPE): Remove discussion of implicit 472 typename from comments. 473 * cp-tree.h (TYPENAME_IS_ENUM_P): New macro. 474 (TYPENAME_IS_CLASS_P): Likewise. 475 (make_typename_type): Change prototype. 476 * decl.c (struct_typename_info): New type. 477 (typename_compare): Expect the second argument to be a 478 typename_info, not a tree. 479 (build_typename_type): Add tag_type parameter. Do not create a 480 new type until necessary. 481 (make_typename_type): Add tag_type parameter. 482 * error.c (TYPENAME_TYPE): Print tags other than "typename" if 483 appropriate. 484 * friend.c (make_friend_class): Adjust call to make_typename_type. 485 * parser.c (cp_parser_make_typename_type): Likewise. 486 (cp_parser_primary_expression): Adjust call to 487 cp_parser_lookup_name. 488 (cp_parser_unqualified_id): Adjust calls to cp_parser_class_name. 489 (cp_parser_class_or_namespace_name): Likewise. 490 (cp_parser_postfix_expression): Adjust calls to 491 make_typename_type. 492 (cp_parser_mem_initializer_id): Adjust calls to 493 cp_parser_class_name. 494 (cp_parser_type_parameter): Adjust calls to cp_parser_lookup_name. 495 (cp_parser_template_name): Likewise. 496 (cp_parser_template_argument): Likewise. 497 (cp_parser_type_name): Adjust call to cp_parser_class_name. 498 (cp_parser_elaborated_type_specifier): Adjust calls to 499 make_typename_type and cp_parser_lookup_name. 500 (cp_parser_namespace_name): Likewise. 501 (cp_parser_class_name): Replace type_p parameter with tag_type. 502 Adjust calls to make_typename_type and cp_parser_lookup_name. 503 (cp_parser_class_head): Adjust calls to cp_parser_class_name. 504 (cp_parser_base_specifier): Likewise. 505 (cp_parser_lookup_name): Replace is_type parameter with tag_type. 506 Adjust calls to make_typename_type and lookup_qualified_name. 507 (cp_parser_lookup_name_simple): Adjust call to 508 cp_parser_lookup_name. 509 (cp_parser_constructor_declarator_p): Adjust call to 510 cp_parser_class_name. 511 * pt.c (convert_template_argument): Adjust all to 512 make_typename_type. 513 (tsubst_decl): Do not pre-substitute the type of the declaration. 514 (tsubst): Hand off declarations more quickly. Adjust call to 515 make_typename_type. 516 517 PR c++/18512 518 * parser.c (cp_parser_postfix_dot_deref_expression): Robustify. 519 5202004-11-29 Daniel Jacobowitz <dan@codesourcery.com> 521 522 PR c/7544 523 * Make-lang.in (cp/decl2.o): Update dependencies. 524 * decl2.c (finish_file): Call maybe_apply_pending_pragma_weaks. 525 5262004-11-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 527 528 PR c++/18652 529 * name-lookup.c (pushtag): Change return type to tree. 530 * cp-tree.h (pushtag): Adjust declaration. 531 * decl.c (xref_tag, start_enum): Use return value of pushtag. 532 * pt.c (push_template_decl_real): Return immediately if 533 pushdecl_namespace_level returns error_mark_node. 534 5352004-11-27 Kazu Hirata <kazu@cs.umass.edu> 536 537 * pt.c: Fix a comment typo. 538 5392004-11-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 540 541 Friend class name lookup 4/n 542 * class.c (pushclass): Don't call cxx_remember_type_decls. 543 * cp-tree.h (clear_anon_tags): Remove declaration. 544 * decl.c (grokdeclarator): Don't call lookup_tag_reverse. 545 * name-lookup.c (binding_entry_free, binding_table_free): Comment 546 out functions. 547 (binding_table_find_anon_type, binding_table_reverse_maybe_remap, 548 binding_table_remove_anonymous_types, cxx_remember_type_decls, 549 bt_print_entry, clear_anon_tags, follow_tag_typedef, lookup_tag, 550 lookup_tag_reverse): Remove 551 (begin_scope, leave_scope, kept_level_p, print_binding_level): 552 Don't use type_decls field in cp_binding_level. 553 (maybe_process_template_type_declaration, pushtag): Set 554 CLASSTYPE_NESTED_UTDS directly. 555 * name-lookup.h (binding_table_remove_anonymous_types, 556 cxx_remember_type_decls, lookup_tag, lookup_tag_reverse): Remove 557 declaration. 558 (cp_binding_level): Remove type_decls field. 559 5602004-11-26 Kazu Hirata <kazu@cs.umass.edu> 561 562 * typeck.c: Fix a comment typo. 563 5642004-11-25 Mark Mitchell <mark@codesourcery.com> 565 566 PR c++/18445 567 * class.c (instantiate_type): Treat NON_DEPENDENT_EXPRs with 568 unknown_type as non matching. Tidy up. 569 * pt.c (build_non_dependent_expr): Do not build a 570 NON_DEPENDENT_EXPR for a VAR_DECL. 571 572 PR c++/18001 573 * cp-tree.h (lvalue_or_else): Remove declaration. 574 * tree.c (lvalue_or_else): Remove. 575 * typeck.c (build_unary_op): Adjust call to lvalue_or_else. 576 (build_modify_expr): Likewise. 577 578 PR c++/18625 579 * decl.c (duplicate_decls): Return error_mark_node on error, as 580 specified. 581 582 PR c++/18466 583 * decl.c (grokvardecl): Keep track of whether or not a there was 584 explicit qualification. 585 * name-lookup.c (set_decl_namespace): Complain about explicit 586 qualification of a name within its own namespace. 587 588 PR c++/18545 589 * typeck.c (check_return_expr): Robustify. 590 5912004-11-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 592 593 Friend class name lookup 3/n, PR c++/3332 594 * name-lookup.c (push_inner_scope, pop_inner_scope): New functions. 595 (lookup_type_scope): Don't deal with name from user declaration 596 specially. 597 * name-lookup.h (push_inner_scope, pop_inner_scope): Add declarations. 598 * parser.c (cp_parser_class_specifier): Use push_inner_scope and 599 pop_inner_scope. 600 6012004-11-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 602 603 Friend class name lookup 2/n, PR c++/14513, c++/15410 604 * name-lookup.c (lookup_name_real): Simplify. 605 (lookup_type_scope): Add SCOPE parameter. Handle friend class 606 lookup. 607 * name-lookup.h (tag_scope): New enum type. 608 (lookup_type_scope): Adjust declaration. 609 * decl.c (lookup_and_check_tag, xref_tag, xref_tag_from_type): 610 Change bool parameter GLOBALIZED to TAG_SCOPE parameter SCOPE. 611 (start_enum): Likewise. Add assertion test that NAME is 612 IDENTIFIER_NODE. Use anonymous name for dummy ENUMERAL_TYPE in 613 case of error. 614 * cp-tree.h (xref_tag, xref_tag_from_type): Adjust declarations. 615 * parser.c (cp_parser_elaborated_type_specifier, 616 cp_parser_class_head): Adjust call to xref_tag. 617 * pt.c (lookup_template_class, instantiate_class_template): 618 Likewise. 619 * rtti.c (init_rtti_processing, build_dynamic_cast_1, 620 tinfo_base_init, emit_support_tinfos): Likewise. 621 6222004-11-25 Joseph S. Myers <joseph@codesourcery.com> 623 624 * g++spec.c, lex.c: Avoid ` as left quote in diagnostics. 625 6262004-11-24 Mark Mitchell <mark@codesourcery.com> 627 628 PR c++/17473 629 * name-lookup.c (supplement_binding): Do not allow typedefs to be 630 redefined in class scope. 631 632 PR c++/18285 633 * parser.c (cp_parser_set_decl_type_spec): Do not try to allow 634 redefinitions of builtin types other that "bool" or "wchar_t". 635 6362004-11-24 Steven Bosscher <stevenb@suse.de> 637 638 * decl.c (cxx_init_decl_processing): Don't clear 639 flag_inline_functions. 640 6412004-11-24 Mark Mitchell <mark@codesourcery.com> 642 643 * pt.c (tsubst_function_type): Do not permit function types which 644 return arrays or functions. 645 646 PR c++/18586 647 * parser.c (cp_parser_init_declarator): Do not pop scope twice. 648 649 PR c++/18530 650 * cp-tree.h (CTOR_NAME): Remove. 651 (DTOR_NAME): Remove. 652 * decl.c (initialize_predefined_identifiers): Add spaces to the 653 end of constructor and destructor names. 654 6552004-11-24 Giovanni Bajo <giovannibajo@gcc.gnu.org> 656 657 PR c++/8929 658 * decl.c (start_decl): Check for invalid specialization headers. 659 6602004-11-24 Paolo Bonzini <bonzini@gnu.org> 661 662 PR c++/16882 663 664 * call.c (standard_conversion): Move check for conversions between 665 vector pointers... 666 * typeck.c (ptr_reasonably_similar): ... here. 667 6682004-11-23 Ben Elliston <bje@au.ibm.com> 669 670 * cp-tree.h (context_as_string): Remove extern. 671 * error.c (context_as_string): Remove. 672 673 * cp-tree.h (cp_type_qual_from_rid): Remove extern. 674 * lex.c (cp_type_qual_from_rid): Remove. 675 676 * cp-tree.h (do_poplevel): Remove extern. 677 (check_multiple_declarators): Likewise. 678 * semantics.c (do_poplevel): Make static. 679 (check_multiple_declarators): Remove. 680 681 * cp-tree.h (check_final_overrider): Remove extern. 682 * search.c (check_final_overrider): Make static. 683 684 * cp-tree.h (build_artificial_parm): Remove extern. 685 * decl2.c (build_artificial_parm): Make static. 686 6872004-11-22 Giovanni Bajo <giovannibajo@gcc.gnu.org> 688 689 PR c++/18354 690 * typeck.c (build_unary_op) <CONVERT_EXPR, NEGATE_EXPR>: Unify code. 691 Make sure the result is always a rvalue. 692 6932004-11-16 Giovanni Bajo <giovannibajo@gcc.gnu.org> 694 695 * decl.c (start_preparsed_function): Call check_function_type even 696 in templates. 697 (require_complete_types_for_parms): Skip dependent types. 698 (check_function_type): Likewise. 699 7002004-11-16 Steven Bosscher <stevenb@suse.de> 701 702 * Make-lang.in (cp/decl.o, cp/search.o): Don't depend on stack.h. 703 * search.c: Don't include it. 704 7052004-11-15 Andrew Pinski <pinskia@physics.uc.edu> 706 707 * cp-gimplify.c: Include pointer-set.h 708 (cp_genericize_r): Use pointer_sets instead of a hashtable. 709 Also instert the new statement for CLEANUP_STMT. 710 (cp_genericize): Use pointer_sets instead of a hashtable. 711 * Make-lang.in (cp-gimplify.o): Depend on pointer-set.h. 712 7132004-11-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 714 715 Friend class name lookup 1/n, PR c++/18471 716 * decl.c (lookup_and_check_tag): New function. 717 (xref_tag, start_enum): Use it. 718 (check_elaborated_type_specifier): Move TEMPLATE_TYPE_PARM check 719 before !DECL_IMPLICIT_TYPEDEF_P. Also display previously declared 720 location. 721 * name-lookup.c (lookup_name_current_level): Rename to ... 722 (lookup_name_innermost_nonclass_level): ... this. 723 (lookup_type_scope): New function. 724 * name-lookup.h (lookup_name_current_level): Rename to ... 725 (lookup_name_innermost_nonclass_level): ... this. 726 (lookup_type_scope): Add declaration. 727 7282004-11-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 729 730 PR c++/17344 731 * pt.c (coerce_template_parms): Only emit error message about 732 invalid template argument when TF_ERROR. 733 7342004-11-12 Mark Mitchell <mark@codesourcery.com> 735 736 PR c++/18389 737 * decl.c (start_decl): Make sure to set *pop_scope_p. Return 738 error_mark_node to indicate errors. 739 740 PR c++/18429 741 * parser.c (cp_parser_direct_declarator): Disallow non-constant 742 array bounds when not inside a function. 743 744 PR c++/18436 745 * pt.c (tsubst_copy_and_build): Do not do Koenig lookup when an 746 unqualified name resolves to a member function. 747 748 PR c++/18407 749 * pt.c (tsubst_copy_and_build): Handle qualified names used from a 750 derived class correctly. 751 752 * decl2.c (import_export_decl): Fix typo in comment. 753 * tree.c (pod_type_p): Likewise. 754 7552004-11-10 Andrew Pinski <pinskia@physics.uc.edu> 756 757 * typeck.c (cxx_mark_addressable): Add braces around the first if. 758 7592004-11-10 Adam Nemet <anemet@lnxw.com> 760 761 PR middle-end/18160 762 * typeck.c (cxx_mark_addressable): Issue an error if address of an 763 explicit register variable is requested. 764 7652004-11-10 Nathan Sidwell <nathan@codesourcery.com> 766 767 PR c++/18143 768 * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK): New. 769 (struct lang_decl_flags): Add thunk_p flag. 770 (struct lang_decl): Remove separate fixed_offset. Place 771 cloned_function and fixed_offset into union. 772 (DECL_CLONED_FUNCTION_P, DECL_CLONED_FUNCTION): Adjust. 773 (DECL_THUNK_P, SET_DECL_THUNK_P): Adjust. 774 (THUNK_FIXED_OFFSET): Adjust. 775 * method.c (make_thunk): Adjust. 776 7772004-11-09 Mark Mitchell <mark@codesourcery.com> 778 779 PR c++/18369 780 * init.c (build_new_1): Handle parenthesized type-ids that name an 781 array type. Tidy. 782 7832004-11-09 Joseph S. Myers <joseph@codesourcery.com> 784 785 * call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c, 786 pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for 787 quoting in diagnostics. 788 * parser.c (cp_parser_sizeof_operand): Use '' instead of `' for 789 quoting in printf format. 790 * decl.c (duplicate_decls, start_decl): Use %qD instead of 791 unquoted %D. 792 7932004-11-08 Kazu Hirata <kazu@cs.umass.edu> 794 795 * class.c, decl.c, lex.c, name-lookup.c, parser.c, pt.c, 796 search.c, typeck2.c: Fix comment formatting. 797 7982004-11-04 Ulrich Weigand <uweigand@de.ibm.com> 799 800 PR tree-optimization/18184 801 * cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers 802 of different modes or alias-all flags as equivalent. 803 * typeck.c (comptypes): Likewise. 804 8052004-11-04 Giovanni Bajo <giovannibajo@gcc.gnu.org> 806 807 DR 49, 100 808 * cp-tree.h (TYPE_REF_OBJ_P): New macro. 809 (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P, 810 TYPE_REFFN_P): Document. 811 (fold_decl_constant_value): New prototype. 812 * pt.c (convert_nontype_argument_function): Rewrite and extract 813 parts into... 814 (fold_decl_constant_value, convert_nontype_argument_function): New. 815 (lookup_template_class): Add comment about useless double call. 816 * mangle.c (write_expression): Strip conversions before lowering 817 pointer to members. 818 * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow 819 enum to enum conversion. 820 8212004-11-02 Mark Mitchell <mark@codesourcery.com> 822 823 PR c++/18124 824 * parser.c (cp_parser_type_parameter): Robustify. 825 826 PR c++/18155 827 * parser.c (cp_parser_single_declaration): Disallow template 828 typedefs. 829 830 PR c++/18177 831 * typeck.c (build_const_cast): Use error_operand_p. 832 8332004-11-02 Ziemowit Laski <zlaski@apple.com> 834 835 * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition. 836 (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h. 837 * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here 838 from cp-lang.c. 839 * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here 840 from cp-lang.c. 841 (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c. 842 8432004-11-01 Nathan Sidwell <nathan@codesourcery.com> 844 845 PR c++/18064 846 * search.c (check_final_overrider): Deprecate gnu covariant extension. 847 8482004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net> 849 850 Convert diagnostics to use quoting flag q 9/n 851 * typeck.c (build_x_unary_op, convert_member_func_to_ptr, 852 get_delta_difference): Use new quotation style. 853 * repo.c (reopen_repo_file_for_write): Likewise. 854 * pt.c (do_type_instantiation): Likewise. 855 * parser.c (cp_parser_diagnose_invalid_type_name): 856 * name-lookup.c (push_overloaded_decl, set_decl_namespace): 857 * error.c (cp_print_error_function, 858 print_instantiation_full_context): Likewise. 859 * decl.c (define_label, grok_reference_init, 860 maybe_deduce_size_from_array_init, revert_static_member_fn): 861 * decl2.c (check_classfn): Likewise. 862 * class.c (add_method, check_field_decls, layout_class_type, 863 resolve_address_of_overloaded_function): Likewise. 864 * call.c (build_x_va_arg, build_over_call): Likewise. 865 8662004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net> 867 868 Convert diagnostics to use quoting flag q 8/n 869 * cvt.c (cp_convert_to_pointer, warn_ref_binding, 870 convert_to_reference, ocp_convert, convert_to_void 871 cp_convert_to_pointer): Use new quotation style. 872 8732004-10-31 Mark Mitchell <mark@codesourcery.com> 874 875 PR c++/15172 876 * typeck2.c (store_init_value): Use split_nonconstant_init even 877 for types that require construction. 878 8791004-10-28 Matt Austern <austern@apple.com> 880 881 PR c++/17542 882 * cp-tree.h (class_key_or_enum_as_string): Declare. 883 * error.c (class_key_or_enum): Rename to class_key_or_enum_as_string 884 and remove static qualifier. 885 * decl.c (shadow_tag): Warn about ignored attributes in class/struct/ 886 union/enum declaration. 887 8882004-10-29 Kazu Hirata <kazu@cs.umass.edu> 889 890 * pt.c: Fix a comment typo. 891 8922004-10-28 Nathan Sidwell <nathan@codesourcery.com> 893 894 * typeck.c (composite_pointer_type): Remove comment about DR 195. 895 (build_reinterpret_cast_1): Revert DR195 patch. Only emit a 896 warning when being pedantic. 897 (build_reinterpet_cast, build_c_cast): Adjust. 898 8992004-10-29 Mark Mitchell <mark@codesourcery.com> 900 901 PR c++/17695 902 * decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they 903 appear in a constructor/destructor that will be cloned. 904 9051004-10-28 Matt Austern <austern@apple.com> 906 907 PR c++/14124 908 * decl.c (finish_enum): Handle packed attribute. 909 * parser.c (cp_parser_enum_specifier): Process trailing attributes. 910 9112004-10-28 Mark Mitchell <mark@codesourcery.com> 912 913 PR c++/17132 914 * pt.c (instantiate_class_template): Increment 915 processing_template_decl when substituting into a member class 916 template. 917 9182004-10-27 Mark Mitchell <mark@codesourcery.com> 919 920 PR c++/17435 921 * call.c (convert_like_real): Fix formatting. 922 (initialize_reference): When binding a temporary to a base class, 923 ensure that the nominal copy made is to the derived class, not the 924 base class. 925 926 PR c++/18140 927 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not 928 include ">>". 929 9302004-10-27 Andrew Pinski <pinskia@physics.uc.edu> 931 932 * decl.c (bad_specifiers): Move the q after the %. 933 9342004-10-27 Andrew Pinski <pinskia@physics.uc.edu> 935 936 * parser.c (cp_parser_diagnose_invalid_type_name): Move the q after 937 the %. 938 9392004-10-26 Mark Mitchell <mark@codesourcery.com> 940 941 * name-lookup.c (do_namespace_alias): Use FROB_CONTEXT. 942 * search.c (current_scope): Fix prototype. 943 944 PR c++/18093 945 * search.c (current_scope): Return the innermost non-block scope, 946 not the innermost non-block, non-namespace scope. 947 (at_namespace_scope_p): Adjust accordingly. 948 (dfs_accessible_post): Do not pass namespaces to is_friend. 949 (dfs_walk_once_accessible_r): Likewise. 950 * decl.c (grokvardecl): Adjust call to current_scope. 951 (build_enumerator): Likewise. 952 * parser.c (cp_parser_using_declaration): Likewise. 953 (cp_parser_direct_declarator): Use at_namespace_scope_p instead of 954 current_scope. 955 (cp_parser_class_head): Adjust call to current_scope. 956 * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the 957 alias. 958 959 PR c++/18020 960 * pt.c (tusbst_copy_and_build): Resolve enumeration constants to 961 their underlying values. 962 963 PR c++/18161 964 * typeck.c (build_binary_op): Honor build_type, even when in a 965 template. 966 9672004-10-26 Nathan Sidwell <nathan@codesourcery.com> 968 969 * parser.c (cp_lexer_get_preprocessor_token): Remove unneeded 970 padding token checking. 971 9722004-10-25 Andrew Pinski <pinskia@physics.uc.edu> 973 974 PR c++/18121 975 * decl.c (grokdeclarator) <case cdk_array>: Remove the call 976 layout_type as it is already done by create_array_type_for_decl. 977 9782004-10-22 Nathan Sidwell <nathan@codesourcery.com> 979 980 PR c++/18095 981 * parser.c (eof_token): Make const, correctly initialize rid and 982 location fields. 983 (struct cp_lexer): Replace buffer_end pointer with buffer_length 984 count. Adjust. 985 (cp_lexer_new_main): Directly grow lexer's buffer here. Don't 986 zero it out. 987 (cp_lexer_new_from_tokens): Adjust. 988 (cp_lexer_grow_buffer): Remove. 989 (cp_lexer_peek_nth_token, cp_lexer_consume_token, 990 cp_lexer_purge_token): Add const casts. 991 9922004-10-21 Mark Mitchell <mark@codesourcery.com> 993 994 PR c++/18073 995 PR c++/10841 996 * cp-tree.h (convert_to_base): Change prototype. 997 (build_ptrmemfunc): Likewise. 998 (convert_ptrmem): New function. 999 * call.c (struct conversion): Adjust documentation for base_p. 1000 (standard_conversion): Set base_p for ck_pmem conversions as 1001 appropriate. 1002 (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr 1003 conversions. 1004 * class.c (convert_to_base): Handle both pointers and objects. 1005 Add nonnull parameter. 1006 (build_vfield_ref): Adjust call to convert_to_base. 1007 * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc. 1008 (convert_force): Likewise. 1009 * typeck.c (build_unary_op): Likewise. 1010 (convert_ptrmem): New function. 1011 (build_static_cast_1): Use it. 1012 (build_reinterpret_cast): Allow conversions to vector types. 1013 (get_delta_difference): Add c_cast_p parameter. 1014 (build_ptrmemfunc): Likewise. Adjust calls to 1015 get_delta_difference. 1016 10172004-10-21 Andrew Pinski <pinskia@physics.uc.edu> 1018 1019 PR c++/13560 1020 * error.c (cp_error_at): Output the context as it might be 1021 different file as the other location. 1022 10232004-10-21 Kazu Hirata <kazu@cs.umass.edu> 1024 1025 * typeck.c: Fix a comment typo. 1026 10272004-10-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 1028 1029 PR c++/13495 1030 * decl.c (make_unbound_class_template): Add PARM_LIST parameter. 1031 * cp-tree.h (make_unbound_class_template): Adjust prototype. 1032 * parser.c (cp_parser_lookup_name): Adjust call to 1033 make_unbound_class_template. 1034 (cp_parser_single_declaration): Handle member class of class 1035 template as template friend parsing correctly. 1036 * friend.c (is_friend): Call is_specialization_of_friend for 1037 template friend class. 1038 (make_friend_class): Handle member class of class template as 1039 template friend. 1040 * pt.c (is_specialization_of_friend): Likewise. 1041 (instantiate_class_template): Likewise. 1042 (tsubst): Adjust call to make_unbound_class_template. 1043 10442004-10-20 Nathan Sidwell <nathan@codesourcery.com> 1045 1046 * typeck.c (composite_pointer_type): Add comment about DR 195 1047 (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter. 1048 Allow function pointer conversions that DR195 suggests. 1049 (build_reinterpret_cast, build_c_cast): Update 1050 build_reinterpret_cast_1 calls. 1051 10522004-10-20 Kazu Hirata <kazu@cs.umass.edu> 1053 1054 * call.c, typeck.c: Fix comment typos. 1055 10562004-10-20 Nathan Sidwell <nathan@codesourcery.com> 1057 1058 * parser.c (cp_token_position): New typedef. Define VEC thereof. 1059 (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make 1060 next_token and last_token cp_token_position. Make saved_tokens a 1061 VEC(cp_token_position). 1062 (eof_token): New static variable. 1063 (CP_SAVED_TOKENS_SIZE): Rename to ... 1064 (CP_SAVED_TOKEN_STACK): ... here. 1065 (cp_lexer_new_main): Adjust main lexer creation and buffer 1066 filling. 1067 (cp_lexer_new_from_tokens): Do not copy the tokens, merely point 1068 to the parent buffer. Do not append eof token. 1069 (cp_lexer_destroy): Only free buffer if non-NULL. Free token 1070 stack. 1071 (cp_lexer_next_token, cp_lexer_prev_token): Remove. 1072 (cp_lexer_token_position, cp_lexer_token_at): New. 1073 (cp_lexer_saving_tokens): Adjust. Make inline. 1074 (cp_lexer_advance_token, cp_lexer_token_difference): Remove. 1075 (cp_lexer_peek_token_emit_debug_info): Fold into ... 1076 (cp_lexer_peek_token): ... here. 1077 (cp_lexer_peek_nth_token): Don't peek past EOF. 1078 (cp_lexer_consume_token): Set next_token to eof_token, if reaching 1079 EOF. 1080 (cp_lexer_purge_token): Adjust eof setting. 1081 (cp_lexer_purge_tokens_after): Likewise. 1082 (cp_lexer_save_tokens): Push next_token directly. 1083 (cp_lexer_commit_tokens): Adjust. 1084 (cp_lexer_rollback_tokens): Pop next_token directly. 1085 (cp_parser_check_for_invalid_template_id): Adjust token purging. 1086 (cp_parser_translation_unit): Do not consume the EOF. 1087 (cp_parser_nested_name_specifier_opt): Adjust token purging. 1088 (cp_parser_template_id, cp_parser_template_name): Likewise. 1089 10902004-10-19 Mark Mitchell <mark@codesourcery.com> 1091 1092 PR c++/14035 1093 * call.c (struct conversion): Add base_p. 1094 (convert_like): Add c_cast_p argument. 1095 (convert_like_with_conversion): Likewise. 1096 (build_conv): Clear base_p. 1097 (standard_conversion): Set it, for derived-to-base conversions. 1098 (convert_like_real): Add c_cast_p parameter. Handle pointer 1099 conversions directly rather than relying on ocp_convert. 1100 (perform_direct_initialization_if_possible): Add c_cast_p 1101 parameter. 1102 * cp-tree.h (perform_direct_initialization_if_possible): Change 1103 prototype. 1104 (convert_member_func_to_ptr): New function. 1105 * typeck.c (check_for_casting_away_constness): Add diag_fn 1106 parameter. 1107 (build_static_cast_1): New function, split out from ... 1108 (build_static_cast): ... here. Use build_static_cast_1. 1109 (build_reinterpret_cast_1): New function, split out from ... 1110 (build_reinterpret_cast): ... here. Use build_reinterpret_cast_1. 1111 (build_const_cast_1): New function, split out from ... 1112 (build_const_cast): ... here. Use build_const_cast_1. 1113 (build_c_cast): Rewrite to use build_const_cast_1, 1114 build_static_cast_1, and build_reinterpret_cast_1. 1115 (convert_member_func_to_ptr): New function. 1116 11172004-10-19 Paolo Bonzini <bonzini@gnu.org> 1118 1119 PR c++/18047 1120 * parser.c (enum cp_parser_prec): Give relational expressions 1121 a higher precedence than equality expressions. 1122 11232004-10-15 Nathan Sidwell <nathan@codesourcery.com> 1124 1125 * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call. 1126 (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove. 1127 (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call. 1128 (enum base_access): Reorganize. 1129 (accessible_base_p, accessible_p): Add consider_local_p parameter. 1130 * call.c (standard_conversion): Update comment about 1131 DERIVED_FROM_P. 1132 (enforce_access): Adjust accessible_p call. 1133 (build_over_call): Adjust accessible_base_p call. 1134 * class.c (convert_to_base): Adjust lookup_base call. 1135 (build_vtbl_ref_1): Likewise. 1136 (warn_about_ambiguous_bases): Likewise. Add early exit. 1137 * cvt.c (convert_to_pointer_force) Adjust lookup_base call. 1138 * search.c (accessible_base_p): Add consider_local_p parameter. 1139 (lookup_base): Pass consider_local_p to accessible_base_p call. 1140 (friend_accessible_p): Check whether scope is a class member. 1141 Remove unnecessary class template check. 1142 (accessible_p): Add consider_local_p parameter. Use it. 1143 (adjust_result_of_qualified_name_lookup): Adjust lookup_base call. 1144 * tree.c (maybe_dummy_object): Likewise. 1145 * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P. 1146 (build_class_member_access_expr): Adjust lookup_base call. 1147 * typeck2.c (binfo_or_else): Likewise. 1148 * rtti.c (build_dynamic_cast_1): Access can consider friendship 1149 and current scope. 1150 11512004-10-17 Giovanni Bajo <giovannibajo@gcc.gnu.org> 1152 1153 PR c++/17743 1154 * decl2.c (grokfield): Apply attributes also to TYPE_DECLs. 1155 11562004-10-16 Giovanni Bajo <giovannibajo@gcc.gnu.org> 1157 1158 PR c++/10479 1159 * parser.c (cp_parser_parenthesized_expression_list): Fold 1160 non-dependent expressions in attribute lists. 1161 11622004-10-15 Mark Mitchell <mark@codesourcery.com> 1163 1164 PR c++/17042 1165 * decl.c (declare_global_var): Use the return value from pushdecl. 1166 1167 PR c++/14667 1168 * parser.c (cp_parser_simple_declaration): Do not diagnose invalid 1169 type names if we have already found a valid type. 1170 (cp_parser_member_declaration): Likewise. 1171 1172 PR c++/17916 1173 * parser.c (cp_parser_member_specification_opt): Handle 1174 CPP_PRAGMA. 1175 11762004-10-15 Kazu Hirata <kazu@cs.umass.edu> 1177 1178 * dump.c, g++spec.c, repo.c: Update copyright. 1179 11802004-10-15 Kazu Hirata <kazu@cs.umass.edu> 1181 1182 * decl.c: Fix a comment typo. 1183 11842004-10-13 Andrew Pinski <pinskia@physics.uc.edu> 1185 1186 PR c++/16301 1187 * name-lookup.c (parse_using_directive): If we have a 1188 error_mark_node, do not set the decl namespace associations 1189 on it. 1190 11912004-10-14 Mark Mitchell <mark@codesourcery.com> 1192 1193 PR c++/17976 1194 * decl.c (cp_finish_decl): Do not call expand_static_init more 1195 than once for a single variable. 1196 11972004-10-14 Matt Austern <austern@apple.com> 1198 1199 * Make-lang.in (pt.o): depends on pointer-set.h 1200 * cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now. 1201 * pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t 1202 (for_each_template_parm): Convert from htab_t to pointer_set_t. 1203 * tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now. 1204 12052004-10-13 Andrew Pinski <pinskia@physics.uc.edu> 1206 1207 PR c++/17661 1208 * semantics.c (finish_for_expr): Convert expression to void 1209 so that we don't create temporaries for a?b:c. 1210 12112004-10-13 Kazu Hirata <kazu@cs.umass.edu> 1212 1213 * search.c: Fix a comment typo. 1214 12152004-10-12 Nathan Sidwell <nathan@codesourcery.com> 1216 1217 * class.c (dfs_modify_vtables): Simplify condition. Return 1218 dfs_skip_bases as appropriate. 1219 (modify_all_vtables): Walk in pre-order. 1220 * search.c (dfs_walk_all, dfs_walk_once_r, 1221 dfs_walk_once_accessible_r): Assert post order function never 1222 returns dfs_skip_bases. 1223 1224 * search.c (struct lookup_base_data_s): New. 1225 (lookup_base_r): Replace with ... 1226 (dfs_lookup_base): ... this. 1227 (lookup_base): Use dfs_walk_all. 1228 12292004-10-12 Kazu Hirata <kazu@cs.umass.edu> 1230 1231 * search.c: Fix comment typos. 1232 12332004-10-11 Mark Mitchell <mark@codesourcery.com> 1234 1235 PR c++/15786 1236 * parser.c (cp_parser_declarator): Add member_p parameter. 1237 (cp_parser_condition): Adjust calls to cp_parser_declarator. 1238 (cp_parser_explicit_instantiation): Likewise. 1239 (cp_parser_init_declarator): Likewise. 1240 (cp_parser_direct_declarator): Add member_p parameter. Do not 1241 parse tentatively when parsing the parameters to a member. 1242 (cp_parser_type_id): Adjust calls to cp_parser_declarator. 1243 (cp_parser_parameter_declaration): Likewise. 1244 (cp_parser_member_declaration): Likewise. 1245 (cp_parser_exception_declaration): Likewise. 1246 1247 PR c++/17936 1248 * cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment. 1249 * pt.c (optimize_specialization_lookup_p): Do not optimize lookups 1250 for members of partial or explicit specializations. 1251 1252 PR c++/17929 1253 * decl2.c (finish_anon_union): Robustify. 1254 12552004-10-11 Nathan Sidwell <nathan@codesourcery.com> 1256 1257 * cp-tree.h (get_dynamic_cast_base_type): Rename to ... 1258 (dcast_base_hint): ... here. 1259 * rtti.c (build_dynamic_cast_1): Use dcast_base_hint. 1260 * search.c (struct dcast_data_s): New. 1261 (dynamic_cast_base_recurse): Remove. Replace with ... 1262 (dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New. 1263 (get_dynamic_cast_base_type): Rename to ... 1264 (dcast_base_hint): ... here. Use dfs_walk_once_accessible. 1265 (accessible_r): Remove. 1266 (dfs_accessible_post): New, broken out of accessible_r. 1267 (accessible_p): Use dfs_walk_once_accessible. 1268 (dfs_walk_once_accessible_r): New. From accessible_r. 1269 (dfs_walk_once_accessible): New. From acessible_p. 1270 1271 * cp-tree.h (SAME_BINFO_TYPE_P): New. 1272 * class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare 1273 binfo types. 1274 (convert_to_base_statically, determine_primary_bases, 1275 update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits, 1276 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group, 1277 accumulate_vtbl_inits, dfs_accumulate_vtbl_inits, 1278 build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise. 1279 * init.c (expand_member_init): Likewise. 1280 * search.c (lookup_base_r, dynamic_cast_base_recurse, 1281 binfo_via_virtual, copied_binfo, binfo_for_vbase, 1282 original_binfo): Likewise. 1283 * tree.c (copy_binfo): Likewise. 1284 12852004-10-11 Kazu Hirata <kazu@cs.umass.edu> 1286 1287 * semantics.c: Fix comment typos. 1288 12892004-10-10 Andrew Pinski <pinskia@physics.uc.edu> 1290 1291 PR c++/17554 1292 part of c++/17657 1293 middle-end/17703 1294 * semantics.c (maybe_cleanup_point_expr): Call 1295 fold_build_cleanup_point_expr. 1296 (maybe_cleanup_point_expr_void): New function. 1297 (add_decl_expr): Call maybe_cleanup_point_expr_void. 1298 (finish_expr_stmt): Likewise. 1299 (finish_return_stmt): Likewise. 1300 (finish_for_expr): Likewise. 1301 (finish_asm_stmt): Likewise. 1302 * typeck.c (condition_conversion): Call 1303 fold_build_cleanup_point_expr. 1304 13052004-10-10 Andrew Pinski <pinskia@physics.uc.edu> 1306 1307 PR c++/17907 1308 * semantics.c (add_decl_expr): If the decl has a size which 1309 has side effects then the decl expression needs a cleanup point. 1310 13112004-10-10 Mark Mitchell <mark@codesourcery.com> 1312 1313 PR c++/17393 1314 * decl.c (grokdeclarator): Robustify error-recovery on invalid 1315 declarations. 1316 13172004-10-10 Gabriel Dos Reis <gdr@integrable-solutions.net> 1318 1319 Convert diagnostics to use quoting flag q 7/n 1320 * typeck.c (composite_pointer_type_r, composite_pointer_type, 1321 cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr, 1322 string_conv_p, build_class_member_access_expr, 1323 build_class_member_access_expr, lookup_destructor, 1324 finish_class_member_access_expr, build_indirect_ref, 1325 get_member_function_from_ptrfunc, build_function_call, 1326 convert_arguments, build_binary_op, pointer_diff, build_unary_op, 1327 check_for_casting_away_constness, build_static_cast, 1328 build_reinterpret_cast, build_const_cast, build_c_cast, 1329 build_modify_expr, get_delta_difference, build_ptrmemfunc, 1330 dubious_conversion_warnings, convert_for_assignment, 1331 convert_for_initialization, 1332 maybe_warn_about_returning_address_of_local, check_return_expr): 1333 Use quoting marks. 1334 1335 * typeck2.c (error_not_base_type, readonly_error, 1336 abstract_virtuals_error, cxx_incomplete_type_diagnostic, 1337 store_init_value, digest_init, build_x_arrow, 1338 build_m_component_ref, require_complete_eh_spec_types): Likewise. 1339 1340 * tree.c (cp_build_qualified_type_real, 1341 handle_java_interface_attribute, handle_init_priority_attribute): 1342 Likewise. 1343 1344 * semantics.c (finish_asm_stmt, finish_non_static_data_member, 1345 finish_pseudo_destructor_expr, 1346 check_template_template_default_arg, begin_class_definition, 1347 finish_base_specifier, qualified_name_lookup_error, 1348 finish_id_expression, finish_typeof): Likewise. 1349 1350 * search.c (lookup_base, check_final_overrider, 1351 look_for_overrides_r): Likewise. 1352 1353 * rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise. 1354 13552004-10-09 Mark Mitchell <mark@codesourcery.com> 1356 1357 PR c++/17867 1358 * error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a 1359 constructor. 1360 1361 PR c++/17670 1362 * init.c (build_new): Correct comments. 1363 * parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in 1364 the non-array case. 1365 1366 PR c++/17821 1367 * parser.c (cp_parser_postfix_dot_deref_expression): If the 1368 pseduo-destructor-name production does not work, fall back to the 1369 ordinary production. 1370 1371 PR c++/17826 1372 * tree.c (cp_tree_equal): Handle a BASELINK. 1373 1374 PR c++/17524 1375 * cp-tree.h (check_var_type): New function. 1376 * decl.c (check_var_type): New function, split out from ... 1377 (grokdeclarator): ... here. 1378 * pt.c (tsubst_decl): Use check_var_type. 1379 1380 PR c++/17685 1381 * decl.c (grokdeclarator): Disallow declarations of operators as 1382 non-functions. 1383 13842004-10-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de> 1385 1386 PR c++/17868 1387 * error.c (dump_expr): Add missing case for RDIV_EXPR. 1388 13892004-10-08 Kazu Hirata <kazu@cs.umass.edu> 1390 1391 * pt.c, search.c: Fix comment typos. 1392 13932004-10-08 Nathan Sidwell <nathan@codesourcery.com> 1394 1395 * cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp, 1396 unmarkedp): Remove. 1397 (dfs_skip_bases, dfs_walk_all, dfs_walk_once): New. 1398 * class.c (struct find_final_overrider_data): Remove most_derived, 1399 vpath_list and vpath fields. Add path field. 1400 (dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust. 1401 (dfs_find_final_overrider): Rename to ... 1402 (dfs_find_final_overrider_pre): ... here. Adjust. 1403 (dfs_find_final_overrider_post): Adjust. 1404 (dfs_find_final_overrider_q): Fold into 1405 dfs_find_final_overrider_pre. 1406 (find_final_overrider): Adjust dfs searching. 1407 (dfs_modify_vtables): Don't mark binfo here. 1408 (modify_all_vtables): Use dfs_walk_once. 1409 (build_vtt_inits): Likwise. Use dfs_walk_all. 1410 (dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here. 1411 Return dfs_skip_bases as appropriate. 1412 (dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate. 1413 * init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as 1414 appropriate. Don't mark binfo here. 1415 (initialize_vtbl_ptrs): Use dfs_walk_once. 1416 * search.c (struct vbase_info): Remove unused struct. 1417 (access_in_type): Use dfs_walk_once. 1418 (dfs_access_in_type): Don't mark binfo here. 1419 (dfs_accessible_queue_p, dfs_accessible_p) Remove. 1420 Fold into ... 1421 (accessible_r): ... here. New. Specialize dfs_walk_once. 1422 (accessible_p): Use accessible_r. 1423 (lookup_field_queue_p): Remove. Fold into ... 1424 (lookup_field_r): ... here. Adjust. 1425 (lookup_member): Use dfs_walk_all. 1426 (dfs_walk_real, dfs_walk): Replace with ... 1427 (dfs_walk_all, dfs_walk_once): ... these. 1428 (dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once. 1429 (dfs_unmark, unmarkedp, markedp): Remove. 1430 (dfs_get_pure_virtuals): Don't mark binfo here. 1431 (get_pure_virtuals): Use dfs_walk_once. 1432 (dfs_debug_unmarked_p): Remove. Fold into ... 1433 (dfs_debug_mark): ... here. 1434 (note_debug_info_needed): Use dfs_walk_all. 1435 14362004-10-07 Andrew Pinski <pinskia@physics.uc.edu> 1437 1438 * pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the 1439 CLEANUP_POINT_EXPR to get the asm expression. 1440 14412004-10-07 Mark Mitchell <mark@codesourcery.com> 1442 1443 * cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag. 1444 (DECL_MEMBER_TEMPLATE_P): New macro. 1445 (is_member_template): Remove. 1446 (class_method_index_for_fn): New function. 1447 * pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P. 1448 * class.c (finish_struct_methods): Remove out-of-date comment. 1449 * decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P. 1450 * decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and 1451 class_method_index_for_fn. 1452 * pt.c (is_member_template): Remove. 1453 (is_member_template_class): Likewise. 1454 (optimize_specialization_lookup_p): New function. 1455 (retrieve_specialization): Optimize lookups for members that are 1456 not member templates. 1457 (register_specialization): Adjust accordingly. 1458 (build_template_decl): Add member_template_p parameter. Set 1459 DECL_MEMBER_TEMPLATE_P. 1460 (process_partial_specialization): Adjust call to 1461 retrieve_specialization. 1462 (push_template_decl_real): Determine whether the template is a 1463 member template. 1464 (lookup_template_class): Use retrieve_specialization. 1465 (tsubst_decl): Adjust call to retrieve_specialization. 1466 (tsubst_exception_specification): New function. 1467 (tsubst): Use it. 1468 (tsubst_copy): Use DECL_MEMBER_TEMPLATE_P. 1469 (instantiate_template): Adjust call to retrieve_specialization. 1470 (regenerate_decl_from_template): Do not actually generate a new 1471 DECL. 1472 (instantiate_decl): Adjust call to retrieve_specialization. 1473 (class_method_index_for_fn): New method. 1474 14752004-10-07 Andrew Pinski <pinskia@physics.uc.edu> 1476 1477 * parser.c (cp_parser_asm_definition): Look passed the 1478 CLEANUP_POINT_EXPR to get the asm expression. 1479 14802004-10-06 Andrew Pinski <pinskia@physics.uc.edu> 1481 1482 PR c++/17368 1483 * semantics.c (finish_asm_stmt): Asm expressions need cleanup 1484 also. 1485 14862004-10-05 Gabriel Dos Reis <gdr@integrable-solutions.net> 1487 1488 Convert diagnostics to use quoting flag q 6/n 1489 * pt.c (finish_member_template_decl, check_specialization_scope, 1490 maybe_process_partial_specialization, determine_specialization, 1491 check_explicit_specialization, maybe_check_template_type, 1492 process_partial_specialization, check_default_tmpl_args, 1493 push_template_decl_real, redeclare_class_template, 1494 convert_nontype_argument, coerce_template_parms, 1495 lookup_template_class, push_tinst_level, 1496 instantiate_class_template, tsubst_arg_types, 1497 tsubst_function_type, tsubst, tsubst_qualified_id, 1498 tsubst_copy_and_build, check_instantiated_args, 1499 do_decl_instantiation, do_type_instantiation, 1500 invalid_nontype_parm_type_p, check_specialization_namespace, 1501 convert_template_argument, determine_specialization, 1502 check_template_shadow, tsubst_decl 1503 instantiate_pending_templates): Use quoting marks. 1504 15052004-10-05 Nathan Sidwell <nathan@codesourcery.com> 1506 1507 PR c++/17829 1508 * parser.c (cp_parser_postfix_expression): Inhibit Koenig when 1509 unqualified lookup finds a member function. 1510 15112004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net> 1512 1513 Convert diagnostics to use quoting flag q 5/n 1514 * parser.c (cp_parser_name_lookup_error, 1515 cp_parser_diagnose_invalid_type_name, 1516 cp_parser_primary_expression, cp_parser_unqualified_id, 1517 cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement, 1518 cp_parser_jump_statement, cp_parser_simple_declaration, 1519 cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id, 1520 cp_parser_type_parameter, cp_parser_template_id, 1521 cp_parser_template_name, cp_parser_direct_declarator, 1522 cp_parser_parameter_declaration_list, cp_parser_class_head, 1523 cp_parser_base_specifier, cp_parser_lookup_name, 1524 cp_parser_late_parsing_default_args, 1525 cp_parser_optional_template_keyword 1526 cp_parser_elaborated_type_specifier, cp_parser_check_class_key, 1527 cp_parser_check_access_in_redeclaration): Use quoting marks. 1528 1529 * name-lookup.c (supplement_binding, pushdecl, 1530 check_for_out_of_scope_variable, validate_nonmember_using_decl, 1531 do_nonmember_using_decl, lookup_tag, set_decl_namespace, 1532 push_namespace, do_namespace_alias, do_using_directive, 1533 ambiguous_decl, lookup_namespace_name, add_function): Likewise. 1534 1535 * method.c (use_thunk): Likewise. 1536 1537 * lex.c (unqualified_name_lookup_error, 1538 unqualified_fn_lookup_error): Likewise. 1539 15402004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net> 1541 1542 Convert diagnostics to use quoting flag q 4/n 1543 * except.c (decl_is_java_type, build_throw, 1544 is_admissible_throw_operand, check_handlers_1, check_handlers): 1545 Use quoting formats. 1546 * friend.c (add_friend, make_friend_class, do_friend): Likewise. 1547 * init.c (sort_mem_initializers, emit_mem_initializers, 1548 member_init_ok_or_else, expand_member_init, is_aggr_type, 1549 build_offset_ref, build_java_class_ref): Likewise. 1550 15512004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net> 1552 1553 Convert diagnostics to use quoting flag q 3/n 1554 * decl.c (pop_label, duplicate_decls, redeclaration_error_message, 1555 redeclaration_error_message, lookup_label, check_goto, 1556 make_typename_type, make_unbound_class_template, 1557 fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1, 1558 grok_reference_init, layout_var_decl, maybe_commonize_var, 1559 check_for_uninitialized_const_var, reshape_init_array, 1560 reshape_init, check_initializer, cp_finish_decl, 1561 member_function_or_else, bad_specifiers, grokfndecl, grokvardecl, 1562 check_static_variable_definition, compute_array_index_type, 1563 create_array_type_for_decl, check_special_function_return_type, 1564 grokdeclarator, check_default_argument, grokparms, 1565 grok_ctor_properties, grok_op_properties, 1566 check_elaborated_type_specifier, xref_tag, finish_enum, 1567 build_enumerator, check_function_type, start_preparsed_function, 1568 store_parm_decls): Use quoting formats. 1569 * decl2.c (grok_array_decl, delete_sanity, check_member_template, 1570 check_java_method, check_classfn, finish_static_data_member_decl, 1571 grokfield, grokbitfield, grok_function_init, 1572 build_anon_union_vars, coerce_new_type, coerce_delete_type, 1573 check_default_args): Likewise. 1574 * parser.c (cp_parser_decl_specifier_seq): Likewise. 1575 15762004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net> 1577 1578 Convert diagnostics to use quoting flag q 2/n 1579 * class.c (build_base_path, add_method, alter_access, 1580 handle_using_decl, check_bases, 1581 maybe_warn_about_overly_private_class, find_final_overrider, 1582 warn_hidden, finish_struct_anon, add_implicitly_declared_members, 1583 check_bitfield_decl, check_field_decls, layout_empty_base, 1584 build_base_field, check_methods, layout_virtual_bases, 1585 warn_about_ambiguous_bases, layout_class_type, finish_struct_1, 1586 resolve_address_of_overloaded_function, instantiate_type, 1587 note_name_declared_in_class): Use format flag "q" for quoting. 1588 15892004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net> 1590 1591 Convert diagnostics to use quoting flag q 1/n 1592 * error.c (locate_error): Ignore quoting flag q. 1593 * call.c (build_user_type_conversion_1, build_operator_new_call, 1594 build_object_call, op_error, build_conditional_expr, 1595 build_new_op, build_op_delete_call, enforce_access, 1596 convert_like_real, convert_arg_to_ellipsis, build_x_va_arg, 1597 convert_default_arg, build_over_call, build_new_method_call, 1598 joust, perform_implicit_conversion, initialize_reference): Use the 1599 quoting flag q. 1600 16012004-10-03 Andrew Pinski <pinskia@physics.uc.edu> 1602 1603 PR c++/17797 1604 * typeck.c (build_reinterpret_cast): Return if the inner type 1605 is error_mark_node. 1606 16072004-10-01 Jan Hubicka <jh@suse.cz> 1608 1609 * semantics.c (expand_body): Update call of tree_rest_of_compilation. 1610 16112004-09-30 Nathan Sidwell <nathan@codesourcery.com> 1612 1613 * cp-tree.h (struct lang_decl): Shrink by reordering fields and 1614 turning operator_code and fixed_offset into bitfields. 1615 16162004-09-29 Joseph S. Myers <jsm@polyomino.org.uk> 1617 1618 * decl.c (duplicate_decls): Merge TREE_DEPRECATED. 1619 16202004-09-29 Jason Merrill <jason@redhat.com> 1621 1622 PR tree-optimization/17697 1623 * decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl. 1624 16252004-09-28 Jason Merrill <jason@redhat.com> 1626 1627 PR middle-end/17525 1628 * class.c (build_base_field): Set TYPE_MODE. 1629 16302004-09-28 Roger Sayle <roger@eyesopen.com> 1631 1632 PR driver/17537 1633 * g++spec.c (lang_specific_driver): Unrecognized libraries, other 1634 than -lc and -lm, may require linking against libstc++. 1635 16362004-09-28 Kazu Hirata <kazu@cs.umass.edu> 1637 1638 * tree.c: Fix a comment typo. 1639 16402004-09-28 Nathan Sidwell <nathan@codesourcery.com> 1641 1642 * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove. 1643 (struct secondary_vptr_vtt_init_data_s): New. 1644 (build_vtt_inits): Adjust dfs_walkers. 1645 (dfs_build_secondary_vptr_vtt_inits): Caller data is a 1646 secondary_vptr_vtt_init_data_s structure. Adjust. 1647 (dfs_ctor_vtable_bases_queue_p): Remove. 1648 (dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify. 1649 1650 * pt.c (struct get_template_base_data_s): Remove. 1651 (get_template_base_r): Fold into get_template_base. 1652 (get_template_base): Walk base binfos directly in inheritance 1653 graph order. 1654 16552004-09-27 Mark Mitchell <mark@codesourcery.com> 1656 1657 PR c++/17642 1658 * cp-tree.h (fold_if_not_in_template): New function. 1659 * call.c (build_conditional_expr): Use fold_if_not_in_template. 1660 (build_cxx_call): Likewise. 1661 * cvt.c (convert_to_complex): Likewise. 1662 (ocp_convert): Likewise. 1663 (convert): Likewise. 1664 (convert_force): Likewise. 1665 * decl.c (compute_array_index_type): Clear 1666 processing_template_decl while folding array bounds. 1667 * pt.c (convert_nontype_argument): Clear 1668 processing_template_decl while processing non-type argument 1669 initialization. 1670 * tree.c (fold_if_not_in_template): New function. 1671 * typeck.c (build_class_member_access_expr): Use 1672 fold_if_not_in_template. 1673 (build_array_ref): Likewise. 1674 (build_binary_op): Likewise. Do not try to optimize computations 1675 when processing templates. 1676 (cp_pointer_int_sum): Use fold_if_not_in_template. 1677 (pointer_diff): Likewise. 1678 (build_unary_op): Likewise. 1679 (build_reinterpret_cast): Likewise. 1680 (get_delta_difference): Likewise. 1681 (expand_ptrmemfunc_cst): Likewise. 1682 (dubious_conversion_warnings): Likewise. 1683 16842004-09-27 Matt Austern <austern@apple.com> 1685 1686 * cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c 1687 (cp_lexer_get_preprocessor_token): Set implicit_extern_c for 1688 tokens that come from headers that are implicitly extern "C". 1689 (struct cp_parser): new one-bit field, implicit_extern_c. 1690 (cp_parser_new): Set parser's implicit_extern_c to false. 1691 (cp_parser_translation_unit): Pop lang context if we were in a 1692 header that was implicitly extern "C". 1693 (cp_parser_declaration_seq_opt): Push/pop lang context as 1694 required by the token's and parser's implicit_extern_c. 1695 16962004-09-27 Mark Mitchell <mark@codesourcery.com> 1697 1698 PR c++/17585 1699 * cp-tree.h (shared_member_p): Declare. 1700 * search.c (shared_member_p): Give it external linkage. 1701 * semantics.c (finish_qualified_id_expr): Use it. 1702 (finish_id_expression): Likewise. 1703 1704 PR c++/17585 1705 * semantics.c (finish_id_expression): Do not add "this->" to 1706 static member functions. 1707 17082004-09-27 Nathan Sidwell <nathan@codesourcery.com> 1709 1710 PR c++/17681 1711 * error.c (dump_type): Change TREE_VEC case into TREE_BINFO. 1712 1713 * class.c (struct count_depth_data): Remove. 1714 (dfs_depth_post, dfs_depth_q): Remove. 1715 (find_final_overrider): Use number of vbase classes as depth 1716 bound. 1717 1718 * cp-tree.h (types_overlap_p): Remove. 1719 * search.c (struct overlap_info): Remove. 1720 (dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove. 1721 1722 * pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove. 1723 (get_template_base_recursive): Remove. Replace with ... 1724 (get_template_base_r): ... this. 1725 (struct get_template_base_data_s): New. 1726 (get_template_base): Use get_template_base_r via dfs_walk. Always 1727 return NULL on failure. 1728 (unify): Remove error_mark_node check from get_template_base result. 1729 17302004-09-24 Paolo Bonzini <bonzini@gnu.org> 1731 1732 * parser.c (cp_parser_expression_stack): Clarify why it is 1733 an array of NUM_PREC_VALUES elements. 1734 (cp_parser_binary_expression): Clarify why we do not need to 1735 handle stack overflow. 1736 17372004-09-24 Nathan Sidwell <nathan@codesourcery.com> 1738 1739 PR c++/16889 1740 * search.c (lookup_field_queue_p): Correct check for hidden base. 1741 1742 * search.c (bfs_walk): Remove. 1743 (lookup_member): Use dfs_walk_real. 1744 (dfs_walk_real): Move and adjust documentation from bfs_walk. 1745 17462004-09-23 Zack Weinberg <zack@codesourcery.com> 1747 1748 * decl.c (grokfndecl): If ::main is found not to return int, 1749 correct it after issuing a diagnostic. 1750 (grokdeclarator): If the incoming type was error_mark_node, do 1751 not complain about declaring something with no type. 1752 (start_function): Change check for ::main not returning int to 1753 an assertion, as grokfndecl now catches this when the user did it. 1754 * init.c (perform_member_init, sort_mem_initializers) 1755 (emit_mem_initializers): Make most diagnostics be issued on 1756 the line of current_function_decl, not whatever the current 1757 input line is. 1758 * parser.c (cp_lexer_peek_token_emit_debug_info): Surround 1759 definition and declaration with #ifdef ENABLE_CHECKING. 1760 Avoid unnecessary use of fprintf. 1761 (cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub 1762 definitions to avoid warnings. 1763 (cp_lexer_new_main): Add assertion that first token is not a 1764 padding token. 1765 (cp_lexer_new_from_token_array): Fold into ... 1766 (cp_lexer_new_from_tokens): ... here. Add assertion that 1767 first token is not a padding token. 1768 (cp_lexer_set_source_position_from_token): Move nearer to callers. 1769 Remove unused lexer argument. 1770 (cp_lexer_peek_token): Just print debugging report (if enabled) 1771 and return lexer->next_token. 1772 (cp_lexer_skip_purged_tokens): Delete. 1773 (cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make 1774 inline, simplify bodies. 1775 (cp_lexer_peek_nth_token): Add debugging report a la 1776 cp_lexer_peek_token. 1777 (cp_lexer_consume_token): Correct commentary. Advance over 1778 purged tokens here. Set current source position here, from 1779 token to be returned. Avoid unnecessary use of fprintf. 1780 (cp_lexer_purge_token): Advance next_token pointer over this and 1781 subsequent purged tokens. 1782 (cp_parser_error): Adjust source position to that of the 1783 peeked token. 1784 (cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions. 1785 (cp_parser_string_literal): Remove some excessive cleverness. 1786 (cp_parser_enum_specifier): Call start_enum before consuming 1787 the opening brace. 1788 (cp_parser_member_declaration): Make the "extra semicolon" 1789 diagnostic consistently-worded with the other place this is 1790 diagnosed. Explicitly set the diagnostic location to the 1791 location of the offending semicolon. 1792 (cp_parser_enclosed_template_argument_list): Use %</%> quoting 1793 in diagnostics. Do not use cp_parser_require. Set location 1794 of diagnostics about improper use of '>>' to location of 1795 offending token. 1796 (cp_parser_late_parsing_for_member): 1797 Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer. 1798 (cp_parser_late_parsing_default_args): Likewise. Manually 1799 move some logic outside the loop. 1800 18012004-09-23 Andrew Pinski <pinskia@physics.uc.edu> 1802 1803 PR c++/17618 1804 * cvt.c (cp_convert_to_pointer): Return early when the type is 1805 an error_mark_node. 1806 18072004-09-21 Fariborz Jahanian <fjahanian@apple.com> 1808 1809 PR c++/13989 1810 PR c++/9844 1811 * decl.c (grokfndecl): Add new argument "attrlist", use it 1812 to call cplus_decl_attributes. 1813 (start_function): Remove call to cplus_decl_attributes. 1814 * cvt.c (ocp_convert): Add support to use type conversion 1815 function to vector type. 1816 * parser.c (cp_parser_conversion_type_id): Add attributes, if any, 1817 to the parsed type. 1818 18192004-09-23 Paolo Bonzini <bonzini@gnu.org> 1820 1821 PR c++/17596 1822 1823 * parser.c (cp_parser_token_tree_map_node, 1824 cp_parser_pm_expression, cp_parser_additive_expression, 1825 cp_parser_multiplicative_expression, cp_parser_shift_expression, 1826 cp_parser_relational_expression, cp_parser_equality_expression, 1827 cp_parser_and_expression, cp_parser_exclusive_or_expression, 1828 cp_parser_inclusive_or_expression, 1829 cp_parser_logical_and_expression, 1830 cp_parser_logical_or_expression): Removed. 1831 (enum cp_parser_prec, struct cp_parser_token_tree_map_node, 1832 binops, binops_by_token): New. 1833 (cp_parser_assignment_expression): Use cp_parser_binary_expression. 1834 (cp_parser_new): Initialize binops_by_token. 1835 (cp_parser_binary_expression): Rewritten. 1836 (N_CP_TTYPES): New. 1837 18382004-09-23 Kazu Hirata <kazu@cs.umass.edu> 1839 1840 * parser.c: Fix a comment typo. 1841 18422004-09-23 Nathan Sidwell <nathan@codesourcery.com> 1843 1844 PR c++/17620 1845 * decl.c (xref_basetypes): Look through typedefs before checking 1846 for duplicate base. 1847 18482004-09-22 Nathan Sidwell <nathan@codesourcery.com> 1849 1850 * cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree). 1851 * decl2.c (cp_finish_file): Adjust tinfo decl emission loop. 1852 * rtti.c (unemitted_tinfo_decls): Make a VEC(tree). 1853 (init_rtti_processing): Initialize it to something realistic. 1854 (get_tinfo_decl): Adjust pushing the new decl. 1855 1856 * cp-tree.h (struct lang_type_class): Remove marked flags, add 1857 diamond_shaped and repeated_base flags. Reorder to keep 8-bit blocks. 1858 (TYPE_MARKED_P): New. 1859 (CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New. 1860 (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N, 1861 CLEAR_CLASSTYPE_MARKED_N): Remove. 1862 (CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*, 1863 CLEAR_CLASSTYPE_MARKED_*): Remove. 1864 * decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond 1865 shaped and repeated base properties. 1866 * lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET. 1867 * rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark, 1868 class_hint_flags): Remove. 1869 (get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and 1870 CLASSTYPE_DIAMOND_SHAPED_P. 1871 18722004-09-21 Ziemowit Laski <zlaski@apple.com> 1873 1874 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from 1875 cp-objcp-common.h. 1876 (objcp_tsubst_copy_and_build): Reformat function signature. 1877 * cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise. 1878 (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c. 1879 18802004-09-21 Zack Weinberg <zack@codesourcery.com> 1881 1882 * parser.c (cp_lexer_peek_token, cp_lexer_consume_token): 1883 Don't handle CPP_PRAGMA tokens specially. 1884 (cp_lexer_handle_pragma): Use cp_lexer_consume_token. Don't 1885 purge the token; do clear token->value after processing. Add 1886 assertion at beginning that token->value is nonzero. 1887 (cp_parser_statement, cp_parser_declaration_seq_opt): Handle 1888 CPP_PRAGMA as a full statement or declaration in its own right. 1889 18902004-09-21 Matt Austern <austern@apple.com> 1891 1892 PR c++/15049 1893 * decl.c (grokvardecl): Accept declarations of global variables 1894 using anonymous types. 1895 18962004-09-21 Roger Sayle <roger@eyesopen.com> 1897 1898 PR c++/7503 1899 * tree.c (lvalue_p_1): Disallow MIN_EXPR and MAX_EXPR as lvalues 1900 if either operand has side-effects. 1901 * typeck.c (rationalize_conditional_expr): Assert that neither 1902 operand of MIN_EXPR or MAX_EXPR has side-effects. 1903 (build_modify_expr): Add support for MIN_EXPR and MAX_EXPR. 1904 Check that the "lhs" is a valid lvalue, i.e. that neither operand 1905 of a MIN_EXPR or MAX_EXPR has a side-effect. 1906 19072004-09-21 Nathan Sidwell <nathan@codesourcery.com> 1908 1909 * cp-tree.h (struct lang_type_header): Remove 1910 uses_multiple_inheritance field. 1911 (TYPE_USES_MULTIPLE_INHERITANCE): Remove. 1912 (TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove. 1913 (TYPE_USES_VIRTUAL_BASECLASSES): Remove. 1914 (DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES. 1915 (TYPE_CONTAINS_VPTR_P): Likewise. 1916 * call.c (add_template_candidate_real): Use 1917 CLASSTYPE_VBASECLASSES. 1918 (build_special_member_call): Likewise. 1919 * class.c (finish_struct_bits): Remove 1920 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES 1921 bookkeeping. 1922 (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P. 1923 (create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P 1924 bookkeeping. 1925 (build_vtt_inits): Use CLASSTYPE_VBASECLASSES. 1926 (accumulate_vtbl_inits, build_vbase_offset_vtbl_entries): 1927 Likewise. 1928 * decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE, 1929 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES 1930 bookkeeping. 1931 (cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES. 1932 * decl2.c (maybe_retrofit_in_chrg): Likewise. 1933 * init.c (expand_member, push_base_cleanups): Likewise. 1934 * pt.c (instantiate_class_template): Remove 1935 TYPE_USES_MULTIPLE_INHERITANCE, 1936 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES 1937 bookkeeping. 1938 * ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE 1939 check. 1940 * typeck2.c (process_init_constructor): Replace some sorrys with 1941 asserts. 1942 19432004-09-21 Andreas Tobler <a.tobler@schweiz.ch> 1944 1945 * decl.c (reshape_init_array): Initialize max_index_cst to fix 1946 bootstrap failure. 1947 19482004-09-20 Mark Mitchell <mark@codesourcery.com> 1949 1950 PR c++/17530 1951 * pt.c (tsubst): Fix parentheses to accomodate emacs. 1952 (tsubst_baselink): If we get a single function, mark it as used. 1953 19542004-09-20 Matt Austern <austern@apple.com> 1955 Zack Weinberg <zack@codesourcery.com> 1956 1957 * decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function): 1958 Apply lbasename to input_filename before passing to get_fileinfo. 1959 * semantics.c (begin_class_definition): Likewise. 1960 * lex.c (handle_pragma_interface): Apply get_fileinfo to the 1961 correct filename. Rename variables to be less confusing. 1962 (handle_pragma_implementation): Likewise. Disable "appears 1963 after file is included" diagnostic. 1964 1965 * parser.c (struct cp_token): Add in_system_header fiag. 1966 (CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block) 1967 (CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token) 1968 (CPP_NONE, cp_lexer_read_token): Delete. 1969 (struct cp_lexer): Remove first_token, string_tokens, 1970 main_lexer_p fields. Clarify comments. 1971 (struct cp_token_cache): Now just a pair of pointers. 1972 (CP_LEXER_BUFFER_SIZE): New #define. 1973 (CPP_PURGED): New fake token type. 1974 (cp_lexer_new_from_token_array, cp_lexer_destroy) 1975 (cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens) 1976 (cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal): 1977 New functions. 1978 (cp_lexer_new_from_tokens): Now a simple wrapper around 1979 cp_lexer_new_from_token_array. 1980 (cp_lexer_set_source_position_from_token): Also update 1981 in_system_header. 1982 (cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token): 1983 Don't wrap round. 1984 (cp_lexer_token_difference): Dont handle wrapping round. 1985 (cp_lexer_new_main): Enable pragma deferral and raw strings, 1986 read the entire translation unit through c_lex_with_flags into 1987 this lexer's buffer, then turn raw strings back off again. 1988 (cp_lexer_grow_buffer): Adjust for buffer no longer being circular. 1989 (cp_lexer_get_preprocessor_token): No need to handle not being 1990 the main lexer. Set token->in_system_header too. 1991 (cp_lexer_peek_token): Skip purged tokens. Feed pragma tokens 1992 to cp_lexer_handle_pragma. No need to call cp_lexer_read_token. 1993 (cp_lexer_peek_nth_token): Likewise. 1994 (cp_lexer_purge_token): Mark the token PURGED, don't shift all 1995 the other tokens down. 1996 (cp_lexer_purge_tokens_after): Likewise. 1997 (cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry 1998 about there being no tokens. 1999 (cp_lexer_print_token): Revise to give useful information on 2000 all tokens. 2001 (struct cp_parser): Add field translate_strings_p. 2002 (cp_parser_new): Initialize it. 2003 (cp_parser_translation_unit): Destroy the lexer when done. 2004 (cp_parser_parameter_declaration): Restructure saving of 2005 default arguments. 2006 (cp_parser_save_member_function_body): Likewise. 2007 (cp_parser_check_for_invalid_template_id) 2008 (cp_parser_nested_name_specifier_opt, cp_parser_template_id): 2009 Adjust calls to cp_lexer_advance_token. 2010 (cp_parser_skip_to_closing_parenthesis, cp_parser_declaration): 2011 No need to fiddle c_lex_string_translate. 2012 (cp_parser_primary_expression, cp_parser_linkage_specification) 2013 (cp_parser_asm_definition, cp_parser_asm_specification_opt) 2014 (cp_parser_asm_operand_list, cp_parser_asm_clobber_list) 2015 Use cp_parser_string_literal. 2016 (cp_parser_attribute_list): Save and restore 2017 parser->translate_strings_p, not c_lex_string_translate. 2018 (cp_parser_cache_group): Delete. 2019 (cp_parser_cache_group_1): Rename cp_parser_cache_group. Do 2020 not take a cache argument. 2021 20222004-09-20 Giovanni Bajo <giovannibajo@gcc.gnu.org> 2023 2024 PR c++/14179 2025 * decl.c (reshape_init): Extract array handling into... 2026 (reshape_init_array): New function. Use integers instead of trees 2027 for indices. Handle out-of-range designated initializers. 2028 20292004-09-20 Steven Bosscher <stevenb@suse.de> 2030 2031 * lex.c (cxx_init): Don't set the ridpointer for RID_NULL 2032 to null_node. 2033 20342004-09-19 Mark Mitchell <mark@codesourcery.com> 2035 2036 * decl2.c (determine_visibility): Allow class visibility 2037 directives to override targetm.cxx.export_class_data. 2038 20392004-09-18 Kazu Hirata <kazu@cs.umass.edu> 2040 2041 * call.c, semantics.c: Follow spelling conventions. 2042 * class.c: Fix a comment typo. 2043 20442004-09-16 Geoffrey Keating <geoffk@apple.com> 2045 2046 PR pch/13361 2047 * cp/lex.c (handle_pragma_interface): Duplicate string from tree. 2048 (handle_pragma_implementation): Likewise. 2049 20502004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com> 2051 Zack Weinberg <zack@codesourcery.com> 2052 2053 * cp-tree.def: Use tree_code_class enumeration constants 2054 instead of code letters. 2055 * call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c 2056 * mangle.c, pt.c, semantics.c, tree.c, typeck.c: 2057 Update for new tree-class enumeration constants. 2058 20592004-09-16 Mark Mitchell <mark@codesourcery.com> 2060 2061 PR c++/16002 2062 * parser.c (cp_parser_simple_declaration): Commit to tentative 2063 parses after seeing a decl-specifier. 2064 (cp_parser_simple_declaration): Eliminate spurious message. 2065 (cp_parser_init_declarator): Adjust error message. 2066 2067 PR c++/16029 2068 * lex.c (unqualified_name_lookup_error): Mark the dummy 2069 declaration as used. 2070 2071 PR c++/17501 2072 * parser.c (cp_parser_nested_name_specifier): Do not resolve 2073 typename types if the user explicitly said "typename". 2074 20752004-09-16 Andrew MacLeod <amacleod@redhat.com> 2076 2077 * error.c (dump_decl): Make sure there is lang_specific info before 2078 checking for DTOR and CTOR decls. 2079 20802004-09-16 Nathan Sidwell <nathan@codesourcery.com> 2081 2082 * class.c (copy_virtuals): Remove. 2083 (build_primary_vtable): Use copy_list directly. 2084 (build_secondary_vtable): Likewise. 2085 (update_vtable_entry_for_fn): Clear BV_CALL_INDEX here. 2086 (create_vtable_ptr): Likewise. 2087 20882004-09-16 Kazu Hirata <kazu@cs.umass.edu> 2089 2090 * search.c: Follow spelling conventions. 2091 20922004-09-16 Nathan Sidwell <nathan@codesourcery.com> 2093 2094 * cp-tree.h (struct lang_type_class): Make pure_virtuals a 2095 VEC(tree). 2096 (CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update 2097 comments. 2098 * call.c (build_new_method_call): Don't confirm a pure virtual is 2099 in CLASSTYPE_PURE_VIRTUALS. Reorder checks. Make it a warning. 2100 * class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree). 2101 (fixup_inline_methods, finish_struct): Likewise. 2102 * decl.c (finish_method): Likewise. 2103 * search.c (dfs_get_pure_virtuals, get_pure_virtuals): 2104 CLASSTYPE_PURE_VIRTUALS is a VEC(tree). 2105 * typeck2.c (abstract_virtuals_error): Likewise. Truncate the 2106 vector to avoid repeating the list in error messages. 2107 21082004-09-15 Mark Mitchell <mark@codesourcery.com> 2109 2110 * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define. 2111 * cp-tree.h (cxx_comdat_group): Declare. 2112 * decl.c (cxx_comdat_group): New function. 2113 21142004-09-15 Nathan Sidwell <nathan@codesourcery.com> 2115 2116 * search.c (get_pure_virtuals): Remove unused variables. 2117 2118 * cp-tree.h (struct lang_decl_flags): Remove 2119 needs_final_overrider. 2120 (DECL_NEEDS_FINAL_OVERRIDER_P): Remove. 2121 * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P. 2122 * class.c (finish_struct_bits): Correct comment about 2123 CLASSTYPE_PURE_VIRTUALS. 2124 * search.c (get_pure_virtuals): Remove useless loop. 2125 21262004-09-14 Mark Mitchell <mark@codesourcery.com> 2127 2128 PR c++/17324 2129 * mangle.c (partially_mangled_name): New variable. 2130 (partially_mangled_name_len): Likewise. 2131 (save_partially_mangled_name): New function. 2132 (restore_partially_mangled_name): Likewise. 2133 (write_encoding): Save and restore partially mangled names around 2134 calls to get_mostly_instantiated_function_type. 2135 (write_unqualified_name): Likewise. 2136 21372004-09-14 Nathan Sidwell <nathan@codesourcery.com> 2138 2139 * pt.c (unify): Replace gcc_unreachable with gcc_assert. 2140 21412004-09-13 Mark Mitchell <mark@codesourcery.com> 2142 2143 PR c++/16162 2144 * parser.c (cp_parser_id_expression): Correct value for 2145 is_declarator. 2146 (cp_parser_nested_name_specifier_opt): Look through typenames as 2147 necessary. 2148 (cp_parser_template_name): Honor check_dependency_p. 2149 2150 PR c++/16716 2151 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): 2152 Robustify. 2153 2154 PR c++/17327 2155 * pt.c (unify): Add ENUMERAL_TYPE case. Replace sorry with 2156 gcc_unreacable. 2157 21582004-09-12 Richard Henderson <rth@redhat.com> 2159 2160 PR c++/16254 2161 * semantics.c (maybe_cleanup_point_expr): Don't call fold. 2162 * typeck.c (condition_conversion): Likewise. 2163 21642004-09-11 Richard Henderson <rth@redhat.com> 2165 2166 PR c++/17404 2167 * pt.c (cur_stmt_expr): Move from tsubst_expr. 2168 (tsubst_expr) <case STMT_EXPR>: Move ... 2169 (tsubst_copy_and_build): ... here. 2170 21712004-09-10 Zack Weinberg <zack@codesourcery.com> 2172 2173 * cp-tree.h (interface_only, interface_unknown): Delete declarations; 2174 comment explaining them moved to c-common.h. 2175 * lex.c (interface_only, interface_unknown, extract_interface_info): 2176 Delete definitions. 2177 (cxx_finish): Don't reset interface_unknown. 2178 (handle_pragma_interface): Don't set interface_only and 2179 interface_unknown; just the like-named fields in finfo. 2180 (handle_pragma_implementation): Adjust comment. 2181 * decl2.c (cp_finish_file): Don't reset interface_only and 2182 interface_unknown. 2183 * method.c (synthesize_method): Don't reset interface_unknown or 2184 call extract_interface_info. 2185 * pt.c (pop_tinst_level): Don't call extract_interface_info. 2186 * decl.c (start_cleanup_fn): Don't save or restore interface_only 2187 and interface_unknown. 2188 (make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename 2189 and use the result instead of the interface_only/interface_unknown 2190 globals. 2191 (start_preparsed_function): Likewise. 2192 * lex.c (cxx_make_type): Likewise. 2193 * semantics.c (begin_class_definition): Likewise. 2194 (expand_body): Don't call extract_interface_info. 2195 21962004-09-10 Ziemowit Laski <zlaski@apple.com> 2197 2198 * decl.c (objc_mark_locals_volatile): Make description of 2199 routine more descriptive; only mark VAR_DECLs at each 2200 binding level. 2201 22022004-09-10 Richard Henderson <rth@redhat.com> 2203 2204 PR c++/17386 2205 * call.c (build_vfield_ref): Move... 2206 * class.c (build_vfield_ref): ... here. Convert datum to the 2207 primary base containing the vptr. 2208 (make_new_vtable): Simplify build_primary_vtable arguments. 2209 (finish_struct_1): Do not duplicate TYPE_VFIELD. 2210 * typeck.c (build_class_member_access_expr): Don't warn for 2211 null object access to base fields. 2212 22132004-09-10 Ziemowit Laski <zlaski@apple.com> 2214 2215 * decl.c (objc_get_current_scope, objc_mark_locals_volatile): 2216 New functions, to be called from ObjC++. 2217 22182004-09-10 Kazu Hirata <kazu@cs.umass.edu> 2219 2220 * class.c, cp-tree.h, decl.c, decl2.c, mangle.c, 2221 name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix 2222 comment typos. 2223 22242004-09-09 Ziemowit Laski <zlaski@apple.com> 2225 2226 * typeck.c (build_c_cast): Preserve the cast if casting 2227 to and from an Objective-C type. 2228 22292004-09-09 Ziemowit Laski <zlaski@apple.com> 2230 2231 * Make-lang.in (cp/typeck.o): Depend on c-common.h. 2232 * typeck.c: Include c-common.h. 2233 (comptypes): For RECORD_TYPEs, call objc_comptypes() and 2234 return the result if nonnegative. 2235 22362004-09-09 Zack Weinberg <zack@codesourcery.com> 2237 2238 * decl2.c (import_export_class) 2239 * lex.c (handle_pragma_interface): 2240 Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef. 2241 22422004-09-08 Ziemowit Laski <zlaski@apple.com> 2243 2244 * Make-lang.in (cp/semantics.o): Depend on c-common.h. 2245 * semantics.c: Include c-common.h. 2246 (finish_compound_stmt): Call objc_clear_super_receiver(). 2247 22482004-09-08 Ziemowit Laski <zlaski@apple.com> 2249 2250 * cp-tree.h (do_poplevel): New prototype. 2251 * semantics.c (do_poplevel): Make externally visible. 2252 22532004-09-08 Nathan Sidwell <nathan@codesourcery.com> 2254 2255 * cp-tree.h (tree_pair_s): Define a GC'd vector. 2256 * name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise. 2257 * semantics.c (deferred_access): Likewise. 2258 22592004-09-06 Daniel Jacobowitz <dan@debian.org> 2260 2261 * semantics.c (expand_body): Assert that we are not nested. 2262 22632004-09-06 Zack Weinberg <zack@codesourcery.com> 2264 2265 * decl.c (build_enumerator): Use add_double and int_fits_type_p 2266 instead of cp_build_binary_op, to avoid creating short-lived trees. 2267 * parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token 2268 lookahead instead of backtracking. Move some code to avoid a 2269 conditional branch. 2270 (cp_parser_enum_specifier): Avoid duplication of effort with caller. 2271 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate. 2272 (cp_parser_enumerator_list, cp_parser_enumerator_definition): 2273 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate. 2274 22752004-09-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2276 2277 * decl.c (grok_declarator): Remove a redundant semicolon. 2278 2279 * parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier): 2280 Correct comments describing function parameters. 2281 22822004-09-03 Matt Austern <austern@apple.com> 2283 Compile speed improvement. 2284 * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set. 2285 Otherwise define a stub macro that expands to nothing. 2286 (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set. Otherwise 2287 define a stub macro that expands to 0. 2288 (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set. 2289 (cp_lexer_stop_debugging): Likewise. 2290 (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set. Otherwise 2291 define a stub macro that expands to NULL. 2292 (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set. 2293 (cp_lexer_new_from_tokens): Likewise. 2294 22952004-09-03 Jan Hubicka <jh@suse.cz> 2296 2297 * decl.c (finish_function): Clean out pointers we no longer need. 2298 22992004-09-03 Jan Beulich <jbeulich@novell.com> 2300 2301 * g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather 2302 than "-lm". 2303 23042004-09-02 Paul Brook <paul@codesourcery.com> 2305 2306 * decl2.c (determine_visibility): Only check data visibility 2307 for VAR_DECLS. 2308 23092004-08-31 Mark Mitchell <mark@codesourcery.com> 2310 2311 * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro. 2312 * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P. 2313 * decl2.c (determine_visibility): Honor 2314 TARGET_CXX_EXPORT_CLASS_DATA. 2315 2316 * class.c (key_method): Rename to ... 2317 (determine_key_method): ... this. 2318 (finish_struct_1): Adjust accordingly. 2319 * cp-tree.h (key_method): Declare. 2320 * decl2.c (maybe_emit_vtables): Determine the key method here if 2321 it has not already been done. 2322 23232004-08-31 Ziemowit Laski <zlaski@apple.com> 2324 2325 * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o. 2326 (cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h. 2327 (cp/cp-decl.c): Do not depend on gtype-cp.h. 2328 (cp/cp-objcp-common.o): New target. 2329 * cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h. 2330 (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size, 2331 cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move 2332 prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c, 2333 respectively. 2334 (LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH, 2335 LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS, 2336 LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION, 2337 LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT, 2338 LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET, 2339 LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR, 2340 LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE, 2341 LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION, 2342 LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE, 2343 LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE, 2344 LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE, 2345 LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION, 2346 LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS, 2347 LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL, 2348 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P, 2349 LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, 2350 LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, 2351 LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, 2352 LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, 2353 LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, 2354 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P, 2355 LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P, 2356 LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN, 2357 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE, 2358 LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR, 2359 LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE, 2360 LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE, 2361 LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, 2362 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR, 2363 LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE, 2364 LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move 2365 hooks to cp-objcp-common.h. 2366 (finish_file): New function. 2367 * cp-objcp-common.c: New file. 2368 * cp-objcp-common.h: New file. 2369 * cp-tree.h (cp_finish_file): New prototype. 2370 * decl.c: Do not include gtype-cp.h. 2371 * decl2.c (finish_file): Rename to cp_finish_file. 2372 23732004-08-31 Richard Henderson <rth@redhat.com> 2374 2375 PR c++/17221 2376 * pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ... 2377 (tsubst_copy_and_build): ... here. 2378 23792004-08-30 Mark Mitchell <mark@codesourcery.com> 2380 2381 * cp-tree.h (initialize_artificial_var): Declare. 2382 * decl.c (initialize_artifical_var): New function. 2383 * class.c (initialize_array): Remove. 2384 (initialize_vtable): Use initialize_artificial_var. 2385 (build_vtt): Likewise. 2386 (build_ctor_vtbl_group): Likewise. 2387 23882004-08-30 Richard Henderson <rth@redhat.com> 2389 2390 * class.c (build_base_path): Use build_address directly. 2391 * typeck.c (build_unary_op): Don't lower &a.b to pointer 2392 arithmetic directly. 2393 * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT 2394 means !initializer_constant_valid_p. 2395 23962004-08-30 Richard Henderson <rth@redhat.com> 2397 2398 * class.c (fixed_type_or_null): Use get_base_address before 2399 assuming an ADDR_EXPR is non-null. 2400 24012004-08-30 Nathan Sidwell <nathan@codesourcery.com> 2402 2403 * name-lookup.c (pop_binding, pushdecl, 2404 set_identifier_type_value_with_scope, push_overloaded_decl, 2405 arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable. 2406 * parser.c (cp_parser_diagnose_invalid_type_name, 2407 cp_parser_postfix_expression, cp_parser_unary_expression, 2408 cp_parser_check_declarator_template_para): Likewise. 2409 * pt.c (push_inline_template_parms_recursive, 2410 check_explicit_specialization, convert_nontype_argument, 2411 coerce_template_template_parms, uses_template_parms, 2412 instantiate_class_template, tsubst_decl, tsubst, tsubst_copy, 2413 tsubst_expr, instantiate_template, 2414 maybe_adjust_types_for_deduction, type_unification_real, 2415 resolve_overloaded_unification, template_decl_level, 2416 type_dependent_expression_p): Likewise. 2417 * search.c (lookup_base_r): Likewise. 2418 * semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise. 2419 * tree.c (lvalue_p_1, count_functions, cxx_printable_name, 2420 verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise. 2421 * typeck.c (common_type, get_member_function_from_ptrfunc, 2422 build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise. 2423 * typeck2.c (cxx_incomplete_type_diagnostic, 2424 split_nonconstant_init_1, store_init_value, 2425 process_init_constructor): Likewise. 2426 24272004-08-30 Nathan Sidwell <nathan@codesourcery.com> 2428 2429 * call.c (check_dtor_name): Replace abort with gcc_assert or 2430 gcc_unreachable. 2431 (build_call, add_builtin_candidate, build_new_op, 2432 convert_like_real, build_over_call, in_charge_arg_for_name, 2433 source_type, joust): Likewise. 2434 * class.c (build_simple_base_path, get_vcall_index, 2435 finish_struct_1, instantiate_type, get_enclosing_class, 2436 add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise. 2437 * cp-gimplify.c (cp_genericize): Likewise. 2438 * cp-lang.c (cp_expr_size, cp_tree_size): Likewise. 2439 * cvt.c (cp_convert_to_pointer, ocp_convert): Likewise. 2440 * decl.c (poplevel, make_unbound_class_template, reshape_init, 2441 check_special_function_return_type, grokdeclarator, 2442 grok_op_properties, tag_name, xref_tag, start_preparsed_function, 2443 finish_function): Likewise. 2444 * decl2.c (grokfield, maybe_emit_vtables):Likewise. 2445 * error.c (dump_global_iord, dump_decl, dump_template_decl, 2446 language_to_string): Likewise. 2447 * except.c (choose_personality_routine): Likewise. 2448 * friend.c (do_friend): Likewise. 2449 * g++spec.c (lang_specific_driver): Likewise. 2450 * init.c (build_zero_init, expand_default_init, build_new_1, 2451 build_vec_delete_1, build_vec_init, build_dtor_call): Likewise. 2452 * lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise. 2453 * mangle.c (add_substitution, write_unscoped_name, 2454 write_template_prefix, write_identifier, 2455 write_special_name_destructor, write_type, write_builtin_type, 2456 write_expression, write_template_param, 2457 write_java_integer_type_codes): Likewise. 2458 * method.c (implicitly_declare_fn): Likewise. 2459 24602004-08-30 Nathan Sidwell <nathan@codesourcery.com> 2461 2462 * cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag. 2463 (BINFO_INDIRECT_PRIMARY_P): Remove. 2464 * class.c (determine_primary_base): Rename to ... 2465 (determine_primary_bases): ... here. Set all primary bases. 2466 (set_primary_base): Remove. 2467 (mark_primary_bases): Remove. 2468 (build_simple_base_path, walk_subobject_offsets, 2469 propagate_binfo_offsets, end_of_class): Adjust. 2470 (layout_class_type): Rename determine_primary_base call. 2471 (dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo 2472 to type_as_string. 2473 (dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits, 2474 build_rtti_vtbl_entries): Adjust. 2475 * init.c (build_vtbl_address): Adjust. 2476 2477 * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert. 2478 24792004-08-28 Ziemowit Laski <zlaski@apple.com> 2480 2481 * Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and 2482 CXX_AND_OBJCXX_OBJS. 2483 (CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing 2484 separately on the link line. 2485 24862004-08-28 Jason Merrill <jason@redhat.com> 2487 2488 * decl.c (expand_static_init): Avoid bogus warnings. 2489 24902004-08-27 Jason Merrill <jason@redhat.com> 2491 2492 PR c++/16851 2493 * tree.c (stabilize_init): See through a COMPOUND_EXPR. 2494 2495 PR c++/13684 2496 * decl.c (expand_static_init): Use thread-safety API. 2497 (register_dtor_fn): Return the call, don't expand it. 2498 * tree.c (add_stmt_to_compound): New fn. 2499 (stabilize_call): Use it. 2500 25012004-08-27 Richard Henderson <rth@redhat.com> 2502 2503 * cp-tree.def (OFFSETOF_EXPR): New. 2504 * parser.c (cp_parser_builtin_offsetof): Either built an 2505 OFFSETOF_EXPR, or call fold_offsetof immediately. 2506 * pt.c (tsubst_expr): Handle OFFSETOF_EXPR. 2507 25082004-08-27 Nathan Sidwell <nathan@codesourcery.com> 2509 2510 * call.c (validate_conversion_obstack): Replace 2511 my_friendly_assert with gcc_assert or gcc_unreachable. 2512 (direct_reference_binding, merge_conversion_sequences, 2513 build_user_type_conversion_1, perform_overload_resolution, 2514 build_op_delete_call, enforce_access, call_builtin_trap, 2515 build_over_call, build_special_member_call, build_new_method_call, 2516 initialize_reference): Likewise. 2517 * class.c (build_base_path, build_primary_vtable, alter_access, 2518 check_bases, update_vtable_entry_for_fn, layout_empty_base, 2519 clone_function_decl, adjust_clone_args, 2520 type_requires_array_cookie, include_empty_classes, 2521 finish_struct_1, resolve_address_of_overloaded_function, 2522 instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits, 2523 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group, 2524 accumulate_vtbl_inits, build_vtbl_initializer, 2525 build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise. 2526 * cvt.c (build_up_reference, convert_to_reference): Likewise. 2527 * decl.c (poplevel, duplicate_decls, make_typename_type, 2528 cxx_init_decl_processing, reshape_init, check_initializer, 2529 make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl, 2530 expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type, 2531 grokdeclarator, copy_fn_p, grok_op_properties, xref_tag, 2532 xref_basetypes, start_preparsed_function, save_function_data, 2533 finish_function, finish_method, maybe_register_incomplete_var, 2534 complete_vars): Likewise. 2535 * decl2.c (grok_array_decl, check_member_template, 2536 check_classfn, finish_static_data_member_decl, coerce_new_type, 2537 coerce_delete_type, import_export_class, decl_needed_p, 2538 determine_visibility, import_export_decl, build_cleanup, 2539 start_static_initialization_or_destructi, do_static_destruction, 2540 prune_vars_needing_no_initialization, 2541 build_offset_ref_call_from_tree): Likewise. 2542 * error.c (dump_decl, dump_expr): Likewise. 2543 * init.c (finish_init_stmts, build_zero_init, 2544 expand_virtual_init, expand_default_init, expand_aggr_init_1, 2545 build_offset_ref, build_new_1, build_delete, build_vbase_delete): 2546 Likewise. 2547 * mangle.c (write_method_parms, write_template_args, 2548 write_expression, write_template_arg): Likewise. 2549 * method.c (make_thunk, finish_thunk, use_thunk): Likewise. 2550 * name-lookup.c (pop_binding, begin_scope, leave_scope, 2551 resume_scope, push_using_decl, validate_nonmember_using_decl, 2552 is_ancestor, poplevel_class, set_inherited_value_binding_p, 2553 push_class_level_binding, do_class_using_decl, push_namespace, 2554 pop_namespace, add_using_namespace, ambiguous_decl, 2555 lookup_namespace_name, lookup_type_current_level, 2556 maybe_process_template_type_declaration): Likewise. 2557 * parser.c (cp_lexer_peek_nth_token, 2558 cp_parser_parse_and_diagnose_invalid_typ, 2559 cp_parser_translation_unit, cp_parser_template_id, 2560 cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise. 2561 * pt.c (push_access_scope, finish_member_template_decl, 2562 push_inline_template_parms_recursive, add_outermost_template_args, 2563 get_innermost_template_args, begin_explicit_instantiation, 2564 end_explicit_instantiation, retrieve_specialization, 2565 is_specialization_of, is_specialization_of_friend, 2566 register_specialization, check_explicit_specialization, 2567 comp_template_parms, process_template_parm, 2568 process_partial_specialization, convert_nontype_argument, 2569 coerce_template_template_parms, coerce_template_parms, 2570 mangle_class_name_for_template, lookup_template_function, 2571 lookup_template_class, instantiate_class_template, tsubst_decl, 2572 tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy, 2573 instantiate_template, fn_type_unification, type_unification_real, 2574 get_template_base, regenerate_decl_from_template, 2575 template_for_substitution, instantiate_decl, 2576 get_mostly_instantiated_function_type, dependent_scope_ref_p, 2577 value_dependent_expression_p, resolve_typename_type): Likewise. 2578 * repo.c (repo_emit_p): Likewise. 2579 * rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init, 2580 create_tinfo_types, emit_tinfo_decl): Likewise. 2581 * search.c (lookup_base_r, lookup_base, lookup_field_1, 2582 dfs_access_in_type, build_baselink, lookup_member, 2583 adjust_result_of_qualified_name_lookup, copied_binfo): Likewise. 2584 * semantics.c (perform_or_defer_access_check, 2585 finish_non_static_data_member, finish_stmt_expr_expr, 2586 finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr, 2587 finish_template_template_parm, finish_member_declaration, 2588 emit_associated_thunks): Likewise. 2589 * tree.c (build_target_expr_with_type, force_target_expr, 2590 copy_binfo, get_first_fn, cp_tree_equal): Likewise. 2591 * typeck.c (type_after_usual_arithmetic_conversions, comptypes, 2592 cxx_sizeof_or_alignof_type, perform_integral_promotions, 2593 build_class_member_access_expr, finish_class_member_access_expr, 2594 build_ptrmemfunc_access_expr, build_unary_op, 2595 unary_complex_lvalue, cxx_mark_addressable, build_modify_expr, 2596 build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr 2597 * typeck2.c (complete_type_check_abstract, 2598 abstract_virtuals_error, process_init_constructor, 2599 add_exception_specifier): Likewise. 2600 26012004-08-27 Nathan Sidwell <nathan@codesourcery.com> 2602 2603 * class.c (build_vtbl_initializer): Use ssize_int. 2604 * decl.c (complete_array_type): Likewise. 2605 * method.c (finish_thunk): Likewise. 2606 * search.c (get_dynamic_base_type): Likewise. 2607 26082004-08-26 Richard Henderson <rth@redhat.com> 2609 2610 * cp-tree.h (DECL_FIELD_IS_BASE): New. 2611 * class.c (build_base_field): Set it. 2612 (build_simple_base_path): Use it. 2613 (fixed_type_or_null): Don't consider base fields definitive. 2614 26152004-08-25 Roger Sayle <roger@eyesopen.com> 2616 2617 PR middle-end/16693 2618 PR tree-optimization/16372 2619 * decl.c (finish_enum): Make the precision of the enumerated type 2620 the same width as the underlying integer type. 2621 26222004-08-25 Mark Mitchell <mark@codesourcery.com> 2623 2624 PR c++/17155 2625 * lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++ 2626 functions. 2627 2628 * mangle.c (get_identifier_nocopy): Add cast. 2629 2630 * cp-tree.h (mangle_type): Remove. 2631 * mangle.c (globals): GTY it. 2632 (mangle_obstack): New variable. 2633 (name_obstack): Likewise. 2634 (name_base): Likewise. 2635 (write_char): Adjust accordingly. 2636 (write_chars): Likewise. 2637 (write_string): Likewise. 2638 (start_mangling): Initialize G.substitutions only one. Add 2639 ident_p parameter. 2640 (finish_mangling): Use VARRAY_CLEAR to reclaim 2641 storage in G.substitutions. Use obstack_finish. 2642 (init_mangle): Adjust for changes to variable names above. 2643 Initialize G.substitutions. 2644 (mangle_decl_string): Adjust call to start_mangling. 2645 (get_identifier_nocopy): New function. 2646 (mangle_decl): Use it. 2647 (mangle_type_string): Adjust call to start_mangling. 2648 (mangle_special_for_type): Likewise. 2649 (mangle_vtt_for_type): Likewise. 2650 (mangle_ctor_vtbl_for_type): Likewise. 2651 (mangle_thunk): Likewise. 2652 (mangle_guard_variable): Likewise. 2653 (mangle_ref_init_variable): Likewise. 2654 26552004-08-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2656 2657 PR c++/14428 2658 * pt.c (redeclare_class_template): Check the type of non-type and 2659 template template parameter. 2660 26612004-08-25 Nathan Sidwell <nathan@codesourcery.com> 2662 2663 * call.c (convert_class_to_reference): Adjust build_int_cst calls. 2664 (build_user_type_conversion_1, convert_like_real, 2665 build_java_interface_fn_ref, build_special_member_call): Likewise. 2666 * class.c (finish_struct_1, build_vtbl_initializer): Likewise. 2667 * cp-gimplify.c (cp_gimplify_expr): Likewise. 2668 * cvt.c (cp_convert_to_pointer): Likewise. 2669 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise. 2670 * decl2.c (start_static_initialization_or_destruction, 2671 generate_ctor_or_dtor_function): Likewise. 2672 * except.c (build_throw): Likewise. 2673 * mangle.c (write_integer_cst): Likewise. 2674 * method.c (finish_thunk): Likewise. 2675 * rtti.c (build_headof, get_tinfo_decl_dynamic, 2676 build_dynamic_cast_1, ptr_initializer, ptm_initializer, 2677 get_pseudo_ti_init): Likewise. 2678 * search.c (get_dynamic_cast_base_type): Likewise. 2679 26802004-08-25 Zack Weinberg <zack@codesourcery.com> 2681 2682 * class.c, search.c: Remove references to DWARF_DEBUG. 2683 26842004-08-25 Adam Nemet <anemet@lnxw.com> 2685 2686 * repo.c (extract_string): Reset backquote after one character. 2687 (get_base_filename): Fix indentation. 2688 26892004-08-24 Nathan Sidwell <nathan@codesourcery.com> 2690 2691 * decl.c (cxx_init_decl_processing): Adjust 2692 build_common_tree_nodes call. 2693 26942004-08-24 Nathan Sidwell <nathan@codesourcery.com> 2695 2696 PR c++/16889 2697 * (is_subobject_of_p): Resurrect & optimize. 2698 (lookup_field_r): Use it. 2699 27002004-08-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2701 2702 PR c++/16706 2703 * search.c (friend_accessible_p): Increment processing_template_decl 2704 when deal with TEMPLATE_DECL of SCOPE. 2705 27062004-08-24 Nathan Sidwell <nathan@codesourcery.com> 2707 2708 PR c++/17149 2709 * semantics.c (check_accessibility_of_qualified_id): Defer check 2710 if qualifying_type is a template parameter. 2711 27122004-08-23 Mark Mitchell <mark@codesourcery.com> 2713 2714 PR c++/17163 2715 * pt.c (instantiate_decl): Do not try to apply 2716 DECL_DECLARED_INLINED_P to a VAR_DECL. 2717 2718 * search.c (build_baselink): Fix typo in comment. 2719 27202004-08-22 Andrew Pinski <apinski@apple.com> 2721 2722 Revert: 2723 2004-08-22 Andrew Pinski <apinski@apple.com> 2724 PR c++/14029 2725 * typeck.c (build_unary_op): Use &a.b if the folded lowered 2726 expression is not constant. 2727 27282004-08-23 Nathan Sidwell <nathan@codesourcery.com> 2729 2730 * name-lookup.c (pushdecl): Rename build_type_copy call. 2731 * tree.c (cp_build_qualified_type_real, 2732 build_exception_variant, handle_java_interface_attribute): Likewise. 2733 27342004-08-22 Andrew Pinski <apinski@apple.com> 2735 2736 PR c++/14029 2737 * typeck.c (build_unary_op): Use &a.b if the folded lowered 2738 expression is not constant. 2739 27402004-08-20 Mark Mitchell <mark@codesourcery.com> 2741 2742 PR c++/17121 2743 * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P. 2744 27452004-08-21 Joseph S. Myers <jsm@polyomino.org.uk> 2746 2747 PR c++/17120 2748 * pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for 2749 MODOP_EXPR. 2750 27512004-08-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2752 2753 * pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION 2754 before calling comp_template_args. 2755 27562004-08-20 Nathan Sidwell <nathan@codesourcery.com> 2757 2758 * class.c (build_vtbl_initializer): Use build_int_cst for 2759 negative size types. 2760 * decl.c (complete_array_type): Likewise. 2761 * method.c (finish_thunk): Likewise. 2762 27632004-08-20 Andreas Tobler <a.tobler@schweiz.ch> 2764 2765 * tree.c: Remove unused mark_local_for_remap_r. 2766 27672004-08-19 Eric Christopher <echristo@redhat.com> 2768 2769 * cp-tree.h (cxx_unsave_expr_now): Delete prototype. 2770 * tree.c (cxx_unsave_expr_now): Delete. 2771 (cp_unsave_r): Ditto. 2772 27732004-08-19 Mark Mitchell <mark@codesourcery.com> 2774 2775 PR c++/15890 2776 * pt.c (push_template_decl_real): Disallow template allocation 2777 functions with fewer than two parameters. 2778 27792004-08-19 Nathan Sidwell <nathan@codesourcery.com> 2780 2781 * cp-tree.h (build_shared_int_cst): Remove. 2782 * tree.c (shared_int_cache): Remove. 2783 (build_shared_int_cst): Remove. 2784 * class.c (finish_struct_1): Use build_int_cst. 2785 27862004-08-19 Nathan Sidwell <nathan@codesourcery.com> 2787 2788 * decl.c (finish_enum): Do not copy value node early, copy 2789 later. 2790 * lex.c (cxx_init): Force null_node to be unique. 2791 27922004-08-19 Joseph S. Myers <jsm@polyomino.org.uk> 2793 2794 PR c++/17041 2795 * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING 2796 from input for MODOP_EXPR. 2797 27982004-08-18 Mark Mitchell <mark@codesourcery.com> 2799 2800 * pt.c (dependent_template_p): Fix typo in commment. 2801 2802 PR c++/17068 2803 * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as 2804 dependent. 2805 28062004-08-17 Mark Mitchell <mark@codesourcery.com> 2807 2808 PR c++/16246 2809 * pt.c (unify): Tidy ARRAY_TYPE handling. Make sure that non-type 2810 arguments have the same type as the corresponding parameter. 2811 2812 PR c++/16215 2813 * parser.c (cp_parser_name_lookup_error): If parser->object_scope 2814 is set use it for diagnostic purposes. 2815 (cp_parser_pseudo_destructor_name): Remove special-case error 2816 message. 2817 2818 PR c++/15871 2819 * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions. 2820 2821 PR c++/16965 2822 * cp-tree.h (qualified_name_lookup_error): Add parameter. 2823 * name-lookup.c (do_class_using_decl): Restrict set of entities 2824 passed to cp_emit_debug_info_for_using more carefully. 2825 (lookup_qualified_name): Allow lookup_member to return sets of 2826 ambiguous entries. 2827 * parser.c (cp_parser_lookup_name): Add ambiguous_p parameter. 2828 (cp_parser_primary_expression): Handle ambiguous lookups. 2829 (cp_parser_template_name): Adjust use of cp_parser_lookup_name. 2830 (cp_parser_template_argument): Likewise. 2831 (cp_parser_elaborate_type_specifier): Likewise. 2832 (cp_parser_namespace_name): Likewise. 2833 (cp_parser_class_name): Likewise. 2834 (cp_parser_lookup_name_simple): Likewise. 2835 * pt.c (tsubst_qualified_id): Handle ambiguous results. 2836 (tsubst_expr): Likewise. 2837 * semantics.c (qualified_name_lookup_error): Add decl paramter. 2838 For ambiguous lookups, print candidates. 2839 28402004-08-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2841 2842 PR c++/6749 2843 * pt.c (instantiate_pending_templates): Add int parameter. Don't 2844 return anything. 2845 * cp-tree.h (instantiate_pending_templates): Adjust prototype. 2846 * decl2.c (finish_file): Adjust call to 2847 instantiate_pending_templates. 2848 28492004-08-15 Roger Sayle <roger@eyesopen.com> 2850 2851 * call.c (build_vfield_ref, build_call, build_conditional_expr, 2852 convert_arg_to_ellipsis, build_x_va_arg, build_over_call, 2853 build_java_interface_fn_ref, build_special_member_call, 2854 build_new_method_call, initialize_reference): Replace calls to 2855 build with calls to buildN. 2856 * class.c (build_base_path, convert_to_base_statically, 2857 build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits, 2858 build_vtbl_initializer): Likewise. 2859 * cp-gimplify.c (genericize_try_block, genericize_catch_block, 2860 gimplify_if_stmt, cp_genericize_r): Likewise. 2861 * cvt.c (convert_to_void): Likewise. 2862 * decl.c (check_initializer, finish_constructor_body, 2863 finish_destructor_body): Likewise. 2864 * error.c (dump_expr): Likewise. 2865 * except.c (build_exc_ptr, expand_start_catch_block, build_throw): 2866 Likewise. 2867 * init.c (perform_member_init, expand_virtual_init, 2868 expand_cleanup_for_base, build_init, expand_default_init, 2869 build_offset_ref, decl_constant_value, build_new, build_new_1, 2870 build_vec_delete_1, build_vec_init, build_delete, 2871 push_base_cleanups, build_vec_delete): Likewise. 2872 * mangle.c (write_integer_cst): Likewise. 2873 * method.c (thunk_adjust, do_build_copy_constructor, 2874 do_build_assign_ref): Likewise. 2875 * pt.c (lookup_template_function, tsubst, tsubst_copy_and_build, 2876 unify, build_non_dependent_expr): Likewise. 2877 * rtti.c (build_headof, build_typeid, ifnonnull, 2878 build_dyanmic_cast_1, tinfo_base_init): Likewise. 2879 * semantics.c (begin_compound_stmt, finish_call_expr, 2880 finish_pseudo_destructor_expr, finish_id_expression, 2881 simplify_aggr_init_expr, finalize_nrv_r): Likewise. 2882 * tree.c (build_target_expr, build_cplus_new, array_type_nelts_top, 2883 array_type_nelts_total, stabilize_call): Likewise. 2884 * typeck.c (decay_conversion, build_class_member_access_expr, 2885 lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref, 2886 get_member_function_from_ptrfunc, build_binary_op, pointer_diff, 2887 build_x_unary_op, build_unary_op, unary_complex_lvalue, 2888 build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst, 2889 check_return_expr): Likewise. 2890 * typeck2.c (split_nonconstant_1, split_nonconstant_init_1, 2891 split_nonconstant_init, store_init_value, build_m_component_ref): 2892 Likewise. 2893 28942004-08-15 Nathan Sidwell <nathan@codesourcery.com> 2895 2896 * call.c (convert_class_to_reference, 2897 build_user_type_conversion_1, convert_like_real, 2898 build_java_interface_fn_ref, build_special_member_call): Use 2899 build_int_cst. 2900 * class.c (build_vtbl_initializer): Likewise. 2901 * cp-gimplify.c (cp_gimplify_expr): Likewise. 2902 * cvt.c (cp_convert_to_pointer): Likewise. 2903 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise. 2904 * decl2.c (start_static_initialization_or_destruction, 2905 generate_ctor_or_dtor_function): Likewise. 2906 * except.c (build_throw): Likewise. 2907 * lex.c (cxx_init): Likewise. 2908 * mangle.c (write_integer_cst): Likewise. 2909 * rtti.c (build_headof, get_tinfo_decl_dynamic, 2910 build_dynamic_cast_1, ptr_initializer, ptm_initializer, 2911 get_pseudo_ti_init): Likewise. 2912 * search.c (get_dynamic_cast_base_type): Likewise. 2913 * tree.c (build_shared_int_cst): Likewise. 2914 29152004-08-12 Mark Mitchell <mark@codesourcery.com> 2916 2917 PR c++/16273 2918 * class.c (count_depth_data): New type. 2919 (dfs_depth_post): New function. 2920 (dfs_depth_q): Likewise. 2921 (find_final_overrider_data_s): Change type of vpath. 2922 Add vpath_list. 2923 (dfs_find_final_overrider_1): New function. 2924 (dfs_find_final_overrider): Use it. 2925 (dfs_find_final_overrider_q): Adjust use of vpath. 2926 (dfs_find_final_overrider_post): Likewise. 2927 (find_final_overrider): Use dfs_depth. Allocate and deallocate 2928 vpath_list. 2929 29302004-08-12 Jan Beulich <jbeulich@novell.com> 2931 2932 * parser.c (cp_parser_asm_definition): Properly consume scope operator 2933 tokens preceding the clobbers. Don't check for scope operator 2934 following inputs. Simplify inputs handling to match that now used for 2935 clobbers. 2936 29372004-08-11 Mark Mitchell <mark@codesourcery.com> 2938 2939 PR c++/16698 2940 * except.c (build_throw): Allocate cleanup_type and the function 2941 for __cxa_throw separately. 2942 2943 PR c++/16853 2944 * call.c (standard_conversion): Do not accept conversions between 2945 pointers to members if the class types are unrelated. 2946 2947 PR c++/16618 2948 * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile 2949 char &" instead of just "char &". 2950 2951 PR c++/16870 2952 * pt.c (tsubst): Just return the unknown_type_node. 2953 29542004-08-11 Mark Mitchell <mark@codesourcery.com> 2955 2956 PR c++/16964 2957 * parser.c (cp_parser_class_specifier): Robustify. 2958 2959 PR c++/16904 2960 * pt.c (tsubst_copy_and_build): Complain about invalid 2961 qualification. 2962 2963 PR c++/16929 2964 * pt.c (tsubst_default_argument): Clear out current_class_ptr and 2965 current_class_ref while tsubsting. 2966 29672004-08-10 Mark Mitchell <mark@codesourcery.com> 2968 2969 PR c++/16971 2970 * parser.c (cp_parser_init_declarator): Robustify. 2971 29722004-08-06 Richard Sandiford <rsandifo@redhat.com> 2973 2974 * typeck2.c (process_init_constructor): Guard the missing field warning 2975 with warn_missing_field_initializers rather than extra_warnings. 2976 29772004-08-06 Paolo Bonzini <bonzini@gnu.org> 2978 2979 * class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle. 2980 29812004-08-05 Mark Mitchell <mark@codesourcery.com> 2982 2983 * decl.c (start_preparsed_function): Move determine_visibility 2984 call. 2985 * decl2.c (determine_visibility): Incorporate dllexport testing. 2986 29872004-08-05 Geoffrey Keating <geoffk@apple.com> 2988 2989 * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option 2990 means that libstdc++ is needed. 2991 29922004-08-05 Nathan Sidwell <nathan@codesourcery.com> 2993 2994 * cvt.c (cp_convert_to_pointer): Adjust force_fit_type call. 2995 29962004-08-04 Geoffrey Keating <geoffk@apple.com> 2997 2998 * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather 2999 than passing it as a parameter to rest_of_decl_compilation. 3000 * decl2.c (grokfield): Use set_user_assembler_name. 3001 30022004-08-04 Nathan Sidwell <nathan@codesourcery.com> 3003 3004 * decl.c (complete_array_type): Don't gratuitously copy 3005 maxindex. Its type is always set. 3006 30072004-08-04 Paul Brook <paul@codesourcery.com> 3008 3009 * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H. 3010 * cp-tree.h (struct language_function): Rename x_dtor_label to 3011 x_cdtor_label. 3012 (dtor_label): Rename ... 3013 (cdtor_label): ... to this. 3014 * decl.c (begin_constructor_body): Remove. 3015 (check_special_function_return_type): Maybe change the return type. 3016 (grokdeclarator): Pass the class type. 3017 (start_preparsed_function): Constructors may need a return label. 3018 (finish_constructor_body, finish_destructor_body): Set the return 3019 value. 3020 (begin_function_body): Don't call begin_constructor_body. 3021 (finish_function): Don't warn for constructors or destructors. 3022 (implicitly_declare_fn): Maybe change the return type. 3023 * optimize.c: Include target.h. 3024 (maybe_clone_body): Remap the function result. 3025 * semantics.c: Include target.h. 3026 (finish_return_stmt): Maybe jump to return label for constructors. 3027 30282004-08-03 Mark Mitchell <mark@codesourcery.com> 3029 3030 * class.c (build_vtable): Do not set DECL_VISIBILITY here. 3031 (check_field_decls): Or here. 3032 (check_methods): Or here. 3033 (initialize_array): Don't mess with DECL_CONTEXT. 3034 * cp-tree.h (start_decl): Adjust prototype. 3035 (determine_visibility): New function. 3036 * decl.c (duplicate_decls): Remove checks for hidden "operator 3037 new". 3038 (build_library_fn_1): Give all library functions default 3039 visibility. 3040 (start_decl): Add pop_scope_p parameter. Tidy. 3041 (cp_finish_decl): Do not pop scopes here. Call 3042 determine_visibility for variable definitions. 3043 (start_preparsed_function): Call determine_visibility. 3044 * decl2.c (determine_visibility): New function. 3045 * method.c (use_thunk): Fix formatting. 3046 * parser.c (cp_parser_condition): Adjust calls to start_decl. 3047 (cp_parser_init_declarator): Likewise. 3048 * pt.c (instantiate_decl): Always call pop_nested_class. 3049 * rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY. 3050 (tinfo_base_init): Likewise. 3051 30522004-08-02 Mark Mitchell <mark@codesourcery.com> 3053 3054 PR c++/16707 3055 * name-lookup.c (validate_nonmember_using_decl): Robustify. 3056 30572004-08-01 Mark Mitchell <mark@codesourcery.com> 3058 3059 PR c++/16224 3060 * name-lookup.c (decl_namespace): Remove. 3061 (current_decl_namespace): Use decl_namespace_context instead of 3062 decl_namespace. 3063 (push_decl_namespace): Likewise. 3064 (arg_assoc_class): Likewise. 3065 (arg_assoc_type): Likewise. 3066 * pt.c (check_specialization_namespace): New function. 3067 (maybe_process_partial_specialization): Use it. 3068 (register_specialization): Likewise. 3069 3070 PR c++/16489 3071 * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro. 3072 * call.c (null_ptr_cst_p): Handle variables with constant 3073 initializers. 3074 * pt.c (convert_nontype_argument): Use 3075 DECL_INTEGRAL_CONSTANT_VAR_P. 3076 * semantics.c (finish_id_expression): Likewise. 3077 3078 PR c++/16529 3079 * decl.c (duplicate_decls): Reject duplicate namespace 3080 declarations. 3081 3082 PR c++/16810 3083 * typeck.c (build_ptrmemfunc): Loosen assertion. 3084 30852004-08-01 Gabriel Dos Reis <gdr@integrable-solutions.net> 3086 3087 * call.c (z_candidate::template_decl): Rename from template. 3088 (add_template_candidate_real): Adjust member reference. 3089 (joust): Likewise. 3090 30912004-07-29 Mark Mitchell <mark@codesourcery.com> 3092 3093 * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define. 3094 (lang_decl_flags): Narrow the width of "languages". Add 3095 repo_available_p. 3096 (DECL_NEEDED_P): Remove. 3097 (FOR_EACH_CLONE): New macro. 3098 (DECL_REPO_AVAILABLE_P): Likewise. 3099 (DECL_TINFO_P): Likewise. 3100 (set_linkage_according_to_type): Declare. 3101 (import_export_vtable): Remove. 3102 (import_export_tinfo): Likewise. 3103 (mark_needed): New function. 3104 (decl_needed_p): Likewise. 3105 (note_vauge_linkage_fn): Likewise. 3106 (init_repo): Change prototype. 3107 (repo_template_used): Remove. 3108 (repo_template_instantiated): Likewise. 3109 (repo_emit_p): New function. 3110 (repo_export_class_p): Likewise. 3111 (no_linkage_check): Change prototype. 3112 * class.c (set_linkage_according_to_type): New function. 3113 (build_vtable): Use it. Do not call import_export_vtable. Set 3114 DECL_IGNORED_P if appropriate. 3115 * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P. 3116 (make_rtL_for_nonlocal_decls): Check for template instantiations 3117 explicitly. 3118 (grokfndecl): Adjust call to no_linkage_check. 3119 (set_linkage_for_static_data_member): New function. 3120 (grokvardecl): Use it. Adjust call to no_linkage_check. 3121 (grokdeclarator): Use set_linkage_for_static_data_member. 3122 * decl2.c (note_vague_linkage_fn): New function. 3123 (note_vague_linkage_var): Likewise. 3124 (finish_static_data_member_decl): Use it. 3125 (import_export_vtable): Remove. 3126 (import_export_class): Use repo_export_class_p. 3127 (var_finalized_p): Simplify. 3128 (maybe_emit_vtables): Simplify. 3129 (mark_needed): New function. 3130 (decl_needed_p): Likewise. 3131 (import_export_decl): Add documentation and consistency checks. 3132 Use repo_emit_p. Handle virtual tables and RTTI information 3133 here. 3134 (import_export_tinfo): Remove. 3135 (write_out_vars): Call import_export_decl. 3136 (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted 3137 whenever one is. 3138 (finish_file): Use decl_needed_p. Do not call import_export_decl 3139 for undefined static data members. Do not warn about undefined 3140 inlines when using a repository. 3141 (mark_used): Use note_vague_linkage_fn. Always defer template 3142 instantiations. 3143 * lex.c (cxx_init): Adjust call to init_repo. Always set 3144 flag_unit_at_a-time. 3145 * method.c (synthesize_method): Remove unncessary 3146 import_export_decl call. 3147 (implicitly_declare_fn): Use set_linkage_according_to_type. 3148 * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE. 3149 * pt.c (instantiate_class_template): Don't redundantly add classes 3150 to keyed_classes. Don't call repo_template_used. 3151 (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of 3152 templates with internal linkage. 3153 (check_instantiated_args): Adjust call to no_linkage_check. 3154 (instantiate_template): Use FOR_EACH_CLONE. 3155 (mark_definable): New function. 3156 (mark_decl_instantiated): Use it. 3157 (do_decl_instantiation): Adjust tests for explicit instantiation 3158 after "extern template". 3159 (instantiate_class_member): Do not use repo_template_instantiated. 3160 (do_type_instantiation): Simplify. 3161 (instantiate_decl): Use mark_definable. Check repo_emit_p. 3162 Simplify. 3163 * repo.c (repo_get_id): Remove. 3164 (original_repo): Remove. 3165 (IDENTIFIER_REPO_USED): Remove. 3166 (IDENTIFIER_REPO_CHOSEN): Remove. 3167 Remove all #if 0'd code. 3168 (repo_template_used): Remove. 3169 (repo_template_instantiated): Remove. 3170 (temporary_obstack_initialized_p): New variable. 3171 (init_repo): Register with lang_post_pch_load. Avoid creating 3172 identifiers unnecessarily. Don't use original_repo. Close the 3173 file here. 3174 (reopen_repo_file_for_write): Not here. 3175 (finish_repo): Always write out a new repository file. 3176 (repo_emit_p): New function. 3177 (repo_export_class_p): Likewise. 3178 * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type. 3179 (involves_incomplete_p): New function. 3180 (tinfo_base_init): Use it. 3181 (ptr_initializer): Remove non_public_ptr parameter. 3182 (ptm_initializer): Likewise. 3183 (get_pseudo_ti_init): Likewise. 3184 (unemitted_tinfo_decl_p): Remove. 3185 (emit_tinfo_decl): Use import_export_decl. 3186 * semantics.c (expand_body): Move updates of static_ctors and 3187 static_dtors to ... 3188 (expand_or_defer_fn): ... here. 3189 * tree.c (no_linkage_check): Add relaxed_p parameter. 3190 31912004-07-28 Eric Christopher <echristo@redhat.com> 3192 3193 * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete. 3194 31952004-07-28 Nathan Sidwell <nathan@codesourcery.com> 3196 3197 * cp-tree.h (struct tree_pair_s): New. 3198 (typedef tree_pair_p): New. 3199 (DEF_VEC_O(tree_pair_s)): New. 3200 (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s). 3201 (CLASSTYPE_VCALL_INDICES): Update documentation. 3202 * class.c (get_vcall_index): Adjust. 3203 (add_vcall_offset): Adjust. 3204 32052004-07-27 Kelley Cook <kcook@gcc.gnu.org> 3206 3207 * pt.c, typeck.c: Remove spurious carriage returns. 3208 32092004-07-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 3210 3211 PR c++/14429 3212 * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check 3213 when the type of ARG is not dependent. 3214 32152004-07-26 Geoffrey Keating <geoffk@apple.com> 3216 3217 * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX. 3218 (lang_specific_driver): If the C++ or math library options don't 3219 start with '-l', don't count them as added libraries. 3220 32212004-07-26 Nathan Sidwell <nathan@codesourcery.com> 3222 3223 * decl.c (xref_basetypes): Adjust base access vector creation. 3224 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base 3225 access accesses. 3226 * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise. 3227 32282004-07-26 Niall Douglas <s_fsfeurope2@nedprod.com> 3229 Brian Ryner <bryner@brianryner.com> 3230 3231 PR c++/15000 3232 PR c++/9283 3233 * class.c (check_field_decls): Apply hidden visibility if 3234 -fvisibility-inlines-hidden and inlined unless otherwise specified 3235 (build_vtable): Set vtable visibility to class visibility. 3236 (check_field_decls): Default static member visibility to class 3237 visibility. 3238 (check_methods): Default method visibility to class visibility. 3239 * cp-tree.h: Added CLASSTYPE_VISIBILITY and 3240 CLASSTYPE_VISIBILITY_SPECIFIED macro. 3241 * decl.c (duplicate_decls): New logic for merging definition decls 3242 with declaration decls. Added ignore & warning when non default 3243 applied to global operator new or delete. 3244 * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED 3245 wherever VISIBILITY was changed 3246 * rtti.c (get_tinfo_decl): Set typeinfo visibility to class 3247 visibility. 3248 (tinfo_base_init): Set typeinfo name visibility to class visibility. 3249 32502004-07-25 Bernardo Innocenti <bernie@develer.com> 3251 3252 * decl.c: Rename all identifiers named `class' to `cl'. 3253 * cp-tree.h: Likewise. 3254 32552004-07-25 Gabriel Dos Reis <gdr@integrable-solutions.net> 3256 3257 * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW. 3258 * typeck2.c (abstract_virtuals_error): Use GGC_NEW. 3259 * name-lookup.c (binding_entry_make): Use GGC_NEW. 3260 (binding_table_construct): Use GGC_CNEWVEC. 3261 (binding_table_new): Use GGC_NEW. 3262 (cxx_binding_make): Likewise. 3263 (begin_scope): Likewise. 3264 (push_to_top_level): Use GCC_CNEW. 3265 * parser.c (cp_token_cache_new): Likewise. 3266 (cp_token_cache_push_token): Likewise. 3267 (cp_lexer_new_main): Likewise. 3268 (cp_lexer_new_from_tokens): Likewise. 3269 (cp_parser_context_new): Likewise. 3270 (cp_parser_new): Likewise. 3271 (cp_lexer_new_from_tokens): Use GGC_NEWVEC. 3272 * lex.c (cxx_make_type): Use GGC_CNEW. 3273 (retrofit_lang_decl): Use GGC_NEWVAR. 3274 (cxx_dup_lang_specific_decl): Likewise. 3275 (copy_lang_type): Likewise. 3276 * decl.c (use_label): Use GGC_NEW instead of ggc_alloc. 3277 (save_function_data): Likewise. 3278 (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared. 3279 (cxx_push_function_context): Likewise. 3280 32812004-07-25 Richard Henderson <rth@redhat.com> 3282 3283 * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and 3284 DECL_IGNORED_P on RESULT_DECL. 3285 * semantics.c (finalize_nrv): Copy them too. 3286 32872004-07-23 Nathan Sidwell <nathan@codesourcery.com> 3288 3289 * search.c (lookup_conversion_operator): Avoid two loops. 3290 (add_conversions): Remove. 3291 (check_hidden_convs, split_conversions, 3292 lookup_conversions_r): New. 3293 (lookup_conversions): Use lookup_conversions_r. 3294 32952004-07-22 Nathan Sidwell <nathan@codesourcery.com> 3296 3297 * pt.c (get_template_base): Check type is completable. 3298 32992004-07-21 Eric Christopher <echristo@redhat.com> 3300 3301 * decl.c (poplevel): Inline unused variable checking. 3302 Change formatting. 3303 33042004-07-21 Paolo Bonzini <bonzini@gnu.org> 3305 3306 * typeck.c (build_binary_op): Do not use RDIV_EXPR for 3307 integer vectors. 3308 33092004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org> 3310 3311 PR c++/14497 3312 * pt.c (check_explicit_specialization): Remove extension to accept 3313 specializations without template headers. Fall-through to normal 3314 processing. 3315 33162004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org> 3317 3318 PR c++/509 3319 * pt.c (determine_specialization): New parameter template_count. 3320 Disambiguate between member templates and member functions counting 3321 the template headers. 3322 (check_explicit_specialization): Update caller. 3323 (tsubst_friend_function): Likewise. 3324 33252004-07-20 Steven Bosscher <stevenb@suse.de> 3326 3327 * cp-tree.def (TINST_LEVEL): Make it an 'x' node. 3328 * cp-tree.h (tinst_level_t): New tree type. 3329 (union lang_tree_node): Handle it. 3330 (TINST_LOCATION): New accessor macro. 3331 (make_tinst_level): New prototype. 3332 * cp-lang.c (cp_tree_size): Handle TINST_LEVEL. 3333 * decl.c (cp_tree_node_structure): Likewise. 3334 * error.c (print_instantiation_full_context): Use TINST_LOCATION. 3335 (print_instantiation_partial_context): Likewise. 3336 * pt.c (pop_tinst_level): Likewise. 3337 (push_tinst_level): Use make_tinst_level. 3338 * tree.c (make_tinst_level): New function. 3339 (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node. 3340 33412004-07-20 Mark Mitchell <mark@codesourcery.com> 3342 3343 * parser.c (cp_parser_simple_type_specifier): Fix typo. 3344 3345 PR c++/16637 3346 * parser.c (cp_parser_simple_type_specifier): Do not record usage 3347 of globally-qualified names. 3348 33492004-07-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 3350 3351 PR c++/16175 3352 * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output 3353 cv qualifier. 3354 33552004-07-19 Mark Mitchell <mark@codesourcery.com> 3356 3357 PR c++/16623 3358 * cp-tree.h (lang_type_class): Add lazy_assignment_op. 3359 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro. 3360 * class.c (add_implicitly_declared_members): Use 3361 CLASSTYPE_LAZY_ASSIGNMENT_OP. 3362 * method.c (lazily_declare_fn): Clear 3363 CLASSTYPE_LAZY_ASSIGNMENT_OP. 3364 * search.c (lookup_fnfields_1): Check it. 3365 33662004-07-20 Nathan Sidwell <nathan@codesourcery.com> 3367 3368 * cp-tree.h (vec_binfo_member): Remove. 3369 * tree.c (vec_binfo_member): Remove. 3370 3371 * cp-tree.h (struct lang_type_class): Remove vfields field. 3372 (CLASSTYPE_VFIELDS): Remove. 3373 (SET_BINFO_NEW_VTABLE_MARKED): Adjust. 3374 * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS 3375 handling. 3376 (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P. 3377 (finish_struct_1): Remove CLASSTYPE_VFIELDS handling. 3378 * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P. 3379 33802004-07-20 Nathan Sidwell <nathan@codesourcery.com> 3381 3382 * cp-tree.h (DEF_VEC_P(tree)): Remove here. 3383 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF): 3384 Moved to common. 3385 (BINFO_LANG_SLOTS): Remove. 3386 * tree.c (copy_binfo): Adjust BINFO creation and accessors. 3387 * decl.c (xref_basetypes): Adjust BINFO creation and accessors. 3388 * class.c (check_bases): Adjust BINFO accessors. 3389 (determine_primary_base, finish_struct_bits, 3390 maybe_warn_about_overly_private_class, warn_hidden, 3391 walk_subobject_offsets, propagate_binfo_offsets, end_of_class, 3392 warn_about_ambiguous_bases, get_vfield_name, 3393 dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits, 3394 add_vcall_offset_vtbl_entries_r): Likewise. 3395 * dump.c (cp_dump_tree): Likewise. 3396 * init.c (sort_mem_initializers, expand_member_init, build_delete, 3397 push_base_cleanups): Likewise. 3398 * method.c (do_build_copy_constructor, do_build_assign_ref, 3399 synthesize_exception_spec): Likewise. 3400 name-lookup.c (arg_assoc_class): Likewise. 3401 * pt.c (instantiate_class_template, 3402 get_template_base_recursive): Likewise. 3403 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise. 3404 * typeck2.c (process_init_constructor): Likewise. 3405 * search.c (lookup_base_r, dynamic_cast_base_recurse, 3406 dfs_access_in_type, dfs_walk_real, look_for_overrides, 3407 types_overlap_p, copied_binfo, original_binfo): Likewise. 3408 (binfo_for_vtable): Remove 3409 34102004-07-20 Steven Bosscher <stevenb@suse.de> 3411 3412 * cp-tree.h (struct lang_decl_flags): Unify the template_info and 3413 thunk_alias, and the access and virtual_offset fields. 3414 (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust. 3415 * decl.c (finish_case_label): Update c_add_case_node call. 3416 34172004-07-19 Mark Mitchell <mark@codesourcery.com> 3418 3419 Revert patch for PR c++/16623. 3420 34212004-07-19 Kelley Cook <kcook@gcc.gnu.org> 3422 3423 * except.c: Remove two spurious carriage returns. 3424 34252004-07-19 Mark Mitchell <mark@codesourcery.com> 3426 3427 PR c++/16623 3428 * cp-tree.h (lang_type_class): Add lazy_assignment_op. 3429 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro. 3430 * class.c (add_implicitly_declared_members): Use 3431 CLASSTYPE_LAZY_ASSIGNMENT_OP. 3432 * method.c (lazily_declare_fn): Clear 3433 CLASSTYPE_LAZY_ASSIGNMENT_OP. 3434 * search.c (lookup_fnfields_1): Check it. 3435 34362004-07-19 Nathan Sidwell <nathan@codesourcery.com> 3437 3438 * class.c (add_method): Delay adding the slot until the end. 3439 (determine_primary_base): Adjust VEC_iterate invokation. 3440 (resort_type_method_vec, finish_struct_methods, warn_hidden, 3441 walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases, 3442 build_vtbl_initializer): Likewise. 3443 * init.c (sort_mem_initializers, build_delete, push_base_cleanups, 3444 build_vbase_delete): Likewise. 3445 * method.c (do_build_copy_constructor): Likewise. 3446 * name-lookup.c (new_class_binding, print_binding_level, 3447 poplevel_class, store_class_bindings, push_to_top_level, 3448 pop_from_top_level): Likewise. 3449 * pt.c (check_explicit_specialization): Likewise. 3450 * search.c (lookup_conversion_operator, lookup_fnfields_1, 3451 get_pure_virtuals, add_conversions, dfs_check_overlap, 3452 binfo_for_vbase): Likewise. 3453 34542004-07-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 3455 3456 PR c++/12170 3457 * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only 3458 innermost set of template arguments during deduction. Simplify. 3459 34602004-07-19 Joseph S. Myers <jsm@polyomino.org.uk> 3461 3462 * typeck.c (build_modify_expr, build_x_modify_expr): Set 3463 TREE_NO_WARNING on assignments with an operator other than '='. 3464 34652004-07-10 Steven Bosscher <stevenb@suse.de> 3466 Joseph S. Myers <jsm@polyomino.org.uk> 3467 3468 * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove. 3469 * decl2.c (grokfield): Don't check current_class_depth via 3470 unused TREE_COMPLEXITY. 3471 * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING 3472 to avoid the missing parentheses warning. 3473 Don't set C_SET_EXP_ORIGINAL_CODE. 3474 34752004-07-18 Mark Mitchell <mark@codesourcery.com> 3476 3477 * tree.c (no_linkage_helper): Remove. 3478 (no_linkage_check): Don't use walk_tree_without_duplicates. 3479 3480 * mangle.c (write_expression): Issue a sorry for zero-operand 3481 functional casts. 3482 34832004-07-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 3484 3485 PR c++/13092 3486 * init.c (build_offset_ref): Build SCOPE_REF with non-null 3487 TREE_TYPE for non-dependent names. 3488 * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF. 3489 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with 3490 unknown_type_node as its TREE_TYPE. 3491 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK. 3492 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression. 3493 (dump_expr) <SCOPE_REF case>: Likewise. 3494 34952004-07-17 Jason Merrill <jason@redhat.com> 3496 3497 PR c++/16115 3498 * call.c (type_passed_as): Make the invisible reference type 3499 __restrict. 3500 * cp-gimplify.c (gimplify_cleanup_stmt): Rename to 3501 cp_genericize_r. Handle invisible reference lowering. 3502 (is_invisiref_parm): New fn. 3503 (cp_genericize): Adjust the types of invisible reference parms. 3504 Don't repeat the walk for clones. 3505 * decl.c (store_parm_decls): Don't generate any code for clones. 3506 35072004-07-17 Joseph S. Myers <jsm@polyomino.org.uk> 3508 3509 * cp-tree.h (builtin_function): Declare. 3510 35112004-07-16 Mark Mitchell <mark@codesourcery.com> 3512 3513 * class.c (finish_struct_methods): Remove unncessary code. 3514 (add_implicitly_declared_members): Create declarations for default 3515 constructors and copy constructors lazily. 3516 * cp-tree.h (lang_type_class): Remove lazy_default_ctor and 3517 lazy_copy_ctor. 3518 (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro. 3519 (CLASSTYPE_LAZY_COPY_CTOR): Likewise. 3520 * decl2.c (check_classfn): Robustify. 3521 (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC. 3522 (locate_ctor): Handle lazy default constructors. 3523 (locate_copy): Handle lazy copy constructors. 3524 (implicitly_declare_fn): Make sure we're looking at the 3525 TYPE_MAIN_VARIANT for a class before creating functions. Don't 3526 set TYPE_HAS_CONSTRUCTOR. 3527 (lazily_declare_fn): New function. 3528 * name-lookup.c (constructor_name_full): Simplify. 3529 * search.c (lookup_fnfields_1): Lazily create methods, as 3530 necessary. 3531 (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC. 3532 35332004-07-16 Steven Bosscher <stevenb@suse.de> 3534 3535 * cp-tree.h (struct lang_type): Don't have three GTY options on a 3536 single bit GTY desc. 3537 35382004-07-16 Richard Henderson <rth@redhat.com> 3539 3540 * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die. 3541 * cp-tree.h (cp_copy_res_decl_for_inlining): Remove. 3542 * tree.c (cp_copy_res_decl_for_inlining): Remove. 3543 35442004-07-16 Nathan Sidwell <nathan@codesourcery.com> 3545 3546 * class.c (finish_struct_bits): Use for loop. 3547 (propagate_binfo_offsets): Do primary binfo outside of loop. 3548 3549 PR c++/16583 3550 * dump.c (cp_dump_tree): Don't dump the bases if there's no 3551 binfo. 3552 3553 * pt.c (tsubst) <TREE_BINFO case>: We should never get here. 3554 35552004-07-15 Mark Mitchell <mark@codesourcery.com> 3556 3557 * cp-tree.h (lang_type_class): Remove has_real_assign_ref and 3558 has_abstract_assign_ref. Make methods a VEC(tree) *. 3559 (TYPE_HAS_CONST_ASSIGN_REF): Add documentation. 3560 (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC. 3561 (CLASSTYPE_DESTRUCTORS): Likewise. 3562 (TYPE_HAS_REAL_ASSIGN_REF): Remove. 3563 (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise. 3564 (add_method): Change prototoype. 3565 * class.c (add_method): Remove error_p parameter. Adjust for 3566 changes to CLASSTYPE_METHOD_VEC. 3567 (handle_using_decl): Adjust call to add_method. 3568 (maybe_warn_about_overly_private_class): Adjust for 3569 changes to CLASSTYPE_METHOD_VEC. 3570 (resort_type_method_vec): Likewise. 3571 (finish_struct_methods): Likewise. 3572 (check_for_override): Likewise. 3573 (warn_hidden): Likewise. 3574 (add_implicitly_declared_members): Defer creation of assignment 3575 operators. Adjust call to add_method. 3576 (clone_function_decl): Adjust call to add_method. 3577 (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF. 3578 (finish_struct_1): Use CLASSTYPE_DESTRUCTORS. 3579 * decl.c (grok_special_member_properties): Don't set 3580 TYPE_HAS_ABSTRACT_ASSIGN_REF. 3581 * decl2.c (check_classfn): Adjust for 3582 changes to CLASSTYPE_METHOD_VEC. 3583 * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS. 3584 (locate_ctor): Use CLASSTYPE_CONSTRUCTORS. 3585 (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC. 3586 (implicitly_declare_fn): Set DECL_SOURCE_LOCATION. Do not call 3587 cp_finish_decl. 3588 * pt.c (check_explicit_specialization): Adjust for 3589 changes to CLASSTYPE_METHOD_VEC. 3590 (instantiate_class_template): Do not set 3591 TYPE_HAS_ABSTRACT_ASSIGN_REF. 3592 * ptree.c (cxx_print_type): Don't try to print 3593 CLASSTYPE_METHOD_VEC. 3594 * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS. 3595 * search.c (lookup_field_r): Adjust for 3596 changes to CLASSTYPE_METHOD_VEC. 3597 (lookup_fnfields): Likewise. 3598 (lookup_conversion_operator): Likewise. 3599 (lookup_fnfields_1): Likewise. Create assignment operators 3600 lazily. 3601 (look_for_overrides_here): Adjust for 3602 changes to CLASSTYPE_METHOD_VEC. 3603 (add_conversions): Likewise. 3604 * semantics.c (finish_member_declaration): Adjust call to add_method. 3605 36062004-07-15 Jason Merrill <jason@redhat.com> 3607 3608 * cp-lang.c (cxx_types_compatible_p): To the middle-end, 3609 references and pointers are compatible. 3610 36112004-07-15 Nathan Sidwell <nathan@codesourcery.com> 3612 3613 * decl.c (xref_basetypes): Refactor. 3614 * tree.c (copy_base_binfos): Replace with ... 3615 (copy_binfo): ... this. Deep copy the given binfo, (not the just 3616 bases of the given base). 3617 * cp-tree.h (copy_base_binfo): Remove. 3618 (copy_binfo): Declare. 3619 36202004-07-15 Mark Mitchell <mark@codesourcery.com> 3621 3622 * name-lookup.c (set_inherited_value_binding_p): Add class_type 3623 parameter. 3624 (get_class_binding): Adjust. 3625 (push_class_level_binding): Don't use set_inherited_value_binding_p. 3626 36272004-07-15 Nathan Sidwell <nathan@codesourcery.com> 3628 3629 * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here. 3630 * decl.c (xref_basetypes): Set it here. 3631 3632 * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here. 3633 Don't check for incomplete base. 3634 (get_vfield_name): Simplify while loop. 3635 * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here. 3636 36372004-07-14 Mark Mitchell <mark@codesourcery.com> 3638 3639 * lex.c (cxx_make_type): Remove call to get_pointer_type. 3640 3641 * cp-tree.h (IDENTIFIER_VALUE): Remove. 3642 (BINFO_PUSHDECLS_MARKED): Likewise. 3643 (maybe_inject_for_scope_var): Likewise. 3644 (push_class_decls): Likewise. 3645 * name-lookup.h (push_class_binding): Remove. 3646 (innermost_non_namespace_value): New function. 3647 (outer_binding): Likewise. 3648 * class.c (add_method): Push bindings before adding to 3649 TYPE_METHODS. 3650 (restore_class_cache): Do not restore class_shadowed. 3651 (pushclass): Do not add USING_DECLs. Do not call 3652 push_class_decls. 3653 * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c. 3654 * decl.c (pushdecl): Use outer_binding. 3655 (poplevel): Set the scope for an out-of-scope for-loop declaration 3656 appropriately. 3657 (cp_finish_decl): Don't call maybe_inject_for_scope_var. 3658 * name-lookup.c (new_class_binding): New function. 3659 (push_binding): Use it. 3660 (pushdecl): Use innermost_non_namespace_value. 3661 (maybe_inject_for_scope_var): Remove. 3662 (push_class_binding): Remove. 3663 (set_inherited_value_binding_p): New function. 3664 (get_class_binding): New function. 3665 (push_class_level_binding): Assert that the current_class_type is 3666 being defined. 3667 (outer_binding): New function. 3668 (innermost_non_namespace_value): Likewise. 3669 (lookup_name_real): Use outer_binding. 3670 (lookup_name_current_level): Ignore out-of-scope variables. 3671 * pt.c (check_template_shadow): Use innermost_non_namespace_value. 3672 (lookup_template_class): Likewise. 3673 * search.c (dfs_push_type_decls): Remove. 3674 (dfs_push_decls): Likewise. 3675 (setup_class_bindings): Likewise. 3676 (lookup_field_1): Handle USING_DECLs from dependent scopes. 3677 (marked_pushdecls_p): Remove. 3678 (unmarked_pushdecls_p): Remove. 3679 (marked_identifiers): Remove. 3680 (setup_class_bindings): Remove. 3681 (dfs_push_type_decls): Remove. 3682 (dfs_push_decls): Remove. 3683 (push_class_decls): Remove. 3684 36852004-07-13 Mark Mitchell <mark@codesourcery.com> 3686 3687 PR c++/16518 3688 PR c++/16337 3689 * decl.c (grokvardecl): Make declspecs parameter const. 3690 (grokdeclarator): Likewise. Adjust accordingly. 3691 * decl.h (grokdeclarator): Adjust declaration. 3692 * parser.c (cp_parser_init_declarator): Do not clear 3693 decl_specifiers->attributes. 3694 3695 * cp-tree.h (lang_identifier): Remove class_value. 3696 (IDENTIFIER_CLASS_VALUE): Remove. 3697 (pop_class_decls): Likewise. 3698 (init_search_processing): Likewise. 3699 * class.c (handle_using_decl): Use lookup_member, not 3700 IDENTIFIER_CLASS_VALUE. 3701 (restore_class_cache): New function, split out from ... 3702 (pushclass): ... here. Do not call clear_identifier_class_values. 3703 (invalidate_class_lookup_cache): Do not clear 3704 IDENTIFIER_CLASS_VALUE. 3705 (popclass): Do not call pop_class_decls. 3706 (maybe_note_name_used_in_class): Do not save names looked up after 3707 the class is complete. Use lookup_member, not 3708 IDENTIFIER_CLASS_VALUE. 3709 * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c. 3710 * decl.c (cxx_init_decl_processing): Do not call 3711 init_search_processing. 3712 * method.c (do_build_copy_constructor): Remove unnecessary code. 3713 (do_build_assign_ref): Likewise. 3714 * name-lookup.c (pushdecl): Use lookup_member, not 3715 IDENTIFIER_CLASS_VALUE. 3716 (set_identifier_type_value_with_scope): Set TREE_TYPE on the 3717 type_shadowed list. 3718 (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE. 3719 (push_class_binding): Do not set it. 3720 (clear_identifier_class_values): Remove. 3721 (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE. 3722 (store_binding): Do not save it. 3723 (pop_from_top_level): Do not restore it. 3724 * name-lookup.h (cxx_saved_binding): Remove class_value. 3725 (clear_identifier_class_values): Remove. 3726 * ptree.c (cxx_print_identifier): Do not print 3727 IDENTIFIER_CLASS_VALUE. 3728 * search.c (search_obstack): Remove. 3729 (push_stack_level): Remove. 3730 (pop_stack_level): Remove. 3731 (search_level): Remove. 3732 (search_stack): Remove. 3733 (lookup_member): Don't check IDENTIFIER_CLASS_VALUE. 3734 (setup_class_bindings): Use IDENTIFIER_MARKED, not 3735 IDENTIFIER_CLASS_VALUE. 3736 (marked_identifiers): New variable. 3737 (push_class_decls): Clear IDENTIFIER_MARKED. 3738 (pop_class_decls): Don't call pop_search_level. 3739 (init_search_processing): Remove. 3740 37412004-07-12 Mark Mitchell <mark@codesourcery.com> 3742 3743 * cp-tree.h (get_aggr_typedef): Remove. 3744 * init.c (get_aggr_typedef): Likewise. 3745 3746 * name-lookup.c (push_class_level_binding): Simplify. 3747 37482004-07-12 Andrew Pinski <apinski@apple.com> 3749 3750 PR c++/16475 3751 Revert: 3752 2004-07-07 H.J. Lu <hongjiu.lu@intel.com> 3753 PR c++/16276 3754 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo 3755 is not public. 3756 37572004-07-12 Eric Christopher <echristo@redhat.com> 3758 3759 * parser.c (cp_parser_class_head): Remove unused variable. 3760 37612004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org> 3762 3763 * decl.c (grok_op_properties): Reject [de-]allocation functions 3764 declared in a namespace, or declared as static. 3765 37662004-07-12 Nathan Sidwell <nathan@codesourcery.com> 3767 3768 * cp-tree.h (make_binfo): Remove. 3769 * decl.c (xref_basetypes): Use make_tree_binfo directly. 3770 * tree.h (copy_base_binfos): Likewise. 3771 (make_binfo): Remove. 3772 3773 * call.c (build_user_type_conversion_1, build_new_op, 3774 check_constructor_callable, build_temp, 3775 perform_direct_initialization_of_possible): Pass type directly to 3776 lookup_fnfields & build_special_member_call. 3777 (build_special_member_call): Accept a type, and complete it. 3778 * class.c (finish_stuct_bits): Copy the BINFOs here. 3779 * cvt.c (ocp_convert): Pass type directly to 3780 build_special_member_call. 3781 * decl.c (build_ptrmemfunc_type): Call xref_bastypes here. 3782 (xref_basetypes): Allocate the binfo here. Adjust. 3783 * init.c (build_init, build_new_1): Pass type directly to 3784 build_special_member_call. 3785 * lex.c (cxx_make_type): Do not allocate binfo here. 3786 * name-lookup.c (arg_assoc_class): Incomplete types have no binfo. 3787 * parser.c (cp_parser_class_head): Always call xref_basetypes. 3788 * pt.c (instantiate_class_template): Likewise. Inhibit access 3789 checking for template friends. 3790 * ptree.c (cxx_print_type): Adjust record printing. 3791 * search.c (lookup_base): When taking a type, complete it before 3792 looking for a binfo. 3793 (lookup_member): Delay completing a type. 3794 (push_class_decls): Don't walk an incomplete type. 3795 (lookup_conversions): Likewise. 3796 * semantics.c (finish_stmt_expr_expr): Pass type directly to 3797 build_special_member_call. 3798 * tree.c (copy_base_binfos): Adjust. 3799 (make_binfo): Likewise. 3800 * typeck.c (build_modify_expr): Pass type directly to 3801 build_special_member_call. 3802 * typeck2.c (process_init_constructor): Check a binfo exists. 3803 (build_m_component_ref): Allow accessing an incomplete type. 3804 (build_functional_cast): Pass type directly to 3805 build_special_member_call. 3806 38072004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org> 3808 3809 PR c++/2204 3810 * config-lang.in (gtfiles): Add typeck2.c. 3811 * Make-lang.in: Tweak typeck2.c dependencies, and add rule for 3812 gt-cp-typeck2.h. 3813 * cp-tree.h: Declare complete_type_check_abstract. 3814 * typeck2.c (pat_calc_hash, pat_compare, 3815 complete_type_check_abstract): New functions. 3816 (abstract_virtuals_error): If the type is abstract, register the 3817 declaration within abstract_pending_vars for further checks. 3818 Inspect also dependent types. Handle IDENTIFIER_NODEs as decl. 3819 * decl.c (cp_finish_decl): Do not strip array types. 3820 (create_array_type_for_decl): Check for abstractness of the element 3821 type. 3822 (complete_vars): Call complete_type_check_abstract. 3823 * class.c (finish_struct): Prepare a list of virtual functions for 3824 template types, and call complete_vars on it to check for abstractness. 3825 38262004-07-12 Paolo Bonzini <bonzini@gnu.org> 3827 3828 PR tree-optimization/14107 3829 * decl.c (finish_function): Remove temporary band-aid. 3830 38312004-07-11 Mark Mitchell <mark@codesourcery.com> 3832 3833 * call.c (build_operator_new_call): Avoid using push_to_top_level. 3834 (build_new_op): Adjust call to lookup_function_nonclass. 3835 * name-lookup.c (identifier_type_value): Adjust call to 3836 lookup_name_real. 3837 (lookup_name_real): Add block_p parameter. 3838 (lookup_name_nonclass): Adjust call to lookup_name_real. 3839 (lookup_function_nonclass): Likewise. 3840 (lookup_name): Likewise. 3841 * name-lookup.h (lookup_name_real): Change prototype. 3842 (lookup_name_nonclass): Likewise. 3843 * parser.c (cp_parser_lookup_name): Likewise. 3844 3845 * cp-tree.h (saved_scope): Make old_bindings a vector. 3846 (unuse_fields): Remove. 3847 * name-lookup.h (cxx_saved_binding): Define it. 3848 * class.c (pushclass): Don't use unuse_fields. 3849 * name-lookup.c (cxx_saved_binding_make): Remove. 3850 (store_binding): Add new bindings to a vector, using an 3851 accumulator style, rather than adding them to a list. 3852 (store_bindings): Adjust accordingly. 3853 (store_class_bindings): Likewise. 3854 (push_to_top_level): Likewise. 3855 (pop_from_top_level): Likewise. 3856 * optimize.c (maybe_clone_body): Must push_to_top_level and 3857 pop_from_top_level calls outside of loop. 3858 * parser.c (cp_parser_class_specifier): Move push_scope/pop_scope 3859 calls here from cp_parser_late_parsing_default_args. 3860 (cp_parser_save_default_args): Record the class type in which the 3861 function is declared. 3862 (cp_parser_late_parsing_default_args): Do not call 3863 push_nested_class/pop_nested_class. 3864 * search.c (dfs_unuse_fields): Remove. 3865 (unuse_fields): Remove. 3866 38672004-07-11 Joseph S. Myers <jsm@polyomino.org.uk> 3868 3869 * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL, 3870 LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove. 3871 * cp-tree.h (poplevel): Declare. 3872 (set_block): Remove. 3873 * decl.c (set_block): Remove. 3874 38752004-07-10 Mike Stump <mrs@apple.com> 3876 3877 * decl2.c (import_export_class): Never export/import vtables 3878 with inline key functions. 3879 38802004-07-09 Steven Bosscher <stevenb@suse.de> 3881 3882 * typeck.c (c_expand_asm_operands): Remove. 3883 38842004-07-09 Mike Stump <mrs@apple.com> 3885 3886 * typeck.c (build_class_member_access_expr): Skip null deref 3887 warning when we don't dereference it. 3888 38892004-07-09 Giovanni Bajo <giovannibajo@gcc.gnu.org> 3890 3891 PR c++/8211 3892 PR c++/16165 3893 * class.c (check_field_decls): Improve -Weffc++ warning: do not 3894 warn for pointers to functions/members, or for classes without 3895 destructors. 3896 38972004-07-08 Mark Mitchell <mark@codesourcery.com> 3898 3899 * name-lookup.h (struct cp_binding_level): Update documentation 3900 for class_shadowed. 3901 39022004-07-08 Giovanni Bajo <giovannibajo@gcc.gnu.org> 3903 3904 PR c++/16169 3905 * typeck.c (check_return_expr): Improve -Weffc++ warning: handle 3906 returning CALL_EXPR, and non-reference return type. 3907 39082004-07-08 Nathan Sidwell <nathan@codesourcery.com> 3909 3910 * name-lookup.c (push_binding): Use VEC_reserve. 3911 39122004-07-08 Richard Henderson <rth@redhat.com> 3913 3914 * cp-tree.h (expand_eh_spec_block): Remove. 3915 39162004-07-07 Mark Mitchell <mark@codesourcery.com> 3917 3918 * cp-tree.h (saved_scope): Remove x_previous_class_type and 3919 x_previous_class_values; add x_previous_class_level. 3920 (previous_class_type): Remove. 3921 (previous_class_values): Remove. 3922 (previous_class_level): New macro. 3923 * class.c (pushclass): Restore the identifier cache more 3924 expeditiously. 3925 (invalidate_class_lookup_cache): Use vector for class_shadowed and 3926 previous_class_values. 3927 * decl.c (poplevel): Likewise. 3928 * name-lookup.c (cxx_binding_init): New function. 3929 (cxx_binding_make): Use it. 3930 (push_binding): For a binding in a class level, use a vector of 3931 cp_class_binding nodes. 3932 (push_binding_level): New function. 3933 (begin_scope): Use it. 3934 (leave_scope): Do not put class binding levels on the free list. 3935 (print_binding_level): Adjust for the fact that class_shadowed is 3936 a vector. 3937 (poplevel_class): Likewise. 3938 (clear_identifier_class_values): Likewise. 3939 (push_class_level_binding): Likewise. 3940 (set_class_shadows): Remove. 3941 (store_binding): New function. 3942 (store_class_bindings): New function. 3943 (push_to_top_level): Use store_class_bindings as appropriate. 3944 (pop_from_top_level): Use previous_class_level, not 3945 previous_class_type. 3946 * name-lookup.h (cp_class_binding): New type. 3947 (cp_binding_level): Use a vector object for class_shadowed. 3948 (push_binding_level): Declare. 3949 (set_class_shadows): Remove. 3950 39512004-07-07 Andrew Pinski <apinski@apple.com> 3952 3953 * class.c (instantiate_type): BUFFER_REF is dead. 3954 * lex.c (init_operators): IN_EXPR is dead. 3955 39562004-07-07 Jason Merrill <jason@redhat.com> 3957 3958 PR c++/16334 3959 * call.c (build_new_op): Give overload warnings for built-in 3960 candidates. 3961 39622004-07-07 H.J. Lu <hongjiu.lu@intel.com> 3963 3964 PR c++/16276 3965 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo 3966 is not public. 3967 39682004-07-07 Nathan Sidwell <nathan@codesourcery.com> 3969 3970 * cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove. 3971 * class.c (build_primary_vtable, check_bases, 3972 determine_primary_base, finish_struct_bits, 3973 maybe_warn_about_overly_private_class, dfs_find_final_overrider_q, 3974 get_basefndecls, warn_hidden, walk_subobject_offsets, 3975 build_base_fields, create_vtable_ptr, propagate_binfo_offsets, 3976 layout_virtual_bases, end_of_class, warn_about_ambiguous_bases, 3977 finish_struct_1, get_vfield_name, contains_empty_class_p, 3978 dump_class_hierarchy_r, finish_vtbls, build_vtt_inits, 3979 dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits, 3980 add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust 3981 BINFO macros. 3982 * decl.c (xref_basetypes): Likewise. 3983 * dump.c (cp_dump_tree): Likewise. 3984 * error.c (dump_expr): Likewise. 3985 * init.c (sort_mem_initializers, expand_member_init, 3986 push_base_cleanups): Likewise. 3987 * method.c (do_build_copy_constructor, do_build_assign_reg, 3988 synthesize_exception_spec): Likewise. 3989 * name-lookup.c (arg_assoc_class): Likewise. 3990 * pt.c (instantiate_class_template, tsubst, 3991 get_template_base_recursive): Likewise. 3992 * ptree.c (cxx_print_type): Likewise. 3993 * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise. 3994 * search.c (lookup_base_r, dynamic_cast_base_recurse, 3995 dfs_access_in_type, access_in_type, lookup_field_queue_p, 3996 bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp, 3997 marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp, 3998 dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet, 3999 binfo_for_vtable, copied_binfo, original_binfo): Likewise 4000 * tree.c (copy_base_binfos, make_binfo): Likewise. 4001 * typeck.c (commmon_base_type): Likewise 4002 * typeck2.c (process_init_constructor): Likewise 4003 40042004-07-06 Joseph S. Myers <jsm@polyomino.org.uk> 4005 4006 * decl.c (check_tag_decl): Name redeclared type in diagnostic. 4007 40082004-07-06 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4009 4010 PR c++/3671 4011 * pt.c (convert_nontype_argument): Disallow conversions between 4012 different enumeration types. 4013 40142004-07-06 Nathan Sidwell <nathan@codesourcery.com> 4015 4016 * cp-tree.h (BINFO_MARKED): Remove. 4017 (BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED, 4018 BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P, 4019 BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n. 4020 (SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P. 4021 * class.c (build_base_path): Use BINFO_VIRTUAL_P. 4022 (mark_primary_bases, determine_primary_base, base_derived_from, 4023 dfs_find_final_overrider, dfs_find_final_overrider_q, 4024 dfs_find_inal_overrider_post, update_vtable_entry_for_fn, 4025 dfs_modify_vtables, walk_subobject_offsets, 4026 layout_nonempty_base_or_field, build_base_field, 4027 build_base_fields, propagate_binfo_offsets, layout_virtual_bases, 4028 end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable, 4029 finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits, 4030 build_ctor_vtbl_group, accumulate_vtble_inits, 4031 dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries, 4032 build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r, 4033 add_vcall_offset_vtbl_entries_1): Likewise. 4034 * decl.c (xref_basetypes): Incomming virtual base indicated by 4035 TREE_TYPE. Adjust. 4036 * dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P. 4037 * init.c (finish_init_stmts, sort_mem_initializers, 4038 emit_mem_initializers, build_vtble_address, expand_member_init, 4039 push_base_cleanups): Likewise. 4040 * method.c (do_build_copy_constructor): Likewise. 4041 * pt.c (instantiate_class_template, 4042 get_template_base_recursive): Likewise. 4043 * rtti.c (dfs_class_hint_mark, get_pseudo_ti_init, 4044 get_pseudo_ti_desc): Likewise. 4045 * search.c (lookup_base_r, dynamic_cast_base_recurse, 4046 binfo_from_vbase, binfo_via_virtual, copied_binfo, 4047 original_binfo): Likewise. 4048 * semantics.c (finish_base_specifier): Virtualness is indicated 4049 by TREE_TYPE. 4050 * tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P. 4051 40522004-07-06 Mark Mitchell <mark@codesourcery.com> 4053 4054 Revert: 4055 2004-06-24 Jason Merrill <jason@redhat.com> 4056 PR c++/16115 4057 * decl.c (grokparms): Give the PARM_DECL reference type if the 4058 parameter is passed by invisible reference. 4059 40602004-07-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 4061 4062 * cp-lang.c (cp_var_mod_type_p): Add extra arg. 4063 * decl.c (grokdeclarator): Extra arg to variably_modified_type_p. 4064 * pt.c (check_instantiated_args, unify): Likewise. 4065 40662004-07-05 Phil Edwards <phil@codesourcery.com> 4067 4068 * Make-lang.in (check-c++, lang_checks): Add some comments. 4069 40702004-07-05 Zack Weinberg <zack@codesourcery.com> 4071 4072 * cp-mudflap.c: Delete file. 4073 * Makefile.in: Remove all references to cp-mudflap.o. 4074 40752004-07-05 Zack Weinberg <zack@codesourcery.com> 4076 4077 * decl.c (cxx_init_decl_processing): Call 4078 build_common_tree_nodes before creating the global NAMESPACE_DECL. 4079 40802004-07-05 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4081 4082 PR c++/2518 4083 * call.c (build_operator_new_call): Look only at global scope. 4084 40852004-07-05 Nathan Sidwell <nathan@codesourcery.com> 4086 4087 * call.c (enforce_access): Expect TREE_BINFO. 4088 * class.c (binfo_ctor_vtable): Check TREE_BINFO. 4089 * cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove. 4090 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF): 4091 Adjust. 4092 (BINFO_LANG_ELTS): Remove. 4093 (BINFO_LANG_SLOTS): New. 4094 (TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1. 4095 (CLASSTYPE_TEMPLATE_INFO): Adjust. 4096 * pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case. 4097 * search.c (lookup_member): Check TREE_BINFO. 4098 * semantics.c (perform_or_defer_access_check): Likewise. 4099 (check_accessibility_of_qualified_id): Check 4100 deferred_access_no_check. 4101 * tree.c (make_binfo): Use make_tree_binfo. 4102 41032004-07-04 Mark Mitchell <mark@codesourcery.com> 4104 4105 * method.c (implicitly_declare_fn): Set linkage of generated 4106 functions. 4107 41082004-07-04 Richard Henderson <rth@redhat.com> 4109 4110 * typeck.c (cxx_mark_addressable): Don't put_var_into_stack. 4111 41122004-07-03 Scott Brumbaugh <scottb.lists@verizon.net> 4113 4114 PR c++/3761 4115 * name-lookup.c (push_class_level_binding): Don't pass a 4116 TREE_LIST of ambiguous names to check_template_shadow as it 4117 only handles declarations. Instead, pull the declaration 4118 out and pass that. 4119 41202004-07-03 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4121 4122 PR c++/14971 4123 * pt.c (check_explicit_specialization): Clarify error message. 4124 41252004-07-02 Richard Henderson <rth@redhat.com> 4126 4127 * tree.c (cp_unsave_r): Update remap_save_expr call. 4128 41292004-07-02 Mark Mitchell <mark@codesourcery.com> 4130 4131 PR c++/16240 4132 * mangle.c (write_template_arg): Correct mangling. 4133 4134 PR c++/16297 4135 * decl.c (grokdeclarator): Robustify. 4136 41372004-07-01 Richard Henderson <rth@redhat.com> 4138 4139 * class.c (fixed_type_or_null): Don't handle RTL_EXPR. 4140 * method.c (synthesize_method): Don't clear_last_expr. 4141 * name-lookup.c (maybe_push_cleanup_level): Likewise. 4142 41432004-07-01 Nick Clifton <nickc@redhat.com> 4144 4145 * decl2.c (import_export_class): Invoke the 4146 import_export_class field in the gcc_target structure if it is not 4147 empty. 4148 41492004-06-30 Richard Henderson (rth@redhat.com> 4150 4151 * decl.c (start_preparsed_function): Don't set immediate_size_expand. 4152 * method.c (use_thunk): Likewise. 4153 41542004-06-30 Joseph S. Myers <jsm@polyomino.org.uk> 4155 4156 * call.c (build_over_call), typeck.c (build_function_call): Call 4157 check_function_arguments instead of check_function_format. 4158 41592004-06-30 Joseph S. Myers <jsm@polyomino.org.uk> 4160 4161 * call.c (build_over_call), typeck.c (build_function_call): Update 4162 calls to check_function_format. 4163 41642004-06-30 Richard Henderson <rth@redhat.com> 4165 4166 * call.c (build_over_call): Use __builtin_memcpy for copying 4167 CLASS_AS_BASE rather than funny casting. 4168 41692004-06-30 Richard Henderson <rth@redhat.com> 4170 4171 * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and 4172 TYPE_SIZE_UNIT of full_type. 4173 41742004-06-30 Per Bothner <per@bothner.com> 4175 4176 Conditionally compile support for --enable-mapped_location. 4177 * decl.c (pop_label): Handle (imperfectly) USE_MAPPED_LOCATION case. 4178 * decl2.c: If USE_MAPPED_LOCATION, don't do some line number 4179 adjustments - which I don't understand. 4180 * error.c (dump_decl): Rename "<interrnal>" to "<built-in>". 4181 * error.c: Use LOCATION_FILE and EXPR_LOCATION macros. 4182 (print_instantiation_partial_context): Use expand_location. 4183 * decl.c (duplicate_decl): Use new DECL_IS_BUILTIN macro. 4184 * name-lookup.c: Likewise. 4185 * lex.c (cxx_init): Likewise. Also use BUILTINS_LOCATION. 4186 * name-lookup.c: Use input_line macro. 4187 * parser.c (cp_lexer_get_preprocessor_token): Use UNKNOWN_LOCATION. 4188 (cp_parser_statement): Rename locaal variable statement_locus to 4189 statement_location and use SET_EXPR_LOCATION macro. 4190 * pt.c: Handle USE_MAPPED_LOCATION case. Use new macros. 4191 * tree.c (cp_walk_subtrees): Likewise. 4192 41932004-06-29 Per Bothner <per@bothner.com> 4194 4195 * tree.c (build_min_nt, build_min, build_min_non_dep): 4196 Don't set TREE_COMPLEXITY from input_line. 4197 41982004-06-29 Paul Brook <paul@codesourcery.com> 4199 4200 * init.c: Include target.h. 4201 (get_cookie_size): Remove and replace with target hook. 4202 Update callers. 4203 (build_new_1): Store the element size in the cookie. 4204 42052004-06-29 Nathan Sidwell <nathan@codesourcery.com> 4206 4207 PR c++/16260 4208 * parser.c (cp_parser_template_declaration_after_export): Disable 4209 access checks here ... 4210 (cp_parser_class_specifier): ... not here. 4211 42122004-06-28 Nathan Sidwell <nathan@codesourcery.com> 4213 4214 * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK, 4215 VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK, 4216 BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate 4217 TREE_CHECK macro. 4218 42192004-06-28 Nathan Sidwell <nathan@codesourcery.com> 4220 4221 * cp-tree.h (struct deferred_access): Move to ... 4222 * semantics.c (struct deferred_access): ... here. Adjust. 4223 (deferred_access_stack): Make a VEC(deferred_access), 4224 (deferred_access_free_list): Remove. 4225 (deferred_access_no_check): New. 4226 (push_deferring_access_checks, resume_deferring_access_checks, 4227 stop_deferring_access_checks, pop_deferring_access_checks, 4228 get_deferred_access_checks, pop_to_parent_deferring_access_checks, 4229 perform_deferred_access_checks, perform_or_defer_access_check): Adjust. 4230 42312004-06-28 Nathan Sidwell <nathan@codesourcery.com> 4232 4233 PR c++/16174 4234 * call.c (build_temp): Declare. 4235 (check_constructor_callable): New. 4236 (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for 4237 CONSTRUCTOR_CALLABLE. 4238 (convert_like_real, initialize_reference): Use 4239 check_constructor_callable. 4240 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New. 4241 (LOOKUP_*): Renumber. 4242 42432004-06-28 Nathan Sidwell <nathan@codesourcery.com> 4244 4245 * friend.c (add_friend): Only perform access checks when context 4246 is a class. 4247 * lex.c (cxx_make_type): Only create a binfo for aggregate types. 4248 * parser.c (cp_parser_class_specifier): Disable access checks here 4249 when parsing the body of a templated class. 4250 * semantics.c (perform_or_defer_access_checks): Reorder to allow 4251 NULL binfos when not checking access. 4252 42532004-06-28 Nathan Sidwell <nathan@codesourcery.com> 4254 4255 Use vector API for vbase list. 4256 * cp-tree.h: Include vec.h 4257 (DEF_VEC_P (tree)): New type. 4258 (struct lang_type_class): Change vbase's member type. 4259 (binfo_for_vbase): Declare. 4260 * class.c (determine_primary_base, base_derived_from, 4261 update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class, 4262 warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits, 4263 build_vtbl_initializer): Adjust. 4264 * decl.c (xref_basetypes): Adjust, accumulate upper bound of 4265 vbases. 4266 * init.c (sort_mem_initializers, expand_member_init, 4267 push_base_cleanups): Adjust. 4268 * method.c (do_build_copy_constructor): Adjust. 4269 * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust. 4270 (binfo_for_vbase): New. 4271 * tree.c (copy_base_binfos): Adjust. 4272 42732004-06-28 Mark Mitchell <mark@codesourcery.com> 4274 4275 * parser.c (cp_parser_set_decl_spec_type): Fix thinko. 4276 42772004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net> 4278 4279 PR c++/14123 4280 * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put 4281 paranthesis in case of pointers to array members. 4282 * error.c (dump_type_prefix): Likewise. 4283 (dump_type_suffix): Maybe issue a whitespace when printing 4284 ARRAY_TYPE. 4285 42862004-06-27 Mark Mitchell <mark@codesourcery.com> 4287 4288 PR c++/16193 4289 * parser.c (cp_parser_set_decl_spec_type): Refine test for 4290 redefinition of built-in types. 4291 42922004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net> 4293 4294 * error.c (pp_template_argument_list_start): Remove. 4295 (pp_template_argument_list_end): Likewise. 4296 (pp_separate_with_comma): Use pp_cxx_separate_with. 4297 (reinit_global_formatting_buffer): Remove. 4298 (pp_non_consecutive_character): Likewise. 4299 (dump_scope): Use pp_cxx_colon_colon. 4300 (dump_template_parameter): Use pp_cxx_identifier, 4301 pp_cxx_tree_identifier and pp_cxx_whitespace. 4302 (dump_templat_bindings): Replace use of pp_string with sequence 4303 of pp_cxx_whitespace and pp_equal. 4304 (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier, 4305 pp_cxx_colon_colon, pp_cxx_whitespace throughout. Don't set 4306 padding here. 4307 (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier. 4308 (dump_type_prefix): Don't set padding. Use pp_cxx_whitespace, 4309 pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout. 4310 (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket, 4311 pp_cxx_right_bracket, pp_cxx_identifier throughout, 4312 (dump_decl): Likewise. 4313 (dump_template_decl): Likewise. 4314 (dump_function_decl): Likewise. Set padding as appropriate. 4315 (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and 4316 pp_cxx_right_paren. 4317 (dump_exception_spec): Likewise. 4318 (dump_function_name): Use pp_cxx_tree_identifier and 4319 pp_cxx_identifier. 4320 (dump_template_parms): Use pp_cxx_begin_template_argument_list and 4321 pp_cxx_end_template_argument_list. 4322 (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren, 4323 pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and 4324 pp_cxx_whitespace throughout. 4325 (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and 4326 pp_cxx_right_paren. 4327 (dump_unary_op): Likewise. 4328 (reinit_cxx_pp): New function. 4329 (type_as_string); Use it. 4330 (expr_as_string): Likewise. 4331 (decl_as_string); Likewise. 4332 (context_as_string): Likewise. 4333 (lang_decl_name): Likewise. 4334 (decl_to_string): Likewise. 4335 (expr_to_string): Likewise. 4336 (parm_to_string): Likewise. 4337 (type_to_string): Likewise. 4338 (args_to_string): Likewise. 4339 (cv_to_string): Likewise. 4340 43412004-06-26 Mark Mitchell <mark@codesourcery.com> 4342 4343 * cp-tree.h (cp_cv_quals): New type. 4344 (cp_declarator): Use it instead of "tree" as appropriate. 4345 (grok_method_quals): Adjust prototype. 4346 (grokclassfn): Likewise. 4347 (do_friend): Likewise. 4348 * decl.c (grokfndecl): Use cp_cv_quals, not tree. 4349 (grokdeclarator): Likewise. 4350 * decl2.c (grok_method_quals): Likewise. 4351 (grokclassfn): Likewise. 4352 * friend.c (do_friend): Likewise. 4353 * method.c (implicitly_declare_fn): Adjust call to grokclassfn. 4354 * parser.c (make_call_declarator): Use cp_cv_quals, not tree. 4355 (make_pointer_declarator): Likewise. 4356 (make_reference_declarator): Likewise. 4357 (make_ptrmem_declarator): Likewise. 4358 (cp_parser_ptr_operator): Likewise. 4359 (cp_parser_cv_qualifier_seq_opt): Likewise. 4360 (cp_parser_cv_qualifier_opt): Remove. 4361 (cp_parser_new_declarator_opt): Adjust call to 4362 cp_parser_ptr_operator. 4363 (cp_parser_conversion_declaration_opt): Likewise. 4364 (cp_parser_declarator): Use cp_cv_quals, not tree. 4365 (cp_parser_direct_declarator): Likewise. 4366 43672004-06-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 4368 4369 * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c: 4370 Rename DECL_STMT to DECL_EXPR. 4371 * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise. 4372 * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted. 4373 * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees. 4374 43752004-06-26 Jan Hubicka <jh@suse.cz> 4376 4377 PR C++/14865 4378 * decl2.c (maybe_emit_vtables): Always import_export_vtable for the 4379 reachability analysis. 4380 43812004-06-25 Mark Mitchell <mark@codesourcery.com> 4382 4383 * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from 4384 2004-06-23 change. 4385 43862004-06-25 Paul Brook <paul@codesourcery.com> 4387 4388 * decl2.c (get_guard): Call targetm.cxx.guard_type. 4389 (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit. 4390 43912004-06-24 Mark Mitchell <mark@codesourcery.com> 4392 4393 * decl.c (grokdeclarator): Restore error messages about __thread. 4394 * parser.c (cp_parser_decl_specifier_seq): Likewise. 4395 43962004-06-24 Jason Merrill <jason@redhat.com> 4397 4398 PR c++/16115 4399 * decl.c (grokparms): Give the PARM_DECL reference type if the 4400 parameter is passed by invisible reference. 4401 44022004-06-24 Andreas Schwab <schwab@suse.de> 4403 4404 * cp-tree.h (enum cp_storage_class): Remove trailing comma. 4405 44062004-06-23 Mark Mitchell <mark@codesourcery.com> 4407 4408 * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h. 4409 (cp/decl.o): Likewise. 4410 (cp/decl2.o): Likewise. 4411 (cp/pt.o): Likewise. 4412 (cp/semantics.o): Likewise. 4413 * config-lang.in (gtfiles): Do not reference cp/lex.h. 4414 * class.c: Do not include lex.h. 4415 (add_implicitly_declared_members): Do not use 4416 adding_implicit_members. 4417 (check_bases_and_members): Do not talk about grok_x_components. 4418 * cp/cp-tree.h (adding_implicit_members): Remove. 4419 (cp_storage_class): New type. 4420 (cp_decl_spec): Likewise. 4421 (cp_decl_specifier_seq): Likewise. 4422 (cp_parameter_declarator): Use it for the decl_specifiers field. 4423 (check_tag_decl): Adjust prototype. 4424 (shadow_tag): Likewise. 4425 (groktypename): Likewise. 4426 (start_decl): Likewise. 4427 (start_function): Likewise. 4428 (start_method): Likewise. 4429 (grok_x_components): Remove. 4430 (grokfield): Adjust prototype. 4431 (grokbitfield): Likewise. 4432 (finish_member_class_template): Remove. 4433 * decl.c: Do not include lex.h. 4434 (adding_implicit_members): Do not define. 4435 (check_tag_decl): Do not use trees to represent decl-specifiers. 4436 (shadow_tag): Likewise. 4437 (groktypename): Likewise. 4438 (start_decl): Likewise. 4439 (grokvardecl): Likewise. 4440 (grokdeclarator): Likewise. 4441 (grokparms): Likewise. 4442 (start_function): Likewise. 4443 (start_method): Likewise. 4444 * decl.h (grokdeclarator): Adjust prototype. 4445 * decl2.c: Do not include lex.h. 4446 (grok_x_components): Remove. 4447 (grokfield): Do not use trees to represent decl-specifiers. 4448 (grokbitfield): Likewise. 4449 * lex.c: Do not include lex.h. 4450 * lex.h: Remove. 4451 * parser.c: Include target.h. 4452 (clear_decl_specs): New function. 4453 (cp_parser_translation_unit): Do not use trees to represent 4454 decl-specifiers. 4455 (cp_parser_postfix_expression): Likewise. 4456 (cp_parser_new_type_id): Likewise. 4457 (cp_parser_condition): Likewise. 4458 (cp_parser_simple_declaration): Likewise. 4459 (cp_parser_decl_specifier_seq): Likewise. 4460 (cp_parser_function_specifier_opt): Likewise. 4461 (cp_parser_conversion_type_id): Likewise. 4462 (cp_parser_template_parameter): Likewise. 4463 (cp_parser_explicit_instantiation): Likewise. 4464 (cp_parser_type_specifier): Likewise. 4465 (cp_parser_simple_type_specifier): Likewise. 4466 (cp_parser_init_declarator): Likewise. 4467 (cp_parser_type_id): Likewise. 4468 (cp_parser_type_specifier_seq): Likewise. 4469 (cp_parser_parameter_declaration): Likewise. 4470 (cp_parser_member_declaration): Likewise. 4471 (cp_parser_exception_declaration): Likewise. 4472 (cp_parser_function_definition_from_specifiers_and_declarator): 4473 Likewise. 4474 (cp_parser_single_declaration): Likewise. 4475 (cp_parser_save_member_function_body): Likewise. 4476 (cp_parser_friend_p): Likewise. 4477 (cp_parser_set_storage_class): New function. 4478 (cp_parser_set_decl_spec_type): Likewise. 4479 * pt.c: Do not include lex.h. 4480 * semantics.c: Likewise. 4481 (finish_member_class_template): Remove. 4482 44832004-06-23 Roger Sayle <roger@eyesopen.com> 4484 4485 * call.c (build_cxx_call): Don't call expand_tree_builtin. No 4486 longer take both "args" and "convert_args" as arguments. 4487 (build_op_delete_call): Update call to build_cxx_call. 4488 (build_over_call): Likewise, update call to build_cxx_call. 4489 * cp-tree.h (build_cxx_call): Update funtion prototype. 4490 * typeck.c (build_function_call): Don't call expand_tree_builtin. 4491 * rtti.c (throw_bad_cast): Update call to build_cxx_call. 4492 (throw_bad_typeid): Likewise. 4493 (build_dynamic_cast_1): Likewise. 4494 44952004-06-22 Richard Henderson <rth@redhat.com> 4496 4497 * class.c (build_vfn_ref): Take a pointer not object. Build 4498 an OBJ_TYPE_REF. 4499 (cp_fold_obj_type_ref): New. 4500 * call.c (build_over_call): Update build_vfn_ref call. 4501 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New. 4502 * cp-tree.h (cp_fold_obj_type_ref): Declare. 4503 45042004-06-21 Jason Merrill <jason@redhat.com> 4505 4506 PR c++/16112 4507 * cp-gimplify.c (cp_gimplify_init_expr): Look through 4508 CLEANUP_POINT_EXPR. 4509 45102004-06-21 Mark Mitchell <mark@codesourcery.com> 4511 4512 * cp-tree.def (NEW_EXPR): Add a fourth slot. 4513 * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove. 4514 (TREE_PARMLIST): Likewise. 4515 (CALL_DECLARATOR_PARMS): Likewise. 4516 (CALL_DECLARATOR_QUALS): Likewise. 4517 (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise. 4518 (cp_declarator_kind): New type. 4519 (cp_parameter_declarator): Likewise. 4520 (cp_declarator): Likewise. 4521 (cp_error_declarator): Likewise. 4522 (no_parameters): Likewise. 4523 (groktypename): Change prototype. 4524 (start_decl): Likewise. 4525 (start_handler_parms): Likewise. 4526 (get_scope_of_declarator): Likewise. 4527 (start_function): Likewise. 4528 (start_preparsed_function): New function. 4529 (start_function): Change prototype. 4530 (start_method): Likewise. 4531 (grokfield): Likewise. 4532 (grokbitfield): Likewise. 4533 (build_new): Likewise. 4534 (make_pointer_declarator): Remove. 4535 (make_reference_declarator): Likewise. 4536 (make_call_declarator): Likewise. 4537 (set_quals_and_spec): Likewise. 4538 (process_template_parm): Change prototype. 4539 (begin_function_definition): Remove. 4540 (finish_parmlist): Remove. 4541 * decl.c (groktypename): Do not use trees to represent 4542 declarators. 4543 (start_decl): Likewise. 4544 (start_handler_parms): Remove. 4545 (get_scope_of_declarator): Reimplement. 4546 (grokdeclarator): Do not use trees to represent declarators. 4547 (grokparms): Likewise. 4548 (start_function): Likewise. 4549 (start_method): Likewise. 4550 (build_void_list_mode): Do not use TREE_PARMLIST. 4551 * decl.h (grokdeclarator): Change prototype. 4552 * decl2.c (grok_method_quals): Robustify. 4553 (grok_x_components): Do not use trees to represent declarators. 4554 (grokfield): Likewise. 4555 (grokbitfield): Likewise. 4556 (start_objects): Build FUNCTION_DECLs, not declarators. 4557 (start_static_storage_duration_function): Likewise. 4558 * init.c (build_new): Simplify. 4559 * lex.c (make_pointer_declarator): Remove. 4560 (make_reference_declarator): Likewise. 4561 (make_call_declarator): Likewise. 4562 (set_quals_and_spec): Likewise. 4563 * method.c (use_thunk): Use start_preparsed_function. 4564 (synthesize_method): Likewise. 4565 (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators. 4566 * optimize.c (maybe_clone_body): Use start_preparsed_function. 4567 * parser.c (cp_error_declarator): New variable. 4568 (declarator_obstack): Likewise. 4569 (alloc_declarator): New function. 4570 (make_declarator): Likewise. 4571 (make_id_declarator): Likewise. 4572 (make_pointer_declarator): Likewise. 4573 (make_reference_declarator): Likewise. 4574 (make_ptrmem_declarator): Likewise. 4575 (make_call_declarator): Likewise. 4576 (make_array_declarator): Likewise. 4577 (no_parameters): New variable. 4578 (make_parameter_declarator): Likewise. 4579 (cp_parser_check_for_definition_in_return_type): Do not use trees 4580 to represent declarators. 4581 (cp_parser_translation_unit): Likewise. 4582 (cp_parser_new_expression): Likewise. 4583 (cp_parser_new_type_id): Likewise. 4584 (cp_parser_new_declarator_opt): Likewise. 4585 (cp_parser_direct_new_declarator): Likewise. 4586 (cp_parser_condition): Likewise. 4587 (cp_parser_declaration_statement): Likewise. 4588 (cp_parser_declaration): Likewise. 4589 (cp_parser_conversion_type_id): Likewise. 4590 (cp_parser_conversion_declarator_opt): Likewise. 4591 (cp_parser_template_parameter_list): Likewise. 4592 (cp_parser_template_parameter): Likewise. 4593 (cp_parser_explicit_instantiation): Likewise. 4594 (cp_parser_init_declarator): Likewise. 4595 (cp_parser_declarator): Likewise. 4596 (cp_parser_direct_declarator): Likewise. 4597 (cp_parser_type_id): Likewise. 4598 (cp_parser_parameter_declaration_clause): Likewise. 4599 (cp_parser_parameter_declaration_list): Likewise. 4600 (cp_parser_parameter_declaration): Likewise. 4601 (cp_parser_member_declaration): Likewise. 4602 (cp_parser_exception_declaration): Likewise. 4603 (cp_parser_check_declarator_template_parameters): Likewise. 4604 (cp_parser_function_definition_from_specifiers_and_declarator): 4605 Likewise. 4606 (cp_parser_save_member_function_body): Likewise. 4607 * pt.c (process_template_parm): Add is_non_type parameter. 4608 (convert_template_argument): Adjust call to groktypename. 4609 (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST. 4610 (tsubst): Do not expect declarators. 4611 (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional 4612 argument. 4613 (instantiate_decl): Use start_preparsed_function. 4614 * semantics.c (begin_function_definition): Remove. 4615 (finish_parmlist): Remove. 4616 * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not 4617 declarators. 4618 46192004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 4620 4621 * call.c (build_vfield_ref): Add new operand for COMPONENT_REF. 4622 (build_new_method_call): Likewise. 4623 * decl.c (local_variable_p_walkfn): Don't walk into types. 4624 * decl2.c (grok_array_decl): Add new operands for ARRAY_REF. 4625 (build_anon_union_vars): Add new operand for COMPONENT_REF. 4626 * init.c (buld_new): Add new operand for ARRAY_REF. 4627 * method.c (do_build_copy_constructor): New op for COMPONENT_REF. 4628 (do_build_assign_ref): Likewise. 4629 * parser.c (cp_parser_direct_new_declarator): Add new operands 4630 for ARRAY_REF. 4631 (cp_parser_direct_declarator): Likewise. 4632 * pt.c (tsubst): Likewise. 4633 (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand 4634 for COMPONENT_REF. 4635 * semantics.c (finish_non_static_data_member): Add new operand 4636 for COMPONENT_REF. 4637 * typeck.c (build_class_member_access_expr): Likewise. 4638 (build_class_member_access_expr, finish_class_member_access_expr): 4639 Likewise. 4640 (build_ptrmemfunc_access_expr): Likewise. 4641 (build_array_ref): Add new operands for ARRAY_REF. 4642 * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too. 4643 * tree.c (count_trees_r, no_linkage_helper): Don't walk in types. 4644 46452004-06-21 Richard Henderson <rth@redhat.com> 4646 4647 * dump.c (cp_dump_tree): Don't use dump_next_stmt. 4648 * parser.c (cp_parser_jump_statement): Update commentary. 4649 * pt.c (tsubst_expr): Use RETURN_EXPR. 4650 * semantics.c (finish_return_stmt): Likewise. 4651 (finalize_nrv_r): Likewise. 4652 * typeck.c, typeck2.c: Update file start commentary. 4653 46542004-06-21 Richard Henderson <rth@redhat.com> 4655 4656 * semantics.c (finish_expr_stmt): Call verify_sequence_points. 4657 46582004-06-20 Richard Henderson <rth@redhat.com> 4659 4660 * cp-tree.h (add_decl_stmt): Declare. 4661 * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR. 4662 * semantics.c (maybe_cleanup_point_expr): New. 4663 (add_decl_stmt, finish_expr_stmt, finish_return_stmt, 4664 finish_for_expr, finish_switch_cond): Use it. 4665 (finalize_nrv_r): Don't build an EXPR_STMT. Don't frob TREE_CHAIN. 4666 46672004-06-20 Richard Henderson <rth@redhat.com> 4668 4669 * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def. 4670 * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c. 4671 (cp_gimplify_expr): Call it. 4672 (gimplify_cleanup_stmt): Move from c-gimplify.c. 4673 (cp_genericize): New. 4674 * decl.c (finish_function): Call it. 4675 * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT. 4676 (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h. 4677 (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise. 4678 (cp_genericize): Declare. 4679 * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT. 4680 * dump.c (cp_dump_tree): Likewise. 4681 * semantics.c (push_cleanup): Move from c-semantics.c. 4682 46832004-06-20 Zack Weinberg <zack@codesourcery.com> 4684 4685 * cp-lang.c (has_c_linkage): Implement. 4686 4687 * cp-tree.h (set_mangled_name_for_decl): Don't prototype. 4688 * decl.c (duplicate_decls): Use COPY_DECL_RTL. 4689 (builtin_function_1): Don't call make_decl_rtl. 4690 (build_cp_library_fn): Don't call set_mangled_name_for_decl. 4691 (grokvardecl): Don't call mangle_decl. 4692 * except.c (nothrow_libfn_p): Look at DECL_NAME, not 4693 DECL_ASSEMBLER_NAME. 4694 * method.c (set_mangled_name_for_decl): Delete. 4695 * name-lookup.c (pushdecl): When a local extern shadows a 4696 file-scope declaration of the same object, give both DECLs the 4697 same DECL_UID. 4698 * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE 4699 on DECL_ASSEMBLER_NAME. 4700 47012004-06-19 Richard Henderson <rth@redhat.com> 4702 4703 * cp-gimplify.c: Remove unnecessary prototypes. 4704 (cp_gimplify_stmt): Merge into ... 4705 (cp_gimplify_expr): ... here. Move to end of file. Handle 4706 stmts_are_full_exprs_p frobbing. 4707 * cp-tree.h (cp_gimplify_stmt): Remove. 4708 * pt.c (tsubst_expr): Merge prep_stmt and unify. 4709 * tree.c (init_tree): Don't set lang_gimplify_stmt. 4710 47112004-06-18 Richard Henderson <rth@redhat.com> 4712 4713 PR c++/16034 4714 * semantics.c (begin_cond): New. 4715 (finish_cond): Rewrite to handle template DECL_STMTs specially. 4716 Assume that non-template decls go land before the conditional. 4717 (simplify_loop_decl_cond): Likewise. 4718 (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt, 4719 finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond, 4720 begin_switch_stmt, finish_switch_cond): Update to match. 4721 47222004-06-17 Jason Merrill <jason@redhat.com> 4723 4724 PR c++/16015 4725 * semantics.c (simplify_aggr_init_expr): Don't return the slot. 4726 (finish_stmt_expr_expr): Update type after conversions. 4727 (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR. 4728 Handle void initializer. 4729 * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void. 4730 47312004-06-17 Geoffrey Keating <geoffk@apple.com> 4732 4733 * class.c (build_clone): Don't call defer_fn, let mark_used do it. 4734 * cp-tree.h (defer_fn): Delete. 4735 * decl2.c (defer_fn): Delete. 4736 (finish_file): Simplify deferred_fns loops; check that 4737 only used inline functions get into deferred_fns. 4738 (mark_used): Inline previous contents of defer_fn. 4739 47402004-06-16 Richard Henderson <rth@redhat.com> 4741 4742 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill. 4743 (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New. 4744 * cxx-pretty-print.c (pp_cxx_function_definition): Move handling 4745 of CTOR_INITIALIZER ... 4746 (pp_cxx_statement): ... here. 4747 * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK. 4748 (finish_function): Use alloc_stmt_list to zap entire function. 4749 * parser.c (cp_parser_compound_statement): Update commentary. 4750 * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT. 4751 * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise. 4752 (finish_stmt_expr): Don't look through COMPOUND_STMT. 4753 47542004-06-16 Geoffrey Keating <geoffk@apple.com> 4755 4756 * pt.c (mark_decl_instantiated): Don't call defer_fn. 4757 47582004-06-16 Richard Henderson <rth@redhat.com> 4759 4760 * parser.c (cp_parser_labeled_statement): Update commentary. 4761 * pt.c (tsubst_expr): Use CASE_LABEL_EXPR. 4762 * tree.c (mark_local_for_remap_r): Likewise. 4763 47642004-06-16 Richard Henderson <rth@redhat.com> 4765 4766 * parser.c (cp_parser_asm_definition): Update commentary. 4767 * pt.c (tsubst_expr): Use ASM_EXPR. 4768 * semantics.c (finish_asm_stmt): Likewise. 4769 47702004-06-16 Richard Henderson <rth@redhat.com> 4771 4772 * decl.c (finish_destructor_body): Use LABEL_EXPR. 4773 * parser.c (cp_parser_statement): Update commentary. 4774 * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR. 4775 * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise. 4776 * tree.c (mark_local_for_remap_r): Likewise. 4777 47782004-06-16 Richard Henderson <rth@redhat.com> 4779 4780 PR c++/16012 4781 * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init 4782 statement in FOR_INIT_STMT for templates. 4783 47842004-06-15 Richard Henderson <rth@redhat.com> 4785 4786 * call.c (initialize_reference): Don't build CLEANUP_STMT here. 4787 * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument. 4788 (genericize_try_block): Use gimplify_stmt. 4789 (genericize_catch_block, genericize_eh_spec_block): Likewise. 4790 (cp_gimplify_init_expr): Remove STMT_EXPR special case. 4791 (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call. 4792 * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove. 4793 (cp_tree_chain_matters_p): Remove. 4794 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New. 4795 (COMPOUND_STMT_BODY_BLOCK): New. 4796 (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New. 4797 (EXPR_STMT_STMT_EXPR_RESULT): New. 4798 (building_stmt_tree): Check cur_stmt_list. 4799 (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove. 4800 (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New. 4801 * decl.c (poplevel): Use pop_stmt_list for minding cleanups. 4802 (cp_finish_decl): Use push_cleanup. 4803 (start_function, finish_function): Use statement lists. 4804 (finish_stmt): Do nothing. 4805 * except.c (begin_eh_spec_block): Use statement lists. 4806 (check_handlers_1, check_handlers): Likewise. 4807 * init.c (construct_virtual_base): Don't add extra compound stmts. 4808 (build_vec_init): Likewise. 4809 * name-lookup.c (maybe_push_cleanup_level): Use statement lists. 4810 * name-lookup.h (struct cp_binding_level): Add statement_list. 4811 * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool. 4812 (cp_parser_labeled_statement, cp_parser_expression_statement, 4813 cp_parser_statement_seq_opt): Likewise. 4814 (cp_parser_compound_statement): Likewise. Take bool for try block. 4815 (cp_parser_selection_statement): Tidy if processing. 4816 (cp_parser_already_scoped_statement): Rewrite to do what it says. 4817 * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr. 4818 (tsubst_expr): Rewrite STMT_EXPR processing. Handle STATEMENT_LIST. 4819 Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT. 4820 * semantics.c (do_poplevel, do_pushlevel): Use statement lists. 4821 (finish_cond): New, rewritten from FINISH_COND. 4822 (simplify_loop_decl_cond): New. 4823 (finish_expr_stmt): Avoid nested EXPR_STMTs. 4824 (begin_if_stmt, finish_if_stmt_cond, finish_then_clause, 4825 begin_else_clause, finish_else_clause, finish_if_stmt, 4826 begin_while_stmt, finish_while_stmt_cond, finish_while_stmt, 4827 begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt, 4828 finish_for_cond, finish_for_stmt, begin_switch_stmt, 4829 finish_switch_cond, finish_switch_stmt, begin_try_block, 4830 finish_try_block, finish_cleanup_try_block, finish_function_try_block, 4831 finish_handler_sequence, finish_function_handler_sequence, 4832 begin_handler, finish_handler_parms, finish_handler, 4833 begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite 4834 using statement lists. 4835 (begin_compound_stmt): Replace has_no_scope argument with flags. 4836 Update all callers. Use statement lists. 4837 (finish_compound_stmt): Likewise. 4838 (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup. 4839 (current_scope_stmt_stack): Remove. 4840 (simplify_aggr_init_expr): Don't muck with TREE_CHAIN. 4841 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): 4842 Rewrite with statement lists. 4843 48442004-06-15 Alexandre Oliva <aoliva@redhat.com> 4845 4846 * parser.c: Change all assignments of c_lex_string_translate 4847 to true and false to 1 and 0. 4848 (cp_lexer_read_token): Convert type of the translated string. 4849 (cp_parser_skip_to_closing_parentheses): Preserve original 4850 value of c_lex_string_translate, and set it to -1 while 4851 running. 4852 (cp_parser_cache_group): Likewise. 4853 (cp_parser_cache_group_1): Renamed. 4854 (cp_parser_asm_operand_list): Remove redundant setting of 4855 c_lex_string_translate. 4856 (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]: 4857 Handle chained strings. 4858 48592004-06-12 Andrew Pinski <apinski@apple.com> 4860 4861 PR c++/14639 4862 Revert: 4863 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu> 4864 4865 * cp-tree.h: Fix typo. 4866 4867 * cp-tree.h: Include cgraph.h 4868 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of 4869 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl. 4870 48712004-06-12 Jason Merrill <jason@redhat.com> 4872 4873 PR tree-optimization/14107 4874 * decl.c (finish_function): Warn about no return in all functions. 4875 48762004-06-15 Paolo Bonzini <bonzini@gnu.org> 4877 4878 * cp-tree.h (struct language_function): Remove cannot_inline. 4879 * decl.c (save_function_data): cannot_inline is no more. 4880 (cxx_push_function_context): Likewise. 4881 * decl2.c (start_objects, start_static_storage_duration_function): 4882 Reset DECL_INLINE, set DECL_UNINLINABLE. 4883 48842004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4885 4886 PR c++/15967 4887 * search.c (lookup_field): Propagate the ambiguity list. 4888 (lookup_fnfields): Likewise. 4889 48902004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4891 4892 PR c++/15947 4893 * parser.c (cp_parser_template_name): Ctors/dtors never need a 4894 template keyword to disambiguate. 4895 48962004-06-14 Mark Mitchell <mark@codesourcery.com> 4897 4898 PR c++/15096 4899 * decl.c (grokdeclarator): Ignore pointer-to-members when 4900 computing template depth. 4901 4902 PR c++/14930 4903 * name-lookup.c (pushtag): Do not try to put class declarations in 4904 explicit specialization scopes. 4905 49062004-06-11 Andrew Pinski <pinskia@physics.uc.edu> 4907 4908 * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior. 4909 49102004-06-11 Mark Mitchell <mark@codesourcery.com> 4911 4912 PR c++/15862 4913 * name-lookup.c (unqualified_namespace_lookup): Do not ignore type 4914 bindings for undeclared built-ins. 4915 49162004-06-11 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4917 4918 * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them 4919 appear at the correct location. 4920 49212004-06-10 Jason Merrill <jason@redhat.com> 4922 4923 PR c++/15875 4924 Revert: 4925 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 4926 * init.c (build_offset_ref): Build SCOPE_REF with non-null 4927 TREE_TYPE for non-dependent names. 4928 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with 4929 unknown_type_node as its TREE_TYPE. 4930 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK. 4931 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression. 4932 (dump_expr) <SCOPE_REF case>: Likewise. 4933 49342004-06-10 Mark Mitchell <mark@codesourcery.com> 4935 4936 PR c++/15227 4937 * parser.c (cp_parser_direct_declarator): Robustify. 4938 4939 PR c++/15877 4940 * pt.c (tsubst_copy): Use decl_constant_value on enumeration 4941 constants in non-dependent contexts. 4942 4943 PR c++/14211 4944 PR c++/15076 4945 * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when 4946 necessary. 4947 49482004-06-10 Jakub Jelinek <jakub@redhat.com> 4949 4950 PR c++/14791 4951 * decl.c (duplicate_decls): Handle fileptr_type_node arguments 4952 specially. 4953 49542004-06-09 Mark Mitchell <mark@codesourcery.com> 4955 4956 Revert: 4957 PR c++/15815 4958 2004-06-07 Mark Mitchell <mark@codesourcery.com> 4959 * lex.c (handle_pragma_interface): Deprecate. 4960 (handle_pragma_implementation): Likewise. 4961 49622004-06-09 Andrew Pinski <pinskia@physics.uc.edu> 4963 4964 * g++spec.c (lang_specific_driver): Remove check for -lm 4965 and -lmath when check it see if it was the math library. 4966 49672004-06-08 Giovanni Bajo <giovannibajo@gcc.gnu.org> 4968 4969 PR c++/7841 4970 * parser.c (cp_parser_direct_declarator): Reject constructor named 4971 as qualified template-id. 4972 49732004-06-07 Mark Mitchell <mark@codesourcery.com> 4974 4975 PR c++/15815 4976 * lex.c (handle_pragma_interface): Deprecate. 4977 (handle_pragma_implementation): Likewise. 4978 49792004-06-07 Mark Mitchell <mark@codesourcery.com> 4980 4981 PR c++/15766 4982 * parser.c (cp_parser_iteration_statement): Fix typo in error 4983 message. 4984 4985 PR c++/14777 4986 * pt.c (tsubst_default_argument): Do not defer access checks 4987 while substituting into the default argument. 4988 4989 PR c++/15554 4990 * pt.c (tsubst_copy): Do not try to substitute for an enumeration 4991 constant in a non-dependent context. 4992 4993 PR c++/15057 4994 * except.c (build_throw): Ensure that temp_expr has been 4995 initialized. 4996 49972004-06-06 Roger Sayle <roger@eyesopen.com> 4998 4999 * cp/cp-tree.h (lvalue_or_else): Add function prototype. 5000 50012004-06-06 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5002 5003 PR c++/15503 5004 * parser.c (cp_parser_mem_initializer_id): Gracefully reject 5005 'typename', and accept 'template'. 5006 50072004-06-03 Andrew Pinski <pinskia@physics.uc.edu> 5008 Jan Hubicka <jh@suse.cz> 5009 5010 PR c++/14639 5011 * method.c (use_think): Do not mark thunk as referenced. 5012 50132004-06-03 Matt Austern <austern@apple.com> 5014 5015 PR c++/15428 5016 * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC 5017 is nonzero, and if we see a noninline definition of a key method, 5018 make the vtables nonweak. 5019 50202004-06-02 Matt Austern <austern@apple.com> 5021 5022 * cp-tree.h (instantiate_decl): new boolean parameter, 5023 undefined_ok. Current behavior is equivalent to its being 0. 5024 * decl2.c (mark_used): Add new argument when calling instantiate_decl 5025 * pt.c (mark_decl_instantiated): Unconditionally make 5026 instantiations explicit unconditionally 5027 (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION, 5028 since mark_decl_instantiated now does it. 5029 (instantiate_class_member): New. Instantiate a member of an 5030 explicitly instantiated class template. 5031 (do_type_instantiation): Explicitly instantiate members of an 5032 explicitly instantiated class template. 5033 (instantiate_decl): if undefined_ok is nonzero, and if we're 5034 trying to explicitly instantiated a template with no definition, 5035 change it to an implicit instantiation. 5036 (instantiate_pending_templates): Add new argument to instantiate_decl. 5037 * tree.c (cp_cannot_inline_tree_fn): Likewise. 5038 50392004-06-02 Andrew Pinski <pinskia@physics.uc.edu> 5040 5041 * cp-tree.h: Fix typo. 5042 5043 * cp-tree.h: Include cgraph.h 5044 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of 5045 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl. 5046 50472004-06-01 Jason Merrill <jason@redhat.com> 5048 5049 PR c++/15142 5050 * call.c (call_builtin_trap): Remove type parm. 5051 (convert_arg_to_ellipsis): Change a non-POD argument to integer type. 5052 (build_x_va_arg): Dereference a null pointer for a non-POD argument. 5053 50542004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 5055 5056 PR c++/13092 5057 * init.c (build_offset_ref): Build SCOPE_REF with non-null 5058 TREE_TYPE for non-dependent names. 5059 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with 5060 unknown_type_node as its TREE_TYPE. 5061 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK. 5062 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression. 5063 (dump_expr) <SCOPE_REF case>: Likewise. 5064 50652004-06-01 Richard Henderson <rth@redhat.com> 5066 Andrew Pinski <pinskia@physics.uc.edu> 5067 5068 * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof". 5069 * parser.c (struct cp_parser): Remove in_offsetof. 5070 (cp_parser_new): Don't set it. 5071 (cp_parser_unary_expression): Don't check it. 5072 (cp_parser_postfix_open_square_expression): Split out from ... 5073 (cp_parser_postfix_expression): ... here. 5074 (cp_parser_postfix_dot_deref_expression): Likewise. 5075 (cp_parser_builtin_offsetof): New. 5076 (cp_parser_primary_expression): Use it. 5077 50782004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5079 5080 PR c++/14932 5081 * parser.c (cp_parser_postfix_expression): Allow subscript 5082 operator in offsetof. 5083 50842004-05-31 Mark Mitchell <mark@codesourcery.com> 5085 5086 PR c++/15701 5087 * friend.c (add_friend): Do not try to perform access checks for 5088 functions from dependent classes. 5089 50902004-05-31 Gabriel Dos Reis <gdr@integrable-solutions.net> 5091 5092 * cxx-pretty-print.c (pp_cxx_colon_colon): Expor. 5093 (pp_cxx_begin_template_argument_list): Turn into a function. 5094 (pp_cxx_end_template_argument_list): Likewise. 5095 (pp_cxx_separate_with): Define. 5096 (pp_cxx_unqualified_id): Tidy. 5097 (pp_cxx_primary_expression): Likewise. 5098 (pp_cxx_postfix_expression): Likewise. 5099 (pp_cxx_expression): Likewise. 5100 (pp_cxx_simple_type_specifier): Likewise. 5101 (pp_cxx_type_specifier_seq): Likewise. 5102 (pp_cxx_parameter_declaration_clause): Likewise. 5103 (pp_cxx_exception_specification): Likewise. 5104 (pp_cxx_direct_declarator): Likewise. 5105 (pp_cxx_type_id): Likewise. 5106 * cxx-pretty-print.h (pp_cxx_whitespace): Export from 5107 cxx-pretty-print.c. 5108 (pp_cxx_left_paren): Likewise. 5109 (pp_cxx_right_paren): Likewise. 5110 (pp_cxx_left_brace): Likewise. 5111 (pp_cxx_right_brace): Likewise. 5112 (pp_cxx_left_bracket): Likewise. 5113 (pp_cxx_right_bracket): Likewise. 5114 (pp_cxx_dot): Likewise. 5115 (pp_cxx_identifier): Likewise. 5116 (pp_cxx_tree_identifier): Likewise. 5117 (pp_cxx_ampersand): New macro. 5118 (pp_cxx_star): Likewise. 5119 (pp_cxx_arrow): Likewise. 5120 (pp_cxx_semicolon): Likewise. 5121 (pp_cxx_complement): Likewise. 5122 (pp_cxx_begin_template_argument_list): Declaree. 5123 (pp_cxx_end_template_argument_list): Likewise. 5124 (pp_cxx_colon_colon): likewise. 5125 51262004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr> 5127 5128 * parser.c (cp_parser_simple_type_specifier): Explicitly test 5129 against NULL_TREE. 5130 51312004-05-31 Kazu Hirata <kazu@cs.umass.edu> 5132 5133 * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c, 5134 typeck.c: Fix comment formatting. 5135 51362004-05-30 Andrew Pinski <pinskia@physics.uc.edu> 5137 5138 * cp-lang.c (cp_expand_decl): Remove. 5139 (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl. 5140 51412004-05-30 Andreas Jaeger <aj@suse.de> 5142 5143 * lang-specs.h: Add missing initializers for .ii. 5144 51452004-05-28 Aldy Hernandez <aldyh@redhat.com> 5146 5147 * decl.c (cp_make_fname_decl): Free return value from 5148 fname_as_string. 5149 51502004-05-28 Mark Mitchell <mark@codesourcery.com> 5151 5152 PR c++/15083 5153 * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR, 5154 even in a templat.e 5155 * init.c (build_new): Likewise. 5156 5157 PR c++/15640 5158 * name-lookup.c (arg_assoc): Robustify. 5159 5160 PR c++/15471 5161 * typeck.c (unary_complex_lvalue): Use context_for_name_lookup 5162 when determining the scope to use for a pointer to member. 5163 (lookup_anon_field): Give it external linkage. 5164 * cp-tree.h (lookup_anon_field): Declare it. 5165 * expr.c (cplus_expand_constant): Use it. 5166 51672004-05-28 Mark Mitchell <mark@codesourcery.com> 5168 5169 PR c++/14668 5170 * parser.c (cp_parser_simple_type_specifier): Call 5171 maybe_note_name_used_in_class. 5172 51732004-05-28 Tom Marshall <tmarshall@real.com> 5174 5175 PR c++/15214 5176 * class.c (finish_struct_1): Warn only if the dtor is non-private or 5177 the class has friends. 5178 51792004-05-27 Adam Nemet <anemet@lnxw.com> 5180 5181 PR c++/12883 5182 * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and 5183 TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type. 5184 51852004-05-24 Geoffrey Keating <geoffk@apple.com> 5186 5187 * method.c (implicitly_declare_fn): Don't call defer_fn; abort 5188 if it might be needed. 5189 * pt.c (mark_decl_instantiated): Only call defer_fn if 5190 the function actually needs processing in finish_file. 5191 * decl2.c (finish_file): Add check that elements in 5192 deferred_fns_used are really needed there. Remove unnecessary 5193 test of DECL_SAVED_TREE. 5194 51952004-05-23 Paolo Bonzini <bonzini@gnu.org> 5196 5197 * Make-lang.in: No need to specify $(LIBCPP). 5198 51992004-05-23 Mark Mitchell <mark@codesourcery.com> 5200 5201 PR c++/15044 5202 * parser.c (cp_parser_class_head): Robustify. 5203 5204 PR c++/15317 5205 * parser.c (cp_parser_decl_specifier_seq): Correct error in 5206 comment. 5207 (cp_parser_constructor_declarator_p): Treat attributes 5208 as decl-specifiers. 5209 5210 PR c++/15329 5211 * typeck.c (build_unary_op): Do not attempt to resolve casts to 5212 base classes in templates. 5213 52142004-05-23 Mark Mitchell <mark@codesourcery.com> 5215 5216 PR c++/15165 5217 * pt.c (instantiate_template): Robustify. 5218 52192004-05-23 Mark Mitchell <mark@codesourcery.com> 5220 5221 PR c++/15025 5222 * decl.c (xref_tag): Issue errors about redeclaring template 5223 classes as non-template classes. 5224 52252004-05-23 Mark Mitchell <mark@codesourcery.com> 5226 5227 PR c++/14821 5228 * name-lookup.c (supplement_binding): Allow redefinitions of 5229 namespace aliases. 5230 5231 PR c++/14883 5232 * parser.c (cp_parser_template_argument): Robustify. 5233 52342004-05-23 Gabriel Dos Reis <gdr@integrable-solutions.net> 5235 5236 * class.c (alter_access): Use %E format specifier to print an 5237 identifier node. Avoid looking at the IDENTIFIER_POINTER. 5238 (push_lang_context): Likewise. 5239 * decl.c (lookup_label): Likewise. 5240 (grokdeclarator): Likewise. 5241 * parser.c (cp_parser_check_for_invalid_template_id): Likewise. 5242 * pt.c (do_type_instantiation): Likewise. 5243 * tree.c (handle_java_interface_attribute): Likewise. 5244 (handle_com_interface_attribute): Likewise. 5245 (handle_init_priority_attribute): Likewise. 5246 52472004-05-22 Mark Mitchell <mark@codesourcery.com> 5248 5249 PR c++/15285 5250 PR c++/15299 5251 * pt.c (build_non_dependent_expr): Expand the set of tree nodes 5252 recognized as overloaded functions. 5253 52542004-05-22 Mark Mitchell <mark@codesourcery.com> 5255 5256 PR c++/15507 5257 * class.c (layout_nonempty_base_or_field): Do not try to avoid 5258 layout conflicts for unions. 5259 5260 PR c++/15542 5261 * typeck.c (build_x_unary_op): Instantiate template class 5262 specializations before looking for "operator &". 5263 5264 PR c++/15427 5265 * typeck.c (complete_type): Layout non-dependent array types, even 5266 in templates. 5267 5268 PR c++/15287 5269 * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a 5270 template. 5271 52722004-05-22 Roger Sayle <roger@eyesopen.com> 5273 5274 * name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by 5275 returning when TREE_TYPE is error_mark_node. 5276 * typeck.c (require_complete_type): Return error_mark_node if 5277 value's type is an error_mark_node. 5278 52792004-05-20 Andrew Pinski <pinskia@physics.uc.edu> 5280 5281 * optimize.c (calls_setjmp_r): Remove. 5282 (calls_setjmp_p): Remove. 5283 * cp-tree.c (calls_setjmp_p): Remove. 5284 * decl.c (finish_function): Do not call calls_setjmp_p. 5285 52862004-05-18 Zack Weinberg <zack@codesourcery.com> 5287 5288 * decl.c (cp_finish_decl): Use mark_decl_referenced. 5289 * decl2.c (maybe_make_one_only): Likewise. 5290 * method.c (use_thunk): Likewise. 5291 52922004-05-18 Jason Merrill <jason@redhat.com> 5293 5294 * class.c (build_base_path): Tidy a bit. 5295 52962004-05-14 Geoffrey Keating <geoffk@apple.com> 5297 5298 * name-lookup.c (struct scope_binding): New. 5299 (EMPTY_SCOPE_BINDING): New. 5300 (lookup_using_namespace): Take a scope_binding instead of a 5301 cxx_binding. 5302 (qualified_lookup_using_namespace): Likewise. 5303 (cxx_binding_clear): Delete. 5304 (do_nonmember_using_decl): Use a scope_binding instead of a 5305 cxx_binding. 5306 (lookup_tag): Don't call select_decl. 5307 (ambiguous_decl): Don't return anything (and change callers to match). 5308 Take a scope_binding as the second parameter. 5309 (lookup_namespace_name): Use a scope_binding instead of a 5310 cxx_binding. 5311 (unqualified_namespace_lookup): Likewise. 5312 (lookup_qualified_name): Likewise. 5313 (select_decl): Take a scope_binding instead of a cxx_binding. 5314 Use macros rather than hand-coding tests for type-ness. 5315 53162004-05-13 Diego Novillo <dnovillo@redhat.com> 5317 5318 * cp-gimplify.c: Rename from cp-simplify.c. 5319 * Make-lang.in, optimize.c: Update. 5320 53212004-05-13 Diego Novillo <dnovillo@redhat.com> 5322 5323 Merge from tree-ssa-20020619-branch. See 5324 ChangeLog.tree-ssa for details. 5325 5326 * Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def, 5327 cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c, 5328 expr.c, init.c, name-lookup.h, optimize.c, parser.c, 5329 pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: 5330 Merged. 5331 * cp-mudflap.c: New file. 5332 * cp-simplify.c:: New file. 5333 53342004-05-03 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5335 5336 PR c++/14389 5337 * decl2.c (check_classfn): For member templates, compare also the 5338 template parameters to match the declaration. 5339 * cp-tree.h: Adjust declaration of check_classfn. 5340 * decl.c (start_decl, grokfndecl): Adjust callers of check_classfn. 5341 * friend.c (do_friend): Likewise. 5342 * pt.c (tsubst_friend_function): Likewise. 5343 53442004-05-01 Zack Weinberg <zack@codesourcery.com> 5345 5346 * decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE. 5347 Instead, dig into the representation type to find the array bound. 5348 53492004-04-30 Jason Merrill <jason@redhat.com> 5350 5351 Refer to base members using COMPONENT_REFs where possible. 5352 * class.c (build_simple_base_path): New fn. 5353 (build_base_path): Use it for non-virtual base references. 5354 (layout_class_type): Change base fields to their real type 5355 after layout is done. 5356 * cp-tree.h (IS_FAKE_BASE_TYPE): New macro. 5357 * cp-lang.c (cxx_get_alias_set): Use it. 5358 53592004-04-30 Kazu Hirata <kazu@cs.umass.edu> 5360 5361 * class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix 5362 comment typos. 5363 53642004-04-23 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5365 5366 PR c++/15064 5367 * parser.c (cp_parser_postfix_expression): typeid operator cannot be 5368 used in integral constant expressions. 5369 53702004-04-22 Mark Mitchell <mark@codesourcery.com> 5371 5372 * init.c (build_aggr_init): Fix accidental use of C99 construct in 5373 previous change. 5374 5375 * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on 5376 braced initializer. 5377 * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro. 5378 * decl.c (reshape_init): Use it. 5379 * init.c (perform_member_init): Remove redundant condition. 5380 (build_aggr_init): Adjust to handle brace-enclosed initializers 5381 correctly. 5382 (expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P. 5383 5384 * parser.c (cp_parser_initializer_clause): Do not set 5385 TREE_HAS_CONSTRUCTOR on the initializer. 5386 * rtti.c (tinfo_base_init): Likewise. 5387 (generic_initializer): Likewise. 5388 (ptr_initializer): Likewise. 5389 (ptm_initializer): Likewise. 5390 (class_initializer): Likewise. 5391 (get_pseudo_ti_init): Likewise. 5392 * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P. 5393 53942004-04-22 Alan Modra <amodra@bigpond.net.au> 5395 5396 * name-lookup.c (anonymous_namespace_name): Make static. 5397 53982004-04-19 Roger Sayle <roger@eyesopen.com> 5399 5400 PR middle-end/14531 5401 * class.c (build_base_path): Call fold whilst building the NULL 5402 pointer check expression trees. 5403 54042004-04-15 Bryce McKinlay <mckinlay@redhat.com> 5405 5406 * init.c (build_new_1): Don't use type size argument for Java 5407 _Jv_AllocObject call. 5408 54092004-04-09 Danny Smith <dannysmith@users.sourceforge.net> 5410 5411 * method.c (make_alias_for_thunk): Remove preprocessor guard on 5412 declaration and definition. 5413 54142004-04-08 Danny Smith <dannysmith@users.sourceforge.net> 5415 5416 PR c++/14808 5417 * method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather 5418 than ASM_OUTPUT_DEF. 5419 54202004-04-08 Jakub Jelinek <jakub@redhat.com> 5421 5422 * decl2.c (mark_used): Don't segfault if cfun != NULL but 5423 current_function_decl == NULL. 5424 54252004-04-05 Nathan Sidwell <nathan@codesourcery.com> 5426 5427 PR c++/3518 5428 * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer 5429 level. 5430 54312004-04-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 5432 5433 * init.c (decl_constant_value): Don't look at DECL_INITIAL 5434 of PARM_DECL. 5435 * tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT 5436 or TREE_SIDE_EFFECTS of a type. 5437 54382004-04-02 Nathan Sidwell <nathan@codesourcery.com> 5439 5440 PR c++/14007 5441 * pt.c (check_cv_quals_for_unify): Correct logic for disallowed 5442 cv-qualifier unification. 5443 * tree.c (cp_build_qualified_type_real): Renable DR295 logic. 5444 54452004-04-02 Jan Hubicka <jh@suse.cz> 5446 5447 * cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define. 5448 * cp-tree.h (cp_update_decl_after_saving): Declare. 5449 * tree.c (cp_update_decl_after_saving): Define. 5450 54512004-04-01 Mark Mitchell <mark@codesourcery.com> 5452 5453 PR c++/14803 5454 * typeck.c (get_delta_difference): Call fold before returning the 5455 value. 5456 54572004-04-01 Richard Henderson <rth@redhat.com> 5458 5459 PR c++/14804 5460 * decl.c (cp_finish_decl): Preserve TREE_READONLY more often. 5461 * typeck2.c (split_nonconstant_init): Clear TREE_READONLY. 5462 54632004-04-01 Mark Mitchell <mark@codesourcery.com> 5464 5465 PR c++/14810 5466 * name-lookup.c (maybe_push_cleanup_level): Robustify. 5467 54682004-04-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 5469 5470 * class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly. 5471 54722004-03-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 5473 5474 * call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED. 5475 * class.c (check_bitfield_decl): Likewise. 5476 * cvt.c (type_promotes_to): Likewise. 5477 * decl.c (finish_enum): Likewise. 5478 * mangle.c (write_builtin_type): Likewise. 5479 * semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise. 5480 * typeck.c (type_after_usual_arithmetic_conversions): Likewise. 5481 (build_binary_op): Likewise. 5482 54832004-03-31 Jan Hubicka <jh@suse.cz> 5484 5485 * tree.h (optimize_function): Kill prototype. 5486 * optimize.c (dump_function, optimize_function, dump_finction): Kill. 5487 * semantics.c (expand_body): Kill. 5488 54892004-03-30 Mark Mitchell <mark@codesourcery.com> 5490 5491 PR c++/14724 5492 * decl.c (start_decl_1): Do not decide whether or not to create a 5493 new cleanup level until after the type has been completed. 5494 5495 PR c++/14763 5496 * pt.c (tsubst_default_argument): Clear current_function_decl. 5497 54982004-03-30 Zack Weinberg <zack@codesourcery.com> 5499 5500 * name-lookup.c, parser.c: Use new shorter form of GTY markers. 5501 55022004-03-29 Zack Weinberg <zack@codesourcery.com> 5503 5504 * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC 5505 is null, just print the literal name and return. 5506 55072004-03-25 Kazu Hirata <kazu@cs.umass.edu> 5508 5509 * cxx-pretty-print.c: Fix comment typos. 5510 55112004-03-24 Kazu Hirata <kazu@cs.umass.edu> 5512 5513 * cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c: 5514 Update copyright. 5515 55162004-03-23 Ziemowit Laski <zlaski@apple.com> 5517 5518 * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H). 5519 * mangle.c (write_type): Add call to 'mangle_fundamental_type' 5520 target hook. 5521 55222004-03-23 Zack Weinberg <zack@codesourcery.com> 5523 5524 PR 12267, 12391, 12560, 13129, 14114, 14133 5525 * cp-lang.c (c_reset_state): Delete. 5526 (push_file_scope, pop_file_scope): New stubs. 5527 * parser.c (c_parse_file): Call sorry() here if called more than once. 5528 55292004-03-23 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 5530 5531 * typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW 5532 for INTEGER_CST. 5533 55342004-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net> 5535 5536 * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare. 5537 55382004-03-21 Gabriel Dos Reis <gdr@integrable-solutions.net> 5539 5540 * error.c (enum pad): Remove. 5541 (dump_qualifiers): Likewise. 5542 (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq. 5543 (dump_aggr_type): Likewise. 5544 (dump_type_suffix): Likewise. 5545 (dump_simple_decl): Likewise. 5546 (dump_function_decl): Likewise. 5547 (cv_to_string): Likewise. 5548 (dump_type_prefix): Likewise. Adjust return void. 5549 * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to 5550 cxx_pretty_print.h. 5551 (pp_cxx_template_keyword_if_needed): Document. 5552 (pp_cxx_qualified_id): Document case FUNCTION_DECL. Tidy. 5553 (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and 5554 MUST_NOT_THROW_EXPR. 5555 55562004-03-21 Mark Mitchell <mark@codesourcery.com> 5557 5558 PR c++/14616 5559 * decl.c (cp_finish_decl): Compute the size of arrays declared in 5560 templates, if their type is non-dependent. 5561 55622004-03-19 Mark Mitchell <mark@codesourcery.com> 5563 5564 * call.c (build_op_delete_call): Do not forget the placement 5565 arguments when iterating through mutiple delete operators. 5566 5567 * cp-tree.h (svaed_scope): Remove last_parms. 5568 (NEW_DELETE_OPNAME_P): New macro. 5569 (last_function_parms): Remove. 5570 (do_friend): Adjust prototype. 5571 * decl.c (grokparms): Return the PARM_DECLs directly, rather than 5572 using last_function_parms. 5573 (grokfndecl): Take the PARM_DECLs as an argument, rather than 5574 using last_function_parms. 5575 (grokdeclarator): Adjust accordingly. Do not form METHOD_TYPEs 5576 for class-specific operator new and operator delete. 5577 (grok_op_properties): Do not look for allocation functions with 5578 METHOD_TYPEs. 5579 (start_function): Use DECL_ARGUMENTS instead of 5580 last_function_parms. 5581 * decl.h (last_function_parms): Do not declare. 5582 * decl2.c (grokclassfn): Do not use last_function_parms. 5583 * friend.c (do_friend): Remove parmdecls parameter. 5584 * name-lookup.c (push_to_top_level): Do not save last_function_parms. 5585 (pop_from_top_level): Do not restore it. 5586 * pt.c (check_explicit_specialization): Do not adjust 5587 last_function_parms. 5588 5589 * name-lookup.c (do_local_using_decl): Create a local binding for 5590 types brought in via using declarations. 5591 5592 * name-lookup.c (lookup_arg_dependent): Handle block-scope 5593 function declarations correctly. 5594 5595 * semantics.c (finish_id_expression): Correct handling of 5596 conversion operators to dependent types. 5597 5598 * typeck.c (lookup_destructor): Allow the use of destructors from 5599 base classes. 5600 56012004-03-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 5602 5603 * cxx-pretty-print.c (pp_cxx_unqualified_id): Use 5604 TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS. 5605 * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean 5606 the field is named TEMPLATE_TYPE_PARM_INDEX. 5607 56082004-03-19 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5609 5610 PR c++/14545 5611 * parser.c (cp_parser_functional_cast): A cast to anything 5612 but integral or enumaration type is not an integral constant 5613 expression. 5614 * pt.c (value_dependent_expression_p): Handle cast expressions 5615 without operands (such as "int()"). 5616 56172004-03-18 Mark Mitchell <mark@codesourcery.com> 5618 5619 * semantics.c (finish_pseudo_destructor_expr): Allow differing 5620 cv-qualification between the type named by the 5621 pseudo-destructor-name and the object-type. 5622 5623 * search.c (accessible_base_p): Handle non-proper bases. 5624 5625 * name-lookup.c (do_nonmember_using_decl): If a using declaration 5626 refers to a single overloaded function, set the type of the 5627 function. 5628 * tree.c (lvalue_type): Simplify. 5629 * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an 5630 unknown type. 5631 (build_unary_op): Handle OVERLOADs with known types. 5632 5633 * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for 5634 function templates. 5635 5636 * parser.c (cp_parser_postfix_expression): Handle the use of 5637 "typename" in non-dependent contexts. Convert appropriately when 5638 when using a qualified name after "->" or ".". 5639 5640 * call.c (conditional_conversion): Honor the requirement that some 5641 conversions refer to the original object. 5642 56432004-03-18 Mark Mitchell <mark@codesourcery.com> 5644 5645 * call.c (build_conditional_expr): Do not call force_rvalue for 5646 operands of void_type when the conditional expression itself has 5647 void type. 5648 * name-lookup.c (pushdecl): Don't consider a declaration of a 5649 function named "main" to be an overload of a type named "main". 5650 * parser.c (cp_parser_template_name): Perform name lookup when the 5651 template name is proceeded by "template" if the qualifying scope 5652 is non-dependent. 5653 * typeck.c (composite_pointer_type_r): Correctly handle 5654 pointer-to-member types. 5655 (build_const_cast): Likewise. 5656 56572004-03-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 5658 5659 * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments. 5660 * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check. 5661 (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise. 5662 (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise. 5663 (TYPENAME_TYPE_FULLNAME): Add check and use type.values. 5664 (TYPEOF_TYPE_EXPR): New macro. 5665 * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS. 5666 * error.c (dump_type): Use TYPEOF_TYPE_EXPR. 5667 * pt.c (tsubst): Likewise. 5668 * semantics.c (finish_typeof): Likewise. 5669 * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE, 5670 and TEMPLATE_TYPE_PARM. 5671 * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN. 5672 (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES. 5673 56742004-03-16 Mark Mitchell <mark@codesourcery.com> 5675 5676 PR c++/14586 5677 * cp-tree.h (build_new_op): Change prototype. 5678 (build_x_binary_op): Likewise. 5679 * call.c (build_new_op): Add overloaded_p parameter. 5680 * decl2.c (grok_array_decl): Adjust call to build_new_op. 5681 * parser.c (cp_parser_binary_expression): Note that uses of 5682 overloaded operators prevents an expression from being considered 5683 an integral constant. 5684 * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or 5685 build_x_binary_op. 5686 * semantics.c (finish_call_expr): Likewise. 5687 * typeck.c (rationalize_conditional_expr): Likewise. 5688 (build_x_indirect_ref): Likewise. 5689 (build_x_binary_op): Likewise. 5690 (build_x_unary_op): Likewise. 5691 (build_x_compound_expr): Likewise. 5692 (build_modify_expr): Likewise. 5693 * typeck2.c (build_x_arrow): Likewise. 5694 56952004-03-15 Kazu Hirata <kazu@cs.umass.edu> 5696 5697 * cp-lang.c, ptree.c: Update copyright. 5698 56992004-03-13 Mark Mitchell <mark@codesourcery.com> 5700 5701 PR c++/14550 5702 * parser.c (cp_parser_non_integral_constant_expression): Encode 5703 more of the idiom that surrounded calls to this function within 5704 the function itself 5705 (cp_parser_primary_expression): Adjust accordingly. 5706 (cp_parser_postfix_expression): Likewise. 5707 (cp_parser_unary_expression): Likewise. 5708 (cp_parser_cast_expression): Likewise. 5709 (cp_parser_assignment_expression): Likewise. 5710 (cp_parser_expression): Likewise. 5711 (cp_parser_new_expression): Note that new-expressions are not 5712 allowed in integral constant expressions. 5713 (cp_parser_delete_expression): Likewise. 5714 57152004-03-12 Matt Austern <austern@apple.com> 5716 5717 * decl2.c (maybe_make_one_only): Look at 5718 TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether 5719 to make an explicit instantiation weak. 5720 * method.c (use_thunk): Make sure we call comdat_linkage 5721 when appropriate. 5722 * pt.c (do_type_instantiation): On systems where weak symbols 5723 don't go in a static archive's TOC, explicit instantiation of a 5724 class must imply *explicit* instantiation of its memeber. 5725 57262004-03-11 Kazu Hirata <kazu@cs.umass.edu> 5727 5728 * call.c, cp-tree.h, pt.c: Fix comment typos. 5729 57302004-03-10 Mark Mitchell <mark@codesourcery.com> 5731 5732 PR c++/14510 5733 * decl.c (xref_tag): Disregard non-type declarations when 5734 looking up a tagged type. 5735 57362004-03-09 Nathan Sidwell <nathan@codesourcery.com> 5737 5738 PR c++/14397 5739 * call.c (convert_like_real): Build a const qualified temporary, 5740 when testing ctor access. 5741 57422004-03-09 Mark Mitchell <mark@codesourcery.com> 5743 5744 * call.c (initialize_reference): Fix typo. 5745 57462004-03-09 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5747 5748 PR c++/14409 5749 * pt.c (determine_specialization): For member templates, match also 5750 constness. 5751 5752 PR c++/14448 5753 * parser.c (cp_parser_initializer_clause): Fold initializer if it is 5754 non-dependent. 5755 * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs. 5756 57572004-03-09 Mark Mitchell <mark@codesourcery.com> 5758 5759 PR c++/14230 5760 * call.c (initialize_reference): Handle initializers that are 5761 class-member access expressions applies to rvalues. 5762 57632004-03-09 Mark Mitchell <mark@codesourcery.com> 5764 5765 PR c++/14432 5766 * name-lookup.c (supplement_binding): Ignore functions that are 5767 marked DECL_ANTICIPATED. 5768 57692004-03-08 Mark Mitchell <mark@codesourcery.com> 5770 5771 PR c++/14401 5772 * class.c (check_field_decls): Complain about non-static data 5773 members of reference type in unions. Propagate 5774 CLASSTYPE_REF_FIELDS_NEED_INIT and 5775 CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static 5776 data members. 5777 * init.c (perform_member_init): Complain about mbmers with const 5778 type that are not explicitly initialized. 5779 57802004-03-08 Mark Mitchell <mark@codesourcery.com> 5781 5782 * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS. 5783 * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro. 5784 (lang_identifier): Remove implicit_decl and error_locus. 5785 (IDENTIFIER_IMPLICIT_DECL): Remove. 5786 (SET_IDENTIFIER_IMPLICTI_DECL): Likewise. 5787 (IDENTIFIER_ERROR_LOCUS): Likewise. 5788 (SET_IDENTIFIER_ERROR_LOCUS): Likewise. 5789 (TYPE_ASSEMBLER_NAME_STRING): Likewise. 5790 (TYPE_ASSEMBLER_NAME_LENGTH): Likewise. 5791 (implicitly_declare): Remove. 5792 * decl.c (warn_extern_redeclared_static): Remove check of 5793 IDENTIFIER_IMPLICIT_DECL. 5794 (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS. 5795 (implicitly_declare): Remove. 5796 (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS. 5797 (start_function): Don't check IDENTIFIER_IMPLICIT_DECL. 5798 (start_method): Don't check IDENTIFIER_ERROR_LOCUS. 5799 * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL 5800 in the innermost scope, rather than at namespace scope. 5801 * name-lookup.c (push_local_binding): Give it external linkage. 5802 (pushdecl): Remove dead code. 5803 * name-lookup.h (push_local_binding): Declare it. 5804 * ptree.c (cxx_print_identifier): Don't print 5805 IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS. 5806 * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P, 5807 not IDENTIFIER_ERROR_LOCUS. 5808 * typeck.c (build_function_call): Remove dead code. 5809 58102004-03-08 Jason Merrill <jason@redhat.com> 5811 5812 PR c++/13170 5813 * decl.c (xref_tag): Remove attribute handling. 5814 * cp-tree.h: Adjust prototype. 5815 * decl.c, parser.c, rtti.c: Adjust callers. 5816 * parser.c (cp_parser_class_head): Pass back attributes in the 5817 class head. 5818 (cp_parser_class_specifier): Adjust. 5819 58202004-03-08 Matt Austern <austern@apple.com> 5821 5822 PR debug/14079 5823 * name-lookup.c (add_decl_to_level): Add extern variables, as well 5824 as static, to static_decls array. 5825 58262004-03-05 Jason Merrill <jason@redhat.com> 5827 5828 * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/. 5829 58302004-03-04 Geoffrey Keating <geoffk@apple.com> 5831 5832 * decl.c (grokfndecl): Update old incorrect comment. 5833 (grokvardecl): Diagnose C++ variables of type with no linkage. 5834 58352004-03-01 Mark Mitchell <mark@codesourcery.com> 5836 5837 PR c++/14369 5838 * pt.c (build_non_dependent_expr): Do not create a 5839 NON_DEPENDENT_EXPR for a THROW_EXPR. 5840 58412004-03-01 Gabriel Dos Reis <gdr@integrable-solutions.net> 5842 5843 PR c++/14369 5844 * error.c (dump_expr): Handle THROW_EXPR. 5845 58462004-03-01 Mark Mitchell <mark@codesourcery.com> 5847 5848 PR c++/14360 5849 * parser.c (cp_parser_postfix_expression): Do not perform Koenig 5850 lookup if ordinary name-lookup finds a non-function. 5851 * pt.c (tsubst_copy_and_build): Likewise. 5852 5853 PR c++/14361 5854 * parser.c (cp_parser_late_parsing_default_args): Check that there 5855 are no extra tokens after the end of the default-argument 5856 expression. 5857 58582004-03-01 Mark Mitchell <mark@codesourcery.com> 5859 5860 PR c++/14324 5861 * lex.c (retrofit_lang_decl): Treat entities with no linkage as 5862 having C++ linkage for name-mangling purposes. 5863 5864 PR c++/14260 5865 * parser.c (cp_parser_direct_declarator): Recognize constructor 5866 declarators that use a template-id to name the class being 5867 constructed. 5868 5869 PR c++/14337 5870 * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes. 5871 (tsubst_expr): Do not call tsubst_copy, even when 5872 processing_template_decl. 5873 58742004-03-01 Jeff Law <law@redhat.com> 5875 5876 * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to 5877 the proper type. 5878 58792004-02-29 Mark Mitchell <mark@codesourcery.com> 5880 5881 PR c++/14138 5882 * name-lookup.h (push_scope): Change prototype. 5883 * name-lookup.c (push_scope): Do not reenter the current class 5884 scope. 5885 * decl.c (grokfndecl): Check return code from push_scope before 5886 calling pop_scope. 5887 * decl2.c (check_classfn): Likewise. 5888 * parser.c (cp_parser_conversion_function_id): Likewise. 5889 (cp_parser_init_declarator): Likewise. 5890 (cp_parser_direct_declarator): Likewise. 5891 (cp_parser_class_specifier): Likewise. 5892 (cp_parser_class_head): Likewise. 5893 (cp_parser_lookup_name): Likewise. 5894 (cp_parser_constructor_declarator_p): Likewise. 5895 * pt.c (instantiate_class_template): Likewise. 5896 (resolve_typename_type): Likewise. 5897 58982004-02-29 Mark Mitchell <mark@codesourcery.com> 5899 5900 PR c++/14267 5901 * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue 5902 extension. 5903 5904 PR debug/12103 5905 * class.c (update_vtable_entry_for_fn): Do not go through 5906 covariance machinery if the type returned by an overrider is the 5907 same as the original. 5908 59092004-02-29 Kazu Hirata <kazu@cs.umass.edu> 5910 5911 * call.c: Fix a comment typo. 5912 59132004-02-27 Ziemowit Laski <zlaski@apple.com> 5914 5915 * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs. 5916 59172004-02-26 Mark Mitchell <mark@codesourcery.com> 5918 5919 PR c++/14278 5920 * parser.c (cp_parser_parameter_declaration_list): Commit 5921 to fewer tentative parses. 5922 59232004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5924 5925 PR c++/14284 5926 * pt.c (dependent_type_p_r): A template template parameter is a 5927 dependent type. 5928 59292004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5930 5931 PR c++/14246 5932 * mangle.c (write_template_arg_literal): Don't rely on identity for 5933 boolean constants. 5934 59352004-02-24 Jason Merrill <jason@redhat.com> 5936 5937 * tree.c (build_exception_variant): Use check_qualified_type. 5938 59392004-02-23 Zack Weinberg <zack@codesourcery.com> 5940 Kazu Hirata <kazu@cs.umass.edu> 5941 5942 * decl.c (cxx_init_decl_processing): Don't check 5943 flag_writable_strings. 5944 59452004-02-23 Andrew Pinski <pinskia@physics.uc.edu> 5946 5947 PR c++/14156 5948 * typeck.c (maybe_warn_about_returning_address_of_location): 5949 Change check for VAR_DECL to use DECL_P instead. 5950 59512004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5952 5953 PR c++/14250 5954 * cvt.c (build_expr_type_conversion): Type must be complete before 5955 looking up for conversions. 5956 59572004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5958 5959 PR c++/14143 5960 * name-lookup.c (arg_assoc_class): Don't look into template 5961 arguments if it is not a primary template. 5962 59632004-02-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> 5964 5965 PR c++/12007 5966 * method.c (use_thunk): Always clone function argument tree. 5967 59682004-02-20 Mark Mitchell <mark@codesourcery.com> 5969 5970 PR c++/14199 5971 * pt.c (tsubst_copy): Call mark_used for a PARM_DECL. 5972 5973 PR c++/14173 5974 * semantics.c (begin_class_definition): Set TYPE_PACKED correctly 5975 for all type variants. 5976 59772004-02-19 Mark Mitchell <mark@codesourcery.com> 5978 5979 PR c++/13927 5980 * decl.c (duplicate_decls): Return error_mark_node for invalid 5981 redeclarations. 5982 * name-lookup.c (push_namespace): Ignore the return value from 5983 pushdecl. 5984 * pt.c (push_template_decl_real): Robustify. 5985 5986 PR c++/14186 5987 * name-lookup.c (push_class_level_binding): Do not complain about 5988 adding a binding for a member whose name is the same as the 5989 enclosing class if the member is located in a base class of the 5990 current class. 5991 59922004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org> 5993 5994 PR c++/14181 5995 * parser.c (cp_parser_new_expression): Parse an ill-formed 5996 direct-new-declarator after a parenthesized type-id to emit good 5997 diagnostic. 5998 59992004-02-18 Kazu Hirata <kazu@cs.umass.edu> 6000 6001 * cp-tree.def, cvt.c: Update copyright. 6002 60032004-02-17 Mark Mitchell <mark@codesourcery.com> 6004 6005 PR c++/11326 6006 * cp-tree.h (abi_version_at_least): Remove. 6007 * mangle.c: Include flags.h. 6008 60092004-02-15 Mark Mitchell <mark@codesourcery.com> 6010 6011 PR c++/13971 6012 * call.c (build_conditional_expr): Handle conversions between 6013 class types which result in differently cv-qualified type 6014 variants. 6015 6016 PR c++/14086 6017 * class.c (delete_duplicate_fields_1): Remove. 6018 (delete_duplicate_fields): Likewise. 6019 (finish_struct_anon): Remove check for members with the same name 6020 as their enclosing class. 6021 (check_field_decls): Do not call duplicate_fields. 6022 * decl.c (grokdeclarator): Remove check for static data members 6023 with the same name as their enclosing class. 6024 * name-lookup.c (push_class_level_binding): Check for members with 6025 the same name as their enclosing class. 6026 60272004-02-15 Gabriel Dos Reis <gdr@integrable-solutions.net> 6028 6029 PR c++/14085 6030 * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM. 6031 60322004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 6033 6034 PR c++/13635 6035 * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL 6036 has full set of arguments. 6037 60382004-02-13 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6039 6040 PR c++/13927 6041 * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations. 6042 60432004-02-13 Mark Mitchell <mark@codesourcery.com> 6044 6045 PR c++/14122 6046 * cp-tree.h (delete_sanity): Change prototype. 6047 * decl2.c (delete_sanity): Make doing_vec a bool, not an int. 6048 Remove dead code. Adjust code to warn about deleting an array. 6049 * typekc.c (decay_conversion): Use build_address and build_nop. 6050 6051 PR c++/14108 6052 * search.c (accessible_p): Do not check access in thunks. 6053 6054 PR c++/14083 6055 * call.c (build_conditional_expr): Call force_rvalue on the 6056 non-void operand in the case that one result is a throw-expression 6057 and the other is not. 6058 60592004-02-13 Ian Lance Taylor <ian@wasabisystems.com> 6060 6061 PR c++/9851 6062 * parser.c (cp_parser_pseudo_destructor_name): Check for errors on 6063 the type name and look ahead for ::~, and bail out early with a 6064 better error message if the parse is going to fail. 6065 60662004-02-12 Mark Mitchell <mark@codesourcery.com> 6067 6068 * call.c (conversion_kind): New type. 6069 (conversion_rank): Likewise. 6070 (conversion): Likewise. 6071 (CONVERSION_RANK): New macro. 6072 (conversion_obstack): New variable. 6073 (obstack_initialized): Likewise. 6074 (z_candidate): Change type of convs and second_conv. 6075 (candidate_warning): New type. 6076 (IDENTITY_RANK): Remove. 6077 (EXACT_RANK): Likewise. 6078 (PROMO_RANK): Likewise. 6079 (STD_RANK): Likewise. 6080 (PBOOL_RANK): Likewise. 6081 (USER_RANK): Likewise. 6082 (ELLIPSIS_RANK): Likewise. 6083 (BAD_RANK): Likewise. 6084 (ICS_RANK): Likewise. 6085 (ICS_STD_RANK): Likewise. 6086 (ICS_USER_FLAG): Likewise. 6087 (ICS_ELLIPSIS_FLAG): Likewise. 6088 (ICS_THIS_FLAG): Likewise. 6089 (ICS_BAD_FLAG): Likewise. 6090 (NEED_TEMPORARY_P): Likewise. 6091 (CHECK_COPY_CONSTRUCTOR_P): Likewise. 6092 (USER_CONV_CAND): Likewise. 6093 (USER_CONV_FN): Likewise. 6094 (conversion_obstack_alloc): New function. 6095 (alloc_conversion): Likewise. 6096 (validate_conversion_obstack): Likewise. 6097 (alloc_conversions): Likewise. 6098 (build_conv): Adjust to deal with new conversion data structures. 6099 (build_identity_conv): New function. 6100 (build_ambiguous_conv): Likewise. 6101 (standard_conversion): Adjust to deal with new conversion data 6102 structures. 6103 (convert_class_to_reference): Likewise. 6104 (direct_reference_binding): Likewise. 6105 (reference_binding): Likewise. 6106 (implicit_conversion): Likewise. 6107 (add_candidate): Likewise. 6108 (add_function_candidate): Likewise. 6109 (add_conv_candidate): Likewise. 6110 (build_builtin_candidate): Likewise. 6111 (print_z_candidate): Likewise. 6112 (merge_conversion_sequences): Likewise. 6113 (build_user_type_conversion_1): Likewise. 6114 (build_user_type_conversion): Likewise. 6115 (build_new_function_call): Likewise. 6116 (build_object_call): Likewise. 6117 (conditional_conversion): Likewise. 6118 (build_conditional_expr): Likewise. 6119 (build_new_op): Likewise. 6120 (build_op_delete_call): Likewise. 6121 (convert_like_real): Likewise. 6122 (build_over_call): Likewise. 6123 (build_new_method_call): Likewise. 6124 (is_subseq): Likewise. 6125 (maybe_handle_implicit_object): Likewise. 6126 (maybe_handle_ref_bind): Likewise. 6127 (compare_ics): Likewise. 6128 (source_type): Likewise. 6129 (add_warning): Likewise. 6130 (joust): Likewise. 6131 (can_convert_arg): Likewise. 6132 (can_convert_arg_bad): Likewise. 6133 (perform_implicit_conversion): Likewise. 6134 (perform_direct_initialization_if_possible): Likewise. 6135 (initialize_reference): Likewise. 6136 * cp-lang.c (cp_tree_size): Do not handle WRAPPER. 6137 * cp-tree.def (WRAPPER): Likewise. 6138 (IDENTITY_CONV): Remove. 6139 (LVALUE_CONV): Likewise. 6140 (QUAL_CONV): Likewise. 6141 (STD_CONV): Likewise. 6142 (PTR_CONV): Likewise. 6143 (PMEM_CONV): Likewise. 6144 (BASE_CONV): Likewise. 6145 (REF_BIND): Likewise. 6146 (USER_CONV): Likewise. 6147 (AMBIG_CONV): Likewise. 6148 (RVALUE_CONV): Likewise. 6149 * cp-tree.h (tree_wrapper): Remove. 6150 (WRAPPER_ZC): Remove. 6151 (lang_tree_node): Remove wrapper. 6152 (LOOKUP_SPECULATIVELY): Remove. 6153 (build_op_delete_call): Adjust prototype. 6154 (validate_conversion_obstack): Declare. 6155 (build_zc_wrapper): Remove. 6156 * cvt.c (convert_to_reference): Remove dead code. 6157 (ocp_convert): Likewise. 6158 * decl.c (redeclaration_error_message): Correct handling of 6159 templates. 6160 (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY. 6161 (cp_tree_node_structure): Remove WRAPPER case. 6162 * decl2.c (finish_file): Call validate_conversion_obstack. 6163 * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY. 6164 (build_op_delete_call): Likewise. 6165 (build_x_delete): Likewise. 6166 (build_delete): Adjust call to build_op_delete_call. 6167 * pt.c (tsubst_friend_declaration): Adjust code to determine 6168 whether or not a friend template is a definition. 6169 (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs. 6170 * tree.c (build_zc_wrapper): Remove. 6171 61722004-02-12 Zack Weinberg <zack@codesourcery.com> 6173 6174 * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS. 6175 * cp-tree.h: Don't declare cxx_builtin_type_decls. 6176 * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete. 6177 (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL. 6178 61792004-02-10 Mark Mitchell <mark@codesourcery.com> 6180 6181 * typeck.c (lookup_destructor): Fix typo in error message. 6182 61832004-02-09 Kazu Hirata <kazu@cs.umass.edu> 6184 6185 * call.c, parser.c, tree.c: Fix comment typos. 6186 61872004-02-07 Zack Weinberg <zack@codesourcery.com> 6188 6189 Bug 13856 6190 * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS. 6191 * decl.c (duplicate_decls, start_function): Likewise. 6192 61932004-02-07 Zack Weinberg <zack@codesourcery.com> 6194 6195 * name-lookup.c (pushdecl): Issue shadow warnings directly. 6196 * parser.c (free_parser_stacks): Delete. 6197 61982004-02-07 Kazu Hirata <kazu@cs.umass.edu> 6199 6200 * rtti.c: Update copyright. 6201 62022004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6203 6204 PR c++/14033 6205 * decl.c (require_complete_types_for_parms): Do not insert 6206 error_mark_node in the parameter list. 6207 62082004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6209 6210 PR c++/14028 6211 * parser.c (cp_parser_enclosed_template_argument_list): Emit straight 6212 error when terminator can not be found. 6213 62142004-02-05 Kelley Cook <kcook@gcc.gnu.org> 6215 6216 Make-lang.in (po-generated): Delete. 6217 62182004-02-05 Kazu Hirata <kazu@cs.umass.edu> 6219 6220 * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with 6221 targetm.calls.promote_prototypes. 6222 62232004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> 6224 6225 PR middle-end/13750 6226 Revert: 6227 2004-01-15 Geoffrey Keating <geoffk@apple.com> 6228 PR pch/13361 6229 * cp/lex.c (handle_pragma_interface): Duplicate string from tree. 6230 (handle_pragma_implementation): Likewise. 6231 62322004-02-05 Mark Mitchell <mark@codesourcery.com> 6233 6234 PR c++/13714 6235 * typeck.c (lookup_destructor): Tweak error message. 6236 62372004-02-05 Jan Hubicka <jh@suse.cz> 6238 6239 * tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat 6240 functions. 6241 62422004-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6243 6244 PR c++/14008 6245 * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing 6246 code, only emits the diagnostic now. Added lookup of the identifier 6247 and support for qualified ids. 6248 (cp_parser_parse_and_diagnose_invalid_type_name): New function. 6249 Parse an (invalid) type name as id-expression within a declarator. 6250 (cp_parser_simple_declaration): Use it. 6251 (cp_parser_member_declaration): Likewise. 6252 (cp_parser_make_typename_type): New function. Handle errors through 6253 cp_parser_diagnose_invalid_typename. 6254 (cp_parser_elaborated_type_specifier): Use it. 6255 62562004-02-04 Mark Mitchell <mark@codesourcery.com> 6257 6258 PR c++/13932 6259 * call.c (convert_like_real): Use "converting" rather than 6260 "argument" as the descriptive keyword to 6261 dubious_conversion_warnings. 6262 * typeck.c (convert_for_assignment): Do not call 6263 dubious_conversion_warnings. 6264 62652004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6266 6267 PR c++/13086 6268 * init.c (build_delete): Emit a more informative error message in 6269 case of an incomplete type, and on the correct source line. 6270 62712004-02-04 Kazu Hirata <kazu@cs.umass.edu> 6272 6273 * error.c, search.c: Update copyright. 6274 62752004-02-04 Mark Mitchell <mark@codesourcery.com> 6276 6277 PR c++/9941 6278 * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the 6279 linkage for the typeinfo name string. 6280 62812004-02-04 Mark Mitchell <mark@codesourcery.com> 6282 6283 PR c++/13969 6284 * cp-tree.h (fold_non_dependent_expr): New function. 6285 * parser.c (cp_parser_fold_non_dependent_expr): Remove. 6286 (cp_parser_template_argument): Use fold_non_dependent_expr. 6287 (cp_parser_direct_declarator): Likewise. 6288 * pt.c (fold_non_dependent_expr): New function. 6289 (convert_nontype_argument): Use it. 6290 (tsubst_qualified_id): Simplify. 6291 (tsubst_copy_and_build): Likewise. 6292 62932004-02-04 Mark Mitchell <mark@codesourcery.com> 6294 6295 * decl.c (cxx_push_function_context): Do not set 6296 current_function_is_thunk. 6297 * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the 6298 actual function. 6299 63002004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6301 6302 PR c++/13997 6303 * pt.c (more_specialized_class): Increase processing_template_decl 6304 while partial ordering. 6305 63062004-02-03 Mark Mitchell <mark@codesourcery.com> 6307 6308 PR c++/13925 6309 * decl.c (start_function): Do not call pushdecl for any 6310 instantiation or specialization of a primary template. 6311 63122004-02-03 Mark Mitchell <mark@codesourcery.com> 6313 6314 PR c++/13950 6315 * parser.c (cp_parser_class_name): Robustify. 6316 6317 PR c++/13970 6318 * parser.c (cp_parser_cache_group): Do not consume the EOF token. 6319 6320 PR c++/14002 6321 * semantics.c (finish_id_expression): Do not return an 6322 IDENTIFIER_NODE when lookup finds a PARM_DECL. 6323 63242004-02-03 Mark Mitchell <mark@codesourcery.com> 6325 6326 PR c++/13978 6327 * pt.c (build_non_dependent_expr): Do not build 6328 NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs. 6329 6330 PR c++/13968 6331 * semantics.c (finish_id_expression): Do not return an 6332 IDENTIFIER_NODE when lookup finds a VAR_DECL. 6333 6334 PR c++/13975 6335 * parser.c (cp_parser_simple_declaration): When skipping to the 6336 end of the statement swallow the terminating semicolon. 6337 63382004-02-02 Mark Mitchell <mark@codesourcery.com> 6339 6340 PR c++/13113 6341 * init.c (build_offset_ref): Improve error recovery for invalid 6342 uses of non-static member functions. 6343 6344 PR c++/13854 6345 * cp-tree.h (cp_build_type_attribute_variant): New function. 6346 * class.c (build_clone): Use cp_build_type_attribute_variant. 6347 * decl.c (duplicate_decls): Likewise. 6348 * pt.c (copy_default_args_to_explicit_spec): Likewise. 6349 (tsubst_function_type): Likewise. 6350 * tree.c (build_exception_variant): Check attributes before 6351 concluding that two types are the same. 6352 (cp_build_type-attribute_variant): New method. 6353 * typeck.c (merge_types): Use cp_build_type_attribute_variant. 6354 6355 PR c++/13907 6356 * call.c (convert_class_to_reference): Keep better track of 6357 pedantically invalid user-defined conversions. 6358 63592004-02-01 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6360 6361 PR c++/13957 6362 * pt.c (tsubst_qualified_id): Improved error message when a type 6363 is expected but not found. 6364 63652004-01-31 Kazu Hirata <kazu@cs.umass.edu> 6366 6367 * class.c: Fix comment typos. 6368 * decl.c: Likewise. 6369 * error.c: Likewise. 6370 * parser.c: Likewise. 6371 * pt.c: Likewise. 6372 * search.c: Likewise. 6373 * typeck.c: Likewise. 6374 63752004-01-30 Richard Henderson <rth@redhat.com> 6376 6377 PR c++/13693 6378 * method.c (use_thunk): Don't force_target_expr for void thunks. 6379 * tree.c (build_target_expr_with_type): Assert non-void type. 6380 (force_target_expr): Likewise. 6381 63822004-01-30 Michael Matz <matz@suse.de> 6383 6384 * parser.c (cp_parser_labeled_statement): Accept case ranges. 6385 63862004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6387 6388 DR206 6389 PR c++/13813 6390 * decl.c (grokdeclarator): Check immediatly type completeness for 6391 non-dependent types. 6392 63932004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6394 6395 PR c++/13683 6396 * call.c (convert_arg_to_ellipsis): Don't emit a warning if within 6397 a sizeof expression.block 6398 63992004-01-29 Mark Mitchell <mark@codesourcery.com> 6400 6401 PR c++/13883 6402 * mangle.c (write_encoding): Correct encoding of member template 6403 constructors. 6404 64052004-01-28 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6406 6407 * parser.c (cp_parser_template_id): Parse tentatively `[:' after a 6408 template name as it was `<::' (digraph typo). 6409 (cp_parser_nth_token_starts_template_argument_list_p): New function. 6410 (cp_parser_id_expression): Use it. 6411 (cp_parser_nested_name_specifier_opt): Likewise. 6412 (cp_parser_template_name): Likewise. 6413 (cp_parser_class_name): Likewise. 6414 (cp_lexer_get_preprocessor_token): Use c_lex_with_flags. 6415 64162004-01-28 Mark Mitchell <mark@codesourcery.com> 6417 6418 PR c++/13791 6419 * typeck.c (merge_types): Do not merge attributes into 6420 TYPENAME_TYPEs. 6421 6422 PR c++/13736 6423 * parser.c (cp_parser_direct_declarator): Do not prevent 6424 backtracking inside a parenthesized declarator. 6425 (cp_parser_parameter_declaration): Fix typo in comment. 6426 64272004-01-28 Jan Hubicka <jh@suse.cz> 6428 6429 * semantics.c (expand_body) Do emit_associated_thunks before 6430 expansion. 6431 64322004-01-27 Devang Patel <dpatel@apple.com> 6433 6434 * name-lookup.c: Include "debug.h" 6435 (do_namespace_alias): Invoke debug_hooks to emit debug info 6436 for namespace alias. 6437 (do_local_using_decl): Invoke debug_hooks to emit debug info 6438 for using decl. 6439 (do_class_using_decl): Same. 6440 (do_toplevel_using_decl): Same. 6441 (do_using_directive): Same. 6442 (cp_emit_debug_info_for_using): New function. 6443 * Make-lang.in (cp/parser.o): Depend on debug.h 6444 (cp/name-lookup.o): Same. 6445 64462004-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 6447 6448 * cp-tree.h (language_function, lang_type_header): Use 6449 BOOL_BITFIELD. 6450 * name-lookup.h (cp_binding_level): Likewise. 6451 64522004-01-26 Mark Mitchell <mark@codesourcery.com> 6453 6454 PR c++/13663 6455 * semantics.c (finish_for_expr): Check for unresolved overloaded 6456 functions. 6457 6458 * class.c (add_method): Just check processing_template_decl to 6459 determine whether or not we are within a template. 6460 * decl2.c (maybe_retrofit_in_chrg): Likewise. 6461 * init.c (decl_constant_value): Check the type of the declaration, 6462 not TREE_READONLY. 6463 * name-lookup.c (maybe_push_to_top_level): Rename to ... 6464 (push_to_top_level): ... this. 6465 * name-lookup.h (maybe_push_to_top_level): Do not declare it. 6466 * pt.c (push_template_decl_real): Reorder condition for speed. 6467 (convert_template_argument): Use dependency-checking functions in 6468 place of uses_template_parms. 6469 (lookup_template_class): Avoid calling uses_template_parms more 6470 than once. 6471 (uses_template_parms): Reimplement, using dependency-checking 6472 functions. 6473 (instantiate_class_template): Use push_to_top_level, not 6474 maybe_push_to_top_level. 6475 (type_unification_real): Simplify. 6476 (type_dependent_expression_p): Handle OFFSET_REFs and 6477 TEMPLATE_DECLs. 6478 (any_dependent_template_arguments_p): Handle multiple levels of 6479 template argument. 6480 * semantics.c (expand_or_defer_fn): Do not check 6481 uses_template_parms for template instantiations. 6482 * typeck.c (comptypes): Avoid calling cp_type_quals. 6483 64842004-01-25 Mark Mitchell <mark@codesourcery.com> 6485 6486 PR c++/13833 6487 * call.c (build_over_call): Do not convert arguments when 6488 processing a template. 6489 * pt.c (build_non_dependent_expr): Do not build a 6490 NON_DEPENDENT_EXPR for arithmetic constants. 6491 64922004-01-25 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6493 6494 PR c++/13810 6495 * parser.c (cp_parser_type_parameter): When cp_parser_id_expression 6496 returns a TYPE_DECL. no further lookup is required. 6497 * semantics.c (check_template_template_default_arg): A TYPE_DECL 6498 is invalid. Rework to give better diagnostics. 6499 65002004-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 6501 6502 PR c++/13797 6503 * pt.c (instantiate_class_template): Add an error_mark_node 6504 check. 6505 (tsubst_decl) <TEMPLATE_DECL case>: Likewise. 6506 65072004-01-23 Andrew Pinski <pinskia@physics.uc.edu> 6508 6509 PR c++/13701 6510 * decl.c (finish_function): Move the call to 6511 finish_fname_decls below the call to 6512 finish_eh_spec_block. 6513 65142004-01-21 Kazu Hirata <kazu@cs.umass.edu> 6515 6516 * optimize.c, typeck2.c: Update copyright. 6517 65182004-01-21 Kazu Hirata <kazu@cs.umass.edu> 6519 6520 * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c, 6521 init.c, mangle.c, typeck.c: Update copyright. 6522 65232004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> 6524 6525 * parser.c (cp_parser_class_specifier): Prevent garbage collection. 6526 65272004-01-20 Kelley Cook <kcook@gcc.gnu.org> 6528 6529 * Make-lang.in: Replace $(docdir) with doc. 6530 (c++.info, c++.srcinfo): Dummy entry. 6531 (c++.man, c++.srcman): New rules. 6532 (c++.install-man): Revamp rule. 6533 65342004-01-20 Kelley Cook <kcook@gcc.gnu.org> 6535 6536 * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME, 6537 CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a 6538 immediate $(shell) instead of deferred backquote. 6539 65402004-01-19 Mark Mitchell <mark@codesourcery.com> 6541 6542 PR c++/13651 6543 * parser.c (cp_parser_postfix_expression): When encountering 6544 incomplete type on left-hand side of "->" or ".", treat the entire 6545 expression as erroneous. 6546 6547 PR c++/13592 6548 * call.c (build_field_call): Remove. 6549 (n_build_method_call): Likewise. 6550 (build_method_call): Likewise. 6551 (build_new_method_call): Do not call build_field_call. 6552 * class.c (n_build_method_call): Remove. 6553 (print_class_statistics): Do not print it. 6554 * cp-tree.h (build_method_call): Remove declaration. 6555 (finish_object_call_expr): Likewise. 6556 (build_new_1): Do not use build_method_call. 6557 * parser.c (cp_parser_postfix_expression): Use finish_call_expr 6558 when the function appearing on the right-hand-side of "." or "->" 6559 is not actually a function. 6560 * pt.c (tsubst_copy_and_build): Likewise. 6561 * semantics.c (finish_object_call_expr): Remove. 6562 65632004-01-18 Mark Mitchell <mark@codesourcery.com> 6564 6565 PR c++/13710 6566 * pt.c (tsubst): Use finish_typeof. 6567 65682004-01-18 Jason Merrill <jason@redhat.com> 6569 6570 PR c++/11725 6571 * except.c (build_throw): In a template, set 6572 current_function_returns_abnormally. 6573 65742004-01-17 Fred Fish <fnf@intrinsity.com> 6575 6576 PR c++/11895 6577 * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE, 6578 except don't call array_type_nelts() with a VECTOR_TYPE. 6579 65802004-01-16 Jan Hubicka <jh@suse.cz> 6581 6582 * mangle.c (write_mangled_name): Remove inline modifier. 6583 65842004-01-16 Mark Mitchell <mark@codesourcery.com> 6585 6586 PR c++/13574 6587 * decl.c (compute_array_index_type): Fix grammar in comment. 6588 * init.c (build_zero_init): Handle zero-sized arrays correctly. 6589 6590 PR c++/13178 6591 * call.c (name_as_c_string): Print conversion operator names 6592 correctly. 6593 6594 PR c++/13478 6595 * call.c (initialize_reference): Pass -1 for inner parameter to 6596 convert_like_real. 6597 65982004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6599 6600 PR c++/13407 6601 * parser.c (cp_parser_base_specifier): Check for an invalid 6602 keyword `typename' and emit an user-friendly error message. 6603 66042004-01-15 Geoffrey Keating <geoffk@apple.com> 6605 6606 PR pch/13361 6607 * cp/lex.c (handle_pragma_interface): Duplicate string from tree. 6608 (handle_pragma_implementation): Likewise. 6609 66102004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6611 6612 PR c++/9259 6613 * typeck.c (build_class_member_access_expr): Allow to access members 6614 of the currently open class. 6615 (finish_class_member_access_expr): Likewise. 6616 66172004-01-15 Alexandre Oliva <aoliva@redhat.com> 6618 6619 PR c++/13659 6620 * name-lookup.c (validate_nonmember_using_decl): Take scope and 6621 name by value, instead of computing them. 6622 (do_local_using_decl, do_toplevel_using_decl): Add scope and name 6623 arguments. Pass them to validate_nonmember_using_decl. 6624 * name-lookup.h (do_local_using_decl): Adjust. 6625 (do_toplevel_using_decl): Likewise. 6626 * parser.c (cp_parser_using_declaration): Likewise. 6627 * pt.c (tsubst_expr): Likewise. 6628 66292004-01-15 Alexandre Oliva <aoliva@redhat.com> 6630 6631 PR c++/13594 6632 PR c++/13658 6633 * name-lookup.c (qualified_lookup_using_namespace): Search 6634 strongly-associated namespaces first, and only then try other 6635 namespaces. 6636 66372004-01-15 Kelley Cook <kcook@gcc.gnu.org> 6638 6639 * Make-lang.in (c++.srcextra): Dummy entry. 6640 66412004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6642 6643 PR c++/8856 6644 * parser.c (cp_parser_template_name): Don't try to parse a 6645 conversion-function-id, as it cannot be a template-name. 6646 (cp_parser_simple_type_specifier): Check for invalid template-ids 6647 even after a built-in type. 6648 66492004-01-14 Jan Hubicka <jh@suse.cz> 6650 6651 PR c++/12850 6652 * pt.c (instantiate_decl): Do not increase function_depth. 6653 66542004-01-14 Danny Smith <dannysmith@users,sourceforge.net> 6655 6656 PR c++/9021 6657 PR c++/11005 6658 * parser.c (cp_parser_elaborated_type_specifier): Warn about 6659 attributes and discard. 6660 * decl.c (xref_tag): Don't overwite existing attributes with 6661 NULL_TREE. 6662 66632004-01-14 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6664 6665 PR c++/12335 6666 * parser.c (cp_parser_lookup_name): Return error_mark_node if there 6667 is no destructor while looking up a BIT_NOT_EXPR. 6668 66692004-01-13 Ian Lance Taylor <ian@wasabisystems.com> 6670 6671 * cxxfilt.c: Remove unused file. 6672 66732004-01-14 Jan Hubicka <jh@suse.cz> 6674 6675 Partial fix to PR c++/12850 6676 * decl2.c (mark_used): Do not proactively instantiate templates 6677 when compiling in unit-at-a-time or not optimizing. 6678 * optimize.c (maybe_clone_body): Do not increase function depth. 6679 66802004-01-13 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6681 6682 PR c++/13474 6683 * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking. 6684 66852004-01-12 Steven Bosscher <stevenb@suse.de> 6686 6687 PR c++/13558 6688 * parser.c (cp_parser_member_declaration): Any non-type is also 6689 not a class or a function. 6690 66912004-01-12 Jason Merrill <jason@redhat.com> 6692 6693 PR c++/12815 6694 * class.c (build_base_path): Do not mark vtable references as 6695 TREE_CONSTANT. 6696 (build_vtbl_ref_1): Likewise. 6697 66982004-01-12 Richard Henderson <rth@redhat.com> 6699 6700 PR opt/10776 6701 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New. 6702 (store_init_value): Use it. 6703 * decl.c (check_initializer): Expect full initialization code 6704 from store_init_value. 6705 * init.c (expand_aggr_init_1): Likewise. 6706 * decl2.c (maybe_emit_vtables): Abort if runtime init needed. 6707 67082004-01-12 Mark Mitchell <mark@codesourcery.com> 6709 6710 * class.c (layout_class_type): For non-POD class types, also copy 6711 the DECL_SIZE and DECL_MODE of fields to the base class type. 6712 67132004-01-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 6714 6715 PR c++/13289 6716 * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before 6717 calling regenerate_decl_from_template. 6718 67192004-01-12 Scott Brumbaugh <scottb.lists@verizon.net> 6720 6721 PR c++/4100 6722 * parser.c (cp_parser_decl_specifier_seq): Add check for a friend 6723 decl-specifier occurring along with a class definition. 6724 67252004-01-12 Ian Lance Taylor <ian@wasabisystems.com> 6726 6727 * parser.c (cp_parser_decl_specifier_seq): Add parenthetical 6728 clauses to comments describing declares_class_or_enum. 6729 (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not 6730 false. 6731 67322004-01-12 Jan Hubicka <jh@suse.cz> 6733 6734 * pt.c (for_each_template_parm): Do not check for duplicates. 6735 (for_each_template_parm): Use walk_tree duplicate checking code. 6736 67372004-01-11 Ian Lance Taylor <ian@wasabisystems.com> 6738 6739 PR c++/3478 6740 * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec 6741 is error_mark_node, don't add any more decl_specs. 6742 (cp_parser_init_declarator): After committing to a declaration, if 6743 the decl_specifiers start with error_mark_node, issue an error and 6744 change the type to "int". 6745 67462004-01-09 Nathanael Nerode <neroden@gcc.gnu.org> 6747 6748 PR bootstrap/7817 6749 * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so. 6750 67512004-01-10 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6752 6753 DR 337 6754 PR c++/9256 6755 * pt.c (tsubst): Substitution must fail if we are attempting to 6756 create an array with element type that is an abstract class type. 6757 * decl.c (cp_finish_decl): Strip pointers and array types recursively 6758 before calling abstract_virtuals_error. 6759 67602004-01-09 Alexandre Oliva <aoliva@redhat.com> 6761 6762 * name-lookup.c (qualified_lookup_using_namespace): Consider 6763 strong using directives even if we've already found a binding. 6764 67652004-01-09 Mark Mitchell <mark@codesourcery.com> 6766 6767 * cp-tree.h (cxx_expand_expr): Change prototype. 6768 * expr.c (cxx_expand_expr): Add alt_rtl parameter. 6769 67702004-01-08 Giovanni Bajo <giovannibajo@gcc.gnu.org> 6771 6772 PR c++/12573 6773 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by 6774 looking into them recursively. They can be there because of the 6775 new __offsetof__ extension. 6776 67772004-01-07 Zack Weinberg <zack@codesourcery.com> 6778 6779 * parser.c (cp_parser_save_member_function_body): Mark the 6780 definition static. 6781 67822004-01-05 Mark Mitchell <mark@codesourcery.com> 6783 6784 PR c++/13057 6785 * class.c (build_clone): Copy type attributes from the original 6786 function to the clone. 6787 6788 PR c++/12815 6789 * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable 6790 references as constant. 6791 6792 PR c++/12132 6793 * parser.c (cp_parser_explicit_instantiation): Improve error 6794 recovery. 6795 (cp_parser_require): Improve indication of the error location. 6796 6797 PR c++/13451 6798 * parser.c (cp_parser_class_head): Reorder logic to check for 6799 invalid qualification. 6800 68012004-01-04 Mark Mitchell <mark@codesourcery.com> 6802 6803 PR c++/13157 6804 * name-lookup.c (lookup_using_namespace): Remove spacesp 6805 parameter. 6806 (unqualified_namespace_lookup): Likewise. 6807 (lookup_qualified_name): Adjust accordingly. 6808 (lookup_name_real): Likewise. 6809 (lookup_arg_dependent): Do not eliminate the namespace of the 6810 functions found by unqualified name lookup unless that is the 6811 current namespace. 6812 68132004-01-04 Andrew Pinski <pinskia@physics.uc.edu> 6814 6815 * semantics.c (push_deferring_access_checks): Fix format. 6816 (resume_deferring_access_checks): Likewise. 6817 (stop_deferring_access_checks): Likewise. 6818 (pop_deferring_access_checks): Likewise. 6819 (get_deferred_access_checks): Likewise. 6820 (pop_to_parent_deferring_access_checks): Likewise. 6821 (perform_deferred_access_checks): Likewise. 6822 (perform_or_defer_access_check): Likewise. 6823 68242004-01-04 Richard Henderson <rth@redhat.com> 6825 6826 * call.c (build_over_call): Don't create a save_expr of an 6827 aggregate, but rather its address. 6828 68292004-01-04 Mark Mitchell <mark@codesourcery.com> 6830 6831 PR c++/13529 6832 * parser.c (cp_parser_postfix_expression): Allow "." to appear in 6833 an offsetof expression. 6834 6835 * parser.c (cp_parser_parameter_declaration): Fix comment. 6836 6837 PR c++/12226 6838 * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro. 6839 (reference_binding): Set it when appropriate. 6840 (build_temp): New function, split out from ... 6841 (convert_like_real): ... here. Honor CHECK_COPY_CONSTRUCTOR_P. 6842 (initialize_reference): Likewise. 6843 6844 PR c++/13536 6845 * parser.c (cp_parser): Add in_type_id_in_expr_p. 6846 (cp_parser_new): Initialize it. 6847 (cp_parser_postfix_expression): Set it. 6848 (cp_parser_sizeof_operand): Likewise. 6849 (cp_parser_parameteR_declaration): Do not commit early to tenative 6850 parsers when in_type_id_in_expr_p is set. 6851 68522004-01-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 6853 6854 PR c++/13094 6855 * parser.c (cp_parser_template_argument): Don't call 6856 make_unbound_class_template directly. 6857 (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from 6858 UNBOUND_CLASS_TEMPLATE tree node. 6859 68602004-01-02 Richard Sandiford <rsandifo@redhat.com> 6861 6862 PR target/12729 6863 * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr. 6864 68652004-01-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 6866 6867 PR c++/13520 6868 * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro. 6869 (DECL_FUNCTION_TEMPLATE_P): Use it. 6870 (DECL_CLASS_TEMPLATE_P): Likewise. 6871 * parser.c (cp_parser_lookup_name): Add is_template parameter. 6872 (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name. 6873 (cp_parser_template_name): Likewise. 6874 (cp_parser_elaborated_type_specifier): Likewise. 6875 (cp_parser_namespace_name): Likewise. 6876 (cp_parser_class_name): Likewise. 6877 (cp_parser_lookup_name_simple): Likewise. 6878