12007-12-20 Jason Merrill <jason@redhat.com> 2 3 PR c++/34111 4 * call.c (standard_conversion): Derived-to-base is considered a 5 standard conversion. 6 72007-12-19 Jakub Jelinek <jakub@redhat.com> 8 9 PR c++/34513 10 * parser.c (cp_parser_omp_parallel): For non-combined parallel 11 call cp_parser_statement rather than 12 cp_parser_already_scoped_statement. 13 142007-12-18 Jason Merrill <jason@redhat.com> 15 16 PR c++/34206 17 * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't 18 use template parms. 19 (dependent_type_p_r): Handle the domain of an array. 20 212007-12-18 Douglas Gregor <doug.gregor@gmail.com> 22 Jakub Jelinek <jakub@redhat.com> 23 24 PR c++/32565 25 PR c++/33943 26 PR c++/33965 27 * pt.c (template_template_parm_bindings_ok_p): New; verifies 28 bindings of template template parameters after all template 29 arguments have been deduced. 30 (coerce_template_parms): Don't complain when COMPLAIN doesn't 31 include tf_error. 32 (fn_type_unification): Use template_template_parm_bindings_ok_p. 33 (unify): Deal with variadic, bound template template parameters. 34 (get_class_bindings): Use template_template_parm_bindings_ok_p. 35 362007-12-18 Jakub Jelinek <jakub@redhat.com> 37 38 PR c++/34488 39 * decl.c (grokdeclarator): Reject friend sfk_constructor 40 FUNCTION_TYPE. 41 422007-12-17 Jakub Jelinek <jakub@redhat.com> 43 44 PR c/34506 45 * parser.c (cp_parser_omp_all_clauses): Accept optional comma 46 in between clauses. 47 482007-12-15 Alexandre Oliva <aoliva@redhat.com> 49 50 PR debug/7081 51 * cp-lang.c (cp_classify_record): New. 52 (LANG_HOOKS_CLASSIFY_RECORD): Override. 53 542007-12-11 Jakub Jelinek <jakub@redhat.com> 55 56 PR c++/34238 57 * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change. 58 59 PR c++/34364 60 * rtti.c (build_dynamic_cast): Call convert_from_reference even for 61 dynamic_cast in a template. 62 632007-12-10 Simon Martin <simartin@users.sourceforge.net> 64 65 PR c++/34059 66 * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from 67 MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO. 68 692007-12-10 Jakub Jelinek <jakub@redhat.com> 70 71 PR c++/34395 72 * error.c (dump_type_prefix, dump_type_suffix): Handle 73 TYPE_PACK_EXPANSION. 74 75 PR c++/34394 76 * error.c (dump_expr): Handle ABS_EXPR. 77 782007-12-09 Jakub Jelinek <jakub@redhat.com> 79 80 PR c++/34178 81 PR c++/34340 82 * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P 83 in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. 84 Return 2 also if DECL_EXPLICIT_INSTANTIATION. 85 * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when 86 flag_use_repository and repo_emit_p returned 2. 87 882007-12-06 Jakub Jelinek <jakub@redhat.com> 89 90 PR c++/34336 91 * tree.c (stabilize_call, stabilize_init): Do nothing if 92 processing_template_decl. 93 942007-12-05 Jakub Jelinek <jakub@redhat.com> 95 96 PR c++/34271 97 * semantics.c (finish_decltype_type): For SCOPE_REF issue an 98 error instead of assertion failure. 99 * parser.c (cp_parser_decltype): If closing paren is not found, 100 return error_mark_node. 101 1022007-12-04 Douglas Gregor <doug.gregor@gmail.com> 103 104 PR c++/34101 105 * name-lookup.c (arg_assoc_template_arg): Recurse on argument 106 packs. 107 (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here, 108 since arg_assoc_template_arg will deal with them (better). 109 1102007-12-04 Douglas Gregor <doug.gregor@gmail.com> 111 112 PR c++/33509 113 * pt.c (tsubst_exception_specification): Handle substitutions into 114 member templates, where tsubst_pack_expansion returns a 115 TYPE_PACK_EXPANSION. 116 1172007-12-04 Douglas Gregor <doug.gregor@gmail.com> 118 119 PR c++/33091 120 * pt.c (unify_pack_expansion): If we didn't deduce any actual 121 bindings for the template parameter pack, don't try to keep the 122 empty deduced arguments. 123 (unify): If a parameter is a template-id whose template argument 124 list contains a pack expansion that is not at the end, then we 125 cannot unify against that template-id. 126 1272007-12-02 Paolo Carlini <pcarlini@suse.de> 128 129 PR c++/34061 130 * pt.c (current_template_args): Use error_operand_p. 131 1322007-12-02 Paolo Carlini <pcarlini@suse.de> 133 134 PR c++/34273 135 * error.c (dump_decl): Handle TREE_BINFO. 136 1372007-12-01 Ollie Wild <aaw@google.com> 138 139 PR c++/8171 140 * typeck.c (build_binary_op): Add conversion of pointers to function 141 members appearing as operands to the equality operators. 142 1432007-11-30 Jakub Jelinek <jakub@redhat.com> 144 145 PR c++/34275 146 * error.c (dump_expr): Handle OBJ_TYPE_REF. 147 1482007-11-29 Jakub Jelinek <jakub@redhat.com> 149 150 PR c++/34270 151 * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y 152 in templates. 153 * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>: 154 Likewise. 155 156 PR c++/34267 157 PR c++/34268 158 * parser.c (cp_parser_decltype): Don't call finish_id_expression 159 on ~type. 160 * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs 161 and ~type early. 162 1632007-11-27 Jakub Jelinek <jakub@redhat.com> 164 165 PR tree-optimization/34181 166 * method.c (use_thunk): Don't inline the call in the thunk. 167 168 PR c++/34213 169 * tree.c (decl_linkage): Static data members and static member 170 functions in anonymous ns classes are lk_external. 171 1722007-11-26 Andreas Krebbel <krebbel1@de.ibm.com> 173 174 PR c++/34081 175 * decl.c (start_preparsed_function): Pass 176 processing_template_decl for the new allocate_struct_function 177 parameter. 178 1792007-11-25 Richard Guenther <rguenther@suse.de> 180 181 * decl.c (poplevel): Use BLOCK_CHAIN. 182 1832007-11-24 Ollie Wild <aaw@google.com> 184 185 * typeck.c (delta_from_ptrmemfunc): New function. 186 (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc. 187 (build_binary_op): Call delta_from_ptrmemfunc. 188 1892007-11-23 Jakub Jelinek <jakub@redhat.com> 190 191 PR c++/30293 192 PR c++/30294 193 * decl.c (cp_finish_decl): Disallow variable or field 194 definitions if extern "Java" aggregates. 195 (grokparms): Disallow parameters with extern "Java" 196 aggregates. 197 (check_function_type): Disallow function return values 198 with extern "Java" aggregates. 199 * init.c (build_new_1): Disallow placement new with 200 extern "Java" aggregates. 201 2022007-11-23 Mark Mitchell <mark@codesourcery.com> 203 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 204 205 PR c++/5310 206 * call.c (convert_like_real): Build a zero constant when __null is 207 converted to an integer type. 208 2092007-11-22 Jakub Jelinek <jakub@redhat.com> 210 211 PR c++/34094 212 * decl2.c (cp_write_global_declarations): Issue error about static 213 data members in anonymous namespace which are declared and used, 214 but not defined. 215 2162007-11-20 Jakub Jelinek <jakub@redhat.com> 217 218 PR c++/34089 219 * parser.c (cp_parser_class_head): Reject function template ids. 220 221 PR c++/28879 222 * tree.c (build_cplus_array_type_1): Don't pass any VLA types 223 when processing_template_decl to build_array_type. 224 225 PR c++/33962 226 * pt.c (more_specialized_fn): Don't segfault if one or 227 both argument list end with ellipsis. 228 2292007-11-18 Jakub Jelinek <jakub@redhat.com> 230 231 PR c++/30988 232 * semantics.c (finish_call_expr): Set 233 current_function_returns_abnormally if fn is noreturn FUNCTION_DECL 234 or OVERLOAD with all noreturn functions. 235 2362007-11-16 Jakub Jelinek <jakub@redhat.com> 237 238 PR c++/34100 239 * pt.c (apply_late_template_attributes): Do nothing if decl's type is 240 error_mark_node. 241 2422007-11-13 Jakub Jelinek <jakub@redhat.com> 243 244 PR c++/34054 245 PR c++/34056 246 PR c++/34057 247 PR c++/34058 248 PR c++/34060 249 * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error, 250 set to error_mark_node the outermost POINTER_TYPE to the pack if 251 it is seen in a POINTER_TYPE. 252 (push_template_decl_real): If check_for_bare_parameter_packs 253 fails for function return type, set the return type to 254 integer_type_node. If check_for_bare_parameter_packs failed 255 for non-function, return error_mark_node. 256 257 PR c++/29225 258 * call.c (build_new_op): Call resolve_args before calling 259 build_over_call. 260 2612007-11-11 Tom Tromey <tromey@redhat.com> 262 263 PR c++/17577: 264 * lex.c (handle_pragma_implementation): Use cpp_included_before. 265 2662007-11-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 267 268 PR c++/8570 269 * pt.c (redeclare_class_template): Update error message. Use a 270 note to show the previous declaration. 271 (tsubst_friend_class): Use the location of the friend template as 272 the input location before calling redeclare_class_template. 273 2742007-11-11 Jakub Jelinek <jakub@redhat.com> 275 276 PR c++/34068 277 * semantics.c (finish_pseudo_destructor_expr): Handle 278 object == error_mark_node. 279 2802007-11-10 Jakub Jelinek <jakub@redhat.com> 281 282 PR c++/32241 283 * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type 284 is not scalar type, let finish_class_member_access_expr handle 285 diagnostics. Pass BIT_NOT_EXPR argument to 286 finish_pseudo_destructor_expr. Handle SCOPE_REF properly. 287 2882007-11-09 Douglas Gregor <doug.gregor@gmail.com> 289 290 PR c++/33510 291 * decl.c (cp_complete_array_type): If any of the initializer 292 elements are pack expansions, don't compute the array size yet. 293 2942007-11-08 Andrew Pinski <pinskia@gmail.com> 295 296 PR c++/30297: 297 * tree.c (decl_linkage): Fields have no linkage. 298 2992007-11-08 Daniel Jacobowitz <dan@codesourcery.com> 300 301 * class.c (build_ctor_vtbl_group): Lay out the new type and decl. 302 3032007-11-07 Douglas Gregor <doug.gregor@gmail.com> 304 305 PR c++/33045 306 PR c++/33837 307 PR c++/33838 308 * semantics.c (finish_decltype_type): See through INDIRECT_REFs. 309 Be careful with ERROR_MARK_NODEs. 310 * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL 311 argument. 312 3132007-11-07 Jakub Jelinek <jakub@redhat.com> 314 315 PR c++/33501 316 * call.c (build_over_call): Don't check TREE_ADDRESSABLE 317 on incomplete type. 318 3192007-11-06 Douglas Gregor <doug.gregor@gmail.com> 320 321 PR c++/33977 322 PR c++/33886 323 * tree.c (c_build_qualified_type): Define bridge to 324 cp_build_qualified_type. 325 3262007-11-06 Douglas Gregor <doug.gregor@gmail.com> 327 328 PR c++/31439 329 PR c++/32114 330 PR c++/32115 331 PR c++/32125 332 PR c++/32126 333 PR c++/32127 334 PR c++/32128 335 PR c++/32253 336 PR c++/32566 337 * typeck.c (check_return_expr): Pass address of retval to 338 check_for_bare_parameter_packs. 339 * class.c (build_base_field): Tolerate bases that have no layout 340 due to errors. 341 (end_of_base): Ditto. 342 * tree.c (canonical_type_variant): Be careful with 343 ERROR_MARK_NODE. 344 * cp-tree.h (check_for_bare_parameter_packs): Now accepts a 345 tree*. 346 * pt.c (find_parameter_pack_data): Add set_packs_to_error field, 347 which states whether parameter packs should be replaced with 348 ERROR_MARK_NODE. 349 (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever 350 possible. If set_packs_to_error is set true, replace the parameter 351 pack with ERROR_MARK_NODE. Manage our own pointer sets. 352 (uses_parameter_packs): Don't set parameter packs to 353 ERROR_MARK_NODE. 354 (check_for_bare_parameter_packs): Now takes a pointer to a tree, 355 which may be modified (if it is a parameter pack). Instructs 356 find_parameter_packs_r to replace parameter packs with 357 ERROR_MARK_NODE (so that they won't cause errors later on). 358 (process_template_parm): Pass pointer to 359 check_for_bare_parameter_packs. 360 (process_partial_specialization): Replace pack expansions before 361 the end of the template argument list with ERROR_MARK_NODE. 362 (push_template_decl_real): Pass pointer to 363 check_for_bare_parameter_packs. Replace parameter packs not at the 364 end of the template parameter list with ERROR_MARK_NODE. 365 (convert_template_argument): Be more careful about using DECL_NAME 366 on only declarations. 367 (unify): Can't unify against ERROR_MARK_NODE. 368 * semantics.c (finish_cond): Pass pointer to 369 check_for_bare_parameter_packs. 370 (finish_expr_stmt): Ditto. 371 (finish_for_expr): Ditto. 372 (finish_switch_cond): Pass pointer to 373 check_for_bare_parameter_packs, and call it before we put the 374 condition into the statement. 375 (finish_mem_initializers): Pass pointer to 376 check_for_bare_parameter_packs. 377 (finish_member_declaration): Ditto. 378 * parser.c (cp_parser_base_clause): Ditto. 379 3802007-11-06 Jakub Jelinek <jakub@redhat.com> 381 382 PR target/33168 383 * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already 384 with the final TREE_READONLY flag in place. processing_template_decl 385 is known to be 0 in this part of function. 386 387 PR c++/33894 388 * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not 389 OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC. 390 * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P. 391 * semantics.c (finish_omp_atomic): Revert most of the 392 2007-02-05 changes, just keep the new representation of 393 OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC. 394 3952007-11-05 H.J. Lu <hongjiu.lu@intel.com> 396 397 PR c++/33871 398 * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked 399 local. 400 4012007-11-05 Douglas Gregor <doug.gregor@gmail.com> 402 403 PR c++/33996 404 PR c++/33235 405 PR c++/33930 406 * typeck.c (merge_types): Don't lose rvalue references when 407 merging types. 408 * call.c (build_over_call): Don't elide move constructors just 409 because the copy constructor is trivial (!). 410 (compare_ics): If comparing cv-qualifiers fails, we can still order 411 based on binding lvalues vs. rvalues. 412 4132007-11-05 Douglas Gregor <doug.gregor@gmail.com> 414 415 PR c++/33939 416 * pt.c (unify_pack_expansion): bring handling of function call 417 arguments into line with type_unification_real. 418 4192007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 420 421 * typeck.c (build_binary_op): Use pedwarn instead of error for 422 consistency. 423 4242007-11-05 Jakub Jelinek <jakub@redhat.com> 425 426 PR c++/33836 427 * parser.c (cp_parser_unary_expression): For &&label call 428 cp_parser_non_integral_constant_expression and return error_mark_node 429 if it returned true. 430 431 PR c++/33969 432 * decl.c (grokdeclarator): Don't call build_memfn_type if type 433 is neither FUNCTION_TYPE nor METHOD_TYPE. 434 4352007-11-02 Jakub Jelinek <jakub@redhat.com> 436 437 PR c++/33516 438 * parser.c (cp_parser_nested_name_specifier_opt): Use 439 TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete 440 typedef of currently open class. 441 4422007-11-02 Paolo Carlini <pcarlini@suse.de> 443 444 PR c++/33495 445 * error.c (dump_expr): Deal specially with statements. 446 4472007-11-01 Jason Merrill <jason@redhat.com> 448 449 PR c++/30897 450 * pt.c (push_template_decl_real): Set DECL_CONTEXT on template 451 template parms. 452 (lookup_template_class): Use it to get the outer template args 453 for instantiating one. 454 455 PR c++/29236 456 * pt.c (reduce_template_parm_level): tsubst the parameters 457 of a template template parm. 458 4592007-11-01 Douglas Gregor <doug.gregor@gmail.com> 460 461 PR c++/33955 462 * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE. 463 4642007-11-01 Jakub Jelinek <jakub@redhat.com> 465 466 PR c++/32384 467 * parser.c (cp_parser_postfix_dot_deref_expression): If 468 POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor 469 first and if that succeeds and type is SCALAR_TYPE_P, create 470 PSEUDO_DTOR_EXPR. 471 472 PR c++/32260 473 * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment. 474 (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo 475 as for std::type_info. 476 4772007-10-31 Paolo Carlini <pcarlini@suse.de> 478 479 PR c++/33494 480 * cxx-pretty-print.c (pp_cxx_typeid_expression, 481 pp_cxx_delete_expression): Change to static linkage. 482 * cxx-pretty-print.h: Adjust declarations. 483 * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR, 484 MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR, 485 MODOP_EXPR): Forward to pp_expression. 486 487 * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR): 488 Fix typo. 489 4902007-10-31 Christian Bruel <christian.bruel@st.com> 491 Mark Mitchell <mark@codesourcery.com> 492 493 PR c++/19531 494 * typeck.c (check_return_expr): Don't set named_return_value_okay_p 495 if retval is volatile. 496 4972007-10-30 Jakub Jelinek <jakub@redhat.com> 498 499 PR c++/33616 500 * decl2.c (build_offset_ref_call_from_tree): Call 501 build_non_dependent_expr on object prior to building ADDR_EXPR from it 502 if FN is DOTSTAR_EXPR. 503 5042007-10-30 Douglas Gregor <doug.gregor@gmail.com> 505 506 PR c++/31993 507 PR c++/32252 508 * pt.c (find_parameter_packs_r): Fix typo in comment. 509 (convert_template_argument): Look at the pattern of a pack 510 expansion to determine what kind of entity we're converting. 511 (coerce_template_parameter_pack): When we have coerced a non-type 512 template parameter pack, substitute into the type of that pack. 513 (tsubst_pack_expansion): When our substitution of a parameter pack 514 is a "trivial" substitution of itself, just substitute into the 515 pack expansion rather than actually expanding. 516 5172007-10-29 Jakub Jelinek <jakub@redhat.com> 518 519 PR c++/33841 520 * class.c (check_bitfield_decl): Don't set field's type to error_mark_node 521 for non-integral type bitfields. Return true if bitfield is correct, false 522 error has been diagnosed. 523 (check_field_decls): If check_bitfield_decl returned false, call also 524 check_field_decl. 525 5262007-10-28 Paolo Carlini <pcarlini@suse.de> 527 Mark Mitchell <mark@codesourcery.com> 528 529 PR c++/30659 530 * pt.c (do_decl_instantiation): If the VAR_DECL is not a 531 class member error out and return. 532 5332007-10-27 Jakub Jelinek <jakub@redhat.com> 534 535 * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope 536 to current_function_decl rather than 0. 537 538 PR c++/33844 539 * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print 540 ->* rather than .*. 541 * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR. 542 5432007-10-27 Jason Merrill <jason@redhat.com> 544 545 PR c++/5247 546 * call.c (convert_default_arg): Detect recursion. 547 5482007-10-27 Jakub Jelinek <jakub@redhat.com> 549 550 PR c++/33842 551 * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype. 552 * cxx-pretty-print.c (pp_cxx_primary_expression): Handle 553 OFFSETOF_EXPR. 554 (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New 555 functions. 556 * error.c (dump_expr): Handle OFFSETOF_EXPR. 557 5582007-10-26 Jason Merrill <jason@redhat.com> 559 560 PR c++/24791 561 * pt.c (get_template_info): New fn. 562 (template_class_depth): Use it. 563 (push_template_decl_real): Check that the template args of the 564 definition match the args of the previous declaration. 565 5662007-10-26 Paolo Carlini <pcarlini@suse.de> 567 568 PR c++/31988 569 * decl2.c (coerce_new_type): Do not allow a default argument for 570 the first parameter. 571 5722007-10-26 Douglas Gregor <doug.gregor@gmail.com> 573 574 PR c++/33839 575 * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we 576 don't see the leading '('. Only lookup names if we get an 577 IDENTIFIER_NODE. 578 5792007-10-26 Jakub Jelinek <jakub@redhat.com> 580 581 PR c++/33744 582 * parser.c (cp_parser_parenthesized_expression_list): Set 583 greater_than_is_operator_p to true in between the parens. 584 5852007-10-26 Paolo Carlini <pcarlini@suse.de> 586 587 PR c++/31747 588 * decl.c (grokdeclarator): In case of conflicting specifiers 589 just return error_mark_node. 590 5912007-10-26 Ollie Wild <aaw@google.com> 592 593 * expr.c (cxx_expand_expr): Removed. 594 * cp-tree.h (exx_expand_expr): Removed. 595 * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr 596 with c_expand_expr. 597 5982007-10-25 Paolo Carlini <pcarlini@suse.de> 599 600 PR c++/33843 601 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR. 602 6032007-10-23 Jason Merrill <jason@redhat.com> 604 605 PR c++/25950 (DR 391) 606 * call.c (struct conversion): Remove check_copy_constructor_p. 607 (reference_binding): Always bind a reference directly to a 608 compatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND during 609 temporary creation. 610 (check_constructor_callable): Remove. 611 (convert_like_real): Don't call it. 612 (initialize_reference): Don't call check_constructor_callable. 613 (standard_conversion): Check LOOKUP_NO_CONVERSION instead of 614 LOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for base 615 conversions if LOOKUP_NO_TEMP_BIND. 616 (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND. 617 (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for 618 second conversion. 619 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove. 620 6212007-10-22 Jakub Jelinek <jakub@redhat.com> 622 623 PR c++/33372 624 * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p 625 before checking if its type is integral. 626 6272007-10-22 Jason Merrill <jason@redhat.com> 628 629 PR c++/33620 630 * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES. 631 * pt.c (apply_late_template_attributes): Splice out dependent 632 attributes from DECL_ATTRIBUTES. 633 634 * decl.c (cxx_maybe_build_cleanup): Use build_address. 635 6362007-10-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 637 638 * typeck.c (build_binary_op) : Use appropriate warning option 639 instead of unnamed warning. 640 6412007-10-16 Paolo Carlini <pcarlini@suse.de> 642 643 PR c++/31446 644 * pt.c (current_template_args): Do not change TREE_LIST elements 645 with a TREE_VALUE of error_mark_node. 646 6472007-10-16 Mark Mitchell <mark@codesourcery.com> 648 649 * typeck.c (cp_apply_type_quals_to_decl): Expand documentation. 650 * decl.c (start_decl): Tidy. 651 (start_decl_1): Call cp_apply_type_quals_to_decl after completing 652 the type. 653 (grokdeclarator): Clarify comment. 654 6552007-10-14 Andrew Pinski <pinskia@gmail.com> 656 657 PR c++/30303 658 * decl.c (grokfndecl): Return NULL after the "definition of 659 implicitly-declared" error happened. 660 6612007-10-12 Simon Martin <simartin@users.sourceforge.net> 662 663 PR c++/26698 664 * call.c (build_user_type_conversion_1): Do not consider conversion 665 functions to convert a (possibly cv-qualified) object to the (possibly 666 cv-qualified) same object type (or a reference to it), to a (possibly 667 cv-qualified) base class of that type (or a reference to it). 668 6692007-10-12 Paolo Carlini <pcarlini@suse.de> 670 671 * pt.c (tsubst): Use template_parm_level_and_index. 672 6732007-10-12 Jakub Jelinek <jakub@redhat.com> 674 675 PR c++/32121 676 * parser.c (cp_parser_compound_statement): Handle label-declarations 677 at the beginning of the compound statement. 678 (cp_parser_block_declaration): Issue diagnostics about __label__ 679 not at the beginning of a block. 680 6812007-10-11 Paolo Carlini <pcarlini@suse.de> 682 683 PR c++/33461 684 * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node 685 to convert_template_argument. 686 (coerce_template_parms): Return error_mark_node after fixed-length 687 error. 688 (tsubst_decl): Check for error_mark_node the return value of the 689 first tsubst in 'case VAR_DECL'. 690 6912007-10-08 Ollie Wild <aaw@google.com> 692 693 * typeck2.c (digest_init): Call cplus_expand_constant after 694 convert_for_initialization. 695 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. 696 * expr.c (cplus_expand_constant): Updated function description. 697 6982007-10-04 Jason Merrill <jason@redhat.com> 699 700 PR c++/20416 701 * call.c (initialize_reference): Handle local static reference 702 temps properly. 703 7042007-10-03 Jason Merrill <jason@redhat.com> 705 706 PR c++/32470 707 * name-lookup.c (push_namespace_with_attrs): Fold back into... 708 (push_namespace): Here. 709 (handle_namespace_attrs): New fn for the attr code. 710 (leave_scope): Don't pop_visibility. 711 * name-lookup.h (struct cp_binding_level): Remove has_visibility. 712 * parser.c (cp_parser_namespace_definition): Call 713 handle_namespace_attrs and pop_visibility as appropriate. 714 715 PR c++/11756 716 * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry. 717 7182007-10-03 Alexandre Oliva <aoliva@redhat.com> 719 720 * decl.c (duplicate_decls): Preserve linkage flags for mere 721 redeclarations of gnu_inline definitions. 722 7232007-10-03 Jason Merrill <jason@redhat.com> 724 725 PR c++/15764 726 * decl.c (wrap_cleanups_r): New fn. 727 (wrap_temporary_cleanups): New fn. 728 (initialize_local_var): Call it. 729 7302007-09-29 Jason Merrill <jason@redhat.com> 731 732 PR c++/33094 733 * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member 734 constant to not have DECL_EXTERNAL if it's file-local. 735 7362007-09-28 Ollie Wild <aaw@google.com> 737 738 Revert 739 2007-09-27 Ollie Wild <aaw@google.com> 740 741 * typeck2.c (digest_init): Call cplus_expand_constant after 742 convert_for_initialization. 743 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. 744 * expr.c (cplus_expand_constant): Updated function description. 745 7462007-09-28 Jason Merrill <jason@redhat.com> 747 748 PR c++/10179 749 * class.c (layout_empty_base): Take rli parameter, update 750 rli->record_align if empty base has user-specified alignment. 751 (build_base_field): Pass rli to it. 752 7532007-09-28 Paolo Carlini <pcarlini@suse.de> 754 755 PR c++/33213 756 * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION. 757 7582007-09-28 Paolo Carlini <pcarlini@suse.de> 759 760 PR c++/33118 761 * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT. 762 (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK. 763 (dump_parameters): Just call dump_type for argument packs too. 764 7652007-09-28 Jakub Jelinek <jakub@redhat.com> 766 767 PR c++/31434 768 * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION 769 qualification by creating qualified PACK_EXPANSION_PATTERN and 770 then calling make_pack_expansion on it. 771 7722007-09-27 Ollie Wild <aaw@google.com> 773 774 * typeck2.c (digest_init): Call cplus_expand_constant after 775 convert_for_initialization. 776 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. 777 * expr.c (cplus_expand_constant): Updated function description. 778 7792007-09-27 Jason Merrill <jason@redhat.com> 780 781 PR c++/33571 782 * decl2.c (is_late_template_attribute): Don't crash on unknown 783 attribute. 784 7852007-09-27 Paolo Carlini <pcarlini@suse.de> 786 787 PR c++/33493 788 * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR. 789 * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing 790 spaces in the formatting. 791 * cxx-pretty-print.h (pp_cxx_delete_expression): Declare. 792 7932007-09-27 Jakub Jelinek <jakub@redhat.com> 794 795 * error.c (cxx_print_error_function): Add third argument, pass 796 it over to lhd_print_error_function. 797 (cp_print_error_function): If diagnostic->abstract_origin, print 798 virtual backtrace. 799 * cp-tree.h (struct diagnostic_info): New forward decl. 800 (cxx_print_error_function): Add third argument. 801 8022007-09-25 Simon Martin <simartin@users.sourceforge.net> 803 804 PR c++/33207 805 * name-lookup.c (pushtag): Do not create an implicit typedef before 806 the associated type declaration is known to be valid. 807 8082007-09-25 Jakub Jelinek <jakub@redhat.com> 809 810 * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids 811 rather than pointers. 812 8132007-09-24 Danny Smith <dannysmith@user.sourceforge.net> 814 815 PR c++/14688 816 * search.c (check_final_overrider): Fail if 817 targetm.comp_type_attributes returns 0. 818 8192007-09-24 Jason Merrill <jason@redhat.com> 820 821 PR c++/33239 822 * pt.c (resolve_typename_type): Don't look things up in the original 823 template if it would mean losing template arguments. 824 8252007-09-24 Jakub Jelinek <jakub@redhat.com> 826 827 PR c++/33506 828 * cp-tree.h (cxx_type_hash_eq): New prototype. 829 * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine. 830 * tree.c (cxx_type_hash_eq): New function. 831 8322007-09-24 Douglas Gregor <doug.gregor@gmail.com> 833 834 PR c++/33185 835 * tree.c (cp_build_qualified_type_real): Build a canonical 836 ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type. 837 8382007-09-24 Douglas Gregor <doug.gregor@gmail.com> 839 840 PR c++/33112 841 PR c++/33185 842 * tree.c (cplus_array_compare): Compare pointers, not types. 843 (build_cplus_array_type_1): Store new array type into the hash 844 table before building the canonical type; build the canonical type 845 correctly. 846 (cp_build_qualified_type_real): Put all of the array types with 847 cv-qualified element types into the C++ array hash table, built as 848 variants of the unqualified versions. 849 8502007-09-23 Jason Merrill <jason@redhat.com> 851 852 PR c++/16370 853 * decl.c (grokdeclarator): Look through implicit TYPE_DECLs 854 for deprecation warnings. 855 8562007-09-22 Jason Merrill <jason@redhat.com> 857 858 PR c++/15269 859 * call.c (build_over_call): Warn about deprecated virtuals. 860 861 PR c++/19407 862 * cp-tree.h (ATTR_IS_DEPENDENT): New macro. 863 (MAYBE_TAGGED_TYPE_P): Remove. 864 * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT 865 instead of calling is_late_template_attribute again. 866 (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag. 867 (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL. 868 Don't crash on typedefs from non-template classes. 869 * decl2.c (grokfield): Don't sorry about attrs on template parms. 870 (is_late_template_attribute): All attributes applied to template 871 parms or typename types are dependent. Static. 872 (splice_template_attributes): Pass decl through. 873 (save_template_attributes): Likewise. 874 8752007-09-20 Jakub Jelinek <jakub@redhat.com> 876 877 PR c++/33496 878 * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node 879 returned from tsubst_pack_expansion. 880 (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise. 881 (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise. 882 8832007-09-20 Paolo Carlini <pcarlini@suse.de> 884 885 PR c++/33460 886 * semantics.c (finish_id_expression): Use consistently 887 context_for_name_lookup. 888 * decl.c (fixup_anonymous_aggr): Fix error message for 889 anonymous struct (vs union). 890 8912007-09-19 Jason Merrill <jason@redhat.com> 892 893 PR c++/7586 894 * pt.c (tsubst): Handle typedefs by looking for the specialization. 895 (retrieve_specialization): Only tagged types use 896 DECL_TEMPLATE_INSTANTIATIONS. 897 (instantiate_class_template): Push nested classes too. 898 (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for 899 tagged types. 900 * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro. 901 * init.c (is_aggr_type): Remove redundant tests. 902 * class.c (push_nested_class): Use CLASS_TYPE_P. 903 9042007-09-20 Paolo Carlini <pcarlini@suse.de> 905 906 PR c++/33459 907 * init.c (build_zero_init): If, recursively, build_zero_init 908 returns a NULL_TREE, do not append it to the VEC of constructors. 909 9102007-09-18 Jason Merrill <jason@redhat.com> 911 912 PR c++/17743 913 * pt.c (apply_late_template_attributes): Set processing_template_decl. 914 (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass 915 ATTR_FLAG_TYPE_IN_PLACE. 916 (tsubst): Do unqualified lookup to find typedefs from current class. 917 [ARRAY_TYPE]: Propagate alignment info. 918 * decl2.c (is_late_template_attribute): Only defer handling of 919 attribute aligned if the expression is dependent. 920 (save_template_attributes): If we're deferring any attributes, 921 make this a naming typedef. 922 9232007-09-18 Paolo Carlini <pcarlini@suse.de> 924 925 PR c++/33462 (again) 926 * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print 927 va_arg instead of __builtin_va_arg. 928 9292007-09-18 Paolo Carlini <pcarlini@suse.de> 930 931 PR c++/33462 932 * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add. 933 (pp_cxx_primary_expression): Use it. 934 * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare. 935 * error.c (dump_expr): Use it. 936 9372007-09-18 Paolo Carlini <pcarlini@suse.de> 938 939 PR c++/33463 940 * cxx-pretty-print.c (pp_cxx_postfix_expression): Split 941 out case TYPEID_EXPR to... 942 (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren 943 and pp_cxx_right_paren. 944 * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare. 945 * error.c (dump_expr): Use it. 946 9472007-09-18 Paolo Carlini <pcarlini@suse.de> 948 949 PR c++/33464 950 * cxx-pretty-print.c (pp_cxx_trait_expression): Add. 951 (pp_cxx_primary_expression): Use it. 952 * cxx-pretty-print.h (pp_cxx_trait_expression): Declare. 953 * error.c (dump_expr): Use it. 954 9552007-09-16 Paolo Carlini <pcarlini@suse.de> 956 957 PR c++/33124 958 * init.c (build_new): Remove warning for zero-element 959 allocations. 960 9612007-09-16 Nathan Sidwell <nathan@codesourcery.com> 962 963 PR c++/32756 964 * call.c (maybe_handle_implicit_object): Set this_p, clear 965 rvaluedness_matches_p. 966 (compare_ics): Do not compare rvaluedness matching when one of the 967 operands is an implicit object. 968 9692007-09-14 Jason Merrill <jason@redhat.com> 970 971 PR c++/17743, c++/19163 972 * decl2.c (is_late_template_attribute): New fn. 973 (splice_template_attributes, save_template_attributes): New fns. 974 (cplus_decl_attributes): Call save_template_attributes. 975 * pt.c (apply_late_template_attributes): New fn. 976 (instantiate_class_template, tsubst_decl): Use it. 977 * cp-tree.h: Declare is_late_template_attribute. 978 9792007-09-13 Tom Tromey <tromey@redhat.com> 980 981 * parser.c (cp_lexer_new_main): Don't use 982 c_lex_return_raw_strings. 983 (cp_lexer_get_preprocessor_token): Update. Add special case when 984 lexer is NULL. 985 9862007-09-11 Jan Hubicka <jh@suse.cz> 987 988 * method.c (use_thunk): Use tree_rest_of_compilation 989 * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. 990 (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define. 991 * cp-tree.h (expand_body): Kill. 992 (emit_associated_thunks): Declare. 993 * semantics.c (emit_associated_thunks): Export. 994 (expand_body): Kill. 995 9962007-09-09 David Daney <ddaney@avtrex.com> 997 998 PR c++/33324 999 * init.c (build_new_1): Use POINTER_PLUS_EXPR instead of MINUS_EXPR 1000 to calculate cookie_ptr. 1001 10022007-09-08 Jason Merrill <jason@redhat.com> 1003 1004 PR c++/33342 1005 * pt.c (most_specialized_class): Set processing_template_decl 1006 while tsubsting partial spec args. 1007 10082007-09-06 Jason Merrill <jason@redhat.com> 1009 1010 * decl2.c (get_guard): Copy visibility from the guarded variable. 1011 10122007-09-06 Jan Hubicka <jh@suse.cz> 1013 1014 * semantics.c (expand_body): Do not mark arguments of clones used. 1015 10162007-09-06 Paolo Carlini <pcarlini@suse.de> 1017 1018 PR c++/32674 1019 * decl.c (cp_finish_decl): When processing_template_decl, 1020 deal correctly with init as TREE_LIST. 1021 10222007-09-06 Tom Tromey <tromey@redhat.com> 1023 1024 * decl.c (finish_function): Put return's location on line zero of 1025 file. 1026 10272007-09-05 Jason Merrill <jason@redhat.com> 1028 1029 PR c++/15745 1030 * except.c (prepare_eh_type): Use type_decays_to. 1031 1032 PR c++/15097 1033 * init.c (build_delete): Use build_headof to get the address of the 1034 complete object if we aren't using the deleting destructor. 1035 * rtti.c (build_headof): No longer static. 1036 * cp-tree.h: Declare it. 1037 10382007-09-06 Jakub Jelinek <jakub@redhat.com> 1039 1040 * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX 1041 decl if a prototype for XX is provided with throw(). 1042 1043 PR c++/33289 1044 * decl.c (builtin_function_1): Set DECL_ANTICIPATED also 1045 on __*_chk non-__builtin_* decls. 1046 10472007-09-05 Paolo Carlini <pcarlini@suse.de> 1048 1049 PR c++/30302 1050 * semantics.c (finish_id_expression): Use context_for_name_lookup 1051 insted of DECL_CONTEXT, to see through anonymous structs and unions. 1052 * class.c (finish_struct_anon): Deal correctly with anonymous 1053 structs (vs unions, as GNU extension) in error messages. 1054 10552007-09-05 Jan Hubicka <jh@suse.cz> 1056 1057 * sematics.c (expand_body): Remove unnecesary import_export_decl 1058 call, DECL_EXTERNAL checks and current_function_decl saving. 1059 10602007-09-05 Paolo Carlini <pcarlini@suse.de> 1061 1062 PR c++/29731 (again) 1063 * parser.c (cp_parser_primary_expression): Return error_mark_node 1064 when a statement-expression is found in a template-argument list. 1065 10662007-09-04 Jason Merrill <jason@redhat.com> 1067 1068 * except.c (initialize_handler_parm): Use 1069 fold_build_cleanup_point_expr. 1070 1071 PR c++/31419 1072 * call.c (reference_binding): Don't look for user-defined conversions 1073 to the same type. 1074 1075 PR c++/31411 1076 * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside 1077 the MUST_NOT_THROW_EXPR. 1078 10792007-09-04 Richard Sandiford <richard@codesourcery.com> 1080 1081 * decl.c (cp_finish_decl): Call determine_visibility before 1082 make_rtl_for_nonlocal_decl. 1083 10842007-09-04 Jason Merrill <jason@redhat.com> 1085 1086 PR c++/14032 1087 * pt.c (most_specialized_class): Substitute outer template 1088 arguments into the arguments of a member template partial 1089 specialization. 1090 (strip_innermost_template_args): New fn. 1091 10922007-09-03 Daniel Jacobowitz <dan@codesourcery.com> 1093 1094 * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB. 1095 10962007-09-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1097 1098 * call.c (name_as_c_string): Supply a TYPE for CONST_CAST. 1099 * decl.c (cp_make_fname_decl): Likewise, 1100 * parser.c (cp_parser_string_literal): Likewise, 1101 * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE. 1102 * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p): 1103 Likewise, 1104 11052007-09-02 Paolo Carlini <pcarlini@suse.de> 1106 1107 PR c++/33208 1108 * typeck.c (build_unary_op): Fix error message for 1109 Boolean expression as operand to operator--. 1110 11112007-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1112 1113 * tree.c (pod_type_p, zero_init_p): Use strip_array_types. 1114 * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p): 1115 Likewise. 1116 11172007-08-31 Douglas Gregor <doug.gregor@gmail.com> 1118 1119 PR c++/32597 1120 * init.c (build_default_init): Make extern. 1121 * cp-tree.h (build_default_init): Declare here. 1122 * pt.c (tsubst_expr): When the instantiation of the initializer of 1123 a variable results in an empty list, default-initialize the 1124 variable. 1125 (tsubst_copy_and_build): When the instantiation of the initializer 1126 in a new expression results in an empty initializer list, 1127 default-initialize it. 1128 11292007-08-31 Douglas Gregor <doug.gregor@gmail.com> 1130 1131 * mangle.c (write_type): Change mangling of rvalue reference from 1132 `RR' to `O'. 1133 11342007-08-31 Jakub Jelinek <jakub@redhat.com> 1135 1136 * decl.c (duplicate_decls): Remove duplicated line. 1137 11382007-08-31 Paolo Carlini <pcarlini@suse.de> 1139 1140 PR c++/33210 1141 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with 1142 BOUND_TEMPLATE_TEMPLATE_PARM. 1143 11442007-08-31 Paolo Carlini <pcarlini@suse.de> 1145 1146 PR c++/32113 1147 * search.c (lookup_member): Check the name argument for 1148 error_mark_node. 1149 11502007-08-31 Paolo Carlini <pcarlini@suse.de> 1151 1152 PR c++/33212 1153 * parser.c (cp_parser_trait_expr): Check rerurn value of 1154 cp_parser_type_id. 1155 11562007-08-30 Ollie Wild <aaw@google.com> 1157 1158 * cvt.c (cp_convert_to_pointer): Remove force parameter. Call 1159 convert_ptrmem for pointer to member conversions. 1160 (convert_to_pointer_force): Update cp_convert_to_pointer call. 1161 (ocp_convert): Update cp_convert_to_pointer call. 1162 * typeck.c (convert_ptrmem): Add conditional for null pointers to 1163 members. 1164 (build_static_cast_1): Check can_convert for conversions in either 1165 direction. 1166 (get_delta_difference_1): New function. 1167 (get_delta_difference): Refactor to call get_delta_difference_1. 1168 11692007-08-30 Jakub Jelinek <jakub@redhat.com> 1170 1171 * decl.c (start_preparsed_function): Set 1172 DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions. 1173 11742007-08-28 Paolo Carlini <pcarlini@suse.de> 1175 1176 PR c++/33209 1177 * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and 1178 BOUND_TEMPLATE_TEMPLATE_PARM. 1179 11802007-08-28 Jakub Jelinek <jakub@redhat.com> 1181 1182 PR c++/32596 1183 PR c++/32400 1184 * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN 1185 and DECL_NOT_REALLY_EXTERN if tmpl_func is not public. 1186 11872007-08-27 Jason Merrill <jason@redhat.com> 1188 1189 PR c++/29000 1190 * pt.c (build_non_dependent_expr, type_dependent_expression_p): 1191 Look inside STMT_EXPR. 1192 * semantics.c (stmt_expr_value_expr): New fn. 1193 * cp-tree.h: Declare it. 1194 1195 PR c++/28558 1196 * decl.c (groktypename): Ignore attributes applied to class type. 1197 11982007-08-28 Richard Guenther <rguenther@suse.de> 1199 1200 * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS. 1201 12022007-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net> 1203 1204 * error.c (dump_expr): Handle COMPLEX_CST. 1205 * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise. 1206 (pp_cxx_expression): Likewise. 1207 12082007-08-27 Alexandre Oliva <aoliva@redhat.com> 1209 1210 * decl.c (GNU_INLINE_P): New. 1211 (duplicate_decls): Handle gnu_inline. Merge attributes and 1212 some flags in overriding definitions. 1213 (redeclaration_error_message): Handle gnu_inline. 1214 (start_preparsed_function): Likewise. 1215 12162007-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1217 1218 * call.c (sufficient_parms_p): Constify. 1219 * class.c (same_signature_p): Likewise. 1220 * cp-gimplify.c (is_invisiref_parm, 1221 cxx_omp_privatize_by_reference): Likewise. 1222 * cp-objcp-common.c (has_c_linkage): Likewise. 1223 * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK, 1224 sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p, 1225 grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for, 1226 num_artificial_parms_for, comp_template_parms, 1227 template_parameter_pack_p, any_dependent_template_arguments_p, 1228 any_type_dependent_arguments_p, any_value_dependent_elements_p, 1229 repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p, 1230 zero_init_p, member_p, cp_lvalue_kind, 1231 builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p, 1232 varargs_function_p, is_dummy_object, special_function_kind, 1233 string_conv_p, type_unknown_p, comp_except_specs, compparms, 1234 comp_cv_qualification, is_bitfield_expr_with_lowered_type, 1235 unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly, 1236 cp_has_mutable_p, at_least_as_qualified_p, 1237 invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise. 1238 * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise. 1239 * except.c (nothrow_libfn_p): Likewise. 1240 * method.c (skip_artificial_parms_for, num_artificial_parms_for): 1241 Likewise. 1242 * pt.c (comp_template_parms, template_parameter_pack_p, 1243 any_type_dependent_arguments_p, any_value_dependent_elements_p, 1244 any_dependent_template_arguments_p): Likewise. 1245 * repo.c (repo_export_class_p): Likewise. 1246 * semantics.c (anon_aggr_type_p): Likewise. 1247 * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p, 1248 builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p, 1249 varargs_function_p, member_p, is_dummy_object, pod_type_p, 1250 zero_init_p, special_function_p): Likewise. 1251 * typeck.c (comp_array_types, type_unknown_p, comp_except_specs, 1252 comp_array_types, at_least_as_qualified_p, comp_cv_qualification, 1253 compparms, invalid_nonstatic_memfn_p, 1254 is_bitfield_expr_with_lowered_type, unlowered_expr_type, 1255 string_conv_p, ptr_reasonably_similar, cp_type_readonly, 1256 cp_has_mutable_p, lvalue_or_else): Likewise. 1257 12582007-08-25 Paolo Bonzini <bonzini@gnu.org> 1259 1260 * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case. 1261 * cp-objcp-common.c (cp_tree_size): Ditto. 1262 * tree.c (cp_walk_subtrees): Ditto 1263 * cp-tree.def (TINST_LEVEL): Go away. 1264 * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level, 1265 move together with other non-tree structs. 1266 (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL. 1267 (union lang_tree_node): Eliminate tinst_level field. 1268 (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate. 1269 (current_instantiation, outermost_tinst_level): Return 1270 a "struct tinst_level *". 1271 1272 * error.c (print_instantiation_partial_context): Change second 1273 parameter to a "struct tinst_level *". Replace accessor macros 1274 with field access. 1275 (print_instantiation_full_context): Likewise. 1276 * lex.c (in_main_input_context): Likewise. 1277 1278 * pt.c (struct pending_templates): New. 1279 (pending_templates, last_pending_template): Use it as a type. 1280 (current_tinst_level): Change typo to "struct tinst_level *" 1281 (reopen_tinst_level): Accept "struct tinst_level *", return decl. 1282 (add_pending_template): Construct a "struct pending_template". 1283 Replace TINST_LEVEL accessor macros with field access. 1284 (push_tinst_level): Likewise, using GGC_NEW instead of make_node. 1285 (pop_tinst_level): Likewise. 1286 (instantiate_pending_templates): Likewise. Factor common code used 1287 when an instantiation has been done. 1288 (outermost_tinst_level): Replace tree_last with loop. 1289 (current_instantiation): Return a "struct tinst_level *". 1290 12912007-08-24 Ollie Wild <aaw@google.com> 1292 1293 * name-lookup.c (add_decl_to_level): Remove addition to vtables chain. 1294 * name-lookup.h (cp_binding_level): Remove vtables member. 1295 12962007-08-24 Richard Guenther <rguenther@suse.de> 1297 1298 * tree.c (cp_cannot_inline_tree_fn): Remove. 1299 * cp-tree.h (cp_cannot_inline_tree_fn): Likewise. 1300 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): 1301 Remove define. 1302 13032007-08-24 Jakub Jelinek <jakub@redhat.com> 1304 1305 PR c++/32567 1306 * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return 1307 error_mark_node right away if build_expr_type_conversion 1308 returned it. 1309 1310 PR c++/32898 1311 * name-lookup.c (set_decl_namespace): lookup_qualified_name failure 1312 is error_mark_node rather than NULL_TREE. 1313 * pt.c (check_explicit_specialization): Likewise. 1314 1315 PR c++/31941 1316 * error.c (resolve_virtual_fun_from_obj_type_ref): Handle 1317 TARGET_VTABLE_USES_DESCRIPTORS targets properly. 1318 13192007-08-22 Jason Merrill <jason@redhat.com> 1320 1321 PR c++/29365 1322 * pt.c (outermost_tinst_level): New function. 1323 * lex.c (in_main_input_context): New function. 1324 * cp-tree.h: Declare it. 1325 * decl2.c (constrain_class_visibility): Use it to avoid warning 1326 about uses of the anonymous namespace in the main input file. 1327 13282007-08-21 Jakub Jelinek <jakub@redhat.com> 1329 1330 * init.c (build_new_1): Use get_target_expr instead of save_expr. 1331 13322007-08-20 Pawel Sikora <pluto@pld-linux.org> 1333 1334 PR c++/7302 1335 * class.c (finish_struct_1): Warn when a class has virtual 1336 functions and accessible non-virtual destructor. 1337 13382007-08-20 Richard Guenther <rguenther@suse.de> 1339 1340 PR c++/22369 1341 PR c++/22451 1342 * call.c (build_new_method_call): Convert initializer to 1343 the basetype. 1344 * init.c (build_aggr_init): Do not fiddle with types. 1345 (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR. 1346 * except.c (build_throw): Do not drop qualifiers for the 1347 pointer type. 1348 * typeck.c (get_member_function_from_ptrfunc): Do not 1349 fiddle with types, instead convert. 1350 (build_ptrmemfunc1): Convert to the target type for 1351 initialization. 1352 (gfc_trans_allocate): Convert result to target type. 1353 * cp-objcp-common.c (cxx_get_alias_set): Pointers to 1354 pointer-to-member structures shall have alias set zero as well. 1355 13562007-08-20 Richard Guenther <rguenther@suse.de> 1357 1358 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): 1359 Remove. 1360 * cp-tree.h (cp_auto_var_in_fn_p): Remove. 1361 (nonstatic_local_decl_p): Likewise. 1362 * tree.c (cp_auto_var_in_fn_p): Remove. 1363 * decl.c (nonstatic_local_decl_p): Remove. 1364 13652007-08-20 Richard Guenther <rguenther@suse.de> 1366 1367 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): 1368 Remove define. 1369 * tree.h (cp_walk_tree): New define to walk_tree_1 with 1370 cp_walk_subtrees lh parameter. 1371 (cp_walk_tree_without_duplicates): New define to 1372 walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter. 1373 * tree.c (count_trees): Call 1374 cp_walk_tree_without_duplicates. 1375 (verify_stmt_tree): Call cp_walk_tree. 1376 (break_out_target_exprs): Likewise. 1377 (WALK_SUBTREE): Likewise. 1378 * cp-gimplify.c (cp_genericize): Likewise. 1379 * cp-pt.c (find_parameter_packs_r): Likewise. 1380 (uses_parameter_packs): Likewise. 1381 (make_pack_expansion): Likewise. 1382 (check_for_bare_parameter_packs): Likewise. 1383 (for_each_template_parm): Likewise. 1384 * decl.c (check_default_argument): Call 1385 cp_walk_tree_without_duplicates. 1386 * except.c (build_throw): Likewise. 1387 * decl2.c (type_visibility): Likewise. 1388 * semantics.c (expand_or_defer_fn): Likewise. 1389 (finalize_nrv): Call cp_walk_tree. 1390 13912007-08-20 Jakub Jelinek <jakub@redhat.com> 1392 1393 PR c++/33025 1394 * init.c (build_new_1): Rename placement_var variable to placement_expr. 1395 Initialize it with save_expr rather than get_temp_regvar. 1396 13972007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com> 1398 1399 PR c++/28989 1400 * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never 1401 lvalues. 1402 14032007-08-17 Ollie Wild <aaw@google.com> 1404 1405 PR c++/31749 1406 * name-lookup.c (do_nonmember_using_decl): Shift implicit type 1407 declarations into appropriate slots for comparison. Fix type 1408 comparison. 1409 14102007-08-17 Paolo Carlini <pcarlini@suse.de> 1411 1412 PR c++/32112 1413 * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE. 1414 * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. 1415 14162007-08-17 Paolo Carlini <pcarlini@suse.de> 1417 1418 PR c++/32870 1419 * parser.c (cp_parser_class_head): Improve error message. 1420 14212007-08-16 Seongbae Park <seongbae.park@gmail.com> 1422 1423 * pt.c (instantiate_decl): Set input_location 1424 for the function end. 1425 14262007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1427 1428 * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size): 1429 Constify. 1430 * cp-tree.h (local_variable_p, nonstatic_local_decl_p, 1431 class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals, 1432 cxx_incomplete_type_diagnostic, cxx_incomplete_type_error, 1433 cxx_warn_unused_global_decl, cp_expr_size): Likewise. 1434 * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise. 1435 * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise. 1436 * typeck.c (cp_type_quals): Likewise. 1437 * typeck2.c (cxx_incomplete_type_diagnostic, 1438 cxx_incomplete_type_error): Likewise. 1439 14402007-08-16 Paolo Carlini <pcarlini@suse.de> 1441 1442 PR c++/31132 1443 * pt.c (tsubst_friend_function): When check_classfn 1444 returns error_mark_node likewise return it. 1445 14462007-08-15 Jakub Jelinek <jakub@redhat.com> 1447 1448 PR c++/32992 1449 * typeck.c (check_return_expr): Don't NRV optimize vars in 1450 anonymous unions. 1451 * decl.c (finish_function): Comment fix. 1452 14532007-08-15 Paolo Carlini <pcarlini@suse.de> 1454 1455 PR c++/33035 1456 * pt.c (push_template_decl_real): Depending on TYPE_P 1457 use either TYPE_CONTEXT or DECL_CONTEXT. 1458 14592007-08-14 Mark Mitchell <mark@codesourcery.com> 1460 1461 * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if 1462 constructors and destructors return this. 1463 14642007-08-14 Paolo Carlini <pcarlini@suse.de> 1465 1466 PR c++/27211 1467 * decl2.c (check_classfn): Return error_mark_node in case of error; 1468 in that case, do not call add_method. 1469 * decl.c (start_decl): Deal with check_classfn returning 1470 error_mark_node. 1471 (grokfndecl): Likewise. 1472 * pt.c (tsubst_friend_function): Likewise. 1473 14742007-08-14 Andrew Pinski <pinskia@gmail.com> 1475 1476 PR c++/30428 1477 * typeck.c (build_binary_op): Disallow vector float types with 1478 BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR. 1479 14802007-08-11 Ian Lance Taylor <iant@google.com> 1481 1482 * cp-objcp-common.c (cxx_get_alias_set): Change return type to 1483 alias_set_type. 1484 * cp-tree.h (cxx_get_alias_set): Update declaration. 1485 14862007-08-10 Ollie Wild <aaw@google.com> 1487 1488 * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous 1489 type lookups. 1490 (ambiguous_decl): Construct tree of ambiguous types. Remove extaneous 1491 function parameter. 1492 (unqualified_namespace_lookup): Fix ambiguous_decl call. 1493 (lookup_using_namespace): Fix ambiguous_decl call. 1494 (qualified_lookup_using_namespace): Fix ambiguous_decl call. 1495 14962007-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1497 1498 * call.c (name_as_c_string): Use CONST_CAST. 1499 * decl.c (build_decl): Likewise. 1500 * parser.c (cp_parser_string_literal): Likewise. 1501 15022007-08-10 Paolo Carlini <pcarlini@suse.de> 1503 1504 PR c++/17763 1505 * error.c (dump_expr): Consistently use the *_cxx_* 1506 variants of the pretty-print functions. 1507 15082007-08-10 Paolo Carlini <pcarlini@suse.de> 1509 1510 PR c++/22256 1511 * decl.c (check_special_function_return_type): Just error 1512 on return type specified for conversion operator. 1513 15142007-08-09 Daniel Berlin <dberlin@dberlin.org> 1515 1516 * typeck2.c (readonly_error): Handle general expressions. 1517 * error.c (dump_expr): Handle POINTER_PLUS_EXPR 1518 15192007-08-06 Dan Hipschman <dsh@google.com> 1520 1521 * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to 1522 access function name. 1523 15242007-08-04 Alfred Minarik <a.minarik@aon.at> 1525 1526 PR pch/13676 1527 * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header. 1528 * g++spec.c (lang_specific_driver): Check them. 1529 15302007-08-06 Paolo Carlini <pcarlini@suse.de> 1531 1532 PR c++/19532 1533 * pt.c (inline_needs_template_parms): Fix comment; change return type 1534 to bool. 1535 15362007-08-05 Volker Reichelt <v.reichelt@netcologne.de> 1537 1538 Revert: 1539 2007-03-26 Dirk Mueller <dmueller@suse.de> 1540 1541 * parser.c (cp_parser_member_declaration): Pedwarn 1542 about stray semicolons after member declarations. 1543 15442007-08-02 Lee Millward <lee.millward@gmail.com> 1545 1546 PR c++/30849 1547 PR c++/30850 1548 PR c++/30851 1549 * parser.c (cp_parser_asm_definition): Detect and discard asm 1550 statements with invalid inputs or outputs. 1551 (cp_parser_asm_operand_list): Return error mark node if any 1552 of the operands are invalid. Adjust documentation. 1553 15542007-08-02 Nick Clifton <nickc@redhat.com> 1555 1556 * typeck.c: Change copyright header to refer to version 3 of the 1557 GNU General Public License and to point readers at the COPYING3 1558 file and the FSF's license web page. 1559 * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c, 1560 config-lang.in, cp-tree.def, call.c, decl.h, ptree.c, 1561 Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c, 1562 cp-objcp-common.h, except.c, error.c, operators.def, cvt.c, 1563 tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c, 1564 cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c, 1565 cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c, 1566 name-lookup.h, parser.c: Likewise. 1567 15682007-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1569 1570 PR middle-end/32668 1571 * call.c (magic_varargs_p): Honor the "type generic" attribute. 1572 15732007-07-30 Paolo Carlini <pcarlini@suse.de> 1574 1575 PR c++/32108 1576 * semantics.c (finish_label_stmt): Reject the __label__ 1577 extension outside function scopes. 1578 15792007-07-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1580 1581 * parser.c (eof_token): Un-constify. 1582 (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc, 1583 cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious 1584 casts. 1585 15862007-07-28 Kazu Hirata <kazu@codesourcery.com> 1587 1588 * pt.c, tree.c, typeck2.c: Fix comment typos. 1589 15902007-07-28 Simon Martin <simartin@users.sourceforge.net> 1591 Mark Mitchell <mark@codesourcery.com> 1592 1593 PR c++/30917 1594 * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be 1595 hidden due to friend declarations in local classes. 1596 15972007-07-27 Douglas Gregor <doug.gregor@gmail.com> 1598 1599 * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes. 1600 * cp-tree.def (DECLTYPE_TYPE): New. 1601 * error.c (dump_type): Dump DECLTYPE_TYPE nodes. 1602 (dump_type_prefix): Ditto. 1603 (dump_type_suffix): Ditto. 1604 * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes. 1605 * mangle.c (write_type): Handle DECLTYPE_TYPE. 1606 * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate 1607 types. 1608 (DECLTYPE_TYPE_EXPR): New. 1609 (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New. 1610 (finish_declared_type): Declare. 1611 * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print 1612 DECLTYPE_TYPE nodes. 1613 (pp_cxx_type_id): Ditto. 1614 * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children. 1615 (tsubst): Substitute into a DECLTYPE_TYPE node. 1616 (tsubst_copy): Ditto. 1617 (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE 1618 nodes. 1619 (dependent_type_p_r): DECLTYPE_TYPE types are always dependent. 1620 * semantics.c (finish_typeof): TYPEOF_TYPE types need to use 1621 structural equality (because we can't hash the expressions). 1622 (finish_declared_type): New. 1623 * lex.c (reswords): Add "decltype" keyword. 1624 * parser.c cp_lexer_next_token_is_decl_specifier_keyword 1625 (cp_parser_postfix_expression): Add member_access_only_p to 1626 restrict postfix expression to member access expressions. 1627 (cp_parser_unary_expression): Update call to 1628 cp_parser_postfix_expression to reflect new parameter. 1629 (cp_parser_declared_type): New. 1630 (cp_parser_simple_type_specifier): Parse decltype types. 1631 16322007-07-27 Mark Mitchell <mark@codesourcery.com> 1633 1634 PR c++/32346 1635 * call.c (convert_for_arg_passing): Only widen bitfields to their 1636 declared types if necessary. 1637 16382007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1639 1640 * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand): 1641 Constify. 1642 16432007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1644 1645 * decl.c (typename_hash, typename_compare): Constify. 1646 * mangle.c (hash_type, compare_type): Likewise. 1647 * pt.c (eq_local_specializations, hash_local_specialization): 1648 Likewise. 1649 * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq, 1650 list_hash): Likewise. 1651 * typeck2.c (pat_compare): Likewise. 1652 16532007-07-24 Nathan Sidwell <nathan@codesourcery.com> 1654 1655 * method.c (implicitly_declare_fn): Increase alignment if member 1656 function pointer format requires it. 1657 16582007-07-24 Paolo Carlini <pcarlini@suse.de> 1659 1660 PR c++/29001 1661 * typeck.c (check_return_expr): Do not pass a null argument 1662 to null_ptr_cst_p. 1663 16642007-07-24 Paolo Carlini <pcarlini@suse.de> 1665 1666 PR c++/32561 1667 * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P 1668 only on VAR_DECL. 1669 16702007-07-22 Nathan Sidwell <nathan@codesourcery.com> 1671 1672 PR c++/32839 1673 * typeck.c (convert_arguments): Only use default args if we have 1674 a function decl. 1675 1676 PR c++/30818 1677 * typeck.c (structural_comptypes): No need to check 1678 resolve_typename_type return value here. 1679 * cp-tree.h (TYPENAME_IS_RESOLVING_P): New. 1680 * pt.c (resolve_typename_type): Follow typename typedefs. Return 1681 original type rather than error_mark_node in case of failure. 1682 * parser.c (cp_parser_nested_name_specifier_opt): Adjust 1683 resolve_typename_type result check. 1684 (cp_parser_direct_declarator, cp_parser_head, 1685 cp_parser_constructor_declarator_p): Likewise. 1686 16872007-07-12 Kazu Hirata <kazu@codesourcery.com> 1688 1689 * pt.c (template_parms_variadic_p): Remove. 1690 * cp-tree.h: Remove the prototype for template_parms_variadic_p. 1691 16922007-07-12 Jakub Jelinek <jakub@redhat.com> 1693 1694 PR c++/30854 1695 * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last 1696 argument to dump_aggr_init_expr_args instead of false. 1697 16982007-07-11 Douglas Gregor <doug.gregor@gmail.com> 1699 1700 * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the 1701 canonical types; otherwise, fall back to structural type 1702 comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an 1703 internal compiler error if the canonical types are wrong. 1704 17052007-07-11 Paolo Carlini <pcarlini@suse.de> 1706 1707 PR c++/32560 1708 * parser.c (cp_parser_make_indirect_declarator): When the 1709 the code argument is ERROR_MARK return cp_error_declarator. 1710 17112007-07-09 Geoffrey Keating <geoffk@apple.com> 1712 1713 PR 32617 1714 * decl.c (cxx_init_decl_processing): Don't set 1715 force_align_functions_log. 1716 (grokfndecl): Honour ptrmemfunc_vbit_in_pfn. 1717 * typeck.c (cxx_alignof_expr): When alignof is used on a plain 1718 FUNCTION_DECL, return its alignment. 1719 17202007-07-09 Richard Guenther <rguenther@suse.de> 1721 1722 * decl.c (start_preparsed_function): Do not promote return type. 1723 17242007-07-08 Paolo Carlini <pcarlini@suse.de> 1725 1726 PR c++/30535 1727 * pt.c (unify): Never pass error_mark_node to template_decl_level. 1728 17292007-07-07 Mark Mitchell <mark@codesourcery.com> 1730 1731 PR c++/32232 1732 * pt.c (resolve_overloaded_unification): Robustify. Return a 1733 bool, not an int. 1734 (type_unification_real): Adjust accordingly. 1735 17362007-07-06 Richard Guenther <rguenther@suse.de> 1737 1738 * init.c (build_new_1): Use the correct pointer type. 1739 * typeck2.c (build_m_component_ref): Likewise. 1740 17412007-07-05 Mark Mitchell <mark@codesourcery.com> 1742 1743 PR c++/32245 1744 * init.c (build_zero_init): Always build an initializer for 1745 non-static storage. 1746 * typeck2.c (build_functional_cast): Use build_zero_init. 1747 1748 PR c++/32251 1749 * init.c (build_new_1): Always pass the allocation function to 1750 build_op_delete_call. 1751 * call.c (build_op_delete_call): Handle operator delete with a 1752 variable-argument list. Do not issue an error when no matching 1753 deallocation function is available for a new operator. 1754 1755 PR c++/31992 1756 * cp-tree.h (any_value_dependent_elements_p): Declare it. 1757 * decl.c (value_dependent_init_p): New function. 1758 (cp_finish_decl): Use it. 1759 * pt.c (value_dependent_expression_p): Use 1760 any_value_dependent_elements_p. 1761 * parser.c (cp_parser_primary_expression): Add comment about 1762 treating dependent qualified names as integral 1763 constant-expressions. 1764 17652007-07-04 Douglas Gregor <doug.gregor@gmail.com> 1766 1767 * decl.c (build_ptrmemfunc_type): Always use structural equality 1768 tests when comparing pointer-to-member-function types, because the 1769 handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical 1770 types. 1771 17722007-07-03 Mark Mitchell <mark@codesourcery.com> 1773 1774 * init.c (build_new): Tweak comment. 1775 17762007-06-29 Dave Brolley <brolley@redhat.com> 1777 1778 PR c++/31743 1779 * parser.c (cp_parser_new_type_id): Don't reduce a named array 1780 type to its base type and number of elements here. 1781 * init.c (build_new): Call complete_type_or_else to ensure that the 1782 type is complete and to issue a diagnostic if it is not. 1783 (build_new_1): Don't call complete_type_or_else here. 1784 17852007-07-03 Richard Guenther <rguenther@suse.de> 1786 1787 PR c++/32609 1788 * class.c (fixed_type_or_null): Re-lookup the hashtable slot 1789 after recursing. 1790 17912007-07-02 Simon Baldwin <simonb@google.com> 1792 1793 * parser.c (cp_parser_elaborated_type_specifier): Added a warning 1794 for inner-style nested forward declarations that don't declare 1795 anything useful. 1796 17972007-07-02 Jakub Jelinek <jakub@redhat.com> 1798 1799 PR c++/31748 1800 * semantics.c (finish_omp_clauses): Use %qD instead of %qE for 1801 DECL_P in not a variable and appears more than once error messages. 1802 18032007-07-01 Ollie Wild <aaw@google.com> 1804 1805 * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden. 1806 (select_decl): Remove function. 1807 (unqualified_namespace_lookup): Populate binding by calling 1808 ambiguous_decl. Remove select_decl call. 1809 (lookup_qualified_name): Remove select_decl call. 1810 * decl.c (lookup_and_check_tag): Check for ambiguous references. 1811 * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error 1812 generation when name lookup is ambiguous. 1813 18142007-06-29 Douglas Gregor <doug.gregor@gmail.com> 1815 1816 PR c++/31724 1817 * init.c (build_new_1): Use structural equality on the copy of the 1818 array type. 1819 18202007-06-28 Geoffrey Keating <geoffk@apple.com> 1821 1822 * decl2.c (determine_visibility): Implement 1823 flag_visibility_ms_compat effect on type info. 1824 * decl.c (cxx_init_decl_processing): Implement 1825 global effect of flag_visibility_ms_compat. 1826 18272007-06-28 Geoffrey Keating <geoffk@apple.com> 1828 1829 * decl2.c (start_objects): Mark constructor-running function 1830 as artificial. 1831 18322007-06-26 Simon Martin <simartin@users.sourceforge.net> 1833 1834 PR c++/32111 1835 * decl.c (grokdeclarator): Reset friendp for member functions declared 1836 friend of their own class. 1837 18382007-06-23 Mark Mitchell <mark@codesourcery.com> 1839 1840 * decl2.c (determine_visibility): Don't look for dllexport here. 1841 (determine_visibility_from_class): Tidy. 1842 18432007-06-18 Simon Baldwin <simonb@google.com> 1844 1845 PR c++/31923 1846 * parser.c (cp_parser_single_declaration): Added check for storage 1847 class other than sc_none in parsed declaration, and a flag to indicate 1848 if the call is part of an explicit template specialization parse. 1849 * (cp_parser_explicit_specialization): Specialization check flag added 1850 to call to cp_parser_single_declaration(), set true. 1851 * (cp_parser_template_declaration_after_export): Specialization check 1852 flag added to call to cp_parser_single_declaration(), set false. 1853 * pt.c (check_explicit_specialization): Added code to copy visiblity 1854 and linkage from the templated function to the explicit specialization. 1855 18562007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com> 1857 1858 * typeck.c (build_binary_op): For templates build the 1859 expression in pieces to avoid the assert in build2_stat. 1860 (get_member_function_from_ptrfunc): 1861 Change over to using POINTER_PLUS_EXPR and convert 1862 the second operand to sizetype. 1863 * typeck2.c (build_m_component_ref): Likewise. 1864 * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR 1865 instead of PLUS_EXPR for pointers. 1866 (build_new_1): Likewise. 1867 (build_vec_delete_1): Likewise. 1868 (build_vec_delete): Likewise. 1869 * class.c (build_base_path): Likewise. 1870 (build_base_path): Likewise. 1871 (convert_to_base_statically): Likewise. 1872 (fixed_type_or_null): Handle POINTER_PLUS_EXPR. 1873 (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR 1874 instead of PLUS_EXPR. 1875 (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR 1876 instead of PLUS_EXPR for pointers. 1877 * call.c (build_special_member_call): Likewise. 1878 * rtti.c (build_headof): Likewise. 1879 Use sizetype instead of ptrdiff_type_node. 1880 (tinfo_base_init): Create a POINTER_PLUS_EXPR 1881 instead of PLUS_EXPR for pointers. 1882 * except.c (expand_start_catch_block): Do a 1883 NEGATIVE and then a POINTER_PLUS_EXPR instead 1884 of a MINUS_EXPR. 1885 * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert 1886 PLUS_EXPR on pointer types over to use 1887 POINTER_PLUS_EXPR and remove the conversion 1888 to the pointer types. 1889 * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for 1890 adding to a pointer type. Use size_int instead of 1891 ssize_int. Convert the index to sizetype before 1892 adding it to the pointer. 1893 18942007-06-15 Mark Mitchell <mark@codesourcery.com> 1895 1896 * cp-tree.h (DECL_VAR_MARKED_P): Remove. 1897 (DECL_ANON_UNION_VAR_P): New macro. 1898 * class.c (fixed_type_or_null): Tidy. Use a hash table, rather 1899 than DECL_VAR_MARKED_P, to keep track of which variables we have 1900 seen. 1901 * decl.c (redeclaration_error_message): Complain about redeclaring 1902 anonymous union members at namespace scope. 1903 * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P. 1904 19052007-06-14 Geoff Keating <geoffk@apple.com> 1906 1907 * decl2.c (determine_visibility): Ensure that functions with 1908 hidden types as parameters are hidden. 1909 1910 PR 31093 1911 * decl2.c (determine_visibility): Remove duplicate code for 1912 handling type info. 1913 19142007-06-12 Ian Lance Taylor <iant@google.com> 1915 1916 PR libstdc++/29286 1917 * init.c (avoid_placement_new_aliasing): New static function. 1918 (build_new_1): Call it. 1919 19202007-06-11 Rafael Ávila de Espíndola <espindola@google.com> 1921 1922 * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove. 1923 (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove. 1924 19252007-06-08 Jakub Jelinek <jakub@redhat.com> 1926 1927 PR c++/32177 1928 * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr 1929 on init, the non-decl cond operand and increment value. 1930 19312007-06-07 Simon Martin <simartin@users.sourceforge.net> 1932 1933 PR c++/30759 1934 * decl.c (check_initializer): Report an error when a brace enclosed 1935 initializer is used for a non-aggregate type in C++98. 1936 (redeclaration_error_message): Rewrote flag_cpp0x in terms of 1937 cxx_dialect. 1938 (grokdeclarator): Likewise. 1939 (move_fn_p): Likewise. 1940 * typeck.c (check_return_expr): Likewise. 1941 * call.c (reference_binding): Likewise. 1942 * error.c (cp_cpp_error): Likewise. 1943 * pt.c (check_default_tmpl_args): Likewise. 1944 (tsubst): Likewise. 1945 * lex.c (init_reswords): Likewise. 1946 * parser.c (p_parser_primary_expression): Likewise. 1947 (TOKEN_PRECEDENCE): Likewise. 1948 (cp_parser_init_declarator): Likewise. 1949 (cp_parser_ptr_operator): Likewise. 1950 (cp_parser_parameter_declaration): Likewise. 1951 (cp_parser_enclosed_template_argument_list): Likewise. 1952 (cp_parser_skip_to_end_of_template_parameter_list): Likewise. 1953 (cp_parser_next_token_ends_template_argument_p): Likewise. 1954 19552007-06-04 Simon Baldwin <simonb@google.com> 1956 1957 * decl.c (grokdeclarator): Readability change. Moved case labels 1958 into direct switch statement scope. 1959 19602007-06-04 Paolo Carlini <pcarlini@suse.de> 1961 1962 * call.c (convert_like_real): Remove pointless code. 1963 19642007-05-31 Mark Mitchell <mark@codesourcery.com> 1965 1966 * decl.c (get_atexit_fn_ptr_type): New function. 1967 (get_atexit_node): Use it. 1968 (start_cleanup_fn): Likewise. 1969 (register_dtor_fn): Use the object's destructor, instead of a 1970 separate cleanup function, where possible. 1971 * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator. 1972 (atexit_fn_ptr_type_node): New macro. 1973 * decl2.c (build_cleanup): Use build_address. 1974 19752007-05-31 Daniel Berlin <dberlin@dberlin.org> 1976 1977 * typeck.c (build_binary_op): Include types in error. 1978 19792007-05-31 Jakub Jelinek <jakub@redhat.com> 1980 1981 PR c++/31806 1982 * decl.c (cp_finish_decl): Also clear was_readonly if a static var 1983 needs runtime initialization. 1984 19852007-05-31 Paolo Carlini <pcarlini@suse.de> 1986 1987 PR c++/32158 1988 * semantics.c (finish_trait_expr): Complete the types. 1989 19902007-05-30 Russell Yanofsky <russ@yanofsky.org> 1991 Douglas Gregor <doug.gregor@gmail.com> 1992 Pedro Lamarao <pedro.lamarao@mndfck.org> 1993 Howard Hinnant <howard.hinnant@gmail.com> 1994 1995 PR c++/7412 1996 PR c++/29939 1997 * typeck.c (comptypes): Don't consider rvalue and lvalue 1998 reference types to be equivalent. 1999 (check_return_expr): Move from certain lvalues when returning 2000 them. 2001 * decl.c (grokdeclarator): Implement reference collapsing. 2002 (copy_fn_p): Don't consider constructors taking rvalue references 2003 to be copy constructors. 2004 (move_fn_p): New. 2005 * call.c (conversion): New "rvaluedness_matches_p" member. 2006 (convert_class_to_reference): Require reference type as first 2007 parameter instead of base type. 2008 (reference_binding): Add logic to handle rvalue references. 2009 (implicit_conversion): Update inaccurate comment. 2010 (convert_like_real): Disable creation of temporaries that are 2011 impossible to initialize for types with move constructors. 2012 (build_over_call): Elide move constructors when possible. 2013 (maybe_handle_implicit_object): Set "rvaluedness_matches_p". 2014 (maybe_handle_ref_bind): Return conversion instead of type node. 2015 (compare_ics): Add logic to use "rvaluedness_matches_p" values to 2016 determine preferred conversion sequences. 2017 * cp-tree.h (TYPE_REF_IS_RVALUE): New. 2018 (LOOKUP_PREFER_RVALUE): New. 2019 (DECL_MOVE_CONSTRUCTOR_P): New. 2020 (struct cp_declarator): Add "reference" member for reference 2021 types, with new "rvalue_ref" flag. 2022 (cp_build_reference_type): Declare. 2023 (move_fn_p): Declare. 2024 * error.c (dump_type_prefix): Format rvalue reference types 2025 correctly in error messages. 2026 * except.c (build_throw): Move from certain lvalues when 2027 throwing. 2028 * mangle.c (write_type): Mangle rvalue references differently 2029 than regular references. 2030 * parser.c (make_reference_declarator): Add boolean parameter for 2031 rvalue references. 2032 (cp_parser_make_indirect_declarator): New. 2033 (cp_parser_new_declarator_opt): Call 2034 cp_parser_make_indirect_declarator. 2035 (cp_parser_conversion_declarator_opt): Ditto. 2036 (cp_parser_declarator): Ditto. 2037 (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference 2038 declarators. 2039 * pt.c (tsubst): Implement reference collapsing. 2040 (maybe_adjust_types_for_deduction): Implement special template 2041 parameter deduction rule for rvalue references. 2042 (type_unification_real): Update calls to 2043 maybe_adjust_types_for_deduction. 2044 (try_one_overload): Ditto. 2045 (unify_pack_expansion): Ditto. 2046 * tree.c (lvalue_p_1): Handle rvalue reference types. 2047 (cp_build_reference_type): New. 2048 20492007-05-30 Jakub Jelinek <jakub@redhat.com> 2050 2051 PR c++/31809 2052 * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC 2053 variables that need runtime initialization. 2054 20552007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com> 2056 2057 PR c++/31339 2058 * typeck.c (build_unary_op <case PREINCREMENT_EXPR, 2059 case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR, 2060 case POSTDECREMENT_EXPR>): Return the error_mark_node 2061 if either the real or imaginary parts would an 2062 error_mark_node. 2063 20642007-05-25 Simon Martin <simartin@users.sourceforge.net> 2065 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2066 2067 PR c++/31745 2068 * parser.c (cp_parser_skip_to_closing_brace): Return true if the next 2069 token is a closing brace, false if there are no tokens left. 2070 (cp_parser_namespace_alias_definition): Only consume the next token if 2071 it is a closing brace. 2072 2073 * parser.c (cp_parser_class_specifier): Likewise. 2074 20752007-05-25 H.J. Lu <hongjiu.lu@intel.com> 2076 2077 * semantics.c (finish_member_declaration): Fix a typo in the 2078 last checkin. 2079 20802007-05-25 Douglas Gregor <doug.gregor@gmail.com> 2081 2082 PR c++/31431 2083 PR c++/31432 2084 PR c++/31434 2085 PR c++/31435 2086 PR c++/31437 2087 PR c++/31438 2088 PR c++/31442 2089 PR c++/31443 2090 PR c++/31444 2091 PR c++/31445 2092 * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes. 2093 * cp-tree.h (check_for_bare_parameter_packs): Returns bool. 2094 * pt.c (check_for_bare_parameter_packs): Return bool indicated 2095 whether everything was okay. Fix indentation. 2096 (push_template_decl_real): Check for bare parameter packs in 2097 function parameters; where errors occur, mark the parameter types 2098 with ERROR_MARK_NODEs to avert ICEs. 2099 (coerce_template_parameter_pack): New. 2100 (coerce_template_parms): Moved parameter pack coercion into 2101 coerce_template_parameter_pack, and permit it anywhere in the 2102 template parameter list (not just at the end). Parameter and 2103 argument indices can vary (somewhat) separately now, so add 2104 PARM_IDX and ARG_IDX. 2105 (fn_type_unification): Don't set an argument pack as incomplete if 2106 no argument pack was deduced. 2107 (type_unification_real): If a type parameter is a parameter pack 2108 and has not otherwise been deduced, it will be deduced to an empty 2109 parameter pack. 2110 (more_specialized_fn): Use the actual lengths of the argument 2111 lists when comparing against expansions. 2112 * semantics.c (finish_member_declaration): If a field's type has 2113 bare parameter packs, error and set its type to ERROR_MARK_NODE. 2114 21152007-05-24 Danny Smith <dannysmith@users.sourceforge.net> 2116 2117 PR target/27067 2118 * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name. 2119 21202007-05-22 Ollie Wild <aaw@google.com> 2121 2122 * name-lookup.c (ambiguous_decl): Adds check for hidden types. 2123 (unqualified_namespace_lookup): Adds check for hidden types. 2124 21252007-05-22 Ollie Wild <aaw@google.com> 2126 2127 * decl.c (duplicate_decls): Verify namespace names are unique. 2128 21292007-05-21 Mark Mitchell <mark@codesourcery.com> 2130 2131 * decl.c (cxx_maybe_build_cleanup): Handle 2132 __attribute__((cleanup)). 2133 21342007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2135 2136 * cvt.c (cp_convert_and_check): Don't check warnings if the 2137 conversion failed. 2138 21392007-05-18 Geoffrey Keating <geoffk@apple.com> 2140 2141 * mangle.c (write_real_cst): Use 'unsigned long' for %lx. 2142 21432007-05-14 Paolo Carlini <pcarlini@suse.de> 2144 2145 PR c++/29928 2146 * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the 2147 type only if is a class type (5.2.8/4). 2148 21492007-05-14 Rafael Ávila de Espíndola <espindola@google.com> 2150 2151 * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove. 2152 * decl.c (grokdeclarator): Use unsigned_type_for instead of 2153 c_common_unsigned_type. 2154 21552007-05-11 Silvius Rus <rus@google.com> 2156 2157 * typeck.c (build_indirect_ref): Add call to 2158 strict_aliasing_warning. 2159 (build_reinterpret_cast_1): Condition call to 2160 strict_aliasing_warning. 2161 21622007-05-11 Jan Hubicka <jh@suse.cz> 2163 2164 * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn. 2165 * decl2.c (start_objects): ctors and dtors are no longer public. 2166 (cp_write_global_declarations): Do not call c_build_cdtor_fns. 2167 21682007-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com> 2169 2170 * typeck.c (build_unary_op): Remove code that used to 2171 handle non lvalue increments/decrements. 2172 21732007-05-07 Mike Stump <mrs@apple.com> 2174 2175 * parser.c (check_empty_body): Add. 2176 (cp_parser_iteration_statement): Add call to check_empty_body. 2177 21782007-05-05 Geoffrey Keating <geoffk@apple.com> 2179 2180 PR 31775 2181 * mangle.c (write_mangled_name): Mangle static variable names. 2182 (write_unqualified_name): Use local-source-name for 2183 namespace-scope static variables. 2184 21852007-05-04 Dirk Mueller <dmueller@suse.de> 2186 2187 * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is 2188 not in effect. 2189 21902007-05-02 Seongbae Park <seongbae.park@gmail.com> 2191 2192 PR c++/31663 2193 * decl2.c (constrain_class_visibility): 2194 Use strip_pointer_or_array_types instead of strip_array_types. 2195 21962007-04-28 Andrew Pinski <andrew_pinski@playstation.sony.com> 2197 2198 PR C++/30221 2199 * decl.c (reshape_init_r): Don't reshape the first element if it 2200 is a pointer to member function. 2201 22022007-04-27 Simon Baldwin <simonb@google.com> 2203 2204 * decl.c (grokparms): Changed message format from %qD to %qE. 2205 22062007-04-27 Douglas Gregor <doug.gregor@gmail.com> 2207 2208 * error.c (maybe_warn_variadic_templates): Variadic templates are 2209 now in C++0x, so only warn about them in C++98 mode. 2210 22112007-04-26 Andrew Pinski <andrew_pinski@playstation.sony.com> 2212 2213 PR C++/30016 2214 * typeck.c (build_reinterpret_cast_1): Only allow conversion to 2215 integeral types from vectors types. 2216 22172007-04-26 Jakub Jelinek <jakub@redhat.com> 2218 2219 PR c++/31598 2220 * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO 2221 for type dependent OMP_CLAUSE_DECLs. 2222 22232007-04-24 Mark Mitchell <mark@codesourcery.com> 2224 2225 PR c++/31338 2226 * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE. 2227 * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as 2228 COMPLEX_TYPE is now an ARITHMETIC_TYPE. 2229 * init.c (build_zero_init): Adjust, as 2230 COMPLEX_TYPE is now a SCALAR_TYPE. 2231 * typeck2.c (digest_init): Allow brace-enclosed initializers for 2232 COMPLEX_TYPE, even though that is now a SCALAR_TYPE. 2233 22342007-04-25 Paolo Carlini <pcarlini@suse.de> 2235 2236 * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust 2237 per N2255; rename as classtype_has_nothrow_assign_or_copy_p. 2238 (trait_expr_value): Adjust. 2239 22402007-04-23 Simon Baldwin <simonb@google.com> 2241 2242 * decl.c (grokparms): Added new error for duplicate function 2243 parameters names in function prototypes, to match gcc behavior. 2244 22452007-04-23 Jan Hubicka <jh@suse.cz> 2246 2247 * decl2.c (finish_objects): Do not call target constructor/destructor 2248 bits dirrectly. 2249 22502007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com> 2251 2252 * cp-tree.h (lang_tree_node): Use GENERIC_NEXT 2253 instead of checking GIMPLE_STMT_P in chain_next. 2254 22552007-04-17 Mark Mitchell <mark@codesourcery.com> 2256 2257 PR c++/31513 2258 * call.c (convert_for_arg_passing): Convert bitfields to their 2259 declared types. 2260 22612007-04-17 Simon Martin <simartin@users.sourceforge.net> 2262 2263 PR c++/31517 2264 * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs. 2265 22662007-04-16 Seongbae Park <seongbae.park@gmail.com> 2267 2268 PR c++/29365 2269 * decl2.c (constrain_class_visibility): 2270 Do not warn about the use of anonymous namespace in the main input file. 2271 22722007-04-15 Mark Mitchell <mark@codesourcery.com> 2273 2274 * cp-tree.h (current_template_parms): Fix typo in comment. 2275 22762007-04-15 Kazu Hirata <kazu@codesourcery.com> 2277 2278 * cp-tree.h, error.c: Fix comment typos. 2279 22802007-04-13 Jason Merrill <jason@redhat.com> 2281 2282 PR c++/31074 2283 * call.c (reference_binding): Add c_cast_p parm. If true, 2284 add quals to TO as needed to make it reference-compatible. 2285 22862007-04-11 Jan Hubicka <jh@suse.cz> 2287 2288 * class.c (convert_to_base_statically): Fold produced tree; verify 2289 that we are not processing template_decl. 2290 22912007-04-09 Mark Mitchell <mark@codesourcery.com> 2292 2293 PR c++/31449 2294 * class.c (build_base_path): Ensure that the converted pointer has 2295 the same cv-qualification as the input. 2296 22972007-04-09 Paolo Carlini <pcarlini@suse.de> 2298 2299 * tree.c (cp_tree_equal): Deal with TRAIT_EXPR. 2300 23012007-04-08 Steven Bosscher <steven@gcc.gnu.org> 2302 2303 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS): 2304 Do not set it. 2305 (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it. 2306 * tree.c (cp_add_pending_fn_decls): Remove. 2307 * cp-tree.h (cp_add_pending_fn_decls): Remove prototype. 2308 23092007-04-07 Daniel Berlin <dberlin@dberlin.org> 2310 2311 Revert change removing staticp. 2312 23132007-04-06 Daniel Berlin <dberlin@dberlin.org> 2314 2315 * cp-objcp-common.c (cxx_staticp): Remove. 2316 * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove. 2317 * cp-tree.h (cxx_staticp): 2318 23192007-04-04 Danny Smith <dannysmith.users.sourceforge.net> 2320 2321 * class.c (check_for_override): Don't remove dllmport attribute 2322 of virtual methods. 2323 23242007-04-03 Jakub Jelinek <jakub@redhat.com> 2325 2326 PR c++/30847 2327 * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void 2328 type issue error and return early. 2329 23302007-03-30 Jason Merrill <jason@redhat.com> 2331 2332 PR c++/31187 2333 * typeck.c (cp_type_readonly): New fn. 2334 * cp-tree.h: Declare it. 2335 * decl.c (start_decl): Set implicit DECL_THIS_STATIC here. 2336 (cp_finish_decl): Not here. 2337 23382007-03-31 Richard Guenther <rguenther@suse.de> 2339 2340 * optimize.c (maybe_clone_body): Replace splay-tree usage by 2341 pointer-map. 2342 23432007-03-31 Douglas Gregor <doug.gregor@gmail.com> 2344 2345 PR c++/31138 2346 PR c++/31140 2347 PR c++/31141 2348 * parser.c (declarator_can_be_parameter_pack): New. 2349 (cp_parser_template_parameter): Only parse the `...' if the 2350 declarator can be a parameter pack. 2351 (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE 2352 is NULL. 2353 * pt.c (find_parameter_packs_r): Look into the bounds on integer 2354 types (they could be used as array bounds). 2355 (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX. 2356 (tsubst_pack_expansion): Handle failure to expand parameter 2357 packs. 2358 23592007-03-30 Paolo Carlini <pcarlini@suse.de> 2360 2361 PR c++/26099 2362 * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr, 2363 TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add. 2364 (enum cp_tree_node_structure_enum, union lang_tree_node): Update. 2365 (CLASS_TYPE_NON_UNION_P): Add. 2366 (struct lang_type_class): Add has_complex_dflt. 2367 (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add. 2368 (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare. 2369 * cp-tree.def: Add TRAIT_EXPR. 2370 * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case. 2371 * lex.c (struct resword): Add __has_nothrow_assign, 2372 __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign, 2373 __has_trivial_constructor, __has_trivial_copy, 2374 __has_trivial_destructor, __has_virtual_destructor, __is_abstract, 2375 __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum, 2376 __is_pod, __is_polymorphic, __is_union. 2377 * parser.c (cp_parser_primary_expression): Deal with the new RIDs. 2378 (cp_parser_trait_expr): New. 2379 * semantics.c (finish_trait_expr, trait_expr_value 2380 classtype_has_nothrow_copy_or_assign_p): New. 2381 * method.c (locate_copy, locate_ctor, locate_dtor): Do not define 2382 as static. 2383 * decl.c (cp_tree_node_structure): Add TRAIT_EXPR. 2384 * class.c (check_bases, check_field_decl, check_bases_and_members): 2385 Deal with TYPE_HAS_COMPLEX_DFLT (t) too. 2386 * pt.c (uses_template_parms, tsubst_copy_and_build, 2387 value_dependent_expression_p, type_dependent_expression_p): Deal with 2388 TRAIT_EXPR. 2389 * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR. 2390 23912007-03-29 Richard Guenther <rguenther@suse.de> 2392 2393 * tree.c (cp_walk_subtrees): Do not set input_location. 2394 23952007-03-28 Simon Martin <simartin@users.sourceforge.net> 2396 2397 PR c++/29077 2398 * decl.c (grokfndecl): Properly setup decl if it is a constructor or a 2399 destructor. 2400 24012007-03-28 Douglas Gregor <doug.gregor@gmail.com> 2402 2403 * parser.c (struct cp_parser): Update comment for 2404 greater_than_is_operator_p. 2405 (cp_parser_primary_expression): In C++0x mode, a cast operator can 2406 be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P. 2407 (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when 2408 !GREATER_THAN_IS_OPERATOR_P. 2409 (cp_parser_binary_expression): When -Wc++0x-compat, warn about 2410 `>>' operators that will become two `>' tokens in C++0x. 2411 (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x 2412 mode, allowing it to terminate default arguments. 2413 (cp_parser_enclosed_template_argument_list): In C++0x mode, treat 2414 `>>' like two consecutive `>' tokens. 2415 (cp_parser_skip_to_end_of_template_parameter_list): Ditto. 2416 (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>' 2417 ends a template argument. 2418 24192007-03-28 Douglas Gregor <doug.gregor@gmail.com> 2420 2421 * decl.c (redeclaration_error_message): Complain when redeclaring 2422 a friend function with default template arguments (C++0x mode only). 2423 * cp-tree.h (check_default_tmpl_args): Declare. 2424 * pt.c (check_default_tmpl_args): In C++0x mode, permit default 2425 template arguments in function templates. Add support for checking 2426 the default template arguments of friend templates. 2427 (push_template_decl_real): Fix call to check_default_tmpl_args. 2428 (type_unification_real): If a template parameter has not been 2429 deduced but provides a default template argument, substitute into 2430 that default template argument. 2431 * parser.c (cp_parser_init_declarator): When declaring (but not 2432 defining!) a function template in C++0x mode, check for default 2433 template arguments. 2434 24352007-03-28 Douglas Gregor <doug.gregor@gmail.com> 2436 2437 PR c++/29993 2438 * decl.c (grokdeclarator): Deal with cv-qualified function type 2439 typedefs in the same way for member and non-member functions. 2440 24412007-03-26 Dirk Mueller <dmueller@suse.de> 2442 2443 * parser.c (cp_parser_member_declaration): Pedwarn 2444 about stray semicolons after member declarations. 2445 24462007-03-26 Paolo Carlini <pcarlini@suse.de> 2447 2448 PR c++/30500 2449 * pt.c (instantiate_decl): Set in_system_header. 2450 24512007-03-22 Mark Mitchell <mark@codesourcery.com> 2452 2453 * cp-tree.h (current_tempalte_parms): Improve documentation. 2454 * pt.c (current_template_args): Likewise. 2455 2456 PR c++/30863 2457 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do 2458 not consume tokens when failing. 2459 24602007-03-22 Jim Wilson <wilson@specifix.com> 2461 Mark Mitchell <mark@codesourcery.com> 2462 2463 PR c++/31273 2464 * call.c (standard_conversion): Use type_decays_to. Keep FCODE 2465 consistent with FROM. 2466 24672007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net> 2468 2469 * error.c (dump_expr): Handle dependent names that designate types. 2470 * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE. 2471 24722007-03-17 Kazu Hirata <kazu@codesourcery.com> 2473 2474 * cp-tree.def, parser.c, pt.c: Fix comment typos. 2475 24762007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2477 2478 * cvt.c (cp_convert_and_check) : Define. 2479 * cp-tree.h (cp_convert_and_check): Declare. 2480 * call.c (convert_conversion_warnings): Rename to 2481 conversion_null_warnings. The warning for floating-point to 2482 integer is handled by convert_and_check in convert_like_real. 2483 (convert_like_real): convert_conversion_warnings was renamed as 2484 conversion_null_warnings. 2485 * typeck.c (build_binary_op): Use cp_convert_and_check to warn for 2486 overflow and changes of value during conversion. 2487 24882007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2489 2490 PR c++/30891 2491 * parser.c (cp_parser_statement): If 'namespace' is found, this 2492 only can be a namespace alias definition, so parse it now. 2493 (cp_parser_namespace_alias_definition): if we find an open brace 2494 instead of '=', then this is actually a misplaced namespace 2495 definition. 2496 24972007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2498 2499 PR c++/24924 2500 * decl.c (cxx_init_decl_processing): Move command-line options 2501 processing to c-opts.c. 2502 25032007-03-15 Douglas Gregor <doug.gregor@gmail.com> 2504 2505 * ptree.c (cxx_print_type): Use formatting markup for integers 2506 when printing template parameter index/level/orig level. 2507 (cxx_print_xnode): Ditto. 2508 * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0. 2509 (struct template_parm_index_s): Remove the PARAMETER_PACK member. 2510 Make INDEX, LEVEL, and ORIG_LEVEL integers instead of 2511 HOST_WIDE_INTs. 2512 (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int, 2513 rather than a HOST_WIDE_INT. 2514 Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and 2515 NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for 2516 better bit-packing. 2517 (struct language_function): Make RETURNS_VALUE, RETURNS_NULL, 2518 RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and 2519 IN_BASE_INITIALIZER bool bitfields. 2520 (struct cp_declarator): Make KIND a 4-bit field. Make 2521 PARAMETER_PACK_P a bool bitfield just after KIND. 2522 * pt.c (uses_parameter_packs): Destroy the pointer set. 2523 (make_pack_expansion): Ditto. 2524 (check_for_bare_parameter_packs): Ditto. 2525 * name-lookup.c (push_to_top_level): Make need_pop a bool value. 2526 25272007-03-14 Andrew Pinski <andrew_pinski@playstation.sony.com> 2528 2529 PR c++/31165 2530 * call.c (convert_default_arg): Instead of copying the node, 2531 unshare it. 2532 25332007-03-15 Dirk Mueller <dmueller@suse.de> 2534 2535 PR c++/30860 2536 * call.c (convert_conversion_warnings): New.. 2537 (convert_like_real): .. factored out from here. 2538 (convert_conversion_warnings): Add warning about 2539 false being converted to NULL in argument passing. 2540 25412007-03-14 Dirk Mueller <dmueller@suse.de> 2542 2543 * semantics.c (c_finish_if_stmt): Call empty_if_body_warning. 2544 (finish_do_body): Warn about empty body in do/while statement. 2545 25462007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2547 2548 * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning. 2549 25502007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2551 2552 PR c/21438 2553 * typeck.c (build_binary_op): Call warn_for_div_zero instead of 2554 warning. 2555 25562007-03-13 Alexandre Oliva <aoliva@redhat.com> 2557 2558 * repo.c (init_repo): Initialize random_seed saved options. 2559 (finish_repo): Adjust. 2560 25612007-03-13 Mark Mitchell <mark@codesourcery.com> 2562 2563 PR bootstrap/30899 2564 * Make-lang.in (doc/g++.1): Use $< to specify the location from 2565 which to copy. 2566 25672007-03-12 Seongbae Park <seongbae.park@gmail.com> 2568 2569 * decl.c (compute_array_index_type): New warning flag warn_vla. 2570 25712007-03-12 Mark Mitchell <mark@codesourcery.com> 2572 2573 PR c++/30108 2574 * call.c (convert_default_arg): Copy non-constant arguments. 2575 25762007-03-11 Mark Mitchell <mark@codesourcery.com> 2577 2578 PR c++/31038 2579 * parser.c (cp_parser_postfix_expression): Disallow compound 2580 literals in constant expressions. 2581 2582 PR c++/30328 2583 * semantics.c (finish_typeof): Use unlowered_expr_type. 2584 25852007-03-10 Mark Mitchell <mark@codesourcery.com> 2586 2587 PR c++/30274 2588 * cp-tree.h (unlowered_expr_type): New function. 2589 * typeck.c (is_bitfield_expr_with_lowered_type): Handle 2590 COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR. 2591 (unlowered_expr_type): New function. 2592 (build_unary_op): Disallow predecrements of bool bitfields. 2593 * call.c (build_conditional_expr): Use unlowered_expr_type. 2594 * pt.c (type_unification_real): Likewise. 2595 25962007-03-09 Douglas Gregor <doug.gregor@gmail.com> 2597 2598 PR c++/20599 2599 * typeck.c (check_return_expr): Check for bare parameter packs. 2600 (comptypes): Compare template parameter packs and 2601 type pack expansions. 2602 * decl.c (grokdeclarator): Deal with the declaration of function 2603 parameter packs. 2604 (grokparms): Verify that the (optional) function parameter pack is 2605 at the end of the parameter list. 2606 (xref_basetypes): Handle pack expansions in the base class. 2607 (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT. 2608 * cp-tree.def (TYPE_ARGUMENT_PACK): New. 2609 (NONTYPE_ARGUMENT_PACK): New. 2610 (TYPE_PACK_EXPANSION): New. 2611 (EXPR_PACK_EXPANSION): New. 2612 (ARGUMENT_PACK_SELECT): New. 2613 * cp-objcp-common.c (cp_tree_size): Compute size of 2614 (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and 2615 ARGUMENT_PACK_SELECT. 2616 * error.c (dump_template_argument): Print template argument packs. 2617 (dump_template_argument_list): Ditto. 2618 (dump_template_parameter): Dump `...' for template type parameter 2619 packs. 2620 (dump_type): Dump TYPE_PACK_EXPANSION nodes. 2621 (dump_parameters): Print function parameter packs. 2622 (dump_template_parms): Print template argument packs. 2623 (dump_expr): Dump EXPR_PACK_EXPANSION nodes. 2624 (maybe_warn_variadic_templates): New. 2625 * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION. 2626 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK, 2627 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION, 2628 CAST_EXPR. 2629 * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION. 2630 (write_template_arg): Write argument packs as separate arguments. 2631 * cp-tree.h (struct template_parm_index_s): Add flag that 2632 indicates that the template parameter is actually a parameter 2633 pack. 2634 (struct tree_argument_pack_select): New. 2635 (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT. 2636 (union lang_tree_node): Add argument_pack_select. 2637 (FUNCTION_PARAMETER_PACK_P): New. 2638 (PACK_EXPANSION_P): New. 2639 (PACK_EXPANSION_PATTERN): New. 2640 (SET_PACK_EXPANSION_PATTERN): New. 2641 (PACK_EXPANSION_PARAMETER_PACKS): New. 2642 (ARGUMENT_PACK_P): New. 2643 (ARGUMENT_PACK_ARGS): New. 2644 (SET_ARGUMENT_PACK_ARGS): New. 2645 (ARGUMENT_PACK_INCOMPLETE_P): New. 2646 (ARGUMENT_PACK_EXPLICIT_ARGS): New. 2647 (TEMPLATE_PARM_PARAMETER_PACK): New. 2648 (TEMPLATE_TYPE_PARAMETER_PACK): New. 2649 (ARGUMENT_PACK_SELECT_FROM_PACK): New. 2650 (ARGUMENT_PACK_SELECT_INDEX): New. 2651 (ARGUMENT_PACK_SELECT_ARG): New. 2652 (struct cp_declarator): Add parameter_pack_p flag. 2653 (maybe_warn_variadic_templates): Declare. 2654 (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to 2655 indicate a template parameter pack. 2656 (uses_parameter_packs): Declare. 2657 (template_parameter_pack_p): Declare. 2658 (template_parms_variadic_p): Declare. 2659 (make_pack_expansion): Declare. 2660 (check_for_bare_parameter_packs): Declare. 2661 * cxx-pretty-print.c (pp_cxx_unary_expression): Print 2662 sizeof... expressions. 2663 (pp_cxx_expression): Print pack expansions and non-type argument 2664 packs. 2665 (pp_cxx_exception_specification): Print pack expansions. 2666 (pp_cxx_direct_declarator): Print ellipsis for parameter packs. 2667 (pp_cxx_ctor_initializer): Print pack expansions. 2668 (pp_cxx_type_id): Print pack expansions. 2669 (pp_cxx_template_argument_list): Print argument packs. 2670 (pp_cxx_template_parameter): Print ellipsis for template parameter 2671 packs. 2672 * pt.c (comp_template_parms): Compare template parameter packs. 2673 (template_parameter_pack_p): New. 2674 (template_parms_variadic_p): New. 2675 (template_args_variadic_p): New. 2676 (make_ith_pack_parameter_name): New. 2677 (struct find_parameter_pack_data): New. 2678 (find_parameter_packs_r): New. 2679 (uses_parameter_packs): New. 2680 (make_pack_expansion): New. 2681 (check_for_bare_parameter_packs): New. 2682 (expand_template_argument_pack): New. 2683 (reduce_template_parm_level): Propagate parameter pack flag. 2684 (process_template_parm): Add is_parameter_pack parameter to state 2685 when the parameter is actually a parameter pack. Create template 2686 parameter packs when is_parameter_pack is true. 2687 (current_template_args): The argument for a template parameter 2688 pack is an argument pack containing a single pack expansion. 2689 (process_partial_specialization): When checking that non-type 2690 argument expressions do not involve template parameters, loop over 2691 the arguments in argument packs separately. 2692 (push_template_decl_real): Check that the type of the declaration 2693 does not have any bare parameter packs. Check that primary 2694 templates have no more than one parameter pack, and that it comes 2695 at the end of the template parameter list. 2696 (convert_template_argument): Handle coercions for pack expansion 2697 expressions by coercing the pattern then rebuilding the expansion. 2698 (coerce_template_parms): When coercing the arguments for a 2699 variadic template, pack "extra" arguments into an argument pack. 2700 (coerce_template_template_parms): Cannot coerce between parameter 2701 packs and non-pack parameters. 2702 (template_args_equal): Compare PACK_EXPANSION_P expressions. 2703 (comp_template_args): Expand all template arguments packs before 2704 comparing template argument lists. 2705 (mangle_class_name_for_template): Make argument packs as separate 2706 template arguments. 2707 (for_each_template_parm_r): No need to handle BASELINK. 2708 (instantiate_class_template): Handle pack expansions in the base 2709 class list. 2710 (tsubst_pack_expansion): New. 2711 (tsubst_template_args): Handle substitutions of argument packs and 2712 pack expansion into template argument lists. 2713 (tsubst_decl): Expand function parameter packs into separate 2714 function parameters. 2715 (tsubst_arg_types): Expand a type pack expansion into separate 2716 argument types. 2717 (tsubst_exception_specification): Handle pack expansions in 2718 exception specifiers. 2719 (tsubst): See through ARGUMENT_PACK_SELECT arguments when 2720 replacing a template parameter with its argument. If we encounter 2721 a substitution for an argument pack, just return the parameter 2722 itself. 2723 (tsubst_copy): sizeof(X...) returns the number of elements in 2724 parameter pack X. See through ARGUMENT_PACK_SELECT when the 2725 PARM_DECL is a parameter pack. 2726 (tsubst_expr): Expression pack expansions and argument packs 2727 cannot show up here; they will all be handled through function 2728 calls, sizeof, and template argument lists. 2729 (tsubst_copy_and_build): sizeof(X...) returns the number of 2730 elements in parameter pack X. Handle pack expansions in TREE_LIST 2731 and CONSTRUCTOR nodes. 2732 (fn_type_unification): Handle "incomplete" explicit template 2733 argument lists that specify some of the arguments for a template 2734 parameter pack. 2735 (type_unification_real): Unify arguments against pack expansions. 2736 (template_parm_level_and_index): New, helper function. 2737 (unify_pack_expansion): New. 2738 (unify): Unify argument packs on an argument-by-argument basis, 2739 handling variadic argument packs as well. 2740 (more_specialized_fn): Handle unification of function parameter 2741 packs. All things being equal, prefer non-variadic function 2742 templates to variadic function templates. 2743 (more_specialized_class): Prefer the variadic class template 2744 partial specialization that binds fewer arguments to a parameter 2745 pack. 2746 (regenerate_decl_from_template): Expand function parameter packs 2747 into separate parameters. 2748 (instantiate_decl): Ditto. 2749 (tsubst_initializer_list): Handle pack expansions for base-class 2750 initializers. 2751 (dependent_type_p_r): Determine dependent types in argument packs 2752 and pack expansions. 2753 (value_dependent_expression_p): Determine value-dependence of 2754 non-type argument packs. 2755 (dependent_template_arg_p): Handle argument packs. 2756 * semantics.c (finish_cond): Check for bare parameter packs. 2757 (finish_expr_stmt): Ditto. 2758 (finish_for_expr): Ditto. 2759 (finish_switch_cond): Ditto. 2760 (finish_mem_initializers): Ditto. 2761 * name-lookup.c (arg_assoc_type): Handle pack expansions and 2762 argument packs. 2763 * decl2.c (cp_build_parm_decl): Mark function parameter packs. 2764 * parser.c (make_declarator): Declarator is not an expansion. 2765 (make_pointer_declarator): Transfer parameter pack flag to outer 2766 declarator. 2767 (make_reference_declarator): Ditto. 2768 (make_ptrmem_declarator): Ditto. 2769 (make_call_declarator): Ditto. 2770 (make_array_declarator): Ditto. 2771 (cp_parser_postfix_expression): Allow pack expansion expressions 2772 in the argument list for a call expression. 2773 (cp_parser_parenthesized_expression_list): Add new parameter 2774 ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand 2775 into separate arguments." 2776 (cp_parser_new_placement): Allow pack expansion expressions. 2777 (cp_parser_new_initializer): Ditto. 2778 (cp_parser_mem_initializer_list): Allow ellipsis to create a 2779 base-class initializer expansion. 2780 (cp_parser_mem_initializer): Ditto. 2781 (cp_parser_template_parameter_list): Keep track of whether the 2782 template parameter is a template parameter pack. 2783 (cp_parser_template_parameter): Parse the ellipsis to indicate a 2784 template parameter pack. 2785 (cp_parser_type_parameter): Ditto. 2786 (cp_parser_template_argument_list): Parse the ellipsis to indicate 2787 a pack expansion. 2788 (cp_parser_direct_declarator): Parse the ellipsis to indicate that 2789 this declarator is a parameter pack. 2790 (cp_parser_parameter_declaration): The ellipsis does not end the 2791 parameter declaration, because it might be a parameter pack. Parse 2792 the ellipsis to indicate a parameter pack. 2793 (cp_parser_initializer): Allow pack expansions. 2794 (cp_parser_initializer_list): Allow ellipsis to create an 2795 initializer expansion. 2796 (cp_parser_base_clause): Allow ellipsis to create a base specifier 2797 expansion. 2798 (cp_parser_type_id_list): Allow ellipsis to create an exception 2799 specifier expansion. 2800 (cp_parser_attribute_list): Don't allow pack expansions. 2801 (cp_parser_functional_cast): Allow pack expansions. 2802 (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to 2803 compute the length of a parameter pack. 2804 (cp_parser_next_token_ends_template_argument_p): An ellipsis can 2805 end a template argument. 2806 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK, 2807 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION, 2808 CAST_EXPR. 2809 28102007-03-09 Dirk Mueller <dmueller@suse.de> 2811 2812 * call.c (build_new_op): Call warn_logical_operator. 2813 28142007-03-08 Volker Reichelt <v.reichelt@netcologne.de> 2815 2816 PR c++/30852 2817 * semantics.c (finish_offsetof): Handle COMPOUND_EXPR. 2818 2819 PR c++/30534 2820 * pt.c (any_template_arguments_need_structural_equality_p): 2821 Robustify. 2822 28232007-03-08 Alexandre Oliva <aoliva@redhat.com> 2824 2825 * decl.c (grokdeclarator): Disable warnings for anonymous 2826 bitfields. 2827 28282007-03-05 Volker Reichelt <v.reichelt@netcologne.de> 2829 2830 * typeck2.c (readonly_error): Always emit a hard error. 2831 Remove last argument. 2832 * cp-tree.h (readonly_error): Adjust prototype. 2833 * semantics.c (finish_asm_stmt): Adjust call to readonly_error. 2834 * typeck.c (build_unary_op): Likewise. 2835 (build_modify_expr): Likewise. 2836 28372007-03-04 Simon Martin <simartin@users.sourceforge.net> 2838 2839 PR c++/30895 2840 * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees. 2841 28422007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2843 2844 PR c++/15787 2845 * parser.c (struct cp_parser): New IN_IF_STMT. 2846 (cp_parser_statement_seq_opt): Handle an unexpected 'else', 2847 returning if parsing the body of an 'if' statement or issuing an 2848 error and continuing. 2849 (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing 2850 body of 'if'. 2851 (cp_parser_jump_statement): Mask new IN_IF_STMT bit. 2852 28532007-03-02 Simon Martin <simartin@users.sourceforge.net> 2854 2855 PR c++/28253 2856 * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders 2857 for thunks. 2858 28592007-03-02 Geoffrey Keating <geoffk@apple.com> 2860 2861 * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling 2862 Objective-C++. Don't exit early if -shared-libgcc needs to be 2863 added. 2864 28652007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2866 2867 * typeck.c (common_base_type): Delete unused function. 2868 28692007-03-01 Brooks Moses <brooks.moses@codesourcery.com> 2870 2871 * Make-lang.in: Add dummy lang.install-pdf target. 2872 28732007-03-01 Simon Baldwin <simonb@google.com> 2874 2875 PR c++/23689 2876 * decl.c (check_tag_decl): Added new warning for typedef ignored 2877 when it precedes an otherwise valid non-typedef declaration. 2878 28792007-02-28 Sandra Loosemore <sandra@codesourcery.com> 2880 2881 * typeck.c (build_function_call): Store converted arguments 2882 in a stack-allocated array instead of building a list. 2883 (convert_arguments): Store arguments in the array passed in as an 2884 argument, and return the actual number of arguments. 2885 * call.c (build_call): Delete, and replace with... 2886 (build_call_n, build_call_a): New. 2887 (build_op_delete_call): Rewrite to avoid constructing argument lists. 2888 (build_over_call): Store converted arguments in a stack-allocated 2889 array instead of building a list. 2890 (build_cxx_call): Pass arguments in an array instead of as a list. 2891 (build_java_interface_fn_ref): Rewrite to avoid constructing 2892 argument lists. 2893 * tree.h: Update declarations to reflect above changes. 2894 * method.c (use_thunk): Use a stack-allocated array to hold 2895 the arguments instead of a list. 2896 * rtti.c (throw_bad_cast): Update call to cxx_call. 2897 (throw_bad_typeid): Likewise. 2898 (build_dynamic_cast_1): Likewise. 2899 * init.c (build_builtin_delete_call): Use build_call_n. 2900 * decl.c (expand_static_init): Likewise. 2901 * except.c (cp_protect_cleanup_actions): Likewise. 2902 * cp-gimplify.c (genericize_eh_spec_block): Likewise. 2903 (gimplify_must_not_throw_expr): Likewise. 2904 (cxx_omp_apply_fn): Use build_call_a. 2905 29062007-02-26 Mark Mitchell <mark@codesourcery.com> 2907 2908 * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn. 2909 * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns. 2910 29112007-02-25 Mark Mitchell <mark@codesourcery.com> 2912 2913 * cp-tree.h (static_ctors): Remove. 2914 * cp-tree.h (static_dtors): Likewise. 2915 * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for 2916 refactoring of tree_map hierarchy. 2917 (decl_shadowed_for_var_insert): Likewise. 2918 * semantics.c (expand_body): Use c_expand_body. 2919 (expand_or_defer_fn): Don't update static_ctors or static_dtors. 2920 * decl2.c (static_ctors): Remove. 2921 (static_dtors): Likewise. 2922 (generate_ctor_or_dtor_function): Pass NULL_TREE to 2923 objc_generate_static_init_call. Do not call static_[cd]tors. 2924 (generate_ctor_and_dtor_functions_for_priority): Do not check for 2925 static_[cd]tors. 2926 (cp_write_global_declarations): Likewise. 2927 29282007-02-23 Richard Guenther <rguenther@suse.de> 2929 2930 * class.c (note_name_declared_in_class): Make declaration 2931 changes meaning a pedwarn. 2932 29332007-02-22 Michael Matz <matz@suse.de> 2934 2935 PR c++/29433 2936 * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag. 2937 * error.c (dump_aggr_type, dump_simple_decl, dump_decl, 2938 dump_function_decl): Guard emitting outer scopes by new flag. 2939 * cp-lang.c (cxx_dwarf_name): New function. 2940 (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name. 2941 * pt.c (classtype_mangled_name, mangle_class_name_for_template): 2942 Remove functions. 2943 (push_template_decl_real, lookup_template_class): Remove calls 2944 to above functions. 2945 29462007-02-19 Mark Mitchell <mark@codesourcery.com> 2947 2948 * call.c (build_new_method_call): Ensure that explicit calls of 2949 destructors have type "void". 2950 29512007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2952 2953 * typeck.c (build_binary_op): Replace -Wstring-literal-comparison 2954 and -Walways-true with -Waddress. 2955 * cvt.c (convert_to_void): Replace unconditional warning with 2956 -Waddress. 2957 29582007-02-18 Kazu Hirata <kazu@codesourcery.com> 2959 2960 * decl.c, tree.c: Fix comment typos. 2961 29622007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com> 2963 2964 PR C++/30158 2965 * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 2966 statement expression if we had an error mark node. 2967 29682007-02-15 Sandra Loosemore <sandra@codesourcery.com> 2969 Brooks Moses <brooks.moses@codesourcery.com> 2970 Lee Millward <lee.millward@codesourcery.com> 2971 2972 * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation. 2973 Change class to tcc_vl_exp. 2974 2975 * call.c (build_call): Use build_call_list instead 2976 of build3. 2977 (build_over_call): Likewise. 2978 (build_new_method_call): Use build_min_non_dep_call_list 2979 instead of build_min_non_dep. 2980 2981 * error.c (dump_call_expr_args): New function. 2982 (dump_aggr_init_expr_args): New function. 2983 (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 2984 Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros. 2985 2986 * cvt.c (convert_to_void): Use build_call_array instead 2987 of build3; use new AGGR_INIT_EXPR accessor macros. 2988 2989 * mangle.c (write_expression): Use TREE_OPERAND_LENGTH 2990 instead of TREE_CODE_LENGTH. 2991 2992 * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new 2993 AGGR_INIT_EXPR accessor macros. 2994 2995 * cp-gimplify.c (cp_gimplify_init_expr): Use 2996 AGGR_INIT_EXPR_SLOT to set the slot operand. 2997 2998 * cp-tree.h (AGGR_INIT_EXPR_FN): New macro. 2999 (AGGR_INIT_EXPR_SLOT): New macro. 3000 (AGGR_INIT_EXPR_ARG): New macro. 3001 (aggr_init_expr_nargs): New macro. 3002 (AGGR_INIT_EXPR_ARGP): New macro. 3003 (aggr_init_expr_arg_iterator): New. 3004 (init_aggr_init_expr_arg_iterator): New. 3005 (next_aggr_init_expr_arg): New. 3006 (first_aggr_init_expr_arg): New. 3007 (more_aggr_init_expr_args_p): New. 3008 (FOR_EACH_AGGR_INIT_EXPR_ARG): New. 3009 (stabilize_aggr_init): New declaration. 3010 (build_min_non_dep_call_list): Likewise. 3011 3012 * tree.c (process_aggr_init_operands): New function. 3013 (build_aggr_init_array) New function. 3014 (build_cplus_new): Update to use new CALL_EXPR and 3015 AGGR_INIT_EXPR accessor macros. Replace use of build3 with 3016 build_aggr_init_array. 3017 (build_min_non_dep_call_list) New function. 3018 (build_min_nt): Assert input code parameter is not a variable 3019 length expression class. 3020 (build_min, build_min_non_dep): Likewise. 3021 (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments 3022 to check for equality instead of recursing. Handle tcc_vl_exp 3023 tree code classes. 3024 (stabilize_call): Update to only handle CALL_EXPRs, not 3025 AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros. 3026 (stabilize_aggr_init): New function. 3027 (stabilize_init): Use it. 3028 3029 * cxx-pretty-print.c (pp_cxx_postfix_expression) 3030 <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and 3031 AGGR_INIT_EXPR accessor macros and argument iterators. 3032 3033 * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with 3034 build_vl_exp. Iterate through the operands, recursively 3035 processing each one. 3036 (tsubst_copy_and_build) <CALL_EXPR>: Update to use new 3037 CALL_EXPR accessor macros. 3038 (value_dependent_expression_p) <default>: Handle tcc_vl_exp 3039 tree code classes. Use TREE_OPERAND_LENGTH instead of 3040 TREE_CODE_LENGTH. 3041 3042 * semantics.c (finish_call_expr): Use build_nt_call_list 3043 instead of build_nt. 3044 (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 3045 accessor macros. Use build_call_array to construct the 3046 CALL_EXPR node instead of build3 3047 3048 * decl2.c (build_offset_ref_call_from_tree): Use 3049 build_nt_call_list and build_min_non_dep_call_list instead 3050 of build_min_nt and build_min_non_dep. 3051 3052 * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>: 3053 Use build_nt_call_list instead of build_min_nt. 3054 30552007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 3056 3057 PR c++/28943 3058 * call.c (build_conditional_expr): Improve error message. 3059 30602007-02-13 Dirk Mueller <dmueller@suse.de> 3061 3062 * friend.c (do_friend): Annotate warning about friend 3063 declarations in templates with OPT_Wnon_template_friend. 3064 Convert informal message from warning() to inform(). 3065 30662007-02-12 Simon Martin <simartin@users.sourceforge.net> 3067 Mark Mitchell <mark@codesourcery.com> 3068 3069 PR c++/14622 3070 * pt.c (do_decl_instantiation): Detect type mismatches in explicit 3071 instantiations for variables. 3072 30732007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 3074 3075 PR middle-end/7651 3076 * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings. 3077 Check warn_unused_value just once. 3078 30792007-02-11 Mark Mitchell <mark@codesourcery.com> 3080 3081 PR c++/26988 3082 * pt.c (determine_specialization): Use skip_artificial_parms_for. 3083 (fn_type_unificiation): Likewise. 3084 (get_bindings): Likewise. 3085 3086o2007-02-06 Mark Mitchell <mark@codesourcery.com> 3087 3088 PR target/29487 3089 * decl.c (finish_function): Use DECL_REPLACEABLE. 3090 * tree.c (cp_cannot_inline_tree_fn): Likewise. 3091 30922007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net> 3093 3094 * parser.c (cp_parser_primary_expression): Reformat overly long lines. 3095 30962007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com> 3097 3098 * decl.c (grokvardecl): Don't error if !have_tls. 3099 (grokdeclarator): Likewise. 3100 * parser.c (cp_parser_omp_threadprivate): Likewise. 3101 31022007-02-07 Jakub Jelinek <jakub@redhat.com> 3103 3104 PR c++/30703 3105 * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref 3106 parameters and result decls in omp clauses. 3107 (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs 3108 by reference. 3109 31102007-02-05 Dirk Mueller <dmueller@suse.de> 3111 3112 PR bootstrap/30510 3113 * parser.c (cp_parser_class_specifier): Always initialize bases. 3114 31152007-02-05 Paolo Bonzini <bonzini@gnu.org> 3116 3117 * cp-tree.h (OMP_ATOMIC_CODE): Delete. 3118 (OMP_ATOMIC_DEPENDENT_P): Rewrite. 3119 * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC 3120 expressions. 3121 * semantics.c (finish_omp_atomic): Store a whole expression node 3122 in operand 1, and integer_zero_node in operand 0, for dependent 3123 OMP_ATOMIC. Rewrite to make flow easier to understand. 3124 31252007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net> 3126 3127 * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0. 3128 31292007-02-04 Kazu Hirata <kazu@codesourcery.com> 3130 3131 * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c, 3132 parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions. 3133 31342007-02-03 Douglas Gregor <doug.gregor@gmail.com> 3135 3136 * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x 3137 keyword warning to -Wc++0x-compat. 3138 31392007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net> 3140 3141 * decl.c (grokdeclarator): Update documentation. 3142 31432007-02-02 Jakub Jelinek <jakub@redhat.com> 3144 3145 PR c++/30536 3146 * decl.c (grokdeclarator): If __thread is used together with 3147 a storage class other than extern and static, clear thread_p 3148 after issuing diagnostics and fall through to checking the 3149 storage class. 3150 31512007-01-30 Roger Sayle <roger@eyesopen.com> 3152 3153 * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when 3154 calculating the size of an array (to avoid recursive errors). 3155 31562007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 3157 3158 PR c++/24745 3159 * typeck.c (build_binary_op): Fix logic for warning. Move warning 3160 to -Wpointer-arith. 3161 * call.c (convert_like_real): Don't warn when converting to 3162 boolean type. 3163 31642007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 3165 3166 * decl.c (pop_label): Replace warning with call to 3167 warn_for_unused_label. 3168 31692007-01-28 Andrew Pinski <pinskia@gmail.com> 3170 3171 PR C++/28988 3172 * semantics.c (finish_pseudo_destructor_expr): Check the 3173 destrutor name by calling check_dtor_name. 3174 31752007-01-24 Douglas Gregor <dgregor@osl.iu.edu> 3176 3177 * lex.c (D_CPP0X): Rename. 3178 (D_CXX0X): To this. 3179 (reswords): D_CPP0X -> D_CXX0X. 3180 (init_reswords): Ditto. 3181 * parser.c (cp_lexer_get_preprocessor_token): Warn about the use 3182 of C++0x keywords as identifiers. 3183 31842007-01-23 Simon Martin <simartin@users.sourceforge.net> 3185 3186 PR c++/27492 3187 * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for 3188 function decls. 3189 31902007-01-23 Ian Lance Taylor <iant@google.com> 3191 3192 * typeck.c (convert_for_assignment): Only warn about a = b = c 3193 when converting to bool. 3194 31952007-01-23 Roger Sayle <roger@eyesopen.com> 3196 3197 * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with 3198 TREE_OVERFLOW. 3199 * typeck.c (ignore_overflows): Remove the remaining uses of 3200 TREE_CONSTANT_OVERFLOW. 3201 32022007-01-20 Jan Hubicka <jh@suse.cz> 3203 3204 * decl2.c (start_objects, start_static_storage_duration_function): 3205 Do not make the functions uninlinable. 3206 32072007-01-17 Ian Lance Taylor <iant@google.com> 3208 3209 * class.c (add_method): Call VEC_reserve_exact rather than passing 3210 a negative size to VEC_reserve. 3211 32122007-01-11 Simon Martin <simartin@users.sourceforge.net> 3213 3214 PR c++/29573 3215 * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees. 3216 32172007-01-10 Mark Mitchell <mark@codesourcery.com> 3218 3219 PR c++/28999 3220 * decl.c (make_typename_type): If the qualified name is not a 3221 type, issue an error. 3222 * parser.c (cp_parser_elaborated_type_specifier): Fix comment 3223 formatting. 3224 32252007-01-08 Geoffrey Keating <geoffk@apple.com> 3226 3227 * rtti.c: Include target.h. 3228 (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (), 3229 don't emit typeinfo for fundamental types as weak. 3230 * Make-lang.in (cp/rtti.o): Update and correct dependencies. 3231 32322007-01-08 Richard Guenther <rguenther@suse.de> 3233 3234 * cvt.c (cp_convert_to_pointer): Use build_int_cst_type. 3235 32362007-01-08 Mark Shinwell <shinwell@codesourcery.com> 3237 3238 * call.c (standard_conversion): Pass flag to 3239 vector_types_convertible_p to disallow emission of note. 3240 * typeck.c (convert_for_assignment): Pass flag to 3241 vector_types_convertible_p to allow emission of note. 3242 (ptr_reasonably_similar): Pass flag to vector_types_convertible_p 3243 to disallow emission of note. 3244 32452007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 3246 3247 PR c++/28986 3248 * typeck.c (build_binary_op): Call overflow_warning if 3249 TREE_OVERFLOW_P is true for the result and not for any of the 3250 operands. 3251 32522007-01-06 Lee Millward <lee.millward@codesourcery.com> 3253 3254 PR c++/19439 3255 * class.c (add_method): Don't wait until template 3256 instantiation time to complain about duplicate methods. 3257 32582007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 3259 3260 PR c/19978 3261 * semantics.c (finish_unary_op_expr): Warn only if result 3262 overflowed and operands did not. 3263 32642007-01-05 Ian Lance Taylor <iant@google.com> 3265 3266 * typeck.c (build_binary_op): Warn about comparing a non-weak 3267 address to NULL. 3268 32692007-01-05 Douglas Gregor <doug.gregor@gmail.com> 3270 3271 * pt.c (tsubst): Propagate the need for structural equality checks 3272 when reducing the level of template parameters. 3273 32742007-01-03 Kazu Hirata <kazu@codesourcery.com> 3275 3276 * pt.c: Fix a comment typo. 3277 32782007-01-02 Ian Lance Taylor <iant@google.com> 3279 3280 * semantics.c (maybe_convert_cond): Optionally warn when using an 3281 assignment as a condition. 3282 * typeck.c (convert_for_assignment): Optionally warn about 3283 assigning the result of an assignment to a bool. 3284 32852007-01-02 Douglas Gregor <doug.gregor@gmail.com> 3286 3287 * pt.c (canonical_template_parms): Correct typo in comment. 3288 32892007-01-02 Douglas Gregor <doug.gregor@gmail.com> 3290 3291 * typeck.c (structural_comptypes): Renamed from "comptypes". 3292 (comptypes): Use canonical type information to perform fast type 3293 comparison. When VERIFY_CANONICAL_TYPES, verify that the 3294 canonical type comparison returns the same results as we would see 3295 from the current, structural check. Support COMPARE_STRUCTURAL 3296 when we need structural checks. 3297 * decl.c (typename_compare): Fix comment. 3298 (build_typename_type): TYPENAME_TYPE nodes require structural 3299 equality checks, because they resolve different based on the 3300 current class type. 3301 (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes 3302 require structural equality checks (for now). 3303 (build_ptrmemfunc_type): Build the canonical pointer to member 3304 function type. 3305 (compute_array_index_type): Whenever we build a new index type 3306 to represent the size of an array in a template, we need to mark 3307 this index type as requiring structural equality. This goes for 3308 arrays with value-dependent sizes with the current ABI, or all 3309 arrays with ABI-1. 3310 * tree.c (cplus_array_hash): New. 3311 (struct cplus_array_info): New. 3312 (cplus_array_compare): New. 3313 (cplus_array_htab): New. 3314 (build_cplus_array_type_1): Use a hash table to cache the array 3315 types we build. Build the canonical array type for each array 3316 type. 3317 (cp_build_qualified_type_real): When building a cv-qualified array 3318 type, use the hash table of array types and build canonical array 3319 types as necessary. 3320 (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes 3321 use structural equality (for now). 3322 * cp-tree.h (COMPARE_STRUCTURAL): New. 3323 * pt.c (canonical_template_parms): New. 3324 (canonical_type_parameter): New. 3325 (process_template_parm): Find the canonical type parameter. 3326 (lookup_template_class): When we have named the primary template 3327 type, set the canonical type for our template class to the primary 3328 template type. If any of the template arguments need structural 3329 equality checks, the template class needs structural equality 3330 checks. 3331 (tsubst): When reducing the level of a template template 3332 parameter, we require structural equality tests for the resulting 3333 parameter because its template parameters have not had their types 3334 canonicalized. When reducing a template type parameter, find the 3335 canonical reduced type parameter. 3336 (any_template_arguments_need_structural_equality_p): New. 3337 3338 3339Copyright (C) 2007 Free Software Foundation, Inc. 3340 3341Copying and distribution of this file, with or without modification, 3342are permitted in any medium without royalty provided the copyright 3343notice and this notice are preserved. 3344