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 8792004-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 9052004-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): Incoming 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 6879 6880Copyright (C) 2004 Free Software Foundation, Inc. 6881 6882Copying and distribution of this file, with or without modification, 6883are permitted in any medium without royalty provided the copyright 6884notice and this notice are preserved. 6885