12011-12-31 Paolo Carlini <paolo.carlini@oracle.com> 2 3 PR c++/51397 4 * semantics.c (finish_static_assert): Use %s instead of %E for 5 the error message. 6 72011-12-27 Fabien Chêne <fabien@gcc.gnu.org> 8 9 PR c++/23211 10 * name-lookup.c (do_class_using_decl): Use dependent_scope_p 11 instead of dependent_type_p, to check that a non-dependent 12 nested-name-specifier of a class-scope using declaration refers to 13 a base, even if the current scope is dependent. 14 * parser.c (cp_parser_using_declaration): Set 15 USING_DECL_TYPENAME_P to 1 if the DECL is not null. Re-indent a 16 'else' close to the prior modification. 17 182011-12-23 Jason Merrill <jason@redhat.com> 19 20 PR c++/51507 21 * search.c (at_function_scope_p): Also check cfun. 22 * pt.c (tsubst_pack_expansion): Check it instead of 23 cp_unevaluated_operand. 24 (instantiate_template_1): Use push_to_top_level. 25 26 * tree.c (dependent_name): OFFSET_REF and BASELINK 27 are not dependent names. 28 292011-12-21 Jason Merrill <jason@redhat.com> 30 31 PR c++/51611 32 * cp-tree.h (CONVERT_EXPR_VBASE_PATH): New. 33 * class.c (build_base_path): Defer vbase conversion in an NSDMI. 34 * tree.c (bot_replace): Expand it here. 35 * cp-gimplify.c (cp_genericize_r): Make sure deferred conversion 36 doesn't leak into GENERIC. 37 382011-12-21 Paolo Carlini <paolo.carlini@oracle.com> 39 40 PR c++/51305 41 * semantics.c (massage_constexpr_body): Reorder conditionals, make 42 sure a BIND_EXPR embedded in a MUST_NOT_THROW_EXPR is handled. 43 442011-12-20 Paolo Carlini <paolo.carlini@oracle.com> 45 46 PR c++/51621 47 * tree.c (diagnose_non_constexpr_vec_init): For value initialization 48 pass void_type_node, not void_zero_node, to build_vec_init_elt. 49 502011-12-20 Dodji Seketeli <dodji@redhat.com> 51 52 PR debug/49951 53 * decl.c (cxx_maybe_build_cleanup): Don't set location of the call 54 to the destructor. 55 562011-12-20 Paolo Carlini <paolo.carlini@oracle.com> 57 58 PR c++/51612 59 * semantics.c (is_valid_constexpr_fn): In case of constexpr 60 constructors also check for virtual base classes. 61 622011-12-19 Paolo Carlini <paolo.carlini@oracle.com> 63 64 PR c++/51328 65 * pt.c (convert_template_argument): Early error out and return 66 error_mark_node for invalid uses of destructors as types. 67 682011-12-19 Jason Merrill <jason@redhat.com> 69 70 PR c++/51530 71 * pt.c (unify): Handle NULLPTR_TYPE. 72 73 PR c++/51526 74 * semantics.c (build_data_member_initialization): Handle 75 delegating constructor. 76 (build_constexpr_constructor_member_initializers): Likewise. 77 78 PR c++/51553 79 * cp-tree.h (LOOKUP_LIST_INIT_CTOR): Rename from 80 LOOKUP_NO_COPY_CTOR_CONVERSION. 81 (add_list_candidates): Set it earlier. 82 (add_candidates): Don't check explicit on ctors when it's set. 83 (add_function_candidate): Check it even when LOOKUP_ONLYCONVERTING 84 is set. 85 86 PR c++/51553 87 * call.c (add_function_candidate): Allow conversions for the copy 88 parm in list-initialization unless the argument is an init-list. 89 902011-12-19 Jakub Jelinek <jakub@redhat.com> 91 92 PR c++/51619 93 * semantics.c (cxx_eval_vec_init_1): If init is NULL for 94 multidimensional array, just set eltinit to NULL_TREE. 95 96 * cp-gimplify.c (gimplify_must_not_throw_expr): Use 97 gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt. 98 992011-12-19 Dodji Seketeli <dodji@redhat.com> 100 101 PR c++/51477 102 * search.c (lookup_member): Get out early on invalid base type. 103 1042011-12-19 Jason Merrill <jason@redhat.com> 105 106 PR c++/51489 107 * semantics.c (cxx_eval_outermost_constant_expr): Check for 108 conversion from pointer to integer here. 109 (cxx_eval_constant_expression) [NOP_EXPR]: Not here. 110 1112011-12-18 Paolo Carlini <paolo.carlini@oracle.com> 112 113 * semantics.c (finish_compound_literal): Don't call check_narrowing 114 if !(complain & tf_warning_or_error). 115 1162011-12-17 Jason Merrill <jason@redhat.com> 117 118 PR c++/51588 119 * parser.c (cp_parser_ptr_operator): Reject pointer to member of enum. 120 1212011-12-17 Richard Henderson <rth@redhat.com> 122 123 PR bootstrap/51072 124 * config-lang.in: Revert last change. 125 1262011-12-17 Jason Merrill <jason@redhat.com> 127 128 PR c++/51586 129 * parser.c (cp_parser_check_class_key): Handle error_mark_node. 130 131 PR c++/51587 132 * decl.c (start_enum): Avoid using ENUM_UNDERLYING_TYPE on a 133 non-enum. 134 1352011-12-16 Jason Merrill <jason@redhat.com> 136 137 PR c++/51416 138 * init.c (build_value_init_noctor): Check for incomplete type. 139 1402011-12-16 Richard Henderson <rth@redhat.com> 141 142 PR bootstrap/51072 143 * config-lang.in (target_libs): Include target-libitm. 144 1452011-12-16 Jason Merrill <jason@redhat.com> 146 147 PR c++/51461 148 * decl.c (check_static_variable_definition): Check COMPLETE_TYPE_P 149 before literal_type_p. 150 151 PR c++/51331 152 * class.c (convert_to_base_statically): Just call 153 build_simple_base_path. 154 (build_simple_base_path): Check field offset. 155 1562011-12-15 Jason Merrill <jason@redhat.com> 157 158 PR c++/51458 159 * decl.c (has_designator_problem): New. 160 (reshape_init_r): Check for improper use of 161 designated initializers. 162 1632011-12-15 Jakub Jelinek <jakub@redhat.com> 164 165 PR c++/51463 166 * decl.c (grokdeclarator): Set DECL_INITIAL of decl 167 to error_mark_node to disallow NSDMI if declspecs->storage_class 168 is sc_static. 169 * parser.c (cp_parser_late_parse_one_default_arg): Return early 170 if default_arg is error_mark_node. 171 172 PR c/51360 173 * semantics.c (finish_omp_clauses): For OMP_CLAUSE_NUM_THREADS_EXPR 174 and OMP_CLAUSE_SCHEDULE_CHUNK_EXPR call mark_rvalue_use. 175 1762011-12-15 Dodji Seketeli <dodji@redhat.com> 177 178 PR c++/51473 179 * decl.c (check_tag_decl): Error out on auto specifier with no 180 declarator. 181 1822011-12-15 Jonathan Wakely <jwakely.gcc@gmail.com> 183 184 PR libstdc++/51365 185 * cp-tree.h (CPTK_IS_FINAL): Add. 186 * parser.c (cp_parser_translation_unit): Handle RID_IS_FINAL. 187 (cp_parser_primary_expression, cp_parser_trait_expr): Likewise. 188 * semantics.c (trait_expr_value, finish_trait_expr): Handle 189 CPTK_IS_FINAL. 190 * cxx-pretty-print.c (pp_cxx_trait_expression): Likewise. 191 1922011-12-14 Jason Merrill <jason@redhat.com> 193 194 PR c++/51554 195 * semantics.c (cxx_eval_indirect_ref): Fix sanity check. 196 197 PR c++/51248 198 * decl.c (copy_type_enum): Also update variants. 199 (finish_enum): Allow variants of complete enums. 200 2012011-12-14 Dodji Seketeli <dodji@redhat.com> 202 203 PR c++/51475 204 * call.c (struct conversion)<u.next>: Update comment. 205 (next_conversion): New static function. 206 (convert_like_real): Use it. 207 208 PR c++/51476 209 * pt.c (convert_nontype_argument): Don't call maybe_constant_value 210 for PTRMEM_CST nodes. 211 2122011-12-13 Jason Merrill <jason@redhat.com> 213 214 PR c++/51406 215 PR c++/51161 216 * typeck.c (build_static_cast_1): Fix cast of lvalue to 217 base rvalue reference. 218 2192011-12-13 Paolo Carlini <paolo.carlini@oracle.com> 220 221 PR c++/51464 222 * semantics.c (begin_lambda_type): Check begin_class_definition return 223 value for error_mark_node. 224 * parser.c (cp_parser_lambda_expression): Check begin_lambda_type 225 return value for error_mark_node. 226 2272011-12-13 Fabien Chêne <fabien@gcc.gnu.org> 228 229 PR c++/14258 230 * cp-tree.h (USING_DECL_TYPENAME_P): New macro. 231 * parser.c (cp_parser_nonclass_name): Handle using declarations 232 that refer to a dependent type. 233 (cp_parser_using_declaration): Set USING_DECL_TYPENAME_P to 1 if 234 the using declaration refers to a dependent type. 235 2362011-12-12 Jakub Jelinek <jakub@redhat.com> 237 238 PR c++/51496 239 * parser.c (cp_parser_omp_for_loop): When determining whether 240 to use cp_parser_omp_for_incr or cp_parser_expression and when 241 calling cp_parser_omp_for_incr, use real_decl instead of decl. 242 2432011-12-12 Torvald Riegel <triegel@redhat.com> 244 245 * semantics.c (finish_transaction_stmt, build_transaction_expr): 246 Accept new noexcept parameter and handle it. 247 * cp-tree.h (finish_transaction_stmt, build_transaction_expr): Adapt 248 declarations. 249 * parser.c (cp_parser_exception_specification_opt): Extract 250 noexcept-specification parsing to ... 251 (cp_parser_noexcept_specification_opt): ...here. Allow for parsing 252 non-constexpr noexcept arguments. 253 (cp_parser_transaction, cp_parser_transaction_expression): Parse 254 and handle noexcept-specifications. 255 (cp_parser_function_transaction): Adapt to finish_transaction_stmt 256 change. 257 * pt.c (tsubst_expr): Adapt to new noexcept parameters when 258 building transactions. 259 2602011-12-12 Torvald Riegel <triegel@redhat.com> 261 262 * cp-tree.def (MUST_NOT_THROW_EXPR): Add condition parameter. 263 * cp-tree.h (MUST_NOT_THROW_COND): New. 264 (build_must_not_throw_expr): Declare. 265 * dump.c (cp_dump_tree): Dump MUST_NOT_THROW_EXPR condition. 266 * except.c (build_must_not_throw_expr): New. 267 (initialize_handler_parm): Use it. 268 (begin_eh_spec_block, wrap_cleanups_r): Adapt to condition. 269 * pt.c (tsubst_expr): Handle MUST_NOT_THROW_EXPR. 270 2712011-12-12 Richard Guenther <rguenther@suse.de> 272 273 PR lto/51262 274 * tree.c (cp_free_lang_data): No longer clear anonymous names. 275 2762011-12-09 Jason Merrill <jason@redhat.com> 277 278 PR c++/51151 279 * call.c (perform_implicit_conversion_flags): Remove earlier kludge. 280 * parser.c (cp_parser_omp_for_loop): Use cp_parser_omp_for_incr 281 in templates even if decl isn't type-dependent. 282 2832011-12-09 Dodji Seketeli <dodji@redhat.com> 284 285 PR c++/51289 286 * cp-tree.h (TYPE_TEMPLATE_INFO): Rewrite this accessor macro to 287 better support aliased types. 288 (TYPE_ALIAS_P): Don't crash on TYPE_NAME nodes that are not 289 TYPE_DECL. 290 * pt.c (find_parameter_packs_r): Handle types aliases. 291 (push_template_decl_real): Check for bare parameter packs in the 292 underlying type of an alias template. 293 2942011-12-08 Jason Merrill <jason@redhat.com> 295 296 PR c++/51318 297 * typeck.c (build_x_conditional_expr): Restrict glvalue games to C++11. 298 299 PR c++/51459 300 * pt.c (tsubst_expr) [DECL_EXPR]: Handle capture proxies properly. 301 * semantics.c (insert_capture_proxy): No longer static. 302 * cp-tree.h: Declare it. 303 3042011-12-07 Jakub Jelinek <jakub@redhat.com> 305 306 PR c++/51401 307 * decl.c (grokdeclarator): Error for auto on non-static data members. 308 309 PR c++/51429 310 * typeck2.c (cxx_incomplete_type_diagnostic): Don't 311 ICE if TREE_OPERAND (value, 1) is overloaded. 312 313 PR c++/51229 314 * decl.c (reshape_init_class): Complain if d->cur->index is 315 INTEGER_CST. 316 * parser.c (cp_parser_initializer_list): If cp_parser_parse_definitely 317 fails, clear designator. 318 319 PR c++/51369 320 * init.c (build_value_init): Allow array types even when 321 processing_template_decl. 322 3232011-12-07 Ed Smith-Rowland <3dw4rd@verizon.net> 324 325 PR c++/51420 326 * parser.c (lookup_literal_operator): Check that declaration is an 327 overloaded function. 328 3292011-12-06 Jakub Jelinek <jakub@redhat.com> 330 331 PR c++/51430 332 * pt.c (tsubst_decl): Don't call strip_array_domain on 333 error_mark_node. 334 3352011-12-06 Paolo Carlini <paolo.carlini@oracle.com> 336 337 PR c++/51431 338 * init.c (build_value_init): Check build_aggr_init_expr return 339 value for error_mark_node. 340 3412011-12-06 Dodji Seketeli <dodji@redhat.com> 342 343 PR c++/51427 344 * parser.c (cp_parser_check_class_key): Add note about earlier 345 declaration. 346 3472011-12-05 Fabien Chêne <fabien@gcc.gnu.org> 348 349 PR c++/51319 350 * semantics.c (finish_id_expression): Strip using declarations 351 early in the function. 352 3532011-12-05 Paolo Carlini <paolo.carlini@oracle.com> 354 355 PR c++/51399 356 * init.c (perform_member_init): Early return if init is error_mark_node. 357 3582011-12-05 Paolo Carlini <paolo.carlini@oracle.com> 359 360 PR c++/51414 361 * semantics.c (finish_underlying_type): Use %qT, not %qE for the 362 error message. 363 3642011-12-05 Jason Merrill <jason@redhat.com> 365 366 * init.c (expand_default_init): Unshare args in ctor delegation. 367 3682011-12-05 Ville Voutilainen <ville.voutilainen@gmail.com> 369 Pedro Lamarão <pedro.lamarao@gmail.com> 370 371 Implement C++11 delegating constructors. 372 * cp-tree.h (enum cpp0x_warn_str): Add CPP0X_DELEGATING_CTORS. 373 * error.c (maybe_warn_cpp0x): Adjust. 374 * parser.c (cp_parser_mem_initializer_list): Use it. Diagnose 375 multiple initializers if a delegating initializer is present. 376 * call.c (build_special_member_call): Convert an assert into an if. 377 * init.c (perform_target_ctor): New. 378 (emit_mem_initializers): Use it. 379 (expand_member_init, expand_default_init): Adjust. 380 3812011-12-05 Paolo Carlini <paolo.carlini@oracle.com> 382 383 PR c++/51404 384 * typeck2.c (build_functional_cast): Early return error_mark_node 385 for invalid uses of 'auto'. 386 * parser.c (cp_parser_direct_declarator): When 387 cp_parser_constant_expression returns error do not produce further 388 diagnostic for the bound. 389 3902011-12-03 Paolo Carlini <paolo.carlini@oracle.com> 391 392 PR c++/51313 393 * call.c (null_ptr_cst_p): STRIP_NOPS in c++11 mode too. 394 3952011-12-01 Jason Merrill <jason@redhat.com> 396 397 * call.c (build_new_method_call_1): Handle aggregate initialization. 398 * tree.c (stabilize_init): Handle CONSTRUCTOR. 399 4002011-12-01 Paolo Carlini <paolo.carlini@oracle.com> 401 402 PR c++/51326 403 * call.c (build_user_type_conversion_1): Early return NULL if 404 expr is NULL_TREE. 405 4062011-12-01 Paolo Carlini <paolo.carlini@oracle.com> 407 408 PR c++/51367 409 * pt.c (unify_inconsistency): Use either %qT or %qE depending on 410 whether parm is a type or non-type parameter. 411 4122011-11-30 Jason Merrill <jason@redhat.com> 413 414 PR c++/51009 415 * name-lookup.c (push_to_top_level): Set stmts_are_full_exprs_p. 416 * decl.c (build_aggr_init_full_exprs): Just assert that it's true. 417 (check_initializer): Here too. 418 4192011-11-30 Paolo Carlini <paolo.carlini@oracle.com> 420 421 PR c++/51299 422 * rtti.c (ifnonnull): Use nullptr_node. 423 (build_dynamic_cast_1): Call cp_truthvalue_conversion instead 424 of c_common_truthvalue_conversion. 425 4262011-11-24 Paolo Carlini <paolo.carlini@oracle.com> 427 428 PR c++/51227 429 * pt.c (instantiate_class_template_1): If lambda_function (type) 430 is NULL_TREE do not instantiate_decl. 431 4322011-11-24 Paolo Carlini <paolo.carlini@oracle.com> 433 434 PR c++/51290 435 * class.c (build_base_path): For the null pointer check use 436 nullptr_node instead of integer_zero_node. 437 4382011-11-22 Dodji Seketeli <dodji@redhat.com> 439 440 PR c++/51145 441 * decl.c (check_elaborated_type_specifier): Gracefully handle 442 error_mark_node. Accept bound template template parameters. 443 Update diagnostics for alias template specializations. Update 444 comment. 445 * parser.c (cp_parser_elaborated_type_specifier): Use 446 check_elaborated_type_specifier for simple-template-ids as well. 447 4482011-11-22 Paolo Carlini <paolo.carlini@oracle.com> 449 450 PR c++/51265 451 * semantics.c (finish_decltype_type): Handle PTRMEM_CST. 452 4532011-11-22 Dodji Seketeli <dodji@redhat.com> 454 455 PR c++/51143 456 * parser.c (cp_parser_alias_declaration): Don't allow type 457 definition in templates. 458 4592011-11-22 Paolo Carlini <paolo.carlini@oracle.com> 460 461 PR c++/51196 462 * typeck.c (cp_build_binary_op, [case EQ_EXPR]): For targets having 463 TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_delta, do here 464 the -Wzero-as-null-pointer-constant warning for pmf == 0. 465 4662011-11-21 Torvald Riegel <triegel@redhat.com> 467 468 * pt.c (tsubst_copy_and_build): Handle TRANSACTION_EXPR. 469 4702011-11-21 Ed Smith-Rowland <3dw4rd@verizon.net> 471 472 PR c++/50958 473 * parser.c (lookup_literal_operator): New. 474 (cp_parser_userdef_char_literal): Use it. 475 (cp_parser_userdef_numeric_literal): Use it. 476 (cp_parser_userdef_string_literal): Use lookup_name. 477 4782011-11-20 Jason Merrill <jason@redhat.com> 479 480 * pt.c (tsubst_pack_expansion): Fix SFINAE. 481 482 PR c++/48322 483 * cp-tree.h (PACK_EXPANSION_EXTRA_ARGS): New. 484 * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand for it. 485 * pt.c (tsubst_pack_expansion): Set and use it. 486 (iterative_hash_template_arg): Hash it. 487 (template_args_equal): Compare it. 488 (comp_template_args_with_info): Handle nulls. 489 * tree.c (cp_walk_subtrees): Walk it. 490 * typeck.c (structural_comptypes): Compare it. 491 * ptree.c (cxx_print_type): Print it. 492 493 * pt.c (type_unification_real): Set input_location 494 during default arg instantiation. 495 4962011-11-20 Paolo Carlini <paolo.carlini@oracle.com> 497 498 PR c++/51230 499 * pt.c (unify_inconsistency): Handle non-type parameters better. 500 * error.c (dump_expr): Handle TEMPLATE_TEMPLATE_PARM. 501 5022011-11-20 Dodji Seketeli <dodji@redhat.com> 503 504 PR c++/51194 505 * pt.c (lookup_template_class_1): Go out early if the type of the 506 template is error_mark_node. 507 5082011-11-19 Paolo Carlini <paolo.carlini@oracle.com> 509 510 PR c++/51216 511 * semantics.c (potential_constant_expression_1): Handle IF_STMT, 512 DO_STMT, FOR_STMT, and WHILE_STMT. 513 5142011-11-18 Fabien Chêne <fabien@gcc.gnu.org> 515 516 PR c++/51188 517 * search.c (lookup_field_1): Handle USING_DECLs for the storted 518 case. 519 5202011-11-18 Paolo Carlini <paolo.carlini@oracle.com> 521 522 PR c++/51150 523 * pt.c (tsubst_copy_and_build): Handle FIX_TRUNC_EXPR. 524 5252011-11-18 Dodji Seketeli <dodji@redhat.com> 526 527 PR c++/51191 528 * pt.c (primary_template_instantiation_p): Don't forget to 529 consider alias declarations. 530 5312011-11-17 Jason Merrill <jason@redhat.com> 532 533 PR c++/51186 534 * decl.c (grokdeclarator): Improve C++98 trailing return diagnostic. 535 536 N3203 537 * class.c (add_implicitly_declared_members): Update move 538 conditions. 539 540 PR c++/51137 541 * class.c (build_base_path): Don't do calculation in templates. 542 5432011-11-15 Torvald Riegel <triegel@redhat.com> 544 545 * parser.c (cp_parser_transaction_expression): Require parentheses 546 when parsing transaction expressions. 547 5482011-11-14 Ed Smith-Rowland <3dw4rd@verizon.net> 549 550 PR c++/51107 551 * typeck.c (check_literal_operator_args): Add processing_specialization 552 to check for void template fn. Test for exact arity for non-template fn. 553 5542011-11-14 Fabien Chêne <fabien@gcc.gnu.org> 555 556 PR c++/6936 557 PR c++/25994 558 PR c++/26256 559 PR c++/30195 560 * search.c (lookup_field_1): Look through USING_DECL. 561 (lookup_field_r): Call lookup_fnfields_slot instead of 562 lookup_fnfields_1. 563 * semantics.c (finish_member_declaration): Remove the check that 564 prevents USING_DECLs from being verified by 565 pushdecl_class_level. Call add_method for using declarations that 566 designates functions if the using declaration is in a template 567 class. Set DECL_IGNORED_P on class-scope using declarations. 568 * typeck.c (build_class_member_access_expr): Handle USING_DECLs. 569 * class.c (check_field_decls): Keep using declarations. 570 (add_method): Remove two diagnostics about conflicting using 571 declarations. 572 * parser.c (cp_parser_nonclass_name): Handle USING_DECLs. 573 * decl.c (start_enum): Call xref_tag whenever possible. 574 * cp-tree.h (strip_using_decl): Declare, and reident the previous 575 function. 576 * name-lookup.c (strip_using_decl): New function. 577 (supplement_binding_1): Call strip_using_decl on decl and 578 bval. Perform most of the checks with USING_DECLs stripped. Also 579 check that the target decl and the target bval does not refer to 580 the same declaration. Allow pushing an enum multiple times in a 581 template class. Adjustment to diagnose using redeclarations. Call 582 diagnose_name_conflict. 583 (push_class_level_binding): Call strip_using_decl on decl and 584 bval. Perform most of the checks with USING_DECLs stripped. Return 585 true if both decl and bval refer to USING_DECLs and are dependent. 586 (diagnose_name_conflict): New function. 587 5882011-11-12 Jason Merrill <jason@redhat.com> 589 590 PR c++/986 591 * call.c (set_up_extended_ref_temp): Warn about references 592 bound to non-static reference members. 593 * init.c (perform_member_init): Pass in the member. 594 595 PR c++/51060 596 * cp-gimplify.c (cp_gimplify_expr): Leave clobbers alone. 597 5982011-11-11 Ed Smith-Rowland <3dw4rd@verizon.net> 599 600 PR c++/50976 601 * typeck.c (check_literal_operator_args): Reorganize test for string 602 operators so size_t search depends on finding string first. 603 6042011-11-10 Jason Merrill <jason@redhat.com> 605 606 PR c++/50372 607 * pt.c (convert_nontype_argument_function): Allow decls with 608 internal linkage in C++11. 609 (convert_nontype_argument): Likewise. 610 611 PR c++/50973 612 * decl2.c (mark_used): Defer synthesis of virtual functions. 613 * method.c (use_thunk): Make sure the target function has 614 DECL_INTERFACE_KNOWN. 615 616 PR c++/51079, DR 495 617 * call.c (joust): Check the second conversion sequence 618 before checking templates. 619 6202011-11-09 Paolo Carlini <paolo.carlini@oracle.com> 621 622 PR c++/50837 623 * pt.c (tsubst_copy_and_build) [IDENTIFIER_NODE]: In C++11 mode 624 pass allow_non_integral_constant_expression_p = true to 625 finish_id_expression. 626 6272011-11-09 Jason Merrill <jason@redhat.com> 628 629 PR c++/50972 630 * pt.c (maybe_instantiate_noexcept): Check the return value of 631 push_tinst_level. 632 633 PR c++/51046 634 * parser.c (cp_parser_range_for): check_for_bare_parameter_packs. 635 636 PR c++/51029 637 * class.c (build_base_path): Don't ICE in fold_non_dependent_expr. 638 639 * Make-lang.in (check_g++_parallelize): Add dg-torture.exp. 640 (check-c++0x): Obsolete. 641 642 * pt.c (invalid_nontype_parm_type_p): Avoid printing "<type error>". 643 644 * pt.c (convert_nontype_argument): Only integral arguments 645 get early folding. 646 647 * parser.c (cp_parser_alias_declaration): Don't do semantic 648 processing if parsing failed. 649 6502011-11-09 Paolo Carlini <paolo.carlini@oracle.com> 651 652 PR c++/51045 653 * init.c (build_new_1, build_vec_delete_1, build_delete): 654 Use nullptr_node. 655 6562011-11-09 Paolo Carlini <paolo.carlini@oracle.com> 657 658 PR c++/51047 659 * search.c (lookup_member): Change to take also a tsubst_flags_t 660 parameter. 661 (lookup_field, lookup_fnfields): Adjust calls. 662 * typeck.c (lookup_destructor, finish_class_member_access_expr, 663 build_ptrmemfunc_access_expr): Likewise. 664 * class.c (handle_using_decl, maybe_note_name_used_in_class): 665 Likewise. 666 * pt.c (resolve_typename_type): Likewise. 667 * semantics.c (lambda_function): Likewise. 668 * parser.c (cp_parser_perform_range_for_lookup, 669 cp_parser_lookup_name): Likewise. 670 * friend.c (make_friend_class): Likewise. 671 * name-lookup.c (pushdecl_maybe_friend_1, get_class_binding, 672 do_class_using_decl, lookup_qualified_name): Likewise. 673 * cp-tree.h (lookup_member): Adjust declaration. 674 6752011-11-09 Dodji Seketeli <dodji@redhat.com> 676 677 PR c++/51043 678 * cp-tree.h (TYPE_ALIAS_P, TYPE_TEMPLATE_INFO): Don't crash on 679 NULL TYPE_NAME. 680 681 PR c++/51027 682 * parser.c (cp_parser_alias_declaration): Require ';' at the end 683 of the declaration. 684 6852011-11-09 Dodji Seketeli <dodji@redhat.com> 686 687 PR debug/51032 688 * decl2.c (check_member_template): Accept alias templates and ... 689 * parser.c (cp_parser_alias_declaration): ... use it here. 690 6912011-11-08 Jason Merrill <jason@redhat.com> 692 693 PR c++/50835 694 * typeck.c (build_x_conditional_expr): Preserve lvalue/xvalueness. 695 * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Return clk_ordinary 696 in C++98. 697 6982011-11-08 Richard Guenther <rguenther@suse.de> 699 700 PR middle-end/51010 701 * error.c (dump_expr): Handle SSA_NAMEs. 702 7032011-11-07 Richard Henderson <rth@redhat.com> 704 Aldy Hernandez <aldyh@redhat.com> 705 Torvald Riegel <triegel@redhat.com> 706 707 Merged from transactional-memory. 708 709 * call.c (build_new_function_call): Call tm_malloc_replacement. 710 * class.c (check_bases): Compute transaction attributes for the 711 class based on its base classes. 712 (look_for_tm_attr_overrides, set_one_vmethod_tm_attributes, 713 set_method_tm_attributes): New. 714 (finish_struct_1): Call set_method_tm_attributes. 715 * cp-tree.h (begin_transaction_stmt, finish_transaction_stmt, 716 build_transaction_expr): Declare. 717 (TRANSACTION_EXPR_IS_STMT): New. 718 * decl.c (push_cp_library_fn): Set attribute to transaction_safe. 719 * except.c (do_get_exception_ptr): Apply transaction_pure. 720 (do_begin_catch): Mark _ITM_cxa_begin_catch transaction_pure and 721 record as transactional-memory wrapper. 722 (do_end_catch): Similarly for _ITM_cxa_end_catch. 723 (do_allocate_exception): Similarly for _ITM_cxa_allocate_exception. 724 (build_throw): Similarly for _ITM_cxa_throw. Make __cxa_rethrow pure. 725 * parser.h (struct cp_parser): Add in_transaction flag. 726 * parser.c (enum non_integral_constant): Add NIC_TRANSACTION. 727 (cp_parser_non_integral_constant_expression): Handle NIC_TRANSACTION. 728 (enum required_token): Add transaction tokens. 729 (cp_parser_transaction, cp_parser_transaction_expression, 730 cp_parser_function_transaction, cp_parser_transaction_cancel, 731 cp_parser_txn_attribute_opt): New. 732 (cp_parser_unary_expression): Handle RID_TRANSACTION*. 733 (cp_parser_statement, cp_parser_function_definition_after_declarator, 734 cp_parser_token_starts_function_definition_p): Same. 735 (cp_parser_required_error): Handle RT_TRANSACTION*. 736 * pt.c (tsubst_expr): Handle TRANSACTION_EXPR. 737 * semantics.c (begin_transaction_stmt, finish_transaction_stmt, 738 build_transaction_expr): New. 739 7402011-11-08 Dodji Seketeli <dodji@redhat.com> 741 742 Fix context handling of alias-declaration 743 * decl.c (start_decl): Update comment. 744 * error.c (dump_alias_template_specialization): Dump the context 745 of the specialization. 746 * parser.c (cp_parser_alias_declaration): Call pop_scope on the 747 pushed scope yielded by start_decl. 748 7492011-11-08 Paolo Carlini <paolo.carlini@oracle.com> 750 751 PR c++/50864 752 * parser.c (cp_parser_postfix_dot_deref_expression): Reject invalid 753 uses of '->' and '.' as postfix-expression in namespace scope. 754 7552011-11-07 Jason Merrill <jason@redhat.com> 756 757 PR c++/50848 758 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't crash 759 if lookup finds a non-function. 760 761 PR c++/50863 762 * parser.c (cp_parser_initializer_list): Parse C99 763 array designators tentatively. 764 765 PR c++/50870 766 * pt.c (tsubst_copy): Handle NAMESPACE_DECL. 767 (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent 768 object. 769 7702011-11-07 Paolo Carlini <paolo.carlini@oracle.com> 771 772 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error 773 call in case COMPONENT_REF. 774 7752011-11-07 Jason Merrill <jason@redhat.com> 776 Dodji Seketeli <dodji@redhat.com> 777 778 Support C++11 alias-declaration 779 PR c++/45114 780 * cp-tree.h (TYPE_DECL_ALIAS_P, TYPE_ALIAS_P) 781 (DECL_TYPE_TEMPLATE_P, DECL_ALIAS_TEMPLATE_P): New accessor 782 macros. 783 (TYPE_TEMPLATE_INFO): Get template info of an alias template 784 specializations from its TYPE_DECL. 785 (SET_TYPE_TEMPLATE_INFO): Set template info of alias template 786 specializations into its TYPE_DECL. 787 (DECL_CLASS_TEMPLATE_P): Re-write using the new 788 DECL_TYPE_TEMPLATE_P. 789 (enum cp_decl_spec): Add new ds_alias enumerator. 790 (alias_type_or_template_p, alias_template_specialization_p): 791 Declare new functions. 792 * parser.c (cp_parser_alias_declaration): New static function. 793 (cp_parser_check_decl_spec): Add "using" name for the `alias' 794 declspec. 795 (cp_parser_type_name): Update comment. Support simple-template-id 796 representing alias template specializations in c++0x mode. 797 (cp_parser_qualifying_entity): Update comment. Use 798 cp_parser_type_name. 799 (cp_parser_block_declaration): Handle alias-declaration in c++11. 800 Update comment. 801 (cp_parser_template_id): Handle specializations of alias 802 templates. 803 (cp_parser_member_declaration): Add alias-declaration production 804 to comment. Support alias-declarations. 805 (cp_parser_template_declaration_after_export): Handle alias 806 templates in c++11. 807 * decl.c (make_typename_type, make_unbound_class_template): Accept 808 alias templates. 809 (grokdeclarator): Set TYPE_DECL_ALIAS_P on alias 810 declarations. 811 * decl2.c (grokfield): Move template creation after setting up the 812 TYPE_DECL of the alias, so that the TEMPLATE_DECL of the alias 813 template actually carries the right type-id of the alias 814 declaration. 815 * pt.c (alias_type_or_template_p) 816 (alias_template_specialization_p): Define new public functions. 817 (maybe_process_partial_specialization): Reject partial 818 specializations of alias templates. 819 (primary_template_instantiation_p): Consider alias template 820 instantiations. 821 (push_template_decl_real): Assert that TYPE_DECLs of alias 822 templates are different from those of class template. Store 823 template info onto the TYPE_DECL of the alias template. 824 (convert_template_argument): Strip aliases from template 825 arguments. 826 (lookup_template_class_1): Handle the creation of the 827 specialization of an alias template. 828 (tsubst_decl): Create a substituted copy of the TYPE_DECL of an 829 member alias template. 830 (tsubst): Handle substituting into the type of an alias template. 831 Handle substituting UNBOUND_CLASS_TEMPLATE into 832 BOUND_TEMPLATE_TEMPLATE_PARM. 833 (do_type_instantiation): Better diagnostics when trying to 834 explicitely instantiate a non-class template. 835 * search.c (lookup_field_1, lookup_field_r): Support looking up 836 alias templates. 837 * semantics.c (finish_template_type): For instantiations of alias 838 templates, return the TYPE_DECL of the actual alias and not the 839 one of the aliased type. 840 * error.c (dump_alias_template_specialization): New static 841 function. 842 (dump_type): Handle printing of alias templates and their 843 specializations. templates. 844 (dump_aggr_type): For specialization of alias templates, fetch 845 arguments from the right place. 846 (dump_decl): Print an alias-declaration like `using decl = type;' 847 (dump_template_decl): Support printing of alias templates. 848 8492011-11-07 Jason Merrill <jason@redhat.com> 850 851 PR c++/35688 852 * decl2.c (constrain_visibility): Return void. Add tmpl parm 853 which gives the constraint priority over an attribute. 854 (constrain_visibility_for_template, determine_visibility): Adjust. 855 * pt.c (instantiate_class_template_1): Call determine_visibility. 856 857 PR c++/33255 858 * decl.c (save_function_data): Clear local_typedefs. 859 860 * decl.c (cp_finish_decl): Only make_tree_vector if we're calling 861 check_initializer. 862 8632011-11-06 Jason Merrill <jason@redhat.com> 864 865 PR c++/35688 866 * decl2.c (constrain_visibility): Check decl_has_visibility_attr 867 rather than DECL_VISIBILITY_SPECIFIED. 868 8692011-11-06 Paolo Carlini <paolo.carlini@oracle.com> 870 871 PR c++/47695 872 * decl2.c (mark_used): Early return false after error or sorry. 873 * cp-tree.h (mark_used): Adjust declaration. 874 * semantics.c (finish_id_expression): Check mark_used return value. 875 8762011-11-05 Jason Merrill <jason@redhat.com> 877 878 PR c++/48370 879 * decl.c (cp_finish_decl): Mostly revert previous change. 880 8812011-11-04 Jason Merrill <jason@redhat.com> 882 883 PR c++/26714 884 * init.c (perform_member_init): Strip TARGET_EXPR around NSDMI. 885 Do temporary lifetime extension. 886 887 PR c++/48370 888 * decl.c (cp_finish_decl): Run cleanups in the right order. 889 8902011-11-04 Eric Botcazou <ebotcazou@adacore.com> 891 892 PR c++/50608 893 * semantics.c (finish_offsetof): Adjust call to fold_offsetof. 894 * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1. 895 8962011-11-04 Paolo Carlini <paolo.carlini@oracle.com> 897 898 * typeck.c (build_indirect_ref): Use ATTRIBUTE_UNUSED. 899 * mangle.c (write_unnamed_type_name): Likewise. 900 9012011-11-04 Magnus Fromreide <magfr@lysator.liu.se> 902 903 * parser.c (cp_parser_enumerator_list): Do not warn about 904 trailing commas in C++0x mode. 905 9062011-11-04 Olivier Goffart <olivier@woboq.com> 907 Jason Merrill <jason@redhat.com> 908 909 PR c++/50965 910 * class.c (check_field_decls): NSDMI makes a class non-aggregate. 911 9122011-11-04 Paolo Carlini <paolo.carlini@oracle.com> 913 914 PR c++/48420 915 * call.c (conversion_null_warnings): For 'false' to NULL pointer, 916 just check that TREE_TYPE (expr) is a BOOLEAN_TYPE. 917 9182011-11-04 Ed Smith-Rowland <3dw4rd@verizon.net> 919 920 PR c++/50941 921 * parser.c (cp_parser_userdef_string_literal): Fix string length. 922 9232011-11-04 Jason Merrill <jason@redhat.com> 924 925 PR c++/48370 926 * call.c (extend_ref_init_temps, extend_ref_init_temps_1): New. 927 (set_up_extended_ref_temp): Use it. Change cleanup parm to VEC. 928 (initialize_reference): Just call convert_like. 929 * decl.c (grok_reference_init): Just call initialize_reference. 930 (build_init_list_var_init): Remove. 931 (check_initializer): Change cleanup parm to VEC. Handle references 932 like other types. Call perform_implicit_conversion instead 933 of build_init_list_var_init. Don't use build_aggr_init for 934 aggregate initialization of arrays. 935 (cp_finish_decl): Change cleanup to VEC. 936 * typeck2.c (store_init_value): Call extend_ref_init_temps. 937 Use build_vec_init for non-constant arrays. 938 * init.c (expand_aggr_init_1): Adjust. 939 (build_vec_init): Avoid re-converting an initializer 940 that's already digested. 941 * mangle.c (mangle_ref_init_variable): Add a discriminator. 942 * cp-tree.h: Adjust. 943 * typeck.c (convert_for_initialization): Adjust. 944 * decl2.c (maybe_emit_vtables): Adjust. 945 9462011-11-02 Jason Merrill <jason@redhat.com> 947 948 PR c++/50930 949 * init.c (build_aggr_init): Don't set LOOKUP_ONLYCONVERTING 950 if the initializer has TARGET_EXPR_DIRECT_INIT_P. 951 (expand_default_init): An initializer with TARGET_EXPR_DIRECT_INIT_P 952 or TARGET_EXPR_LIST_INIT_P doesn't need more processing. 953 * tree.c (bot_manip): Propagate TARGET_EXPR_IMPLICIT_P, 954 TARGET_EXPR_LIST_INIT_P, TARGET_EXPR_DIRECT_INIT_P. 955 * call.c (convert_like_real): Set TARGET_EXPR_DIRECT_INIT_P 956 as appropriate on list-value-initialization. 957 958 * parser.c (cp_parser_decl_specifier_seq): Change "C++0x" to 959 "C++11" in warnings. 960 (cp_lexer_get_preprocessor_token): Likewise. 961 (cp_parser_binary_expression): Likewise. 962 9632011-11-02 Paolo Carlini <paolo.carlini@oracle.com> 964 965 PR c++/50810 966 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics. 967 (digest_init_r): Call check_narrowing irrespective of the C++ dialect. 968 * decl.c (check_initializer): Likewise. 969 * semantics.c (finish_compound_literal): Likewise. 970 9712011-11-02 Paolo Carlini <paolo.carlini@oracle.com> 972 973 PR c++/50956 974 * typeck.c (build_const_cast_1): Fix -Wcast-qual for false 975 comp_ptr_ttypes_const. 976 9772011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 978 979 * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK. 980 9812011-11-01 Paolo Carlini <paolo.carlini@oracle.com> 982 983 PR c++/44277 984 * cvt.c (cp_convert_to_pointer): Warn for zero as null pointer 985 constant. 986 * typeck.c (cp_truthvalue_conversion): Handle pointers and member 987 function pointers under c_inhibit_evaluation_warnings; use 988 nullptr_node for data member pointers. 989 (cp_build_binary_op): Tweak, just forward to cp_convert op1, 990 either a nullptr_node or an integer_zero_node. 991 (build_ptrmemfunc): Use nullptr_node. 992 * init.c (build_zero_init_1): Likewise. 993 9942011-11-01 Jason Merrill <jason@redhat.com> 995 996 PR c++/50500 997 DR 1082 998 * search.c (lookup_fnfields_idx_nolazy): Split out from... 999 (lookup_fnfields_1): ...here. 1000 (lookup_fnfields_slot_nolazy): Use it. 1001 * cp-tree.h: Declare it. 1002 * class.c (type_has_move_assign): Use it. 1003 (type_has_user_declared_move_assign): Likewise. 1004 10052011-10-31 Jason Merrill <jason@redhat.com> 1006 1007 PR c++/50920 1008 * class.c (check_field_decl): Change c++0x in diags to c++11. 1009 * error.c (maybe_warn_cpp0x): Likewise. 1010 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. 1011 * pt.c (check_default_tmpl_args): Likewise. 1012 10132011-10-31 Diego Novillo <dnovillo@google.com> 1014 1015 * mangle.c (get_mangled_id): Factor from ... 1016 (mangle_decl): ... here. 1017 Call get_mangled_id. 1018 10192011-10-25 Gerald Pfeifer <gerald@pfeifer.com> 1020 1021 * NEWS (GCC 2.95): Refer to GNU/Linux instead of Linux. 1022 (EGCS 1.0): Ditto. 1023 10242011-10-29 Paolo Carlini <paolo.carlini@oracle.com> 1025 1026 PR c++/50901 1027 * call.c (build_new_op_1): Handle ABS_EXPR together with the 1028 other unary EXPR. 1029 10302011-10-28 Paolo Carlini <paolo.carlini@oracle.com> 1031 1032 Revert: 1033 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com> 1034 1035 PR c++/50864 1036 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error 1037 call in case COMPONENT_REF. 1038 10392011-10-28 Paolo Carlini <paolo.carlini@oracle.com> 1040 1041 * pt.c (unify_pack_expansion): Initialize bad_old_arg and bad_new_arg. 1042 10432011-10-28 Paolo Carlini <paolo.carlini@oracle.com> 1044 1045 PR c++/50864 1046 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error 1047 call in case COMPONENT_REF. 1048 10492011-10-27 Jason Merrill <jason@redhat.com> 1050 1051 * semantics.c (cxx_eval_outermost_constant_expr): Check 1052 cp_has_mutable_p. 1053 (cxx_eval_component_reference): Check DECL_MUTABLE_P. 1054 10552011-10-27 Roberto Agostino Vitillo <ravitillo@lbl.gov> 1056 1057 PR c++/30066 1058 * decl2.c (determine_hidden_inline): New function. 1059 (determine_visibility): fvisibility-inlines-hidden affects inline 1060 functions. 1061 10622011-10-27 Dodji Seketeli <dodji@redhat.com> 1063 1064 * cp-tree.h (DECL_DECLARES_TYPE_P): Fix comment. 1065 10662011-10-26 Jason Merrill <jason@redhat.com> 1067 1068 * typeck.c (check_literal_operator_args): Avoid building types. 1069 10702011-10-26 Ed Smith-Rowland <3dw4rd@verizon.net> 1071 1072 Implement C++11 user-defined literals. 1073 * cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree. 1074 * cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator 1075 name tools. New tree code for user-defined literals. 1076 * cxx-pretty-print.h: (pp_cxx_userdef_literal) New. 1077 * cxx-pretty-print.c: (pp_cxx_userdef_literal) New. 1078 (pp_cxx_primary_expression, pp_cxx_expression): Use it. 1079 * decl.c: (cp_tree_node_structure): Return new tree code. 1080 (duplicate_decls): Check for raw vs. template operator conflicts. 1081 (grokfndecl, grokdeclarator): New checks for literal operators. 1082 * error.c: (dump_expr): Warn about user-defined literals 1083 in C++98 mode. (dump_function_name): Pretty printing. 1084 * mangle.c: (write_literal_operator_name): New. 1085 (write_unqualified_id, write_unqualified_name): Use it. 1086 * parser.c: (cp_parser_operator): Handle operator"". 1087 (cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal, 1088 cp_parser_userdef_string_literal): New. 1089 (cp_parser_primary_expression): Handle new user-defined literal tokens 1090 with new functions. 1091 * semantics.c: (potential_constant_expression_1): Add 1092 user-defined literals. 1093 * typeck.c (check_raw_literal_operator, 1094 check_literal_operator_args): New. 1095 10962011-10-26 Paolo Carlini <paolo.carlini@oracle.com> 1097 1098 * typeck.c (cp_build_addr_expr_1): Use BASELINK_P. 1099 * class.c (instantiate_type): Likewise. 1100 * pt.c (convert_nontype_argument_function, uses_template_parms, 1101 tsubst_copy, resolve_nondeduced_context, type_dependent_expression_p): 1102 Likewise. 1103 * semantics.c (finish_decltype_type): Likewise. 1104 * decl2.c (mark_used): Likewise. 1105 * name-lookup.c (arg_assoc): Likewise. 1106 11072011-10-26 Paolo Carlini <paolo.carlini@oracle.com> 1108 1109 PR c++/50870 1110 * typeck.c (non_reference): Pass NULL_TREE through. 1111 11122011-10-25 Jason Merrill <jason@redhat.com> 1113 1114 PR c++/50866 1115 PR c++/41449 1116 * semantics.c (maybe_cleanup_point_expr_void): No longer static. 1117 * typeck2.c (split_nonconstant_init_1): Use it. 1118 * cp-tree.h: Declare it. 1119 * decl.c (wrap_cleanups_r): Stop at CLEANUP_POINT_EXPR. 1120 1121 PR c++/49996 1122 * tree.c (stabilize_init): Stabilize scalar elements of a 1123 CONSTRUCTOR, too. 1124 11252011-10-25 Paolo Carlini <paolo.carlini@oracle.com> 1126 1127 PR c++/50858 1128 * typeck.c (composite_pointer_type_r): Check return value of 1129 composite_pointer_type_r for error_mark_node. 1130 11312011-10-25 Paolo Carlini <paolo.carlini@oracle.com> 1132 1133 PR c++/50861 1134 * pt.c (tsubst_copy_and_build): Check return value of 1135 tsubst_copy_and_build for error_mark_node. 1136 11372011-10-23 Paolo Carlini <paolo.carlini@oracle.com> 1138 1139 PR c++/50841 1140 Revert: 1141 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com> 1142 1143 PR c++/50810 1144 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics. 1145 (digest_init_r): Call check_narrowing irrespective of the C++ dialect. 1146 * decl.c (check_initializer): Likewise. 1147 * semantics.c (finish_compound_literal): Likewise. 1148 11492011-10-23 Paolo Carlini <paolo.carlini@oracle.com> 1150 1151 PR c++/50810 1152 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics. 1153 (digest_init_r): Call check_narrowing irrespective of the C++ dialect. 1154 * decl.c (check_initializer): Likewise. 1155 * semantics.c (finish_compound_literal): Likewise. 1156 11572011-10-21 Paolo Carlini <paolo.carlini@oracle.com> 1158 1159 PR c++/45385 1160 * init.c (build_vec_init): Early return error_mark_node if 1161 maxindex is -1. 1162 11632011-10-21 Paolo Carlini <paolo.carlini@oracle.com> 1164 1165 PR c++/31423 1166 * typeck2.c (cxx_incomplete_type_diagnostic): Improve error message 1167 for invalid use of member function. 1168 11692011-10-21 Ville Voutilainen <ville.voutilainen@gmail.com> 1170 1171 PR c++/50811 1172 * parser.c (cp_parser_class_head): Parse virt-specifiers 1173 regardless of whether an id is present 1174 11752011-10-20 Jason Merrill <jason@redhat.com> 1176 1177 PR c++/41449 1178 * typeck2.c (split_nonconstant_init_1): Handle EH cleanup of 1179 initialized subobjects. 1180 11812011-10-19 Paolo Carlini <paolo.carlini@oracle.com> 1182 1183 PR c++/13657 1184 * class.c (instantiate_type): Fix error message. 1185 11862011-10-19 Jason Merrill <jason@redhat.com> 1187 1188 PR c++/50793 1189 * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST. 1190 11912011-10-19 Roland Stigge <stigge@antcom.de> 1192 1193 PR translation/49704 1194 * semantics.c (potential_constant_expression_1): Use "AST" instead of 1195 "ast" in sorry message. 1196 11972011-10-19 Paolo Carlini <paolo.carlini@oracle.com> 1198 1199 PR c++/38761 1200 PR c++/40872 1201 * decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use 1202 G_() in error message strings to facilitate translation. 1203 * semantics.c (finish_id_expression): Likewise. 1204 * parser.c (cp_parser_nested_name_specifier_opt, 1205 cp_parser_parameter_declaration): Likewise. 1206 12072011-10-18 Jason Merrill <jason@redhat.com> 1208 1209 PR c++/50531 1210 * pt.c (instantiate_decl): Recognize when a function defaulted 1211 outside the class is already instantiated. 1212 1213 PR c++/50742 1214 * decl.c (check_previous_goto_1): Handle using-decl. 1215 12162011-10-18 Jason Merrill <jason@redhat.com> 1217 1218 PR c++/50500 1219 DR 1082 1220 * class.c (type_has_user_declared_move_constructor): New. 1221 (type_has_user_declared_move_assign): New. 1222 (add_implicitly_declared_members): Add lazy copy ops 1223 even if there's a move. 1224 * method.c (lazily_declare_fn): Delete implicit copies 1225 if there's a move. 1226 (maybe_explain_implicit_delete): Explain this. Use inform rather 1227 than error. 1228 * cp-tree.h: Declare new fns. 1229 12302011-10-18 Diego Novillo <dnovillo@google.com> 1231 1232 * parser.c: Remove ENABLE_CHECKING markers around debugging 1233 routines. 1234 (cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN. 1235 Make static 1236 When printing CURR_TOKEN surround it in [[ ]]. 1237 Start printing at START_TOKEN. 1238 Update all users. 1239 (cp_debug_print_tree_if_set): New. 1240 (cp_debug_print_context): New. 1241 (cp_debug_print_context_stack): New. 1242 (cp_debug_print_flag): New. 1243 (cp_debug_print_unparsed_function): New. 1244 (cp_debug_print_unparsed_queues): New. 1245 (cp_debug_parser_tokens): New. 1246 (cp_debug_parser): New. 1247 (cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr. 1248 (cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL. 1249 * parser.h (cp_lexer_dump_tokens): Remove declaration. 1250 (cp_debug_parser): Declare. 1251 12522011-10-17 Michael Spertus <mike_spertus@symantec.com> 1253 1254 * cp-tree.def: Add BASES as a new tree code. 1255 * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES. 1256 (BASES_TYPE, BASES_DIRECT): Define. 1257 (calculate_bases, finish_bases, calculate_direct_bases): Declare. 1258 * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list, 1259 (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them. 1260 * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise. 1261 * semantics.c (calculate_bases, finish_bases, calculate_direct_bases, 1262 dfs_calculate_bases_pre, dfs_calculate_bases_post, 1263 calculate_bases_helper): Define. 1264 12652011-10-17 Jason Merrill <jason@redhat.com> 1266 1267 PR c++/50736 1268 * parser.c (cp_parser_lambda_introducer): Check for more 1269 invalid captures. 1270 12712011-10-17 Paolo Carlini <paolo.carlini@oracle.com> 1272 1273 PR c++/44524 1274 * typeck.c (build_class_member_access_expr): Provide a better error 1275 message for X.Y where X is a pointer to class type. 1276 (finish_class_member_access_expr): Likewise. 1277 12782011-10-15 Tom Tromey <tromey@redhat.com> 1279 Dodji Seketeli <dodji@redhat.com> 1280 1281 * error.c (cp_diagnostic_starter): Pass the relevant location to 1282 diagnostic_report_current_module. 1283 (cp_diagnostic_finalizer): Call virt_loc_aware_diagnostic_finalizer. 1284 12852011-10-17 Paolo Carlini <paolo.carlini@oracle.com> 1286 1287 PR c++/48489 1288 * typeck.c (finish_class_member_access_expr): Fix error call 1289 for TREE_CODE (access_path) == TREE_BINFO. 1290 12912011-10-15 Paolo Carlini <paolo.carlini@oracle.com> 1292 1293 PR c++/50732 1294 * semantics.c (finish_trait_expr): Do not try to instantiate the 1295 the base type of an __is_base_of trait. 1296 (check_trait_type): Return a tree; use complete_type_or_else. 1297 12982011-10-14 Jason Merrill <jason@redhat.com> 1299 1300 PR c++/50563 1301 * parser.c (cp_parser_cache_group): Handle end==CPP_COMMA. 1302 (cp_parser_save_nsdmi): Pass it. 1303 1304 PR c++/50707 1305 * method.c (walk_field_subobs): Check for NSDMI before 1306 complaining about uninitialized fields. 1307 1308 * pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node 1309 instead of error_mark_node as a placeholder. 1310 13112011-10-14 Paolo Carlini <paolo.carlini@oracle.com> 1312 1313 PR c++/38174 1314 * call.c (add_builtin_candidate): If two pointers have a composite 1315 pointer type, generate a single candidate with that type. 1316 13172011-10-13 Jason Merrill <jason@redhat.com> 1318 1319 PR c++/50614 1320 * cp-tree.h (VAR_TEMPL_TYPE_FIELD_OR_FUNCTION_DECL_CHECK): New. 1321 (DECL_TEMPLATE_INFO): Use it. 1322 * pt.c (tsubst_decl) [FIELD_DECL]: Set DECL_TEMPLATE_INFO 1323 if the decl has an NSDMI. 1324 * init.c (perform_member_init): Use it. 1325 1326 PR c++/50437 1327 * cp-tree.h (struct tree_lambda_expr): Add closure field. 1328 (LAMBDA_EXPR_CLOSURE): New. 1329 * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Likewise. 1330 * semantics.c (build_lambda_object): Use it instead of TREE_TYPE. 1331 (begin_lambda_type, lambda_function, add_capture): Likewise. 1332 (add_default_capture, lambda_expr_this_capture): Likewise. 1333 13342011-10-13 Diego Novillo <dnovillo@google.com> 1335 1336 * cp-tree.h (struct language_function): Rename in_function_try_handler 1337 to x_in_function_try_handler. 1338 Rename in_base_initializer to x_in_base_initializer. 1339 Update all users. 1340 13412011-10-13 Diego Novillo <dnovillo@google.com> 1342 1343 * class.c (sorted_fields_type_new): Factor out of ... 1344 (finish_struct_1): ... here. 1345 13462011-10-13 Jason Merrill <jason@redhat.com> 1347 1348 PR c++/50618 1349 * init.c (expand_aggr_init_1): Don't zero-initialize virtual 1350 bases of a base subobject. 1351 13522011-10-12 Paolo Carlini <paolo.carlini@oracle.com> 1353 1354 PR c++/50594 1355 * decl.c (cxx_init_decl_processing): Add 1356 __attribute__((externally_visible)) to operator new and 1357 operator delete library fn. 1358 13592011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com> 1360 1361 * decl.c (duplicate_decls): Delete old interface with two parallel 1362 arrays to hold standard builtin declarations, and replace it with 1363 a function based interface that can support creating builtins on 1364 the fly in the future. Change all uses, and poison the old 1365 names. Make sure 0 is not a legitimate builtin index. 1366 * except.c (build_eh_type_type): Ditto. 1367 (choose_personality_routine): Ditto. 1368 * semantics.c (finish_omp_atomic): Ditto. 1369 (finish_omp_barrier): Ditto. 1370 (finish_omp_flush): Ditto. 1371 (finish_omp_taskwait): Ditto. 1372 13732011-10-11 Jason Merrill <jason@redhat.com> 1374 1375 PR c++/49855 1376 PR c++/49896 1377 * cp-tree.def (IMPLICIT_CONV_EXPR): New. 1378 * call.c (perform_implicit_conversion_flags): Build it 1379 instead of NOP_EXPR. 1380 * cp-objcp-common.c (cp_common_init_ts): It's typed. 1381 * cxx-pretty-print.c (pp_cxx_cast_expression): Handle it. 1382 (pp_cxx_expression): Likewise. 1383 * error.c (dump_expr): Likewise. 1384 * semantics.c (potential_constant_expression_1): Likewise. 1385 * tree.c (cp_tree_equal): Likewise. 1386 (cp_walk_subtrees): Likewise. 1387 * pt.c (iterative_hash_template_arg): Likewise. 1388 (for_each_template_parm_r): Likewise. 1389 (type_dependent_expression_p): Likewise. 1390 (tsubst_copy, tsubst_copy_and_build): Handle IMPLICIT_CONV_EXPR 1391 and CONVERT_EXPR. 1392 * cp-tree.h (IMPLICIT_CONV_EXPR_DIRECT_INIT): New. 1393 13942011-10-11 Paolo Carlini <paolo.carlini@oracle.com> 1395 1396 PR c++/50611 1397 * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false 1398 do not call unqualified_name_lookup_error. 1399 14002011-10-10 Paolo Carlini <paolo.carlini@oracle.com> 1401 1402 PR c++/50660 1403 * call.c (conversion_null_warnings): Don't look through references. 1404 14052011-10-09 Paolo Carlini <paolo.carlini@oracle.com> 1406 1407 PR c++/38980 1408 * init.c (constant_value_1): Add bool parameter. 1409 (decl_constant_value_safe): Add. 1410 (integral_constant_value): Adjust. 1411 (decl_constant_value): Adjust. 1412 * cp-tree.h (decl_constant_value_safe): Declare. 1413 * typeck.c (decay_conversion): Use decl_constant_value_safe. 1414 * call.c (convert_like_real): Likewise. 1415 14162011-10-09 Jakub Jelinek <jakub@redhat.com> 1417 Diego Novillo <dnovillo@google.com> 1418 1419 * pt.c (reregister_specialization): Use htab_find instead of 1420 htab_find_slot with INSERT. 1421 (maybe_process_partial_specialization, lookup_template_class_1): Change 1422 slot variable type to void ** to avoid aliasing problems. 1423 (register_specialization): Likewise. Use slot != NULL instead of 1424 more expensive !optimize_specialization_lookup_p (tmpl) test. 1425 14262011-10-08 Paolo Carlini <paolo.carlini@oracle.com> 1427 1428 PR c++/34927 1429 * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate 1430 inform messages in case of cloned destructor. 1431 14322011-10-06 Jason Merrill <jason@redhat.com> 1433 1434 PR c++/39164 1435 * decl.c (grokfndecl): Diagnose redefinition of defaulted fn. 1436 14372011-10-02 Jason Merrill <jason@redhat.com> 1438 1439 * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs. 1440 Change unsubstituted_packs to bool. 1441 1442 * parser.c (cp_parser_range_for): Don't try to deduce from {} 1443 in a template. 1444 1445 PR c++/35722 1446 Implement N2555 (expanding pack expansion to fixed parm list) 1447 * pt.c (coerce_template_parms): Allow expanding a pack expansion 1448 to a fixed-length argument list. 1449 (unify_pack_expansion): Handle explicit args properly. 1450 (unify) [TREE_VEC]: Handle pack expansions here. 1451 [TYPE_ARGUMENT_PACK]: Not here. 1452 (tsubst_pack_expansion): Don't try to do partial substitution. 1453 (pack_deducible_p): New. 1454 (fn_type_unification): Use it. 1455 (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT 1456 of a type parameter. 1457 (check_non_deducible_conversion): Split from type_unification_real. 1458 (unify_one_argument): Split from type_unification_real... 1459 (unify_pack_expansion): ...and here. Drop call_args_p parm. 1460 (type_unification_real, unify, more_specialized_fn): Adjust. 1461 1462 * class.c (fixed_type_or_null): Handle NSDMI. 1463 * method.c (walk_field_subobs): Disable NSDMI noexcept checking 1464 for now. 1465 14662011-09-30 Jason Merrill <jason@redhat.com> 1467 1468 * cp-tree.h (TREE_NEGATED_INT): Remove. 1469 * semantics.c (finish_unary_op_expr): Don't set it. 1470 14712011-09-30 Janis Johnson <janisjo@codesourcery.com> 1472 1473 PR c++/44473 1474 * mangle.c (write_type): Handle CV qualifiers for decimal classes. 1475 14762011-09-26 Andi Kleen <ak@linux.intel.com> 1477 1478 * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE. 1479 14802011-09-28 Paolo Carlini <paolo.carlini@oracle.com> 1481 1482 PR c++/45278 1483 * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered 1484 comparison of pointer with zero. 1485 14862011-09-27 Paolo Carlini <paolo.carlini@oracle.com> 1487 1488 PR c++/31489 1489 * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE, 1490 set CLASSTYPE_DECLARED_CLASS. 1491 14922011-09-27 Jakub Jelinek <jakub@redhat.com> 1493 1494 * decl.c (duplicate_decls): If compatible stpcpy prototype 1495 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY]. 1496 14972011-09-26 Jason Merrill <jason@redhat.com> 1498 1499 PR c++/45012 1500 * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out 1501 constant value if we're still in a template. 1502 1503 PR c++/46105 1504 * typeck.c (structural_comptypes): Ignore cv-quals on typename scope. 1505 1506 PR c++/50508 1507 * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal 1508 rather than ==. 1509 15102011-09-26 Paolo Carlini <paolo.carlini@oracle.com> 1511 1512 PR c++/45487 1513 * error.c (dump_template_bindings): Separate bindings with semicolons 1514 instead of commas. 1515 15162011-09-26 Jason Merrill <jason@redhat.com> 1517 1518 PR c++/50512 1519 * call.c (compare_ics): Only consider rvaluedness_matches_p 1520 if the target type is the same or it too differs in rvalueness. 1521 1522 PR c++/50523 1523 * call.c (implicit_conversion): Mask out inappropriate LOOKUP 1524 flags at the top of the function. 1525 1526 * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI. 1527 15282011-09-26 Paolo Carlini <paolo.carlini@oracle.com> 1529 1530 * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE. 1531 15322011-09-26 Paolo Carlini <paolo.carlini@oracle.com> 1533 1534 PR c++/26747 1535 * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics. 1536 15372011-09-25 Jason Merrill <jason@redhat.com> 1538 1539 * parser.c (inject_this_parameter): Split out from 1540 cp_parser_late_return_type_opt. 1541 (cp_parser_class_specifier_1): Use it for NSDMIs. 1542 * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'. 1543 15442011-09-24 Jason Merrill <jason@redhat.com> 1545 1546 * except.c (expr_noexcept_p): Split out from finish_noexcept_expr. 1547 * cp-tree.h: Declare it. 1548 * method.c (walk_field_subobs): Use it. 1549 1550 * init.c (perform_member_init): Instantiate NSDMI here. 1551 * pt.c (tsubst_decl) [FIELD_DECL]: Not here. 1552 1553 Handle deferred parsing of NSDMIs. 1554 * parser.h (cp_unparsed_functions_entry): Add nsdmis field. 1555 * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New. 1556 (cp_parser_late_parse_one_default_arg): Split out from 1557 cp_parser_late_parsing_default_args. 1558 (cp_parser_late_parsing_nsdmi): New. 1559 (push_unparsed_function_queues): Set it. 1560 (cp_parser_parameter_declaration): Save the '=' token. 1561 (cp_parser_template_parameter): Likewise. 1562 (cp_parser_default_argument): Call cp_parser_initializer 1563 rather than cp_parser_initializer_clause. 1564 (cp_parser_class_specifier_1): Parse unparsed_nsdmis. 1565 (cp_parser_member_declaration): Handle nsdmis. 1566 * decl2.c (grokfield): Handle DEFAULT_ARG for a function. 1567 1568 Implement C++11 non-static data member initializers. 1569 * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI. 1570 * error.c (maybe_warn_cpp0x): Handle it. 1571 * call.c (convert_like_real) [ck_user]: Don't complain about 1572 using an explicit constructor for direct-initialization. 1573 * class.c (check_field_decl): Fix ancient typo. 1574 (check_field_decls): NSDMIs make the default ctor non-trivial. 1575 * decl.c (cp_finish_decl): Record NSDMI. 1576 (grokdeclarator): Allow NSDMI. 1577 * decl2.c (grokfield): Allow NSDMI. Correct LOOKUP flags. 1578 * init.c (perform_member_init): Use NSDMI. 1579 * method.c (walk_field_subobs): Check for NSDMI. 1580 * parser.c (cp_parser_member_declaration): Parse { } init. 1581 * semantics.c (register_constexpr_fundef): Don't talk about 1582 a return statement in a constexpr constructor. 1583 (cxx_eval_call_expression): Check DECL_INITIAL instead of 1584 DECL_SAVED_TREE. 1585 15862011-09-24 Paolo Carlini <paolo.carlini@oracle.com> 1587 1588 PR c++/44267 1589 * class.c (build_base_path): Add a tsubst_flags_t parameter. 1590 (convert_to_base): Adjust call. 1591 * typeck.c (build_class_member_access_expr, 1592 get_member_function_from_ptrfunc, build_static_cast_1): Likewise. 1593 * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise. 1594 * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise. 1595 * rtti.c (build_dynamic_cast_1): Likewise. 1596 * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise. 1597 * call.c (build_over_call, build_special_member_call): Likewise. 1598 * cvt.c (cp_convert_to_pointer, convert_to_pointer_force, 1599 build_up_reference): Likewise. 1600 * cp-tree.h (build_base_path): Adjust declaration. 1601 16022011-09-23 Jason Merrill <jason@redhat.com> 1603 1604 Core 253 - allow const objects with no initializer or 1605 user-provided default constructor if the defaulted constructor 1606 initializes all the subobjects. 1607 PR c++/20039 1608 PR c++/42844 1609 * class.c (default_init_uninitialized_part): New. 1610 * cp-tree.h: Declare it. 1611 * decl.c (check_for_uninitialized_const_var): Use it. 1612 * init.c (perform_member_init): Likewise. 1613 (build_new_1): Likewise. 1614 * method.c (walk_field_subobs): Likewise. 1615 16162011-09-23 Paolo Carlini <paolo.carlini@oracle.com> 1617 1618 PR c++/50258 1619 * decl.c (check_static_variable_definition): Allow in-class 1620 initialization of static data member of non-integral type in 1621 permissive mode. 1622 16232011-09-22 Paolo Carlini <paolo.carlini@oracle.com> 1624 1625 PR c++/50491 1626 * semantics.c (potential_constant_expression_1): Handle USING_DECL. 1627 16282011-09-22 Paolo Carlini <paolo.carlini@oracle.com> 1629 1630 PR c++/50371 1631 * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE. 1632 16332011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com> 1634 Paolo Carlini <paolo.carlini@oracle.com> 1635 1636 PR c++/50344 1637 * friend.c (make_friend_class): cv-qualification is ok in a 1638 friend declaration. 1639 16402011-09-21 Paolo Carlini <paolo.carlini@oracle.com> 1641 1642 PR c++/50454 1643 * decl.c (grokdeclarator): Consistently handle both __int128 1644 and unsigned __int128 with -pedantic; suppress diagnostic in 1645 system headers. 1646 16472011-09-20 Jason Merrill <jason@redhat.com> 1648 1649 * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New. 1650 (DECL_GENERATED_P): New. 1651 * class.c (finalize_literal_type_property): Use them. 1652 * semantics.c (is_instantiation_of_constexpr): Likewise. 1653 (register_constexpr_fundef): Likewise. 1654 1655 * call.c (convert_default_arg): Avoid redundant copy. 1656 * tree.c (bot_manip): Copy everything. 1657 16582011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov> 1659 1660 * call.c (build_new_method_call_1): Use non-virtual lookup 1661 for final virtual functions. 1662 16632011-09-16 Jason Merrill <jason@redhat.com> 1664 1665 PR c++/50424 1666 * call.c (set_flags_from_callee): Split out from build_call_a. 1667 * cp-tree.h: Declare it. 1668 * tree.c (bot_manip): Call it. 1669 16702011-09-15 Jason Merrill <jason@redhat.com> 1671 1672 PR c++/50365 1673 * parser.c (cp_parser_late_return_type_opt): Check quals parameter 1674 for clearing current_class_ptr, too. 1675 16762011-09-14 Diego Novillo <dnovillo@google.com> 1677 1678 * name-lookup.c (lookup_arg_dependent): Use conditional 1679 timevars. 1680 * decl.c (xref_tag): Likewise. 1681 16822011-09-14 Paolo Carlini <paolo.carlini@oracle.com> 1683 1684 PR c++/50391 1685 * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node 1686 to build_exception_variant. 1687 16882011-09-13 Dodji Seketeli <dodji@redhat.com> 1689 1690 PR c++/48320 1691 * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX 1692 nodes. Add a comment. 1693 (arg_from_parm_pack_p): New static function, factorized out from 1694 tsubst_pack_expansion and extended to support non-type parameter 1695 packs represented with TEMPLATE_PARM_INDEX nodes. 1696 (tsubst_pack_expansion): Use arg_from_parm_pack_p. 1697 16982011-09-12 Jason Merrill <jason@redhat.com> 1699 1700 * pt.c (type_unification_real): Fix handling of DEDUCE_CONV 1701 with no deducible template parameters. 1702 * call.c (rejection_reason_code): Add rr_template_conversion. 1703 (print_z_candidate): Handle it. 1704 (template_conversion_rejection): New. 1705 (build_user_type_conversion_1): Use it. 1706 1707 * call.c (merge_conversion_sequences): Set bad_p and user_conv_p 1708 on all of the second conversion sequence. 1709 (build_user_type_conversion_1): Set bad_p on the ck_user conv. 1710 (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the 1711 first section. Fix loop logic. 1712 (initialize_reference): Call convert_like for diagnostics when 1713 we have a (bad) conversion. 1714 1715 * call.c (convert_class_to_reference) 1716 (convert_class_to_reference_1): Remove. 1717 (reference_binding): Use build_user_type_conversion_1 instead. 1718 1719 * call.c (initialize_reference): Add flags parm. 1720 * decl.c (grok_reference_init): Likewise. 1721 (check_initializer): Pass it. 1722 * typeck.c (convert_for_initialization): Likewise. 1723 * cp-tree.h: Adjust. 1724 1725 * cp-tree.h (LOOKUP_NO_RVAL_BIND): New. 1726 * call.c (conditional_conversion): Use it. 1727 (reference_binding): Fix handling of xvalues. 1728 17292011-09-09 Jason Merrill <jason@redhat.com> 1730 1731 * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P 1732 before forcing instantiation. 1733 17342011-09-08 Paolo Carlini <paolo.carlini@oracle.com> 1735 1736 PR c++/50324 1737 * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain 1738 instead of complete_type_or_else. 1739 17402011-09-08 Dodji Seketeli <dodji@redhat.com> 1741 1742 PR c++/33255 - Support -Wunused-local-typedefs warning 1743 * name-lookup.c (pushdecl_maybe_friend_1): Use the new 1744 record_locally_defined_typedef. 1745 * decl.c (finish_function): Use the new 1746 maybe_warn_unused_local_typedefs. 1747 (grokfield): Use the new record_locally_defined_typedef. 1748 * parser.c (lookup_name): Use the new maybe_record_typedef_use. 1749 17502011-09-07 Paolo Carlini <paolo.carlini@oracle.com> 1751 1752 PR c++/50309 1753 * decl.c (grokdeclarator): Check u.function.exception_specification 1754 for error_mark_node. 1755 17562011-09-07 Jason Merrill <jason@redhat.com> 1757 1758 PR c++/50298 1759 * parser.c (cp_parser_member_declaration): Don't require a constant 1760 rvalue here in C++0x. 1761 1762 * pt.c (type_unification_real): Correct complain arg for tsubsting 1763 default template args. 1764 1765 * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting. 1766 17672011-09-06 Jason Merrill <jason@redhat.com> 1768 1769 PR c++/50296 1770 * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn. 1771 (cx_check_missing_mem_inits): Handle bases and empty trivial members. 1772 (validate_constexpr_fundecl): Remove. 1773 * decl.c (start_preparsed_function): Don't call it. 1774 * cp-tree.h: Don't declare it. 1775 17762011-09-04 Jason Merrill <jason@redhat.com> 1777 1778 PR c++/49267 1779 * call.c (reference_binding): Don't set is_lvalue for an rvalue 1780 reference rfrom. 1781 1782 PR c++/49267 1783 PR c++/49458 1784 DR 1328 1785 * call.c (reference_binding): Set rvaluedness_matches_p properly 1786 for reference to function conversion ops. 1787 (compare_ics): Adjust. 1788 1789 * class.c (trivial_default_constructor_is_constexpr): Rename from 1790 synthesized_default_constructor_is_constexpr. 1791 (type_has_constexpr_default_constructor): Adjust. 1792 (add_implicitly_declared_members): Call it instead. 1793 (explain_non_literal_class): Explain about non-constexpr default ctor. 1794 * cp-tree.h: Adjust. 1795 * method.c (synthesized_method_walk): Adjust. 1796 * semantics.c (explain_invalid_constexpr_fn): Handle defaulted 1797 functions, too. 1798 1799 PR c++/50248 1800 Core 1358 1801 * init.c (perform_member_init): Don't diagnose missing inits here. 1802 (emit_mem_initializers): Or here. 1803 * method.c (process_subob_fn): Don't instantiate constexpr ctors. 1804 * semantics.c (cx_check_missing_mem_inits): New. 1805 (explain_invalid_constexpr_fn): Call it. 1806 (register_constexpr_fundef): Likewise. Leave 1807 DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable. 1808 (cxx_eval_call_expression): Adjust diagnostics. 1809 (cxx_eval_constant_expression): Catch use of 'this' in a constructor. 1810 18112011-08-30 Jason Merrill <jason@redhat.com> 1812 1813 PR c++/50084 1814 * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p 1815 to type_definition_p. 1816 * parser.c (cp_parser_set_decl_spec_type): Likewise. 1817 * decl.c (grokdeclarator): Check it. 1818 1819 PR c++/50089 1820 * semantics.c (finish_id_expression): Use 1821 current_nonlambda_class_type for qualified-ids. 1822 1823 PR c++/50114 1824 * decl.c (poplevel): Disable for scope compatibility hack 1825 in C++11 mode. 1826 1827 PR c++/50220 1828 * semantics.c (add_capture): Call complete_type for copy. 1829 1830 PR c++/50234 1831 * semantics.c (cxx_eval_component_reference): Handle 1832 value-initialization for omitted initializers. 1833 18342011-08-29 Jason Merrill <jason@redhat.com> 1835 1836 PR c++/50224 1837 * semantics.c (finish_id_expression): Mark captured variables used. 1838 18392011-08-29 Jakub Jelinek <jakub@redhat.com> 1840 Jason Merrill <jason@redhat.com> 1841 1842 PR c++/50207 1843 * class.c (finish_struct_1): Complain if the first field is 1844 artificial. 1845 18462011-08-29 Jason Merrill <jason@redhat.com> 1847 1848 PR c++/50209 1849 Core DR 994 1850 * parser.c (cp_parser_default_argument): Use 1851 cp_parser_initializer_clause. 1852 (cp_parser_late_parsing_default_args): Likewise. 1853 18542011-08-26 Jason Merrill <jason@redhat.com> 1855 1856 Core DR 342 1857 PR c++/48582 1858 * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value 1859 is valid in C++11. 1860 (convert_nontype_argument): Likewise. Implicitly convert nullptr 1861 and do constant folding. 1862 * mangle.c (write_template_arg_literal): Mangle null member 1863 pointer values as 0. 1864 * call.c (null_member_pointer_value_p): New. 1865 * cp-tree.h: Declare it. 1866 18672011-08-25 Jason Merrill <jason@redhat.com> 1868 1869 * call.c (convert_like_real): Remove redundant complain checks. 1870 1871 PR c++/50157 1872 * call.c (convert_like_real): Exit early if bad and !tf_error. 1873 18742011-08-23 Jason Merrill <jason@redhat.com> 1875 1876 * typeck2.c (build_functional_cast): Don't try to avoid calling 1877 build_value_init. 1878 * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags. 1879 18802011-08-23 Jason Merrill <jason@redhat.com> 1881 1882 PR c++/49045 1883 Core 1321 1884 * tree.c (dependent_name): New. 1885 (cp_tree_equal): Two calls with the same dependent name are 1886 equivalent even if the overload sets are different. 1887 18882011-08-23 Jason Merrill <jason@redhat.com> 1889 1890 * tree.c (build_target_expr): Set TREE_CONSTANT on 1891 literal TARGET_EXPR if the value is constant. 1892 * typeck2.c (build_functional_cast): Don't set it here. 1893 18942011-08-23 Jason Merrill <jason@redhat.com> 1895 1896 Core 903 (partial) 1897 * call.c (null_ptr_cst_p): Only 0 qualifies in C++11. 1898 18992011-08-23 Jason Merrill <jason@redhat.com> 1900 1901 Core 975 1902 * decl.c (cxx_init_decl_processing): Initialize 1903 dependent_lambda_return_type_node. 1904 * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE. 1905 (dependent_lambda_return_type_node): Define. 1906 (DECLTYPE_FOR_LAMBDA_RETURN): Remove. 1907 * semantics.c (lambda_return_type): Handle overloaded function. 1908 Use dependent_lambda_return_type_node instead of 1909 DECLTYPE_FOR_LAMBDA_RETURN. 1910 (apply_lambda_return_type): Don't check dependent_type_p. 1911 * pt.c (tsubst_copy_and_build): Handle lambda return type deduction. 1912 (instantiate_class_template_1): Likewise. 1913 (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN. 1914 * mangle.c (write_type): Likewise. 1915 * typeck.c (structural_comptypes): Likewise. 1916 (check_return_expr): Handle dependent_lambda_return_type_node. 1917 19182011-08-23 Jason Merrill <jason@redhat.com> 1919 1920 PR c++/50024 1921 * semantics.c (maybe_constant_value): Don't try to fold { }. 1922 * pt.c (build_non_dependent_expr): Don't wrap { }. 1923 * init.c (build_value_init): Allow scalar value-init in templates. 1924 19252011-08-23 Jason Merrill <jason@redhat.com> 1926 1927 * semantics.c (potential_constant_expression_1): Allow 'this'. 1928 19292011-08-23 Jakub Jelinek <jakub@redhat.com> 1930 1931 PR c++/50158 1932 * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs 1933 if it has side-effects and needs to be preevaluated. 1934 19352011-08-23 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> 1936 1937 PR c++/50055 1938 * except.c (begin_eh_spec_block): Build EH_SPEC block on the 1939 same line as the function. 1940 19412011-08-23 Jakub Jelinek <jakub@redhat.com> 1942 1943 PR c++/46862 1944 * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type 1945 which doesn't have any fields, clear it and diagnose. 1946 19472011-08-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 1948 Marc Glisse <marc.glisse@normalesup.org> 1949 1950 PR libstdc++-v3/1773 1951 * mangle.c (decl_mangling_context): Call 1952 targetm.cxx.decl_mangling_context. 1953 (write_unscoped_name): Use decl_mangling_context. 1954 19552011-08-18 Dodji Seketeli <dodji@redhat.com> 1956 1957 PR c++/45625 1958 * pt.c (parameter_of_template_p): Handle comparison with DECLs of 1959 template parameters as created by process_template_parm. 1960 19612011-08-16 Jason Merrill <jason@redhat.com> 1962 1963 PR c++/50086 1964 * pt.c (unify_pack_expansion): Correct overloaded unification 1965 logic. 1966 1967 * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set 1968 on a member function or static data member, call mark_used. 1969 1970 PR c++/50054 1971 * typeck2.c (cxx_incomplete_type_diagnostic): Handle 1972 init_list_type_node. 1973 19742011-08-13 Jason Merrill <jason@redhat.com> 1975 1976 PR c++/50075 1977 * name-lookup.c (local_bindings_p): New. 1978 * name-lookup.h: Declare it. 1979 * lex.c (unqualified_name_lookup_error): Use it. 1980 1981 PR c++/50059 1982 * error.c (dump_expr): Handle MODIFY_EXPR properly. 1983 1984 * decl.c (grok_reference_init): Handle constexpr here. 1985 * call.c (initialize_reference): Not here. 1986 19872011-08-12 David Li <davidxl@google.com> 1988 1989 * class.c (update_vtable_entry_for_fn): Set 1990 LOST_PRIMARY bit properly. 1991 19922011-08-12 Jason Merrill <jason@redhat.com> 1993 1994 PR c++/50034 1995 * call.c (convert_arg_to_ellipsis): force_rvalue only in 1996 potentially evaluated context. 1997 19982011-08-12 Richard Guenther <rguenther@suse.de> 1999 2000 * call.c (build_over_call): Instead of memcpy use an 2001 assignment of two MEM_REFs. 2002 20032011-08-11 Romain Geissler <romain.geissler@gmail.com> 2004 Brian Hackett <bhackett1024@gmail.com> 2005 2006 * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event. 2007 20082011-08-10 Richard Guenther <rguenther@suse.de> 2009 2010 * call.c (build_over_call): Call memcpy unconditionally. 2011 20122011-08-08 Jason Merrill <jason@redhat.com> 2013 2014 PR c++/50020 2015 * semantics.c (finish_call_expr): Don't look at 'this' if we 2016 had an explicit object argument. 2017 2018 PR c++/50011 2019 * typeck2.c (check_narrowing): Fix integer logic. 2020 20212011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2022 2023 * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS). 2024 20252011-08-05 Jason Merrill <jason@redhat.com> 2026 2027 PR c++/48993 2028 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry 2029 on 'this' in a constructor. 2030 2031 PR c++/49921 2032 * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p. 2033 2034 PR c++/49669 2035 * init.c (perform_member_init): Handle invalid array initializer. 2036 2037 PR c++/49988 2038 * semantics.c (cxx_eval_array_reference): Handle failure to 2039 reduce the array operand to something we can work with. 2040 20412011-08-05 Gabriel Charette <gchare@google.com> 2042 2043 * decl.c (finish_function): Remove unecessary line 0 hack. 2044 20452011-08-05 Jason Merrill <jason@redhat.com> 2046 2047 PR c++/47453 2048 * typeck.c (build_x_compound_expr_from_list): Also complain 2049 about ({...}). 2050 2051 PR c++/49812 2052 * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals. 2053 2054 PR c++/49983 2055 * parser.c (cp_parser_range_for): Only do auto deduction in 2056 template if the range is non-dependent. 2057 2058 * init.c (perform_member_init): Always build_aggr_init 2059 for a class member with an explicit mem-initializer. 2060 2061 * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'. 2062 20632011-08-04 Jakub Jelinek <jakub@redhat.com> 2064 2065 PR middle-end/49905 2066 * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute 2067 for operator new and operator new []. Call init_attributes. 2068 20692011-08-02 Jason Merrill <jason@redhat.com> 2070 2071 PR c++/43886 2072 * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p. 2073 2074 PR c++/49577 2075 * typeck2.c (check_narrowing): Check unsigned mismatch. 2076 * semantics.c (finish_compound_literal): check_narrowing. 2077 2078 PR c++/49593 2079 * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR. 2080 2081 PR c++/49803 2082 * init.c (sort_mem_initializers): Initialize uses_unions_p here. 2083 (build_field_list): Not here. 2084 2085 PR c++/49834 2086 * parser.c (build_range_temp): Split out from... 2087 (cp_convert_range_for): ...here. 2088 (do_range_for_auto_deduction): New. 2089 (cp_parser_range_for): Use it. 2090 20912011-08-02 Jakub Jelinek <jakub@redhat.com> 2092 2093 * cp-tree.h (finish_omp_atomic): Adjust prototype. 2094 (cxx_omp_const_qual_no_mutable): New prototype. 2095 (finish_omp_taskyield): New prototype. 2096 * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle 2097 parsing OpenMP 3.1 atomics. Adjust finish_omp_atomic caller. 2098 (cp_parser_omp_clause_name): Handle final and mergeable clauses. 2099 (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New 2100 functions. 2101 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL 2102 and PRAGMA_OMP_CLAUSE_MERGEABLE. 2103 (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses. 2104 (cp_parser_omp_taskyield): New function. 2105 (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD. 2106 (cp_parser_omp_clause_reduction): Handle min and max. 2107 * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics. 2108 (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and 2109 OMP_CLAUSE_MERGEABLE. 2110 * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1 2111 arguments. Handle OpenMP 3.1 atomics. Adjust c_finish_omp_atomic 2112 caller. 2113 (finish_omp_clauses): Don't complain about const qualified 2114 predetermined vars and static data members in firstprivate clause. 2115 Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR 2116 and MAX_EXPR. 2117 (finish_omp_taskyield): New function. 2118 * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function. 2119 (cxx_omp_predetermined_sharing): Use it. 2120 21212011-08-02 Jason Merrill <jason@redhat.com> 2122 2123 * call.c (build_call_a): Also check at_function_scope_p. 2124 21252011-08-01 Jason Merrill <jason@redhat.com> 2126 2127 PR c++/49932 2128 * mangle.c (write_prefix): Handle decltype. 2129 2130 PR c++/49924 2131 * semantics.c (cxx_eval_vec_init_1): Fix logic. 2132 2133 PR c++/49813 2134 * semantics.c (potential_constant_expression_1): Allow any builtin. 2135 (morally_constexpr_builtin_function_p): Remove. 2136 21372011-07-29 Jason Merrill <jason@redhat.com> 2138 2139 PR c++/49867 2140 * parser.c (cp_parser_lambda_expression): Also clear in_statement 2141 and in_switch_statement_p. 2142 (cp_parser_class_specifier): Likewise. 2143 21442011-07-28 Jason Merrill <jason@redhat.com> 2145 2146 PR c++/49808 2147 * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference. 2148 (convert_nontype_argument, tsubst_template_arg): Handle its output. 2149 21502011-07-28 Paolo Carlini <paolo.carlini@oracle.com> 2151 2152 PR c++/49813 2153 * semantics.c (potential_constant_expression_1): Handle FMA_EXPR. 2154 21552011-07-27 Jeffrey Yasskin <jyasskin@google.com> 2156 2157 * pt.c (build_template_decl): Copy the function_decl's 2158 source location to the new template_decl. 2159 21602011-07-26 Paolo Carlini <paolo.carlini@oracle.com> 2161 2162 PR c++/49776 2163 * typeck.c (cp_build_modify_expr): Check digest_init return value 2164 for error_mark_node. 2165 21662011-07-25 Paolo Carlini <paolo.carlini@oracle.com> 2167 2168 PR bootstrap/49845 2169 * parser.c (cp_parser_perform_range_for_lookup): Always assign *being 2170 and *end before returning. 2171 21722011-07-25 Paolo Carlini <paolo.carlini@oracle.com> 2173 2174 PR c++/49838 2175 * parser.c (cp_parser_perform_range_for_lookup): Early return if 2176 error_operand_p (range). 2177 21782011-07-23 Jason Merrill <jason@redhat.com> 2179 2180 PR c++/49823 2181 * parser.c (cp_parser_qualifying_entity): Handle templates. 2182 21832011-07-22 Jason Merrill <jason@redhat.com> 2184 2185 PR c++/49793 2186 * typeck2.c (check_narrowing): Downgrade permerror to pedwarn. 2187 Make conditional on -Wnarrowing. 2188 21892011-07-22 Ville Voutilainen <ville.voutilainen@gmail.com> 2190 2191 Warn about the use of final/override in non-c++0x mode, and 2192 add __final for non-c++0x mode. 2193 * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS. 2194 * error.c (maybe_warn_cpp0x): Adjust. 2195 * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add 2196 '__final' as a non-c++0x alternative for 'final'. 2197 21982011-07-22 Jason Merrill <jason@redhat.com> 2199 Mark Glisse <marc.glisse@normalesup.org> 2200 2201 PR c++/30112 2202 * decl.c (cp_finish_decl): Apply pragma redefine_extname in 2203 other namespaces as well. 2204 * name-lookup.c (c_linkage_bindings): Define. 2205 (lookup_extern_c_fun_in_all_ns): Rename from 2206 lookup_extern_c_fun_binding_in_all_ns. Return tree. 2207 (pushdecl_maybe_friend_1): Adjust. Copy DECL_ASSEMBLER_NAME. 2208 22092011-07-20 Jason Merrill <jason@redhat.com> 2210 2211 * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]= 2212 designated initializer syntax. 2213 * decl.c (check_array_designated_initializer): Add index parm. 2214 (maybe_deduce_size_from_array_init): Pass it. 2215 (reshape_init_array_1): Likewise. 2216 2217 PR c++/6709 (DR 743) 2218 PR c++/42603 (DR 950) 2219 * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New. 2220 (cp_parser_nested_name_specifier_opt): Allow decltype. 2221 (cp_parser_qualifying_entity): Likewise. 2222 (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE. 2223 (cp_parser_simple_type_specifier): Handle decltype as scope. 2224 (cp_parser_base_specifier): Allow decltype. 2225 (cp_parser_base_clause): Don't crash on null base. 2226 * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h. 2227 (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise. 2228 22292011-07-19 Jason Merrill <jason@redhat.com> 2230 2231 PR c++/49785 2232 * pt.c (coerce_template_parms): Handle non-pack after pack. 2233 22342011-07-19 Richard Guenther <rguenther@suse.de> 2235 2236 * call.c (build_special_member_call): Use fold_build_pointer_plus. 2237 * class.c (build_base_path): Likewise. 2238 (convert_to_base_statically): Likewise. 2239 (dfs_accumulate_vtbl_inits): Likewise. 2240 * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise. 2241 * except.c (expand_start_catch_block): Likewise. 2242 * init.c (expand_virtual_init): Likewise. 2243 (build_new_1): Likewise. 2244 (build_vec_delete_1): Likewise. 2245 (build_vec_delete): Likewise. 2246 * rtti.c (build_headof): Likewise. 2247 (tinfo_base_init): Likewise. 2248 * typeck.c (get_member_function_from_ptrfunc): Likewise. 2249 (cp_build_addr_expr_1): Likewise. 2250 * typeck2.c (build_m_component_ref): Likewise. 2251 22522011-07-18 Martin Jambor <mjambor@suse.cz> 2253 2254 * parser.c (cp_parser_parameter_declaration_list): Initialize 2255 parenthesized_p. 2256 22572011-07-16 Jason Merrill <jason@redhat.com> 2258 2259 * pt.c (tinst_level_tick, last_template_error_tick): Replace with 2260 last_error_tinst_level. 2261 (push_tinst_level, pop_tinst_level): Adjust. 2262 (problematic_instantiation_changed): Adjust. 2263 (record_last_problematic_instantiation): Adjust. 2264 * error.c (cp_print_error_function): Don't print 2265 current_function_decl if we're in a template instantiation context. 2266 (print_instantiation_full_context): Always print first line. 2267 22682011-07-16 Nathan Froyd <froydnj@codesourcery.com> 2269 Jason Merrill <jason@redhat.com> 2270 2271 PR c++/45329 2272 PR c++/48934 2273 * cp-tree.h (fn_type_unification): Add `bool' parameter. 2274 * pt.c (enum template_base_result): Define. 2275 (unify_success, unify_unknown): Define. 2276 (unify_parameter_deduction_failure): Define. 2277 (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define. 2278 (unify_parameter_pack_mismatch): Define. 2279 (unify_parameter_pack_inconsistent): Define. 2280 (unify_ptrmem_cst_mismatch, unify_vla_arg): Define. 2281 (unify_expression_unequal, unify_inconsistency): Define. 2282 (unify_method_type_error, unify_arity): Likewise. 2283 (unify_too_many_parameters, unify_too_few_parameters): Define. 2284 (unify_arg_conversion, unify_no_common_base): Define. 2285 (unify_illformed_ptrmem_cst_expr): Define. 2286 (unify_substitution_failure): Define. 2287 (unify_inconsistent_template_template_parameters): Define. 2288 (unify_template_deduction_failure): Define. 2289 (unify_template_argument_mismatch): Define. 2290 (unify_overload_resolution_failure): Define. 2291 (comp_template_args_with_info): New function, split out from... 2292 (comp_template_args): ...here. Call it. 2293 (deduction_tsubst_fntype): Add `complain' parameter'. Pass it 2294 to tsubst. 2295 (unify): Add `explain_p' parameter. Pass to all relevant calls. 2296 Call above status functions when appropriate. 2297 (resolve_overloaded_unification, try_one_overload): Likewise. 2298 (type_unification, type_unification_real): Likewise. 2299 (unify_pack_expansion): Likewise. 2300 (get_template_base, try_class_unification): Likewise. 2301 (get_bindings, more_specialized_fn): Pass false to unification 2302 calls. 2303 (get_class_bindings, do_auto_deduction): Likewise. 2304 (convert_nontype_argument): Likewise. 2305 (fn_type_unification): Likewise. Pass tf_warning_or_error if 2306 explain_p. 2307 (get_template_base): Add `explain_p' parameter and pass it to 2308 try_class_unification. Return an enum template_base_result. 2309 * class.c (resolve_address_of_overloaded_function): Pass false to 2310 fn_type_unification. 2311 * call.c (enum rejection_reason_code): Add new codes. 2312 (struct rejection_reason): Add template_unification field. 2313 Add template_instantiation field. 2314 (template_unification_rejection): Define. 2315 (template_unification_error_rejection): Define. 2316 (template_instantiation_rejection): Define. 2317 (invalid_copy_with_fn_template_rejection): Define. 2318 (add_template_candidate): Pass false to unify. 2319 Provide more rejection reasons when possible. 2320 (print_template_unification_rejection): Define. 2321 (print_arity_rejection): Define, split out from... 2322 (print_z_candidate): ...here. Add cases for new rejection 2323 reasons. 2324 23252011-07-15 Jason Merrill <jason@redhat.com> 2326 2327 * Make-lang.in (check-g++-strict-gc): New. 2328 (cp/except.o): Depend on gt-cp-except.h 2329 * except.c: Include gt-cp-except.h. 2330 * config-lang.in (gtfiles): Add cp/except.c. 2331 * decl2.c (mark_used): Adjust constexpr condition, set 2332 function_depth around template instantiation. 2333 * parser.c (cp_parser_lambda_body): Set function_depth. 2334 * semantics.c (maybe_add_lambda_conv_op): Likewise. 2335 2336 PR testsuite/49741 2337 * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts. 2338 23392011-07-13 Jason Merrill <jason@redhat.com> 2340 2341 * Make-lang.in (check-c++0x): New. 2342 23432011-07-13 Richard Sandiford <richard.sandiford@linaro.org> 2344 2345 * typeck2.c (split_nonconstant_init_1): Pass the initializer directly, 2346 rather than a pointer to it. Return true if the whole of the value 2347 was initialized by the generated statements. Use 2348 complete_ctor_at_level_p instead of count_type_elements. 2349 23502011-07-12 Diego Novillo <dnovillo@google.com> 2351 2352 * name-lookup.h (cp_binding_level): Rename from cxx_scope. 2353 Update all users. 2354 (struct cp_binding_level): Fix indentation. 2355 23562011-07-11 Jason Merrill <jason@redhat.com> 2357 2358 PR c++/49672 2359 * pt.c (extract_fnparm_pack): Split out from... 2360 (make_fnparm_pack): ...here. 2361 (instantiate_decl): Handle non-pack parms after a pack. 2362 * semantics.c (maybe_add_lambda_conv_op): Don't in a template. 2363 2364 * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p. 2365 2366 PR c++/44609 2367 * cp-tree.h (struct tinst_level): Add errors field. 2368 * pt.c (neglectable_inst_p, limit_bad_template_recurson): New. 2369 (push_tinst_level): Don't start another decl in that case. 2370 (reopen_tinst_level): Adjust errors field. 2371 * decl2.c (cp_write_global_declarations): Don't complain about 2372 undefined inline if its template was defined. 2373 * mangle.c (mangle_decl_string): Handle failure from push_tinst_level. 2374 23752011-07-10 Jason Merrill <jason@redhat.com> 2376 2377 PR c++/49691 2378 * parser.c (cp_parser_late_return_type_opt): Check quals parameter 2379 rather than current_class_type to determine whether to set 'this'. 2380 (cp_parser_direct_declarator): Pass -1 to quals if member_p is false. 2381 (cp_parser_init_declarator): Pass down member_p. 2382 23832011-07-09 Jason Merrill <jason@redhat.com> 2384 2385 * tree.c (build_vec_init_elt): Strip TARGET_EXPR. 2386 23872011-07-08 Jason Merrill <jason@redhat.com> 2388 2389 PR c++/45437 2390 * typeck.c (cp_build_modify_expr): Preevaluate RHS. 2391 2392 * method.c (use_thunk): Use cgraph_add_to_same_comdat_group. 2393 * optimize.c (maybe_clone_body): Likewise. 2394 * semantics.c (maybe_add_lambda_conv_op): Likewise. 2395 2396 PR c++/45603 2397 * decl.c (expand_static_init): Don't get confused by user 2398 declaration of __cxa_guard_acquire. 2399 2400 * typeck.c (cp_apply_type_quals_to_decl): Don't check 2401 COMPLETE_TYPE_P either. 2402 2403 PR c++/49673 2404 * typeck.c (cp_apply_type_quals_to_decl): Don't check 2405 TYPE_NEEDS_CONSTRUCTING. 2406 24072011-07-07 Jason Merrill <jason@redhat.com> 2408 2409 PR c++/49663 2410 * pt.c (push_deduction_access_scope): Preserve 2411 processing_template_decl across push_to_top_level. 2412 And revert: 2413 * class.c (pushclass): Accept NULL argument. 2414 (popclass): Deal with popping null class. 2415 * pt.c (push_access_scope, pop_access_scope): Use them rather than 2416 push_to_top_level/pop_from_top_level. 2417 * name-lookup.c (lookup_name_real_1): Check current_class_type. 2418 24192011-07-07 Jakub Jelinek <jakub@redhat.com> 2420 2421 PR c/49644 2422 * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with 2423 one non-complex and one complex argument, call save_expr on both 2424 operands. 2425 24262011-07-06 Jason Merrill <jason@redhat.com> 2427 2428 PR c++/49353 2429 * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL 2430 on kept inlines. 2431 2432 PR c++/49568 2433 * method.c (make_thunk, use_thunk): Copy DECL_COMDAT. 2434 24352011-07-05 Jason Merrill <jason@redhat.com> 2436 2437 PR c++/48157 2438 * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in 2439 partial instantiation. 2440 2441 PR c++/49598 2442 * semantics.c (finish_id_expression): convert_from_reference. 2443 24442011-07-05 Richard Guenther <rguenther@suse.de> 2445 2446 * decl.c (cxx_init_decl_processing): Defer building common 2447 tree nodes to c_common_nodes_and_builtins. 2448 24492011-07-04 Jason Merrill <jason@redhat.com> 2450 2451 DR 1207 2452 PR c++/49589 2453 * mangle.c (write_expression): Handle 'this'. 2454 * parser.c (cp_parser_postfix_dot_deref_expression): Allow 2455 incomplete *this. 2456 * semantics.c (potential_constant_expression_1): Check that 2457 DECL_CONTEXT is set on 'this'. 2458 2459 * error.c (dump_template_bindings): Don't print typenames 2460 for a partial instantiation. 2461 (dump_function_decl): If we aren't printing function arguments, 2462 print template arguments as <args> rather than [with ...]. 2463 (dump_expr): Don't print return type or template header. 2464 [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn. 2465 * pt.c (dependent_template_arg_p): Handle null arg. 2466 2467 * error.c (type_to_string): Avoid redundant akas. 2468 24692011-07-01 Jonathan Wakely <jwakely.gcc@gmail.com> 2470 2471 PR c++/49605 2472 * init.c (build_delete): Only warn for sfk_deleting_destructor. 2473 24742011-07-01 Jakub Jelinek <jakub@redhat.com> 2475 2476 * Make-lang.in (cp/decl.o): Depend on pointer-set.h. 2477 (cp/class.o): Likewise. 2478 (cp/error.o): Likewise. 2479 (cp/name-lookup.o): Likewise. 2480 (cp/decl2.o): Likewise. Don't depend on $(POINTER_SET_H). 2481 24822011-07-01 Jason Merrill <jason@redhat.com> 2483 2484 PR c++/48261 2485 * pt.c (lookup_template_function): Handle non-function. 2486 2487 PR c++/48593 2488 * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P. 2489 * tree.c (build_qualified_name): Set PTRMEM_OK_P. 2490 * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on 2491 SCOPE_REF, too. 2492 * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too. 2493 (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1. 2494 2495 PR c++/48883 2496 PR c++/49609 2497 * pt.c (resolve_nondeduced_context): Call mark_used. 2498 2499 PR c++/49085 2500 * semantics.c (finish_offsetof): Complain about incomplete type. 2501 25022011-06-30 Jason Merrill <jason@redhat.com> 2503 2504 PR c++/49387 2505 * rtti.c (get_tinfo_decl): Call complete_type. 2506 2507 PR c++/49569 2508 * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and 2509 DECL_PARM_INDEX on rhs parm. 2510 2511 * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length. 2512 2513 PR c++/49355 2514 * tree.c (stabilize_init): Handle aggregate initialization. 2515 2516 PR c++/48481 2517 * name-lookup.c (struct arg_lookup): Add fn_set. 2518 (add_function): Check it. 2519 (lookup_arg_dependent_1): Initialize it. 2520 25212011-06-29 Jason Merrill <jason@redhat.com> 2522 2523 PR c++/49216 2524 * init.c (build_new_1): Pass {} down to build_vec_init. 2525 (build_vec_init): Handle it. 2526 2527 DR 1207 2528 PR c++/49003 2529 * cp-tree.h (struct saved_scope): Add x_current_class_ptr, 2530 x_current_class_ref. 2531 (current_class_ptr, current_class_ref): Use them. 2532 * decl.c (build_this_parm): Handle getting the class type. 2533 * parser.c (cp_parser_late_return_type_opt): Set up 'this' 2534 for use within the trailing return type. 2535 2536 * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand, 2537 don't tsubst DECL_INITIAL unless our type use auto. 2538 2539 PR c++/49520 2540 * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here. 2541 (massage_constexpr_body): Not here. 2542 2543 PR c++/49554 2544 * semantics.c (lambda_proxy_type): New. 2545 (build_capture_proxy): Use it. 2546 * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New. 2547 * pt.c (tsubst) [DECLTYPE_TYPE]: Use them. 2548 2549 PR c++/45923 2550 * class.c (explain_non_literal_class): New. 2551 (finalize_literal_type_property): Call it. 2552 * cp-tree.h: Declare it. 2553 * semantics.c (ensure_literal_type_for_constexpr_object): Call it. 2554 (is_valid_constexpr_fn): Likewise. 2555 (massage_constexpr_body): Split out from... 2556 (register_constexpr_fundef): ...here. 2557 (is_instantiation_of_constexpr): New. 2558 (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case. 2559 (explain_invalid_constexpr_fn): New. 2560 (cxx_eval_call_expression): Call it. 2561 (potential_constant_expression_1): Likewise. Avoid redundant errors. 2562 * method.c (process_subob_fn): Diagnose non-constexpr. 2563 (walk_field_subobs): Likewise. 2564 (synthesized_method_walk): Don't shortcut if we want diagnostics. 2565 (explain_implicit_non_constexpr): New. 2566 (defaulted_late_check): Use it. 2567 * call.c (build_cxx_call): Remember location. 2568 2569 * method.c (maybe_explain_implicit_delete): Use pointer_set 2570 instead of htab. 2571 2572 * class.c (finalize_literal_type_property): Update conditions. 2573 * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR. 2574 2575 * tree.c (build_vec_init_expr): Don't add TARGET_EXPR. 2576 * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR. 2577 * semantics.c (cxx_eval_vec_init_1): Correct type. 2578 2579 * init.c (build_value_init): Decide whether or not to zero-initialize 2580 based on user-providedness of default ctor, not any ctor. 2581 (build_value_init_noctor): Adjust assert. 2582 2583 DR 990 2584 * call.c (convert_like_real) [ck_user]: Handle value-initialization. 2585 (build_new_method_call_1): Likewise. 2586 * init.c (expand_default_init): Handle direct list-initialization 2587 of aggregates. 2588 25892011-06-27 Jakub Jelinek <jakub@redhat.com> 2590 2591 * cp-tree.h (union lang_tree_node): Use it in chain_next expression. 2592 25932011-06-26 Jason Merrill <jason@redhat.com> 2594 2595 PR c++/49528 2596 * semantics.c (potential_constant_expression_1): Check 2597 for non-literality rather than cleanup. 2598 (cxx_eval_constant_expression): Likewise. 2599 2600 PR c++/49528 2601 * semantics.c (potential_constant_expression_1): A TARGET_EXPR 2602 with a cleanup isn't constant. 2603 (cxx_eval_constant_expression): Likewise. 2604 * init.c (expand_default_init): Use maybe_constant_init. 2605 26062011-06-24 Jakub Jelinek <jakub@redhat.com> 2607 2608 PR c++/46400 2609 * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT 2610 instead of TYPE_CHAIN for chain_next for types. 2611 26122011-06-23 Gabriel Charette <gchare@google.com> 2613 2614 * name-lookup.h (cp_binding_level): Removed unused 2615 member names_size. Update all users. 2616 26172011-06-23 Jason Merrill <jason@redhat.com> 2618 2619 * typeck2.c (build_functional_cast): Strip cv-quals for value init. 2620 * init.c (build_zero_init_1): Not here. 2621 2622 PR c++/35255 2623 * pt.c (resolve_overloaded_unification): Fix DR 115 handling. 2624 26252011-06-23 Paolo Carlini <paolo.carlini@oracle.com> 2626 2627 PR c++/44625 2628 * decl2.c (build_anon_union_vars): Early return error_mark_node 2629 for a nested anonymous struct. 2630 26312011-06-23 Jason Merrill <jason@redhat.com> 2632 2633 PR c++/49507 2634 * decl2.c (mark_used): Don't call synthesize_method for 2635 functions defaulted outside the class. 2636 2637 * optimize.c (maybe_clone_body): Set linkage flags before 2638 cgraph_same_body_alias. 2639 2640 PR c++/49440 2641 * class.c (set_linkage_according_to_type): Hand off to 2642 determine_visibility. 2643 2644 PR c++/49395 2645 * init.c (build_zero_init_1): Strip cv-quals from scalar types. 2646 2647 PR c++/36435 2648 * pt.c (most_specialized_instantiation): Do check return types. 2649 26502011-06-22 Jason Merrill <jason@redhat.com> 2651 2652 PR c++/49260 2653 * call.c (build_call_a): Set cp_function_chain->can_throw here. 2654 (build_cxx_call): Not here. 2655 26562011-06-21 Jason Merrill <jason@redhat.com> 2657 2658 PR c++/49172 2659 * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs. 2660 (grokdeclarator): constexpr doesn't apply const for refs. 2661 * parser.c (cp_parser_initializer_clause): Don't call 2662 maybe_constant_value here. 2663 * call.c (initialize_reference): Handle constexpr. 2664 2665 PR c++/49482 2666 * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for 2667 static fn parameters. 2668 2669 * call.c (add_builtin_candidates): Use cv_unqualified rather than 2670 TYPE_MAIN_VARIANT. 2671 * pt.c (tsubst_arg_types): Likewise. 2672 * except.c (build_throw): Use cv_unqualified. 2673 2674 PR c++/49418 2675 * call.c (cxx_type_promotes_to): Don't strip cv-quals. 2676 * semantics.c (lambda_return_type): Strip them here. 2677 26782011-06-21 Andrew MacLeod <amacleod@redhat.com> 2679 2680 * semantics.c: Add sync_ or SYNC__ to builtin names. 2681 26822011-06-20 Jason Merrill <jason@redhat.com> 2683 2684 PR c++/49216 2685 * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when 2686 base is a pointer. 2687 * typeck2.c (process_init_constructor_array): Use {} for classes, 2688 too. 2689 * call.c (convert_like_real): Handle substitution failure. 2690 2691 PR c++/48138 2692 * pt.c (canonicalize_type_argument): New. 2693 (convert_template_argument, unify): Use it. 2694 2695 PR c++/47080 2696 * call.c (rejection_reason_code): Add rr_explicit_conversion. 2697 (print_z_candidate): Handle it. 2698 (explicit_conversion_rejection): New. 2699 (build_user_type_conversion_1): Reject an explicit conversion 2700 function that requires more than a qualification conversion. 2701 2702 PR c++/47635 2703 * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE. 2704 2705 PR c++/48138 2706 * tree.c (strip_typedefs): Use build_aligned_type. 2707 2708 PR c++/49205 2709 * call.c (sufficient_parms_p): Allow parameter packs too. 2710 2711 PR c++/43321 2712 * semantics.c (describable_type): Remove. 2713 * cp-tree.h: Likewise. 2714 * decl.c (cp_finish_decl): Don't call it. 2715 * init.c (build_new): Likewise. 2716 * parser.c (cp_parser_omp_for_loop): Likewise. 2717 * pt.c (tsubst_decl): Likewise. 2718 (do_auto_deduction): If we fail in a template, try again 2719 at instantiation time. 2720 2721 PR c++/43831 2722 * parser.c (cp_parser_lambda_introducer): Complain about redundant 2723 captures. 2724 * semantics.c (add_capture): Likewise. 2725 (register_capture_members): Clear IDENTIFIER_MARKED. 2726 27272011-06-17 Jason Merrill <jason@redhat.com> 2728 2729 PR c++/49458 2730 * call.c (convert_class_to_reference_1): Allow binding function 2731 lvalue to rvalue reference. 2732 2733 PR c++/43912 2734 Generate proxy VAR_DECLs for better lambda debug info. 2735 * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator(). 2736 (LAMBDA_EXPR_PENDING_PROXIES): New. 2737 (struct tree_lambda_expr): Add pending_proxies. 2738 * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing. 2739 (qualify_lookup): Use is_lambda_ignored_entity. 2740 * parser.c (cp_parser_lambda_expression): Don't adjust field names. 2741 Call insert_pending_capture_proxies. 2742 (cp_parser_lambda_introducer): Use this_identifier. 2743 (cp_parser_lambda_declarator_opt): Call the object parameter 2744 of the op() "__closure" instead of "this". 2745 (cp_parser_lambda_body): Call build_capture_proxy. 2746 * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New. 2747 (insert_pending_capture_proxies, insert_capture_proxy): New. 2748 (is_normal_capture_proxy, is_capture_proxy): New. 2749 (add_capture): Add __ to field names here, return capture proxy. 2750 (add_default_capture): Use this_identifier, adjust to expect 2751 add_capture to return a capture proxy. 2752 (outer_lambda_capture_p, thisify_lambda_field): Remove. 2753 (finish_id_expression, lambda_expr_this_capture): Adjust. 2754 (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES. 2755 * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES 2756 is null. 2757 2758 * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing 2759 of artificial locals. 2760 2761 * parser.c (cp_parser_lambda_expression): Clear 2762 LAMBDA_EXPR_THIS_CAPTURE after parsing. 2763 * pt.c (tsubst_copy_and_build): Make sure it isn't set. 2764 2765 * cp-tree.h (struct tree_lambda_expr): Change common to typed. 2766 Move non-pointers to end of struct. 2767 2768 * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference. 2769 * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P. 2770 2771 * semantics.c (finish_non_static_data_member): Preserve dereference 2772 in template. 2773 27742011-06-16 Jason Merrill <jason@redhat.com> 2775 2776 PR c++/44160 2777 * parser.c (cp_parser_lambda_body): Share code between 2778 simple and complex cases instead of using cp_parser_function_body. 2779 2780 PR c++/45378 2781 * decl.c (check_initializer): Check narrowing. 2782 2783 PR c++/49229 2784 * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure. 2785 2786 PR c++/49251 2787 * semantics.c (finish_id_expression): Mark even dependent 2788 variables as used. 2789 2790 PR c++/49420 2791 * error.c (dump_template_argument): Don't try to omit default 2792 template args from an argument pack. 2793 27942011-06-15 H.J. Lu <hongjiu.lu@intel.com> 2795 2796 PR c++/49412 2797 * decl.c (get_dso_handle_node): Mark __dso_handle hidden if 2798 assembler supports hidden visibility. 2799 28002011-06-14 Jason Merrill <jason@redhat.com> 2801 2802 PR c++/49107 2803 * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload. 2804 * method.c (defaulted_late_check): Only maybe_instantiate_noexcept 2805 if the declaration had an exception-specifier. 2806 (process_subob_fn): Don't maybe_instantiate_noexcept. 2807 * pt.c (maybe_instantiate_noexcept): Handle overload. 2808 * typeck2.c (nothrow_spec_p_uninst): New. 2809 (merge_exception_specifiers): Add 'fn' parm. Build up overload. 2810 * typeck.c (merge_types): Adjust. 2811 2812 * pt.c (deduction_tsubst_fntype): Don't save input_location. 2813 (maybe_instantiate_noexcept): Likewise. 2814 28152011-06-14 Joseph Myers <joseph@codesourcery.com> 2816 2817 * Make-lang.in (cp/method.o): Update dependencies. 2818 * method.c: Include common/common-target.h. 2819 (use_thunk): Use targetm_common.have_named_sections. 2820 28212011-06-14 Steve Ellcey <sje@cup.hp.com> 2822 2823 * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode. 2824 28252011-06-14 Jason Merrill <jason@redhat.com> 2826 2827 * error.c (type_to_string): Print typedef-stripped version too. 2828 2829 PR c++/49117 2830 * call.c (perform_implicit_conversion_flags): Print source type as 2831 well as expression. 2832 2833 PR c++/49389 2834 * typeck2.c (build_m_component_ref): Preserve rvalueness. 2835 2836 PR c++/49369 2837 * class.c (build_base_path): Fix cv-quals in unevaluated context. 2838 2839 PR c++/49290 2840 * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy 2841 of fold_indirect_ref_1. 2842 (cxx_eval_indirect_ref): Use it. 2843 28442011-06-11 Jan Hubicka <jh@suse.cz> 2845 2846 * decl2.c (cp_write_global_declarations): Process aliases; look trhough 2847 same body aliases. 2848 28492011-06-10 Paolo Carlini <paolo.carlini@oracle.com> 2850 2851 PR c++/41769 2852 * decl.c (grokdeclarator): Reject operator names in parameters. 2853 28542011-06-10 Jan Hubicka <jh@suse.cz> 2855 2856 * decl2.c (clear_decl_external): New functoin. 2857 (cp_write_global_declarations): Use it. 2858 28592011-06-10 Paolo Carlini <paolo.carlini@oracle.com> 2860 2861 * cp-tree.h (error_operand_p): Remove. 2862 28632011-06-09 David Krauss <potswa@mac.com> 2864 2865 PR c++/49118 2866 * typeck2.c (build_x_arrow): Push fake template context 2867 to produce diagnostic on acyclic endless operator-> drill-down. 2868 * call.c (build_new_op): Change Boolean overload status 2869 value to a pointer to the overload function. 2870 * cp-tree.h: Likewise. 2871 * typeck.c: Likewise. 2872 * parser.c: Likewise. 2873 * decl2.c: Likewise. 2874 * pt.c: Likewise. 2875 28762011-06-09 Jason Merrill <jason@redhat.com> 2877 2878 * semantics.c (maybe_constant_value): Handle overflowed input. 2879 (non_const_var_error): Handle non-constant DECL_INITIAL. 2880 2881 * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae. 2882 2883 * parser.c (cp_parser_constant_expression): Just return the 2884 non-constant expression. 2885 2886 * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR. 2887 28882011-06-09 Paolo Carlini <paolo.carlini@oracle.com> 2889 2890 PR c++/29003 2891 * decl.c (grokdeclarator): Reject operator names in typedefs. 2892 28932011-06-08 Jason Merrill <jason@redhat.com> 2894 2895 PR c++/49107 2896 * cp-tree.def (DEFERRED_NOEXCEPT): New. 2897 * cp-tree.h (struct tree_deferred_noexcept): New. 2898 (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New. 2899 (DEFERRED_NOEXCEPT_SPEC_P): New. 2900 (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT. 2901 (union lang_tree_node): Add tree_deferred_noexcept. 2902 (maybe_instantiate_noexcept): Declare. 2903 * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT. 2904 * error.c (dump_exception_spec): Likewise. 2905 * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise. 2906 * ptree.c (cxx_print_xnode): Likewise. 2907 * tree.c (cp_tree_equal): Likewise. 2908 * decl.c (cp_tree_node_structure): Likewise. 2909 (duplicate_decls): Call maybe_instantiate_noexcept. 2910 * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT. 2911 (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check 2912 DEFERRED_NOEXCEPT_SPEC_P. 2913 * typeck2.c (merge_exception_specifiers): Likewise. 2914 * decl2.c (mark_used): Call maybe_instantiate_noexcept. 2915 * method.c (process_subob_fn, defaulted_late_check): Likewise. 2916 * pt.c (tsubst_exception_specification): Add defer_ok parm. 2917 Build DEFERRED_NOEXCEPT. 2918 (maybe_instantiate_noexcept): New. 2919 (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust. 2920 * search.c (check_final_overrider): Call maybe_instantiate_noexcept. 2921 2922 * semantics.c (potential_constant_expression_1): Handle destructor 2923 call. 2924 29252011-06-08 Jakub Jelinek <jakub@redhat.com> 2926 2927 * cp-tree.h (struct tinst_level): Add chain_next GTY 2928 markup. 2929 29302011-06-08 Jason Merrill <jason@redhat.com> 2931 2932 PR c++/49322 2933 * pt.c (deduction_tsubst_fntype): Don't free the tinst entry 2934 if a pending_template entry is pointing at it. 2935 29362011-06-07 Jason Merrill <jason@redhat.com> 2937 2938 PR c++/48969 2939 PR c++/44175 2940 * error.c (subst_to_string): New. 2941 (cp_printer): Use it for 'S'. 2942 (print_instantiation_partial_context_line): Handle subst context. 2943 * pt.c (push_tinst_level): Handle subst context. 2944 (deduction_tsubst_fntype): Don't track specific substitutions. 2945 Use push_tinst_level. 2946 2947 * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope. 2948 (fn_type_unification): Don't call push_deduction_access_scope here. 2949 29502011-06-06 Jason Merrill <jason@redhat.com> 2951 2952 PR c++/48780 2953 * typeck.c (perform_integral_promotions): Don't promote scoped enums. 2954 * call.c (convert_arg_to_ellipsis): Promote them here in old ABI. 2955 29562011-06-06 Nicola Pero <nicola.pero@meta-innovation.com>, 2957 2958 PR obj-c++/48275 2959 * parser.c (cp_parser_objc_at_property_declaration): Allow setter 2960 and getter names to use all the allowed method names. 2961 29622011-06-06 Jason Merrill <jason@redhat.com> 2963 2964 PR c++/49298 2965 * semantics.c (potential_constant_expression_1): Handle FIELD_DECL. 2966 2967 PR objc++/49221 2968 * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than 2969 at_function_scope_p. 2970 2971 PR c++/49134 2972 * tree.c (build_target_expr): Deal with ARM ABI tweaks. 2973 29742011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com> 2975 2976 * init.c (build_delete): Warn when deleting type with non-virtual 2977 destructor. 2978 29792011-06-03 Jakub Jelinek <jakub@redhat.com> 2980 2981 PR c++/49276 2982 * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of 2983 DECL_CONTEXT. 2984 29852011-06-01 Jason Merrill <jason@redhat.com> 2986 2987 * pt.c (build_non_dependent_expr): Remove special handling of 2988 REFERENCE_REF_P. 2989 2990 PR c++/44175 2991 * pt.c (template_args_equal): Handle one arg being NULL_TREE. 2992 (deduction_tsubst_fntype): Handle excessive non-infinite recursion. 2993 2994 PR c++/49253 2995 * typeck2.c (build_x_arrow): Don't use build_min_nt. 2996 29972010-05-31 Fabien Chêne <fabien@gcc.gnu.org> 2998 2999 PR c++/48010 3000 * name-lookup.c (supplement_binding_1): If the old binding was a 3001 type name, also check that the DECL actually refers to the same 3002 type or is not a type. 3003 30042011-05-31 Jason Merrill <jason@redhat.com> 3005 3006 PR c++/44870 3007 * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR. Handle 3008 ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions. 3009 (build_min_non_dep): Preserve reference refs. 3010 (build_min_non_dep_call_vec): Likewise 3011 30122011-05-30 Jakub Jelinek <jakub@redhat.com> 3013 3014 PR c++/49223 3015 * semantics.c (finish_omp_clauses): Call require_complete_type 3016 even for copyin/copyprivate clauses. Only call 3017 cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P. 3018 30192011-05-28 Jason Merrill <jason@redhat.com> 3020 3021 PR c++/46124 3022 * parser.c (cp_parser_lambda_expression): Improve error recovery. 3023 (cp_parser_lambda_declarator_opt): Likewise. Return bool. 3024 30252011-05-27 Jason Merrill <jason@redhat.com> 3026 3027 PR c++/47277 3028 * parser.c (cp_parser_pseudo_destructor_name): Commit to parse 3029 after we see the ~. 3030 3031 * mangle.c (mangle_decl_string): Make sure we don't try to mangle 3032 templates. 3033 3034 PR c++/47049 3035 * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing. 3036 * decl.c (start_preparsed_function): Don't call comdat_linkage for 3037 a template. 3038 3039 PR c++/47132 3040 * mangle.c (write_expression): Handle MODOP_EXPR. 3041 3042 PR c++/47277 3043 * parser.c (cp_parser_unqualified_id): Don't check 3044 constructor_name_p for enums. 3045 3046 PR c++/47687 3047 * pt.c (dependent_type_p_r): Avoid infinite recursion. 3048 3049 PR c++/48284 3050 * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot 3051 with INDIRECT_REF of REFERENCE_TYPE. 3052 3053 PR c++/49181 3054 * pt.c (get_mostly_instantiated_function_type): Use push_access_scope. 3055 30562011-05-27 Nathan Froyd <froydnj@codesourcery.com> 3057 3058 * cp-tree.h (building_stmt_tree): Delete. 3059 * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list. 3060 (build_aggr_init_full_exprs): Call building_stmt_list_p 3061 instead of building_stmt_tree. 3062 (initialize_local_var): Likewise. 3063 (finish_function): Likewise. 3064 * decl2.c (finish_anon_union): Likewise. 3065 * init.c (begin_init_stmts): Likewise. 3066 (finish_init_stmts): Likewise. 3067 (expand_aggr_init_1): Likewise. 3068 * name-lookup.c (do_local_using_decl): Likewise. 3069 (do_namespace_alias): Likewise. 3070 (do_using_directive): Likewise. 3071 (cp_emit_debug_info_for_using): Likewise. 3072 * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty. 3073 30742011-05-27 Paolo Carlini <paolo.carlini@oracle.com> 3075 3076 PR c++/42056 3077 * typeck2.c (build_functional_cast): Complain early for invalid uses 3078 of 'auto' and set type to error_mark_node. 3079 30802011-05-26 Jason Merrill <jason@redhat.com> 3081 3082 PR c++/47721 3083 * parser.c (cp_parser_member_declaration): Allow friend T. 3084 * friend.c (make_friend_class): Ignore non-classes. 3085 * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM. 3086 3087 DR 1004 3088 * pt.c (convert_template_argument): Don't complain about using 3089 injected-class-name as template template argument. 3090 3091 PR c++/47956 3092 * decl.c (check_static_variable_definition): Now static. 3093 (cp_finish_decl): Call it here. 3094 (grokdeclarator): Not here. 3095 * pt.c (instantiate_class_template_1): Or here. 3096 * cp-tree.h: Don't declare it. 3097 30982011-05-26 Janis Johnson <janis187@us.ibm.com> 3099 Nathan Froyd <froydnj@codesourcery.com> 3100 3101 PR c++/2288 3102 PR c++/18770 3103 * name-lookup.h (enum scope_kind): Add sk_cond. 3104 * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local. 3105 Detect and report error for redeclaration from for-init or if 3106 or switch condition. 3107 (begin_scope): Handle sk_cond. 3108 * semantics.c (begin_if_stmt): Use sk_cond. 3109 (begin switch_stmt): Ditto. 3110 31112011-05-26 Jason Merrill <jason@redhat.com> 3112 3113 PR c++/48211 3114 * name-lookup.h (cp_class_binding): Make base a pointer. 3115 * name-lookup.c (new_class_binding): Adjust. 3116 (poplevel_class): Adjust. 3117 3118 PR c++/48424 3119 * decl.c (grokparms): Function parameter packs don't need to 3120 go at the end. 3121 * pt.c (type_unification_real): But they aren't deduced otherwise. 3122 31232011-05-25 Jason Merrill <jason@redhat.com> 3124 3125 PR c++/48536 3126 * decl.c (build_enumerator): If incremented enumerator won't fit in 3127 previous integral type, find one it will fit in. 3128 3129 PR c++/48599 3130 * decl.c (create_array_type_for_decl): Complain about array of auto. 3131 3132 PR c++/44994 3133 PR c++/49156 3134 * error.c (dump_template_bindings): Set processing_template_decl 3135 for a partial instantiation. 3136 3137 PR c++/45401 3138 * decl.c (grokdeclarator): Don't change type when adding rvalue ref 3139 to another reference type. 3140 3141 PR c++/44311 3142 * decl.c (case_conversion): New. 3143 (finish_case_label): Use it. 3144 3145 * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT. 3146 3147 PR c++/45698 3148 * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT. 3149 3150 PR c++/46005 3151 * decl.c (grokdeclarator): Complain about auto typedef. 3152 3153 PR c++/46245 3154 * decl.c (grokdeclarator): Complain later for auto parameter. 3155 * pt.c (splice_late_return_type): Handle use in a template 3156 type-parameter. 3157 3158 PR c++/46696 3159 * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN. 3160 3161 PR c++/47184 3162 * parser.c (cp_parser_parameter_declaration): Recognize 3163 list-initialization. 3164 (cp_parser_direct_declarator): Check for the closing 3165 paren before parsing definitely. 3166 3167 PR c++/48935 3168 * parser.c (cp_parser_constructor_declarator_p): Don't check 3169 constructor_name_p for enums. 3170 (cp_parser_diagnose_invalid_type_name): Correct error message. 3171 3172 PR c++/45418 3173 * init.c (perform_member_init): Handle list-initialization 3174 of array of non-trivial class type. 3175 3176 PR c++/45080 3177 * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op. 3178 * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P. 3179 3180 PR c++/48292 3181 * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of 3182 function parameter pack. 3183 (tsubst_pack_expansion): Likewise. 3184 3185 * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has 3186 TS_COMMON. 3187 31882011-05-25 Jakub Jelinek <jakub@redhat.com> 3189 3190 * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER 3191 as TS_TYPED. 3192 3193 PR c++/49136 3194 * semantics.c (cxx_eval_bit_field_ref): Handle the 3195 case when BIT_FIELD_REF doesn't cover only a single field. 3196 31972011-05-24 Jason Merrill <jason@redhat.com> 3198 3199 PR c++/49042 3200 * pt.c (get_mostly_instantiated_function_type): Use 3201 push_deferring_access_checks rather than set flag_access_control. 3202 32032011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>, 3204 3205 * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a 3206 syntax error in declaring an ObjC instance variable. 3207 32082011-05-24 Jason Merrill <jason@redhat.com> 3209 3210 PR c++/48884 3211 * class.c (pushclass): Accept NULL argument. 3212 (popclass): Deal with popping null class. 3213 * pt.c (push_access_scope, pop_access_scope): Use them rather than 3214 push_to_top_level/pop_from_top_level. 3215 (push_deduction_access_scope, pop_defarg_context): New. 3216 (fn_type_unification): Use them. 3217 * name-lookup.c (lookup_name_real_1): Check current_class_type. 3218 32192011-05-24 Paolo Carlini <paolo.carlini@oracle.com> 3220 3221 * decl.c (grokdeclarator): Use current_class_name. 3222 32232011-05-24 Joseph Myers <joseph@codesourcery.com> 3224 3225 * Make-lang.in (GXX_OBJS): Remove prefix.o. 3226 (g++$(exeext)): Use libcommon-target.a. 3227 (CXX_C_OBJS): Remove prefix.o. 3228 32292011-05-23 Jason Merrill <jason@redhat.com> 3230 3231 * pt.c (tsubst_copy_and_build): Use current_class_name. 3232 3233 PR c++/49102 3234 * call.c (convert_arg_to_ellipsis): Call force_rvalue. 3235 3236 PR c++/49105 3237 * typeck.c (cp_build_c_cast): Don't strip cv-quals when 3238 converting to reference. 3239 (build_static_cast_1): Update for glvalues. 3240 3241 PR c++/49105 3242 * typeck.c (build_const_cast_1): Handle rvalue references. 3243 3244 PR c++/47263 3245 * decl.c (use_eh_spec_block): Do use an EH spec block for a 3246 lambda op(). 3247 3248 PR c++/49058 3249 * call.c (splice_viable): Be strict in templates. 3250 3251 PR c++/47336 3252 * error.c (dump_template_bindings): Suppress access control. 3253 3254 PR c++/47544 3255 * pt.c (instantiate_decl): Handle =default. 3256 3257 PR c++/48617 3258 * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE. 3259 32602011-05-23 Nathan Froyd <froydnj@codesourcery.com> 3261 3262 * call.c (build_over_call): Tweak call to check_function_arguments. 3263 * typeck.c (cp_build_function_call_vec): Likewise. 3264 32652011-05-23 Jonathan Wakely <jwakely.gcc@gmail.com> 3266 3267 PR c++/18016 3268 * init.c (perform_member_init): Check for self-initialization. 3269 32702011-05-22 Jason Merrill <jason@redhat.com> 3271 3272 PR c++/48647 3273 * typeck.c (composite_pointer_type_r): Return error_mark_node 3274 on error in SFINAE context. 3275 32762011-05-20 Jason Merrill <jason@redhat.com> 3277 3278 PR c++/48945 3279 * decl.c (grokdeclarator): Don't add set const function-cv-qual 3280 for constexpr fns to memfn_quals, just add it to the type. 3281 (revert_static_member_fn): Don't complain about quals. 3282 (check_static_quals): New. 3283 (grokfndecl): Call it. 3284 (start_preparsed_function): Don't call revert_static_member_fn. 3285 3286 PR c++/48945 3287 * decl.c (revert_static_member_fn): Ignore const on constexpr fn. 3288 3289 PR c++/48780 3290 * cvt.c (type_promotes_to): Don't promote scoped enums. 3291 3292 PR c++/49066 3293 * decl.c (duplicate_decls): Preserve DECL_DELETED_FN. 3294 3295 PR c++/48873 3296 * tree.c (stabilize_expr): Fix typo. 3297 3298 DR 1073 3299 PR c++/49082 3300 * typeck.c (comp_except_specs): noexcept(false) is not compatible 3301 with throw(type-list). 3302 * typeck2.c (merge_exception_specifiers): noexcept(false) 3303 beats any more limited specification. 3304 3305 PR c++/24163 3306 PR c++/29131 3307 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating 3308 unqualified lookup. 3309 * semantics.c (perform_koenig_lookup): Add complain parm. 3310 * cp-tree.h: Adjust. 3311 * parser.c (cp_parser_postfix_expression): Adjust. 3312 (cp_parser_perform_range_for_lookup): Adjust. 3313 33142011-05-20 Jason Merrill <jason@redhat.com> 3315 3316 * semantics.c (finish_call_expr): SET_EXPR_LOCATION. 3317 33182011-05-20 Joseph Myers <joseph@codesourcery.com> 3319 3320 * Make-lang.in (GXX_OBJS): Remove intl.o and version.o. 3321 33222011-05-19 Jakub Jelinek <jakub@redhat.com> 3323 3324 PR c++/49043 3325 * decl.c (check_omp_return): Stop searching on sk_function_parms. 3326 3327 PR c++/48869 3328 * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument, 3329 pass it down to locate_fn_flags. 3330 * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes. 3331 * semantics.c (cxx_omp_create_clause_info): Adjust callers. 3332 * cp-gimplify.c: Include splay-tree.h. 3333 (splay_tree_compare_decl_uid, omp_var_to_track, 3334 omp_cxx_notice_variable): New functions. 3335 (struct cp_genericize_omp_taskreg): New type. 3336 (struct cp_genericize_data): Add omp_ctx field. 3337 (cp_genericize_r): Attempt to determine implicitly determined 3338 firstprivate class type variables. 3339 (cp_genericize): Clear omp_ctx. 3340 * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H). 3341 33422011-05-18 Jason Merrill <jason@redhat.com> 3343 3344 PR c++/48948 3345 PR c++/49015 3346 * class.c (finalize_literal_type_property): Do check 3347 for constexpr member functions of non-literal class. 3348 (finish_struct): Don't call check_deferred_constexpr_decls. 3349 * cp-tree.h: Don't declare it. 3350 (DECL_DEFERRED_CONSTEXPR_CHECK): Remove. 3351 * decl.c (grok_special_member_properties): Don't check it 3352 (grokfnedcl): Don't call validate_constexpr_fundecl. 3353 (start_preparsed_function): Do call it. 3354 * pt.c (tsubst_decl): Don't call it. 3355 (instantiate_class_template_1): Don't call 3356 check_deferred_constexpr_decls. 3357 * semantics.c (literal_type_p): Check for any incompleteness. 3358 (ensure_literal_type_for_constexpr_object): Likewise. 3359 (is_valid_constexpr_fn): Revert deferral changes. 3360 (validate_constexpr_fundecl): Likewise. 3361 (register_constexpr_fundef): Likewise. 3362 (check_deferred_constexpr_decls): Remove. 3363 33642011-05-16 Jason Merrill <jason@redhat.com> 3365 3366 PR c++/48969 3367 * pt.c (deduction_tsubst_fntype): Use a VEC initially. 3368 33692011-05-15 Paolo Carlini <paolo.carlini@oracle.com> 3370 3371 * cxx-pretty-print.c: Update comment. 3372 * semantics.c (trait_expr_value, finish_trait_expr): 3373 Reorder the cases. 3374 * parser.c (cp_parser_primary_expression): Likewise. 3375 33762011-05-15 Jonathan Wakely <jwakely.gcc@gmail.com> 3377 3378 PR c++/48994 3379 * parser.c (cp_parser_perform_range_for_lookup): Call complete_type. 3380 33812011-05-13 Ville Voutilainen <ville.voutilainen@gmail.com> 3382 3383 Implement final on class. 3384 * class.c (check_bases): Diagnose derivation from a final class. 3385 * cp-tree.h (lang_type_class): Add is_final and adjust dummy. 3386 (CLASSTYPE_FINAL): New. 3387 * parser.c (cp_parser_class_head): Parse class-virt-specifier, set 3388 CLASSTYPE_FINAL. 3389 * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL. 3390 33912011-05-13 Jason Merrill <jason@redhat.com> 3392 3393 PR c++/48969 3394 * pt.c (deduction_tsubst_fntype): New. 3395 (fn_type_unification): Use it. 3396 (init_template_processing): Initialize hash table. 3397 (print_template_statistics): Print hash table stats. 3398 3399 * call.c (build_op_call): Use timevar_cond_start/stop. 3400 (build_user_type_conversion): Likewise. 3401 34022011-05-12 Jason Merrill <jason@redhat.com> 3403 3404 * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New. 3405 * semantics.c (validate_constexpr_fundecl): Set it. 3406 (check_deferred_constexpr_decls): Clear it. 3407 (register_constexpr_fundef): Make sure it isn't set. 3408 * decl.c (grok_special_member_properties): Check it. 3409 34102011-05-11 Jason Merrill <jason@redhat.com> 3411 3412 PR c++/48948 3413 * semantics.c (validate_constexpr_fundecl): Defer checking if 3414 an argument type is being defined. 3415 (is_valid_constexpr_fn): Add defer_ok parm. 3416 (cxx_eval_call_expression): Adjust. 3417 (check_deferred_constexpr_decls): New. 3418 (literal_type_p): Make sure type isn't being defined. 3419 (ensure_literal_type_for_constexpr_object): Handle type being defined. 3420 * cp-tree.h: Declare check_deferred_constexpr_decls. 3421 * decl.c (grokfndecl): Call validate_constexpr_fundecl here. 3422 (start_preparsed_function, cp_finish_decl): Not here. 3423 * class.c (finalize_literal_type_property): Don't call 3424 validate_constexpr_fundecl. 3425 (finish_struct): Call check_deferred_constexpr_decls. 3426 * pt.c (tsubst_decl): Call validate_constexpr_fundecl. 3427 (instantiate_class_template): Call check_deferred_constexpr_decls. 3428 3429 * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO 3430 rather than DECL_TEMPLATE_INSTANTIATION. 3431 (cxx_eval_call_expression): Likewise. 3432 3433 * semantics.c (register_constexpr_fundef): Add to hash table here. 3434 (validate_constexpr_fundecl): Not here. 3435 3436 * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once. 3437 3438 * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p, 3439 do call maybe_constant_value in C++0x mode. 3440 * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL. 3441 3442 PR c++/48745 3443 * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR. 3444 34452011-05-11 Nathan Froyd <froydnj@codesourcery.com> 3446 3447 * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use 3448 TYPE_VALUES_RAW. 3449 (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise. 3450 (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise. 3451 (TEMPLATE_TYPE_PARM_INDEX): Likewise. 3452 34532011-05-10 Jason Merrill <jason@redhat.com> 3454 3455 PR c++/48930 3456 * class.c (type_build_ctor_call): New. 3457 * cp-tree.h: Declare it. 3458 * decl.c (check_initializer): Use it instead of 3459 TYPE_NEEDS_CONSTRUCTING. 3460 * init.c (build_value_init, build_value_init_noctor): Likewise. 3461 (perform_member_init, expand_aggr_init_1, build_new_1): Likewise. 3462 (build_vec_init): Likewise. 3463 * typeck2.c (process_init_constructor_array): Likewise. 3464 (process_init_constructor_record): Likewise. 3465 3466 PR c++/48736 3467 * pt.c (tsubst_copy_and_build): Handle substitution of a pack 3468 expansion producing another expansion. 3469 34702011-05-10 Ville Voutilainen <ville.voutilainen@gmail.com> 3471 3472 Fixes for override/final. 3473 * class.c (check_for_override): Diagnose final on a nonvirtual 3474 member function, diagnose override for a virtual with no matching 3475 override. Don't fiddle around with DECL_VINDEX. 3476 34772011-05-10 Nathan Froyd <froydnj@codesourcery.com> 3478 3479 * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand. 3480 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED. 3481 * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new 3482 operand of EXPR_PACK_EXPANSION. 3483 (cp_tree_operand_length): Declare. 3484 * tree.c (cp_tree_operand_length): Define. 3485 (cp_tree_equal): Call it. 3486 * pt.c (value_dependent_expr_P): Likewise. 3487 * mangle.c (write_expression): Likewise. 3488 34892011-05-09 Paolo Carlini <paolo.carlini@oracle.com> 3490 3491 PR c++/48737 3492 PR c++/48744 3493 * decl.c (reshape_init): Take a complain parameter and do 3494 not call error if tf_error is not set. 3495 (check_initializer, reshape_init_r, reshape_init_array, 3496 reshape_init_array_1, reshape_init_vector, reshape_init_class): 3497 Adjust. 3498 * typeck2.c (digest_init_r): Take a complain parameter and 3499 pass it to convert_for_initialization. 3500 (digest_init, digest_init_flags, process_init_constructor_array, 3501 process_init_constructor_record, process_init_constructor_union, 3502 process_init_constructor, digest_init_r): Adjust. 3503 * init.c (expand_default_init, build_new_1): Likewise. 3504 * typeck.c (cp_build_modify_expr): Likewise. 3505 * decl2.c (grokfield): Likewise. 3506 * call.c (convert_like_real, convert_default_arg): Likewise. 3507 * semantics.c (finish_compound_literal): Pass complain to 3508 reshape_init and digest_init. 3509 * cp-tree.h: Adjust declarations. 3510 35112011-05-07 Fabien Chêne <fabien@gcc.gnu.org> 3512 3513 PR c++/48859 3514 * init.c (diagnose_uninitialized_cst_or_ref_member_1): Stop the 3515 recursion if there is user defined constructor. 3516 35172011-05-09 Jason Merrill <jason@redhat.com> 3518 3519 PR c++/34772 3520 * decl.c (initialize_local_var): Use DECL_INITIAL for simple 3521 initialization. 3522 35232011-05-08 Ville Voutilainen <ville.voutilainen@gmail.com> 3524 3525 Implement final/override for member functions. 3526 * class.c (check_for_override): Check for DECL_OVERRIDE_P. 3527 * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New. 3528 (cp_virt_specifiers, enum virt_specifier): New. 3529 * decl.c (set_virt_specifiers): New. 3530 (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields. 3531 * parser.c (make_call_declarator): add virt-specifiers parameter. 3532 (cp_parser_lambda_declarator_opt): Adjust. 3533 (cp_parser_direct_declarator): Likewise. 3534 (cp_parser_virt_specifier_seq_opt): New. 3535 * search.c (check_final_overrider): Diagnose attempts to override 3536 a final member function. 3537 35382011-05-09 Dodji Seketeli <dodji@redhat.com> 3539 3540 PR c++/48574 3541 * class.c (fixed_type_or_null): Use type_dependent_p_push to test 3542 if the instance has a dependent initializer. 3543 35442011-05-08 Paolo Carlini <paolo.carlini@oracle.com> 3545 3546 PR c++/48816 3547 * cxx-pretty-print.c (pp_cxx_template_declaration): Remove 3548 effectively unused variable. 3549 35502011-05-07 Eric Botcazou <ebotcazou@adacore.com> 3551 3552 * name-lookup.h (global_bindings_p): Adjust prototype. 3553 * name-lookup.c (global_bindings_p): Return bool. 3554 35552011-05-06 Jason Merrill <jason@redhat.com> 3556 3557 * decl.c (stabilize_save_expr_r): Set *walk_subtrees as 3558 appropriate. 3559 3560 PR c++/48909 3561 * semantics.c (cxx_eval_conditional_expression): Check 3562 integer_zerop instead. 3563 (potential_constant_expression_1): Likewise. 3564 3565 PR c++/48911 3566 * semantics.c (cxx_eval_array_reference): Handle implicit 3567 initializers. 3568 35692011-05-06 Nathan Froyd <froydnj@codesourcery.com> 3570 3571 * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions. 3572 * call.c (standard_conversion): Call class_of_this_parm. 3573 * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise. 3574 (pp_cxx_direct_abstract_declarator): Likewise. 3575 * decl2.c (change_return_type): Likewise. 3576 (cp_reconstruct_complex_type): Likewise. 3577 * error.c (dump_type_suffix, dump_function_decl): Likewise. 3578 * mangle.c (write_function_type): Likewise. 3579 * pt.c (unify): Likewise. 3580 * typeck.c (merge_types, type_memfn_quals): Likewise. 3581 * decl.c (build_this_parm): Call type_of_this_parm. 3582 35832011-05-06 Dodji Seketeli <dodji@redhat.com> 3584 3585 PR c++/48838 3586 * cp-tree.h (non_static_member_function_p): Declare new function. 3587 * tree.c (non_static_member_function_p): Define it. 3588 * semantics.c (finish_call_expr): Use it. 3589 35902011-05-05 Nathan Froyd <froydnj@codesourcery.com> 3591 3592 * decl.c (finish_case_label): Omit the loc argument to 3593 build_case_label. 3594 35952011-05-05 Jason Merrill <jason@redhat.com> 3596 3597 * cp-tree.h (REFERENCE_REF_P): Just check the type. 3598 * cvt.c (convert_from_reference): Adjust. 3599 * pt.c (build_non_dependent_expr): Adjust. 3600 * semantics.c (finish_offsetof): Adjust. 3601 * tree.c (lvalue_kind): Use it. 3602 3603 PR c++/48873 3604 * tree.c (stabilize_expr): Don't make gratuitous copies of classes. 3605 36062011-05-05 Eric Botcazou <ebotcazou@adacore.com> 3607 3608 * decl.c (start_preparsed_function): Do not set 3609 dont_save_pending_sizes_p. 3610 36112011-05-05 Joseph Myers <joseph@codesourcery.com> 3612 3613 * parser.c (cp_parser_objc_method_definition_list): Update call to 3614 objc_start_method_definition. 3615 36162011-05-04 Jason Merrill <jason@redhat.com> 3617 3618 PR c++/48749 3619 * class.c (resolves_to_fixed_type_p): Don't look closely 3620 in templates. 3621 36222011-05-03 Paolo Carlini <paolo.carlini@oracle.com> 3623 3624 PR c++/28501 3625 * call.c (add_builtin_candidate): Handle REALPART_EXPR and 3626 IMAGPART_EXPR. 3627 36282011-05-02 Lawrence Crowl <crowl@google.com> 3629 3630 * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop. 3631 (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code. 3632 Change TV_NAME_LOOKUP to start/stop. 3633 (define_label): Refactor timevar calls out to a wrapper function. 3634 Change TV_NAME_LOOKUP to start/stop. 3635 (xref_tag): Likewise. 3636 (lookup_label): Refactor timevar calls out to a wrapper function. 3637 Change TV_NAME_LOOKUP to start_cond/stop_cond. 3638 3639 * pt.c: (instantiate_class_template): Add a wrapper to push/pop new 3640 TV_TEMPLATE_INST. 3641 (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST. 3642 (lookup_template_class): Refactor timevar calls out to a wrapper 3643 function. Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST. 3644 (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST. 3645 3646 * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop. 3647 (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond. 3648 (push_namespace): Likewise. 3649 (pop_nested_namespace): Likewise. 3650 (pushdecl_namespace_level): Likewise. 3651 (store_class_bindings): Likewise. 3652 (push_to_top_level): Likewise. 3653 (identifier_type_value): Refactor timevar calls out to a wrapper 3654 function. Change TV_NAME_LOOKUP to start/stop. 3655 (find_binding): Likewise. 3656 (push_using_decl): Likewise. 3657 (lookup_arg_dependent): Likewise. 3658 (push_using_directive): Likewise. 3659 (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN 3660 to plain code. Change TV_NAME_LOOKUP to start/stop. 3661 (lookup_type_current_level): Likewise. Refactor inner return to 3662 break. 3663 (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain 3664 code. Change TV_NAME_LOOKUP to start_cond/stop_cond. 3665 (pushdecl_top_level_1): Likewise. 3666 (lookup_using_namespace): Likewise. 3667 (pushdecl_with_scope): Refactor timevar calls out to a wrapper 3668 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. 3669 (push_overloaded_decl): Likewise. 3670 (push_class_level_binding): Likewise. 3671 (namespace_binding): Likewise. 3672 (set_namespace_binding): Likewise. 3673 (supplement_binding): Likewise. 3674 (unqualified_namespace_lookup): Likewise. 3675 (lookup_name_real): Likewise. 3676 (lookup_type_scope): Likewise. 3677 (namespace_ancestor): Likewise. 3678 (lookup_name_innermost_nonclass_level): Likewise. 3679 (pushtag): Likewise. 3680 (pop_from_top_level): Likewise. 3681 (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper 3682 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Wrap long 3683 lines. 3684 (add_using_namespace): Refactor timevar calls out to a wrapper 3685 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Bypass 3686 wrapper on call to self. 3687 3688 * decl2.c: (cp_write_global_declarations): Add start/stop of 3689 new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO. 3690 Remove push/pop calls to TV_VARCONST. 3691 3692 * parser.c: Add include of "timevar.h". 3693 (cp_parser_explicit_instantiation): Add push/pop calls to 3694 TV_TEMPLATE_INST. 3695 (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM. 3696 (cp_parser_class_specifier): Add wrapper to add push/pop calls to 3697 TV_PARSE_STRUCT. 3698 (cp_parser_function_definition_from_specifiers_and_declarator): Add 3699 push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE. 3700 (cp_parser_late_parsing_for_member): Add push/pop calls to 3701 new TV_PARSE_INMETH. 3702 3703 * call.c: Add include of "timevar.h". 3704 (convert_class_to_reference): Wrap and add push/pop calls to 3705 TV_OVERLOAD. 3706 (build_op_call): Likewise. 3707 (build_conditional_expr): Likewise. 3708 (build_new_op): Likewise. 3709 (build_new_method_call): Likewise. 3710 (build_user_type_conversion): Reorganize to single return and add 3711 push/pop calls to TV_OVERLOAD. 3712 (perform_overload_resolution): Likewise. 3713 3714 * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H). 3715 37162011-05-02 Jason Merrill <jason@redhat.com> 3717 3718 * tree.c (build_vec_init_expr): Take complain parm. 3719 (build_vec_init_elt): Likewise. Free arg vector. 3720 (diagnose_non_constexpr_vec_init, build_array_copy): Adjust. 3721 * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK. 3722 (VEC_INIT_EXPR_INIT): Likewise. 3723 Adjust build_vec_init_expr declaration. 3724 * init.c (perform_member_init): Adjust. 3725 3726 Revert: 3727 PR c++/40975 3728 * cp-tree.def (VEC_INIT_EXPR): Add third operand. 3729 * cp-tree.h (VEC_INIT_EXPR_NELTS): New. 3730 * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it. 3731 * tree.c (build_vec_init_expr): Handle getting pointer/nelts. 3732 (build_vec_init_elt): Don't expect an array type. 3733 (build_array_copy): Adjust. 3734 * init.c (perform_member_init): Adjust. 3735 (build_new_1): Use build_vec_init_expr. 3736 3737 PR c++/48834 3738 * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS. 3739 Protect an explicit target. 3740 3741 PR c++/48446 3742 * decl.c (stabilize_save_expr_r, stabilize_vla_size): New. 3743 (compute_array_index_type): Revert earlier 48446 changes. 3744 (grokdeclarator): Use stabilize_vla_size. 3745 37462011-05-02 Dmitry Gorbachev <d.g.gorbachev@gmail.com> 3747 Eric Botcazou <ebotcazou@adacore.com> 3748 3749 * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE 3750 instead of inappropriate zero values. 3751 37522011-05-02 Paolo Carlini <paolo.carlini@oracle.com> 3753 3754 PR c++/47969 3755 * decl.c (compute_array_index_type): Check build_expr_type_conversion 3756 return value for NULL_TREE. 3757 37582011-04-29 Paolo Carlini <paolo.carlini@oracle.com> 3759 3760 PR c++/48606 3761 * init.c (perform_member_init): Check build_value_init return 3762 value for error_mark_node. 3763 37642011-04-29 Diego Novillo <dnovillo@google.com> 3765 Le-Chun Wu <lcwu@google.com> 3766 3767 * call.c (conversion_null_warnings): Also handle assignments 3768 when warning about NULL conversions. 3769 37702011-04-29 Le-Chun Wu <lcwu@google.com> 3771 3772 * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define. 3773 * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs. 3774 (build_over_call): Use it to determine whether to emit a NULL 3775 warning for template function instantiations. 3776 (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if 3777 EXPLICIT_TARGS is set. 3778 37792011-04-29 Nicola Pero <nicola.pero@meta-innovation.com>, 3780 Mike Stump <mikestump@comcast.net> 3781 3782 * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only 3783 in maintainer mode. Use the --output-file option of gperf instead 3784 of > to prevent creating an empty cp/cfns.h when gperf is not 3785 available. 3786 37872011-04-28 Paolo Carlini <paolo.carlini@oracle.com> 3788 3789 PR c++/48798 3790 * semantics.c (finish_base_specifier): cv-qualified base class 3791 is fine, per DR 484. 3792 37932011-04-28 Dodji Seketeli <dodji@redhat.com> 3794 3795 PR c++/48656 3796 * semantics.c (finish_call_expr): Don't forget BASELINK nodes when 3797 considering call expressions involving a member function. 3798 37992011-04-28 Paolo Carlini <paolo.carlini@oracle.com> 3800 3801 PR c++/48530 3802 * tree.c (build_cplus_new): Check build_target_expr return 3803 value for error_mark_node. 3804 38052011-04-28 Paolo Carlini <paolo.carlini@oracle.com> 3806 3807 PR c++/48771 3808 * semantics.c (literal_type_p): Reference types are literal types, 3809 per the FDIS. 3810 (valid_type_in_constexpr_fundecl_p): Remove. 3811 (is_valid_constexpr_fn): Adjust. 3812 38132011-04-27 Jason Merrill <jason@redhat.com> 3814 3815 PR libstdc++/48760 3816 Implement list-initialization of _Complex. 3817 * decl.c (reshape_init_r): Allow {real,imag} for _Complex. 3818 (check_initializer): Likewise. 3819 * call.c (build_complex_conv): New. 3820 (implicit_conversion): Call it. 3821 (convert_like_real): Handle it. 3822 * typeck2.c (check_narrowing): Handle it. 3823 3824 * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to 3825 decide whether to delete. 3826 (build_vec_init): Pass sfk_complete_destructor. 3827 3828 PR c++/40975 3829 * cp-tree.def (VEC_INIT_EXPR): Add third operand. 3830 * cp-tree.h (VEC_INIT_EXPR_NELTS): New. 3831 * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it. 3832 * tree.c (build_vec_init_expr): Handle getting pointer/nelts. 3833 (build_vec_init_elt): Don't expect an array type. 3834 (build_array_copy): Adjust. 3835 * init.c (perform_member_init): Adjust. 3836 (build_new_1): Use build_vec_init_expr. 3837 3838 * class.c (resolve_address_of_overloaded_function): Don't 3839 change OVERLOAD to TREE_LIST. 3840 * pt.c (print_candidates_1): Remove nonsensical assert. 3841 3842 PR c++/48046 3843 * parser.c (cp_parser_diagnose_invalid_type_name): Commit 3844 to tentative parse sooner. 3845 38462011-04-26 Jason Merrill <jason@redhat.com> 3847 3848 PR c++/42687 3849 * parser.c (cp_parser_primary_expression): Set *idk to 3850 CP_ID_KIND_NONE for a parenthesized identifier. 3851 3852 * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname. 3853 (cxx_print_identifier): Correct indentation. 3854 3855 PR c++/48530 3856 * decl.c (cxx_maybe_build_cleanup): Add complain parm. 3857 * tree.c (force_target_expr): Add complain parm. 3858 (build_target_expr_with_type): Likewise. 3859 (get_target_expr_sfinae): Split out. 3860 (build_vec_init_expr, bot_manip): Adjust. 3861 * init.c (build_vec_delete, build_vec_delete_1): Add complain parm. 3862 (build_delete, build_dtor_call): Likewise. 3863 (perform_direct_initialization_if_possible): Adjust. 3864 (build_vec_init): Handle error return. 3865 * cvt.c (force_rvalue): Add complain parm. 3866 Call build_special_member_call directly. 3867 * decl2.c (delete_sanity): Add complain parm. 3868 (build_cleanup): Adjust. 3869 * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust. 3870 * semantics.c (finish_stmt_expr_expr): Adjust. 3871 (finish_compound_literal): Adjust. 3872 * parser.c (cp_parser_delete_expression): Adjust. 3873 * typeck2.c (build_functional_cast): Adjust. 3874 * cp-tree.h: Adjust. 3875 38762011-04-26 Martin Jambor <mjambor@suse.cz> 3877 3878 * class.c (cp_fold_obj_type_ref): Remove. 3879 * cp-tree.h (cp_fold_obj_type_ref): Remove declaration. 3880 38812011-04-25 Paolo Carlini <paolo.carlini@oracle.com> 3882 3883 * cp-tree.def: Add a new UNDERLYING_TYPE tree code. 3884 * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy. 3885 (UNDERLYING_TYPE_TYPE): Add. 3886 * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE 3887 as TS_COMMON. 3888 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword, 3889 cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE. 3890 (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy. 3891 * semantics.c (finish_underlying_type): New. 3892 * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE. 3893 * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise. 3894 * cxx-pretty-print.c (p_cxx_type_id): Likewise. 3895 * tree.c (cp_walk_subtrees): Likewise. 3896 * pt.c (for_each_template_parm_r, tsubst, unify, 3897 dependent_type_p_r): Likewise. 3898 * mangle.c (write_type): Sorry for __underlying_type. 3899 39002011-04-25 Jason Merrill <jason@redhat.com> 3901 3902 PR c++/48707 3903 * decl.c (type_dependent_init_p): New. 3904 (cp_finish_decl): Check it. 3905 * pt.c (any_type_dependent_elements_p): New. 3906 * cp-tree.h: Declare it. 3907 39082011-04-20 Jason Merrill <jason@redhat.com> 3909 3910 * semantics.c (finish_compound_literal): Don't put an array 3911 with a dtor in a static variable. 3912 3913 * call.c (build_over_call): Handle trivial dtor. 3914 3915 * search.c (lookup_fnfields_slot): Call complete_type. 3916 3917 PR c++/48594 3918 * decl2.c (build_offset_ref_call_from_tree): Move 3919 non-dependency of object outside condition. 3920 3921 PR c++/48657 3922 * decl.c (cp_finish_decl): Simplify template handling. 3923 39242011-04-20 Jim Meyering <meyering@redhat.com> 3925 3926 * tree.c (cxx_printable_name_internal): Remove useless if-before-free. 3927 39282011-04-19 Jason Merrill <jason@redhat.com> 3929 3930 PR c++/46304 3931 * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR. 3932 3933 PR c++/45267 3934 * decl.c (duplicate_decls): Keep always_inline attribute 3935 in sync with DECL_DISREGARD_INLINE_LIMITS. 3936 39372011-04-18 Jason Merrill <jason@redhat.com> 3938 3939 PR c++/48569 3940 * typeck2.c (build_functional_cast): Handle VOID_TYPE. 3941 3942 PR c++/48537 3943 * init.c (build_value_init): Handle UNION_TYPE the same. 3944 39452011-04-18 Jakub Jelinek <jakub@redhat.com> 3946 3947 PR c++/48632 3948 * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr 3949 for type dependent pointers. 3950 39512011-04-18 Jim Meyering <meyering@redhat.com> 3952 3953 * pt.c (type_unification_real): Fix typo in comment: s/in in/in/. 3954 39552011-04-17 Jan Hubicka <jh@suse.cz> 3956 3957 * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed 3958 gotos. 3959 39602011-04-17 Jason Merrill <jason@redhat.com> 3961 3962 PR c++/48531 3963 * typeck2.c (build_functional_cast): Disallow array type. 3964 3965 * tree.c (get_target_expr): Handle VEC_INIT_EXPR. 3966 39672011-04-17 Jan Hubicka <jh@suse.cz> 3968 3969 * class.c (cp_fold_obj_type_ref): Drop vtable_method. 3970 39712011-04-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com> 3972 3973 Implement N3271 3974 * parser.c (cp_convert_range_for): Split into 3975 cp_parser_perform_range_for_lookup. 3976 (cp_parser_perform_range_for_lookup): New. 3977 (cp_parser_range_for_member_function): New. 3978 (cp_parser_for_init_statement): Correct error message. 3979 * semantics.c (finish_call_expr): Accept COMPONENT_REF. 3980 39812011-04-14 Nicola Pero <nicola.pero@meta-innovation.com> 3982 3983 * parser.c (cp_parser_objc_protocol_declaration): Updated for 3984 change from objc_declare_protocols() to objc_declare_protocol(). 3985 39862011-04-14 Nathan Froyd <froydnj@codesourcery.com> 3987 3988 PR objc++/48479 3989 * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable 3990 and return immediately. 3991 39922011-04-14 Nathan Froyd <froydnj@codesourcery.com> 3993 3994 * cp-tree.def (SWITCH_STMT): Add an extra operand. 3995 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED. 3996 * cp-tree.h (SWITCH_STMT_SCOPE): Define. 3997 * semantics.c (begin_switch__stmt): Pass scope to build_stmt. 3998 (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN. 3999 40002011-04-14 Nathan Froyd <froydnj@codesourcery.com> 4001 4002 * cp-tree.def (IF_STMT): Add an extra operand. 4003 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED. 4004 * cp-tree.h (IF_SCOPE): Define. 4005 * semantics.c (begin_if_stmt): Pass scope to build_stmt. 4006 (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN. 4007 40082011-04-14 Nathan Froyd <froydnj@codesourcery.com> 4009 4010 * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand. 4011 * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED. 4012 * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define. 4013 * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt. 4014 Use FOR_SCOPE instead of TREE_CHAIN. 4015 (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE. 4016 (finish_for_stmt): Likewise. 4017 40182011-04-14 Jason Merrill <jason@redhat.com> 4019 4020 * parser.c (cp_parser_postfix_expression): Fix flags passed to 4021 build_new_method_call. 4022 * semantics.c (finish_call_expr): Likewise. 4023 4024 PR c++/48531 4025 * init.c (build_value_init_noctor): Check complain consistently. 4026 4027 PR c++/48557 4028 * typeck.c (cp_build_binary_op): Don't decay void operands. 4029 4030 PR c++/48446 4031 * decl.c (compute_array_index_type): Use get_temp_regvar instead 4032 of variable_size. 4033 * init.c (get_temp_regvar): No longer static. 4034 * cp-tree.h: Declare it. 4035 40362011-04-14 Nicola Pero <nicola.pero@meta-innovation.com> 4037 4038 * parser.c (cp_parser_objc_class_declaration): Updated for change 4039 in objc_declare_class(). 4040 40412011-04-14 Nathan Froyd <froydnj@codesourcery.com> 4042 4043 * decl.c (poplevel): Use block_chainon. 4044 40452011-04-13 Jason Merrill <jason@redhat.com> 4046 4047 PR c++/48594 4048 * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor 4049 or pointer to (non-member) function. 4050 40512011-04-13 Jakub Jelinek <jakub@redhat.com> 4052 4053 PR c++/48570 4054 * semantics.c (cxx_eval_array_reference): Handle reading from 4055 wchar_t, char16_t and char32_t STRING_CST. 4056 40572011-04-13 Dodji Seketeli <dodji@redhat.com> 4058 4059 PR c++/48574 4060 * class.c (fixed_type_or_null): We cannot determine the dynamic 4061 type of a reference variable if its initializer is dependent. 4062 40632011-04-13 Jason Merrill <jason@redhat.com> 4064 4065 PR c++/48581 4066 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about 4067 unqualified lookup failing if we're still in a template. 4068 40692011-04-12 Nathan Froyd <froydnj@codesourcery.com> 4070 4071 * cp-lang.c (cp_init_ts): Call cp_common_init_ts. Move 4072 tree_contains_struct initialization to... 4073 * cp-objcp-common.c (cp_common_init_ts): ...here. Use MARK_* 4074 macros. 4075 * cp-objcp-common.h (cp_common_init_ts): Declare. 4076 * cp-tree.h (union lang_tree_node): Check for TS_COMMON before 4077 calling TREE_CHAIN. 4078 40792011-04-12 Nicola Pero <nicola.pero@meta-innovation.com> 4080 4081 * parser.c (cp_parser_objc_message_expression): Updated call 4082 to objc_build_message_expr. 4083 40842011-04-12 Martin Jambor <mjambor@suse.cz> 4085 4086 * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of 4087 cgraph_get_create_node. 4088 * decl2.c (cp_write_global_declarations): Call cgraph_get_node 4089 instead of cgraph_get_create_node. 4090 * method.c (make_alias_for_thunk): Call cgraph_get_node 4091 instead of cgraph_get_create_node, assert it returns non-NULL. 4092 (use_thunk): Likewise. 4093 * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only 4094 when flag_syntax_only is not set. Call cgraph_get_node instead of 4095 cgraph_get_create_node. 4096 (maybe_clone_body): Call cgraph_get_node instead of 4097 cgraph_get_create_node. 4098 40992011-04-12 Martin Jambor <mjambor@suse.cz> 4100 4101 * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node 4102 instead of cgraph_node. 4103 * decl2.c (cxx_callgraph_analyze_expr): Likewise. 4104 (cp_write_global_declarations): Likewise. 4105 * optimize.c (maybe_clone_body): Likewise. 4106 * semantics.c (maybe_add_lambda_conv_op): Likewise. 4107 * mangle.c (mangle_decl): Likewise. 4108 * method.c (make_alias_for_thunk): Likewise. 4109 (use_thunk): Likewise. 4110 41112011-04-11 Jason Merrill <jason@redhat.com> 4112 4113 PR c++/48535 4114 * decl.c (cp_complete_array_type_or_error): New. 4115 * semantics.c (finish_compound_literal): Use it. 4116 * cp-tree.h: Declare it. 4117 4118 PR c++/48535 4119 * semantics.c (finish_compound_literal): Handle references. 4120 4121 PR c++/48535 4122 * semantics.c (finish_compound_literal): Take complain parm. 4123 (build_lambda_object): Adjust. 4124 * cp-tree.h: Adjust. 4125 * call.c (convert_like_real): Adjust. 4126 * decl.c (check_initializer): Adjust. 4127 * parser.c (cp_parser_postfix_expression): Adjust. 4128 (cp_parser_functional_cast): Adjust. 4129 * pt.c (tsubst_copy_and_build): Adjust. 4130 * typeck2.c (process_init_constructor_record): Adjust. 4131 4132 PR c++/48534 4133 * cvt.c (ocp_convert): Use build_nop to convert to underlying type 4134 of scoped enum. 4135 4136 PR c++/48523 4137 * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather 4138 than cp_build_indirect_ref. 4139 4140 PR c++/48457, Core 1238 4141 * call.c (reference_binding): Allow rvalue reference to bind to 4142 function lvalue. 4143 * tree.c (lvalue_kind): Functions are always lvalues. 4144 41452011-04-07 Jason Merrill <jason@redhat.com> 4146 4147 PR c++/48500 4148 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check 4149 arguments even if we don't know the function. 4150 4151 PR c++/48481 4152 * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL 4153 at the end of the chain. 4154 * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT. 4155 (iterative_hash_template_arg): Likewise. 4156 4157 PR c++/48481 4158 * cp-tree.h (OVL_ARG_DEPENDENT): New. 4159 * name-lookup.c (add_function): Set it. 4160 * semantics.c (finish_call_expr): Free OVERLOADs if it's set. 4161 4162 PR c++/48481 4163 * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot. 4164 Release unused vector. 4165 4166 PR c++/48451 4167 * pt.c (fn_type_unification): Don't clear incomplete pack flag. 4168 (type_unification_real): Clear it here instead. 4169 4170 PR c++/48468 4171 * except.c (build_noexcept_spec): Propagate error_mark_node. 4172 (finish_noexcept_expr): Likewise. 4173 4174 PR c++/48452 4175 * typeck.c (build_x_compound_expr_from_list): Return error_mark_node 4176 in SFINAE context. 4177 4178 PR c++/48450 4179 * call.c (resolve_args): Take complain. 4180 (build_new_function_call, build_operator_new_call): Pass it. 4181 (build_op_call, build_new_op, build_new_method_call): Pass it. 4182 4183 PR c++/48450 4184 * typeck.c (check_for_casting_away_constness): Take complain. 4185 (build_static_cast_1, build_reinterpret_cast_1): Pass it. 4186 (build_const_cast_1): Pass it. Take full complain parm. 4187 (build_const_cast, cp_build_c_cast): Adjust. 4188 4189 * tree.c (build_aggr_init_expr): Always return error_mark_node 4190 on abstract violation. 4191 4192 PR c++/48450 4193 * tree.c (build_cplus_new, build_aggr_init_expr): Take complain. 4194 (bot_manip): Adjust. 4195 * cp-tree.h: Adjust. 4196 * call.c (convert_like_real, build_cxx_call): Adjust. 4197 (perform_direct_initialization_if_possible): Adjust. 4198 * cvt.c (ocp_convert): Adjust. 4199 * init.c (build_value_init): Adjust. 4200 * semantics.c (maybe_add_lambda_conv_op): Adjust. 4201 * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust. 4202 * typeck2.c (build_functional_cast): Adjust. 4203 4204 * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top 4205 level. 4206 (perform_member_init): Not here. 4207 * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special 4208 case to templates. 4209 (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case. 4210 4211 PR c++/48449 4212 * typeck2.c (build_functional_cast): Check complain consistently. 4213 Use build_value_init and abstract_virtuals_error_sfinae. 4214 (abstract_virtuals_error_sfinae): Split out. 4215 * cp-tree.h: Declare it. 4216 * init.c (build_new_1): Use it. 4217 (build_value_init_noctor): Handle FUNCTION_TYPE. 4218 4219 * semantics.c (finish_decltype_type): Simplify handling of unknown 4220 type. 4221 4222 * semantics.c (finish_decltype_type): Add complain parm. 4223 * cp-tree.h: Adjust. 4224 * parser.c (cp_parser_decltype): Adjust. 4225 * pt.c (tsubst): Adjust. 4226 4227 PR c++/48450 4228 * cvt.c (ocp_convert): Handle converting scoped enum to bool. 4229 42302011-03-31 Jason Merrill <jason@redhat.com> 4231 4232 PR c++/48277 4233 * semantics.c (finish_call_expr): Remove assert. 4234 4235 PR c++/48280 4236 * method.c (defaultable_fn_check): Templates are not defaultable. 4237 4238 * parser.c (cp_parser_init_declarator): Avoid redundant 4239 cp_finish_decl for member declarations. 4240 42412011-03-30 Jason Merrill <jason@redhat.com> 4242 4243 PR c++/48212 4244 * semantics.c (non_const_var_error): Just return if DECL_INITIAL 4245 is error_mark_node. 4246 42472011-03-30 Jason Merrill <jason@redhat.com> 4248 4249 PR c++/48369 4250 * semantics.c (potential_constant_expression_1): Handle 4251 UNORDERED_EXPR and ORDERED_EXPR. 4252 4253 PR c++/48281 4254 * semantics.c (finish_compound_literal): Do put static/constant 4255 arrays in static variables. 4256 4257 * call.c (convert_like_real) [ck_list]: Build up the 4258 initializer_list object directly. 4259 * decl.c (build_init_list_var_init): Adjust. 4260 4261 * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR. 4262 * decl.c (reshape_init_array_1): Likewise. 4263 42642011-03-29 Jason Merrill <jason@redhat.com> 4265 4266 PR c++/48265 4267 * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure 4268 the variable is constant before looking at its initializer. 4269 4270 PR c++/48319 4271 * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR. 4272 4273 PR c++/48089 4274 * semantics.c (potential_constant_expression_1): Change error about 4275 use of *this in constructor into sorry. 4276 4277 PR c++/48296 4278 * decl.c (cp_finish_decl): Defer validation of constexpr member 4279 functions. 4280 * class.c (finalize_literal_type_property): Validate them here. 4281 * semantics.c (is_valid_constexpr_fn): Don't check completeness. 4282 4283 * semantics.c (is_valid_constexpr_fn): Specify input location. 4284 42852011-03-28 Jason Merrill <jason@redhat.com> 4286 4287 PR c++/48313 4288 * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction 4289 from overloaded function. 4290 4291 Core 1232 4292 * call.c (build_array_conv): New. 4293 (implicit_conversion): Use it. 4294 4295 * call.c (reference_binding): Allow direct binding to an array 4296 rvalue. 4297 4298 Core 898 4299 * parser.c (cp_parser_compound_statement): Add function_body parm. 4300 Complain about non-body compound-stmt in constexpr fn. 4301 (cp_parser_primary_expression, cp_parser_statement): Adjust. 4302 (cp_parser_implicitly_scoped_statement): Adjust. 4303 (cp_parser_function_body, cp_parser_try_block): Adjust. 4304 (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust. 4305 (cp_parser_objc_try_catch_finally_statement): Adjust. 4306 4307 Core 898 4308 * semantics.c (constexpr_fn_retval): New. Allow using-declaration 4309 and using-definition. 4310 (register_constexpr_fundef): Call it. 4311 4312 * except.c (build_noexcept_spec): Call cxx_constant_value after 4313 converting to bool. 4314 43152011-03-25 Kai Tietz <ktietz@redhat.com> 4316 4317 * lex.c (interface_strcmp): Handle dos-paths. 4318 (handle_pragma_implementation): Use filename_cmp instead of 4319 strcmp. 4320 (in_main_input_context): Likewise. 4321 43222011-03-25 Jason Merrill <jason@redhat.com> 4323 4324 Core 1135 4325 * method.c (defaulted_late_check): Check for exception spec mismatch. 4326 (defaultable_fn_check): Allow exception spec and virtual. 4327 * class.c (check_for_override): A virtual dtor is non-trivial. 4328 4329 PR c++/48289 4330 * pt.c (build_non_dependent_expr): Keep dereferences outside the 4331 NON_DEPENDENT_EXPR. 4332 43332011-03-25 Kai Tietz <ktietz@redhat.com> 4334 4335 * decl.c (decls_match): Replace target hook 4336 call of comp_type_attributes by version in tree.c file. 4337 * search.c (check_final_overrider): Likewise. 4338 * typeck.c (structural_comptypes): Likewise. 4339 43402011-03-21 Kai Tietz <ktietz@redhat.com> 4341 4342 PR target/12171 4343 * cxx-pretty-print.c (pp_cxx_ptr_operator): 4344 Display allowed attributes for function pointer types. 4345 * error.c (dump_type_prefix): Likewise. 4346 4347 * tree.c (cxx_attribute_table): Adjust table. 4348 43492011-03-18 Jason Merrill <jason@redhat.com> 4350 4351 PR c++/48162 4352 * semantics.c (finish_call_expr): Allow TARGET_EXPR for now. 4353 4354 PR c++/48118 4355 * call.c (build_over_call): Don't skip ck_rvalue. 4356 43572011-03-17 Jason Merrill <jason@redhat.com> 4358 4359 PR c++/47504 4360 * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let 4361 the conversion set TREE_OVERFLOW. 4362 4363 Core 1212 4364 * semantics.c (finish_decltype_type): Return T&& for xvalue. 4365 * typeck.c (unlowered_expr_type): Preserve cv-quals. 4366 4367 PR c++/48166 4368 * decl.c (revert_static_member_fn): Strip function-cv-quals. 4369 43702011-03-16 Jason Merrill <jason@redhat.com> 4371 4372 PR c++/48089 4373 * semantics.c (potential_constant_expression_1): Don't allow *this 4374 in a constructor. 4375 (register_constexpr_fundef): Use potential_rvalue_constant_expression. 4376 4377 PR c++/47301 4378 * decl.c (compute_array_index_type): Don't bother trying to deal 4379 with literal classes in ABI v1. 4380 4381 PR c++/46336 4382 * decl.c (duplicate_decls): Return NULL_TREE for clashing 4383 C functions. 4384 4385 PR c++/47570 4386 * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't 4387 use the generic binary expression handling. 4388 43892011-03-16 Diego Novillo <dnovillo@google.com> 4390 4391 * Make-lang.in (CXX_PARSER_H): New. 4392 (cp/parser.o): Add dependency on CXX_PARSER_H. 4393 Add dependency on tree-pretty-print.h 4394 (cp/cp-lang.o): Add dependency on CXX_PARSER_H. 4395 * cp-lang.c: Include parser.h. 4396 * parser.c: Include parser.h. 4397 (struct cp_token): Add bitfield purged_p. 4398 Update all users. 4399 Move to parser.h. 4400 (CPP_PURGED): Remove. Update all users. 4401 (struct cp_lexer): Change field buffer to be a VEC of cp_token. 4402 Remove field buffer_length. 4403 Update all users. 4404 Move to parser.h. 4405 (struct tree_check): Move to parser.h. 4406 (cp_token_position): Likewise. 4407 (struct cp_token_cache): Likewise. 4408 (CPP_KEYWORD): Likewise. 4409 (CPP_TEMPLATE_ID): Likewise. 4410 (CPP_NESTED_NAME_SPECIFIER): Likewise. 4411 (N_CP_TTYPES): Likewise. 4412 (enum cp_parser_status_kind): Likewise. 4413 (struct cp_parser_context): Likewise. 4414 (struct cp_default_arg_entry_d): Likewise. 4415 (struct cp_unparsed_functions_entry_d): Likewise. 4416 (struct cp_parser): Likewise. 4417 (cp_lexer_dump_tokens): New. 4418 (cp_lexer_debug_tokens): New. 4419 (cp_lexer_finished_p): New. 4420 (cp_lexer_alloc): Factor out of cp_lexer_new_main. 4421 (cp_lexer_new_main): Re-write main lexing loop to push 4422 tokens into the new VEC buffer. 4423 (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens. 4424 Do not abort if the token type is not recognized, just print 4425 its code. 4426 * parser.h: New file. 4427 * config-lang.in (gtfiles): Add cp/parser.h. 4428 44292011-03-16 Jason Merrill <jason@redhat.com> 4430 4431 Core 1148 4432 * typeck.c (check_return_expr): Fix conditions for setting 4433 LOOKUP_PREFER_RVALUE. 4434 4435 * call.c (build_over_call): Remove require_complete_type_sfinae call. 4436 4437 PR c++/48132 4438 * decl.c (check_array_designated_initializer): Allow integer index. 4439 (reshape_init_array_1): Set index on the elements. 4440 44412011-03-16 Jason Merrill <jason@redhat.com> 4442 4443 PR c++/48113 4444 * typeck.c (convert_for_initialization): Use 4445 perform_implicit_conversion_flags. 4446 * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set 4447 rvaluedness_matches_p on ck_rvalue. 4448 (convert_like_real) [ck_rvalue]: And restore it here. 4449 4450 PR c++/48115 4451 * call.c (convert_arg_to_ellipsis): Handle incomplete type. 4452 44532011-03-16 Jason Merrill <jason@redhat.com> 4454 4455 * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't 4456 committed to this tentative parse. 4457 4458 PR c++/47999 4459 * semantics.c (finish_call_expr): Preserve reference semantics 4460 in templates. 4461 4462 * call.c (convert_default_arg): Use LOOKUP_IMPLICIT. 4463 44642011-03-16 Jakub Jelinek <jakub@redhat.com> 4465 4466 * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if 4467 DECL_LANG_SPECIFIC is NULL. 4468 44692011-03-15 Jason Merrill <jason@redhat.com> 4470 4471 Core 1074 4472 * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't 4473 check value_dependent_expression_p on the operand. 4474 4475 * semantics.c (push_cx_call_context): Return bool. 4476 (cxx_eval_call_expression): Handle excess depth. 4477 4478 Core 1191 4479 * method.c (synthesized_method_walk): Cleanups don't affect the 4480 triviality of a constructor, but do affect deletion and exception 4481 specification. 4482 44832011-03-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com> 4484 4485 * decl2.c (cp_check_const_attributes): New. 4486 (cplus_decl_attributes): Call cp_check_const_attributes. 4487 44882011-03-15 Jason Merrill <jason@redhat.com> 4489 4490 PR c++/34758 4491 * call.c (convert_default_arg): Use DECL_ORIGIN of fn. Check for 4492 recursion first. 4493 (push_defarg_context, pop_defarg_context): New. 4494 * parser.c (cp_parser_late_parsing_default_args): Use them. 4495 * cp-tree.h: Declare them. 4496 44972011-03-11 Dodji Seketeli <dodji@redhat.com> 4498 4499 * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of 4500 the argument of the indirection operator should not be dependent. 4501 Fix the comment. 4502 45032011-03-11 Jason Merrill <jason@redhat.com> 4504 4505 PR c++/47125 4506 * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error. 4507 4508 PR c++/47144 4509 * parser.c (cp_parser_template_type_arg): Set 4510 type_definition_forbidden_message. 4511 4512 PR c++/47808 4513 * decl.c (compute_array_index_type): Discard folding 4514 if it didn't produce a constant. 4515 45162011-03-11 Jakub Jelinek <jakub@redhat.com> 4517 4518 PR c++/48035 4519 * init.c (build_zero_init_1): Extracted from build_zero_init. 4520 Add FIELD_SIZE argument, if non-NULL and field bit_position 4521 as not smaller than that, don't add that field's initializer. 4522 Pass DECL_SIZE as last argument to build_zero_init_1 4523 for DECL_FIELD_IS_BASE fields. 4524 (build_zero_init): Use build_zero_init_1. 4525 45262011-03-10 Jason Merrill <jason@redhat.com> 4527 4528 PR c++/48029 4529 * pt.c (iterative_hash_template_arg): Remove special case for 4530 ARRAY_TYPE. 4531 4532 PR c++/47198 4533 * parser.c (cp_parser_single_declaration): Just return if 4534 cp_parser_parse_and_diagnose_invalid_type_name complained. 4535 45362011-03-09 Jason Merrill <jason@redhat.com> 4537 4538 PR c++/44629 4539 * pt.c (unify): An unresolved overload is a nondeduced context. 4540 45412011-03-09 Martin Jambor <mjambor@suse.cz> 4542 4543 PR tree-optimization/47714 4544 * method.c (use_thunk): Clear addressable flag of thunk arguments. 4545 45462011-03-08 Dodji Seketeli <dodji@redhat.com> 4547 4548 PR c++/47705 4549 * pt.c (convert_nontype_argument): Only call decay_conversion on 4550 arrays. 4551 45522011-03-08 Jason Merrill <jason@redhat.com> 4553 4554 PR c++/47488 4555 * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry. 4556 4557 PR c++/47705 4558 * pt.c (convert_nontype_argument): Don't crash on non-pointer 4559 argument to pointer parameter. 4560 4561 PR c++/45651 4562 * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on 4563 !TREE_PUBLIC decls. 4564 45652011-03-08 Dodji Seketeli <dodji@redhat.com> 4566 4567 PR c++/47957 4568 * name-lookup.c (binding_to_template_parms_of_scope_p): Only 4569 consider scopes of primary template definitions. Adjust comments. 4570 45712011-03-07 Jason Merrill <jason@redhat.com> 4572 4573 PR c++/48003 4574 * pt.c (convert_nontype_argument): Fix -fpermissive allowing 4575 integer overflow. 4576 * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW. 4577 4578 PR c++/48015 4579 * init.c (constant_value_1): Always require init to be TREE_CONSTANT. 4580 4581 PR c++/48008 4582 * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here. 4583 (write_CV_qualifiers_for_type): Not here. 4584 45852011-03-06 Joseph Myers <joseph@codesourcery.com> 4586 4587 * lang-specs.h: Match -save-temps* instead of -save-temps. 4588 45892011-03-05 Jason Merrill <jason@redhat.com> 4590 4591 * mangle.c (write_expression): Change ABI v6 to v5. 4592 (write_type): Likewise. 4593 45942011-03-04 Jan Hubicka <jh@suse.cz> 4595 4596 PR lto/47497 4597 * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias 4598 and cgraph_add_thunk. 4599 * method.c (make_alias_for_thunk, use_thunk): Likewise. 4600 * mangle.c (mangle_decl): Likewise. 4601 46022011-03-04 Jason Merrill <jason@redhat.com> 4603 4604 PR c++/47971 4605 * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type. 4606 (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING. 4607 4608 PR c++/46220 4609 * search.c (check_final_overrider): Allow pointer to same incomplete 4610 class type with different cv-quals. 4611 46122011-03-03 Paolo Carlini <paolo.carlini@oracle.com> 4613 4614 PR c++/47974 4615 * pt.c (tsubst_template_args): Check argument t for error_mark_node. 4616 46172011-03-03 Jason Merrill <jason@redhat.com> 4618 4619 PR c++/47950 4620 * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT. 4621 46222011-03-02 Jason Merrill <jason@redhat.com> 4623 4624 PR c++/47950 4625 * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here. 4626 4627 PR c++/47774 4628 * tree.c (build_vec_init_elt): Split out from... 4629 (build_vec_init_expr): ...here. 4630 (diagnose_non_constexpr_vec_init): New fn. 4631 * semantics.c (potential_constant_expression_1): Use it. 4632 * cp-tree.h: Declare it. 4633 46342011-03-01 Jason Merrill <jason@redhat.com> 4635 4636 PR c++/46159 4637 * parser.c (cp_parser_primary_expression): Don't warn about a 4638 failed tentative parse. 4639 4640 PR c++/47200 4641 * semantics.c (cxx_bind_parameters_in_call): Don't call 4642 adjust_temp_type on non-constant args. 4643 4644 PR c++/47851 4645 * call.c (standard_conversion): Provide requested cv-quals on 4646 class rvalue conversion. 4647 4648 PR c++/46282 4649 * decl2.c (grokbitfield): Handle type-dependent width. 4650 46512011-02-28 Jason Merrill <jason@redhat.com> 4652 4653 PR c++/47873 4654 * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P 4655 after checking for a non-thunk. 4656 46572011-02-26 Jason Merrill <jason@redhat.com> 4658 4659 PR c++/47904 4660 * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL. 4661 * pt.c (iterative_hash_template_arg): And hash it. 4662 4663 PR c++/47897 4664 * semantics.c (non_const_var_error): Split out from... 4665 (cxx_eval_constant_expression): ...here. 4666 (potential_constant_expression_1) [VAR_DECL]: Use it. 4667 Allow dependent variables. 4668 46692011-02-24 Jason Merrill <jason@redhat.com> 4670 4671 * parser.c (cp_parser_constant_expression): Set 4672 non_integral_constant_expression correctly for C++0x too. 4673 (cp_parser_static_assert): Allow non-constant expression. 4674 (cp_parser_direct_declarator): Expect non_constant_p to be set 4675 properly for C++0x. 4676 * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR. 4677 * semantics.c (maybe_constant_value): Check type_unknown_p too. 4678 (potential_rvalue_constant_expression): New. 4679 (require_potential_rvalue_constant_expression): New. 4680 46812011-02-23 Jason Merrill <jason@redhat.com> 4682 4683 * cp-tree.h (DECL_PARM_LEVEL): New. 4684 (struct lang_decl_parm): Add level field. 4685 * name-lookup.c (function_parm_depth): New fn. 4686 * name-lookup.h: Declare it. 4687 * parser.c (cp_parser_parameter_declaration_list): Use it. 4688 * mangle.c (struct globals): Add parm_depth field. 4689 (write_bare_function_type): Adjust it. 4690 (write_expression): Include the level delta in PARM_DECL mangling 4691 for abi >= 6. 4692 4693 * semantics.c (finish_decltype_type): Remove shortcut for decltype 4694 of id-expression. 4695 * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6. 4696 46972011-02-23 Nathan Froyd <froydnj@codesourcery.com> 4698 4699 PR c++/46868 4700 * parser.c (cp_parser_class_specifier): Require a closing brace 4701 to attempt error recovery. 4702 47032011-02-23 Jakub Jelinek <jakub@redhat.com> 4704 4705 PR c++/47833 4706 * pt.c (struct pending_template): Add chain_next GTY option. 4707 * decl.c (struct named_label_use_entry): Likewise. 4708 47092011-02-22 Paolo Carlini <paolo.carlini@oracle.com> 4710 4711 PR c++/47242 4712 * semantics.c (build_lambda_object): Bail out if a field is 4713 error_mark_node. 4714 47152011-02-22 Dodji Seketeli <dodji@redhat.com> 4716 4717 PR c++/47666 4718 * class.c (dfs_declare_virt_assop_and_dtor) 4719 (declare_virt_assop_and_dtor): New static functions. 4720 (add_implicitly_declared_members): Use 4721 declare_virt_assop_and_dtor. 4722 47232011-02-21 Jason Merrill <jason@redhat.com> 4724 4725 PR c++/47207 4726 * decl2.c (decl_constant_var_p): A constexpr var needs an 4727 initializer to be constant. 4728 * semantics.c (cxx_eval_constant_expression): Complain about 4729 constexpr var used in its own initializer. 4730 * call.c (set_up_extended_ref_temp): Set 4731 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too. 4732 47332011-02-20 Jason Merrill <jason@redhat.com> 4734 4735 PR c++/47199 4736 * semantics.c (cxx_eval_call_expression): Call 4737 cxx_eval_constant_expression in trivial shortcut. 4738 4739 PR c++/46831 4740 * call.c (convert_class_to_reference): Don't try to set up a 4741 second conv sequence for non-viable candidates. 4742 4743 PR c++/47703 4744 * error.c (location_of): Handle non-tagged types. 4745 4746 PR c++/46472 4747 * method.c (process_subob_fn): Instantiate constexpr templates. 4748 * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P. 4749 47502011-02-20 Dodji Seketeli <dodji@redhat.com> 4751 4752 PR c++/46394 4753 * pt.c (tsubst_pack_expansion): do not use 4754 cp_tree_equal/same_type_p to detect an expansion of a parameter 4755 pack. 4756 47572011-02-19 Jason Merrill <jason@redhat.com> 4758 4759 PR c++/47503 4760 * semantics.c (cxx_eval_call_expression): Shortcut trivial copy. 4761 47622011-02-18 Paolo Carlini <paolo.carlini@oracle.com> 4763 4764 PR c++/47795 4765 * semantics.c (finish_non_static_data_member): Early return if 4766 object is error_mark_node. 4767 47682011-02-18 Dodji Seketeli <dodji@redhat.com> 4769 4770 PR c++/47208 4771 * pt.c (do_auto_deduction): Do not mention error_mark_node in 4772 diagnostics. 4773 * semantics.c (finish_id_expression): Do not pass erroneous decl 4774 to decl_constant_var_p. 4775 47762011-02-17 Jakub Jelinek <jakub@redhat.com> 4777 4778 PR c++/47783 4779 * cvt.c (convert_from_reference): Call mark_exp_read. 4780 47812011-02-11 Dodji Seketeli <dodji@redhat.com> 4782 4783 PR c++/47172 4784 * pt.c (finish_call_expr): Consider a call expression that has a 4785 dependent "this" pointer as being dependent. Add comments. 4786 (dependent_type_p, type_dependent_expression_p): Update comments. 4787 47882011-02-16 Dodji Seketeli <dodji@redhat.com> 4789 4790 PR c++/47326 4791 * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack 4792 expansion arguments are not evaluated. 4793 47942011-02-16 Jakub Jelinek <jakub@redhat.com> 4795 4796 PR c++/47704 4797 * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5 4798 instead of TYPE_LANG_FLAG_3. 4799 * pt.c (lookup_template_class): Copy over 4800 ENUM_FIXED_UNDERLYING_TYPE_P. 4801 48022011-02-15 Jason Merrill <jason@redhat.com> 4803 4804 PR c++/46807 4805 * method.c (synthesized_method_walk): Always exit early for 4806 trivial fn in C++98 mode. 4807 48082011-02-14 Jason Merrill <jason@redhat.com> 4809 4810 PR c++/47482 4811 * parser.c (cp_parser_enumerator_definition): Call 4812 fold_non_dependent_expr. 4813 48142011-02-09 Jason Merrill <jason@redhat.com> 4815 4816 * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel. 4817 * semantics.c (finish_fname): Only return the name if we're in 4818 a function. 4819 4820 * decl.c (build_enumerator): Don't perform integral promotions on 4821 non-integral constants. 4822 4823 * cvt.c (convert_to_void): Handle null op1. 4824 4825 * class.c (type_has_constexpr_default_constructor): Make sure the 4826 caller stripped an enclosing array. 4827 * init.c (perform_member_init): Strip arrays before calling it. 4828 4829 PR c++/47511 4830 * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL. 4831 48322011-02-03 Dodji Seketeli <dodji@redhat.com> 4833 4834 PR c++/47398 4835 * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of 4836 template parameters in account. 4837 48382011-02-03 Nathan Froyd <froydnj@codesourcery.com> 4839 4840 PR c++/46890 4841 * parser.c (cp_parser_class_specifier): Fix setting of 4842 want_semicolon. 4843 48442011-01-31 Jakub Jelinek <jakub@redhat.com> 4845 4846 PR c++/47416 4847 * semantics.c (build_data_member_initialization): Handle 4848 STATEMENT_LIST always instead of just for CLEANUP_BODY. 4849 48502011-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 4851 4852 * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use 4853 LD_STATIC_OPTION, LD_DYNAMIC_OPTION. 4854 48552011-01-29 Dodji Seketeli <dodji@redhat.com> 4856 4857 PR c++/47311 4858 * cp-tree.h (fixup_template_parms): Declare. 4859 * pt.c (end_template_parm_list): Do not fixup template parms here. 4860 (fixup_template_parms): Remove static. Fix typo in the 4861 comments. Remove useless code statement. 4862 (fixup_template_parm): For a template template parameter, fixup 4863 its attributes before fixing up its type. 4864 * parser.c 4865 (cp_parser_template_declaration_after_export): After parsing 4866 template parameters fixup their types. 4867 48682011-01-26 Jakub Jelinek <jakub@redhat.com> 4869 4870 PR c++/47476 4871 * semantics.c (potential_constant_expression_1): Handle 4872 TRUTH_XOR_EXPR. 4873 48742011-01-26 Dave Korn <dave.korn.cygwin@gmail.com> 4875 4876 PR c++/43601 4877 * semantics.c (expand_or_defer_fn_1): Handle it. 4878 * decl2.c (decl_needed_p): Likewise. 4879 48802011-01-21 Jason Merrill <jason@redhat.com> 4881 4882 PR c++/47041 4883 * semantics.c (build_constexpr_constructor_member_initializers): 4884 Handle trivial copy. 4885 48862011-01-21 Jakub Jelinek <jakub@redhat.com> 4887 4888 PR c++/47388 4889 * semantics.c (begin_for_stmt): If -fno-for-scope, don't 4890 assume init must be NULL if scope is NULL. 4891 (begin_range_for_stmt): Likewise. 4892 48932011-01-21 Jason Merrill <jason@redhat.com> 4894 4895 PR c++/46552 4896 * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF. 4897 4898 PR c++/46977 4899 * semantics.c (potential_constant_expression_1): Split out from 4900 potential_constant_expression. Add want_rval parm. Handle 4901 template expression forms. Don't enforce restriction on address 4902 of automatic variable here. Add a couple of diagnostics that 4903 had been missing. 4904 (require_potential_constant_expression): New entry point. 4905 (build_data_member_initialization, register_constexpr_fundef): Adjust. 4906 (maybe_constant_value): Check potential_constant_expression. 4907 * pt.c (fold_non_dependent_expr_sfinae): Likewise. 4908 * tree.c (build_vec_init_expr): Adjust. 4909 49102011-01-19 Jakub Jelinek <jakub@redhat.com> 4911 4912 PR c++/47303 4913 * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC 4914 or DECL_EXTERNAL. 4915 49162011-01-17 Jason Merrill <jason@redhat.com> 4917 4918 PR c++/47067 4919 * semantics.c (base_field_constructor_elt): New fn. 4920 (cxx_eval_bare_aggregate): Use it. 4921 (build_data_member_initialization): Leave COMPONENT_REF for 4922 vfield inits. 4923 49242011-01-14 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com> 4925 4926 * parser.c (cp_parser_range_for): Remove the "unused variable" warning 4927 workaround. 4928 49292011-01-15 Giovanni Funchal <gafunchal@gmail.com> 4930 Jonathan Wakely <jwakely.gcc@gmail.com> 4931 4932 PR c++/33558 4933 * decl.c (grokdeclarator): Reject mutable reference members. 4934 49352011-01-14 Jason Merrill <jason@redhat.com> 4936 4937 PR c++/47289 4938 * pt.c (coerce_template_parms): Fix error recovery. 4939 4940 PR c++/46903 4941 * typeck2.c (check_narrowing): Only check arithmetic types. 4942 4943 PR c++/46688 4944 * tree.c (build_vec_init_expr): Handle flexible array 4945 properly. 4946 49472011-01-13 Kai Tietz <kai.tietz@onevision.com> 4948 4949 PR c++/47213 4950 * cp-tree.h (CLASSTYPE_VISIBILITY): Use 4951 TYPE_MAIN_DECL instead of TYPE_NAME. 4952 (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise. 4953 * decl2.c (determine_visibility): Add check 4954 of CLASS_TYPE_P for underlying_type. 4955 49562011-01-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com> 4957 4958 * cp-tree.h (begin_for_scope): New prototype. 4959 (begin_for_stmt): Update prototype. 4960 (begin_range_for_stmt): Update prototype. 4961 * init.c (build_vec_init): Update call to begin_for_stmt. 4962 * parser.c (cp_parser_for): New. 4963 (cp_parser_c_for): Add three new parameters. 4964 (cp_parser_range_for): Likewise. Most parsing code removed. 4965 (cp_parser_iteration_statement): Call cp_parser_for instead of 4966 cp_parser_c_for and cp_parser_range_for. 4967 (cp_parser_for_init_statement): Add new parameter and return type. 4968 (cp_parser_block_declaration): Update call to 4969 cp_parser_simple_declaration. 4970 (cp_parser_simple_declaration): Add new parameter. 4971 Update call to cp_parser_init_declarator. 4972 (cp_parser_init_declarator): Add new parameter. 4973 * pt.c (tsubst_expr): Update call to begin_for_stmt. 4974 * semantics.c (begin_for_scope): New. 4975 (begin_for_stmt): Add two new parameters. 4976 (begin_range_for_stmt): Likewise. 4977 49782011-01-12 Nicola Pero <nicola.pero@meta-innovation.com> 4979 4980 * parser.c (cp_parser_objc_at_property_declaration): Improved 4981 error message. 4982 49832011-01-11 Dodji Seketeli <dodji@redhat.com> 4984 4985 PR debug/46955 4986 * cp-lang.c (get_template_innermost_arguments_folded) 4987 (get_template_argument_pack_elems_folded) 4988 (template_arg_needs_folding, fold_cplus_constants): New static 4989 functions. 4990 (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to 4991 get_template_innermost_arguments_folded. 4992 (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to 4993 get_template_argument_pack_elems_folded. 4994 49952011-01-11 Jason Merrill <jason@redhat.com> 4996 4997 PR c++/46658 4998 * init.c (build_new_1): Handle value-init in templates differently. 4999 5000 PR c++/45520 5001 * tree.c (maybe_dummy_object): Check current_class_ref against 5002 context, not current_class_type. 5003 50042011-01-08 Nicola Pero <nicola.pero@meta-innovation.com> 5005 5006 PR objc/47078 5007 * parser.c (cp_parser_objc_typename): If the type is unknown, for 5008 error recovery purposes behave as if it was not specified so that 5009 the default type is used. 5010 50112011-01-07 Jakub Jelinek <jakub@redhat.com> 5012 5013 PR c++/47022 5014 * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy 5015 for the second build_x_va_arg argument. 5016 50172011-01-05 Tom Tromey <tromey@redhat.com> 5018 5019 * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error. 5020 (lvalue_or_else): Likewise. 5021 50222011-01-01 Kai Tietz <kai.tietz@onevision.com> 5023 5024 PR target/38662 5025 * tree.c (cxx_type_hash_eq): 5026 Allow METHOD_TYPE, too. 5027 5028 5029Copyright (C) 2011 Free Software Foundation, Inc. 5030 5031Copying and distribution of this file, with or without modification, 5032are permitted in any medium without royalty provided the copyright 5033notice and this notice are preserved. 5034