12016-12-24 Jakub Jelinek <jakub@redhat.com> 2 3 PR middle-end/78901 4 * except.c (nothrow_libfn_p): Expect libc_name_p to return 5 const struct libc_name_struct *, if it returns NULL, return 0, 6 otherwise check c_ver and use flag_isoc99 or flag_isoc11. 7 * cfns.gperf: Add %struct-type and libc_name_struct definition. 8 For all C89 C library functions add , 89 after the name, add 9 C99 C library functions with , 99 and C11 C library functions 10 with , 11 suffix. 11 * cfns.h: Regenerated. 12 132016-12-22 Jason Merrill <jason@redhat.com> 14 15 PR c++/78906 16 * pt.c (finish_template_variable): Use most_general_template. 17 18 PR c++/78898 19 PR c++/42329 20 * pt.c (unify): Don't look for a class template from a non-class. 21 222016-12-21 Jakub Jelinek <jakub@redhat.com> 23 24 PR c++/72707 25 * name-lookup.c (pushdecl_maybe_friend_1): Do check shadowing of 26 artificial x if it is an anonymous union variable. 27 28 PR bootstrap/78817 29 * typeck.c (cp_build_function_call_vec): If check_function_arguments 30 returns true, set TREE_NO_WARNING on CALL_EXPR. 31 * call.c (build_over_call): Likewise. 32 33 PR c++/77830 34 * constexpr.c (cxx_eval_array_reference): Perform out of bounds 35 verification even if lval is true, just allow one past the last 36 element in that case. 37 (cxx_eval_store_expression): Detect stores to out of bound 38 ARRAY_REF. 39 402016-12-21 Jason Merrill <jason@redhat.com> 41 42 Implement P0522R0, matching of template template arguments. 43 * pt.c (coerce_template_template_parms): Allow a template argument 44 that's less specialized than the parameter. 45 (unify_bound_ttp_args): Adjust parm's args to apply to arg's 46 template. 47 (coerce_template_args_for_ttp): Split out from 48 lookup_template_class_1. 49 (coerce_ttp_args_for_tta, store_defaulted_ttp) 50 (lookup_defaulted_ttp, add_defaults_to_ttp): New. 51 (process_partial_specialization): Set DECL_CONTEXT of 52 template template-parameters. 53 (coerce_template_parms): Only inform when complain. 54 (expand_template_argument_pack): Handle error_mark_node. 55 (convert_template_argument, template_args_equal, unify): Handle 56 any_targ_node. 57 * cp-tree.h (enum cp_tree_index): Add CPTI_ANY_TARG. 58 (any_targ_node): New. 59 * decl.c (cxx_init_decl_processing): Set it. 60 * name-lookup.c (consider_binding_level): Ignore names with embedded 61 spaces. 62 63 PR c++/42329 64 * pt.c (unify_bound_ttp_args): Split out from unify. 65 (try_class_unification): Handle BOUND_TEMPLATE_TEMPLATE_PARM. 66 (unify): Check for type/non-type mismatch early. 67 [BOUND_TEMPLATE_TEMPLATE_PARM]: Try get_template_base. 68 69 * pt.c (coerce_template_parms): Consider variadic_args_p before 70 complaining about too many template arguments. 71 72 * pt.c (process_partial_specialization): Use 73 get_partial_spec_bindings to check that the partial specialization 74 is more specialized than the primary template. 75 76 * pt.c (convert_template_argument): Pass args to do_auto_deduction. 77 (mark_template_parm): Handle deducibility from type of non-type 78 argument here. 79 (for_each_template_parm_r): Not here. 80 81 * ptree.c (cxx_print_type): Print args of 82 BOUND_TEMPLATE_TEMPLATE_PARM. 83 (cxx_print_decl): Print DECL_TEMPLATE_PARMS. 84 85 PR c++/78767 - ICE with inherited constructor default argument 86 * method.c (strip_inheriting_ctors): Strip template as appropriate. 87 88 PR c++/78749 - friend in anonymous namespace 89 * decl.c (wrapup_globals_for_namespace): Don't complain about friend 90 pseudo-template instantiations. 91 922016-12-16 Richard Biener <rguenther@suse.de> 93 94 PR c++/71694 95 * cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare. 96 (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define. 97 * cp-objcp-common.c (cp_unit_size_without_reusable_padding): New. 98 992016-12-15 Jakub Jelinek <jakub@redhat.com> 100 101 P0490R0 GB 20: decomposition declaration should commit to tuple 102 interpretation early 103 * decl.c (get_tuple_size): Make static. If inst is error_mark_node 104 or non-complete type, return NULL_TREE, otherwise if 105 lookup_qualified_name fails or doesn't fold into INTEGER_CST, return 106 error_mark_node. 107 (get_tuple_element_type, get_tuple_decomp_init): Make static. 108 (cp_finish_decomp): Pass LOC to get_tuple_size. If it returns 109 error_mark_node, complain and fail. 110 1112016-12-15 Nathan Sidwell <nathan@acm.org> 112 113 PR c++/77585 114 * pt.c (instantiate_decl): Push to class scope lambda resides 115 within when instantiating a generic lambda function. 116 1172016-12-14 Martin Sebor <msebor@redhat.com> 118 119 PR c++/78774 120 * pt.c (convert_template_argument): Avoid assuming operand type 121 is non-null since that of SCOPE_REF is not. 122 1232016-12-14 Martin Jambor <mjambor@suse.cz> 124 125 * parser.c: Include omp-general.h and omp-offload.h instead of 126 omp-low.h. 127 (cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new 128 name. 129 (cp_parser_omp_target_update): Likewise. 130 (cp_parser_oacc_declare): Likewise. 131 (cp_parser_oacc_enter_exit_data): Likewise. 132 (cp_parser_oacc_update): Likewise. 133 (cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib, 134 build_oacc_routine_dims and replace_oacc_fn_attrib to use their new 135 names. 136 * semantics.c: Include omp-general insteda of omp-low.h. 137 (finish_omp_for): Adjusted calls to find_omp_clause to use its new 138 name. 139 (finish_omp_cancel): Likewise. 140 (finish_omp_cancellation_point): Likewise. 141 1422016-12-14 Marek Polacek <polacek@redhat.com> 143 144 PR c++/72775 145 * init.c (perform_member_init): Diagnose member initializer for 146 flexible array member. 147 1482016-12-14 Nathan Sidwell <nathan@acm.org> 149 150 PR c++/78701 151 * pt.c (type_unification_real): Check tsubst arg doesn't have 152 remaining template parms before converting it. 153 154 PR c++/69481 155 * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use 156 TYPE_ALIAS_TEMPLATE_INFO for aliases. 157 1582016-12-13 Nathan Sidwell <nathan@acm.org> 159 160 PR c++/69481 161 * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking. 162 (TYPE_ALIAS_TEMPLATE_INFO): New. 163 (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New. Use those macros. 164 * error.c (dump_alias_template_specialization): Adjust. 165 * pt.c (maybe_process_partial_specialization, 166 iterative_has_template_arg, find_parameter_packs_r, 167 alias_template_specialization_p, dependent_alias_template_spec_p, 168 get_underlying_template, lookup_template_class_1, unify): Adjust 169 template using decl access. 170 1712016-12-11 Paolo Carlini <paolo.carlini@oracle.com> 172 173 PR c++/78637 174 * parser.c (cp_parser_namespace_definition): Increment 175 nested_definition_count only if push_namespace succeeds. 176 1772016-12-08 Nathan Sidwell <nathan@acm.org> 178 179 PR c++/78551 180 * constexpr.c (extract_string_elt): New. Broken out of ... 181 (cxx_eval_array_reference): ... here. Call it. 182 (cxx_eval_store_expression): Convert init by STRING_CST into 183 CONSTRUCTOR, if needed. 184 1852016-12-08 Jakub Jelinek <jakub@redhat.com> 186 187 P0003R5 - removal of dynamic exception specification from C++17 188 * parser.c (cp_parser_exception_specification_opt): For C++17 189 error out on throw ( type-id-list ), for C++11 and C++14 issue 190 -Wdeprecated warning on it. Formatting fix. Treat throw() 191 in C++17 as noexcept(true). 192 1932016-12-07 Martin Jambor <mjambor@suse.cz> 194 195 PR c++/78589 196 * error.c (dump_decl): Use dump_function_name to dump 197 !DECL_LANG_SPECIFIC function decls with no or self-referencing 198 abstract origin. 199 2002016-12-07 Nathan Sidwell <nathan@acm.org> 201 202 * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow 203 and avoid re-tsubsting type. 204 205 * cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER & 206 CPTI_DECLTYPE_AUTO_IDENTIFIER. 207 (auto_identifier, decltype_auto_identifier): New. 208 *decl.c (initialize_predefined_identifiers): Add 'auto' and 209 'decltype(auto)'. 210 (grokdeclarator): Use cached identifier. 211 * pt.c (make_decltype_auto, make_auto, make_constrained_auto, 212 is_auto): Likewise. 213 2142016-12-02 Jakub Jelinek <jakub@redhat.com> 215 216 PR c++/78649 217 * pt.c (tsubst_init): Don't call build_value_init if decl's type 218 is error_mark_node. 219 2202016-12-02 Cesar Philippidis <cesar@codesourcery.com> 221 James Norris <jnorris@codesourcery.com> 222 223 * parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics. 224 (cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA, 225 EXIT_DATA,WAIT} are not used in compound statements. 226 2272016-12-01 Jason Merrill <jason@redhat.com> 228 229 * call.c (add_function_candidate): Also exclude inherited ctors 230 that take a type reference-related to the derived class. 231 232 * call.c (add_function_candidate): Exclude inherited copy/move 233 ctors. 234 2352016-11-29 David Malcolm <dmalcolm@redhat.com> 236 237 PR c++/77922 238 * name-lookup.c (lookup_name_fuzzy): Filter out reserved words 239 that were filtered out by init_reswords. 240 2412016-11-28 Jakub Jelinek <jakub@redhat.com> 242 Jason Merrill <jason@redhat.com> 243 244 PR c++/72808 245 * decl.c (finish_enum_value_list): Call fixup_type_variants on 246 current_class_type after 247 insert_late_enum_def_into_classtype_sorted_fields. 248 2492016-11-28 Jakub Jelinek <jakub@redhat.com> 250 251 PR c++/77591 252 * typeck.c (maybe_warn_about_returning_address_of_local): Optimize 253 whats_returned through fold_for_warn. 254 2552016-11-27 Jason Merrill <jason@redhat.com> 256 257 PR c++/77907 258 * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert. 259 2602016-11-24 Martin Liska <mliska@suse.cz> 261 262 PR bootstrap/78493 263 * parser.c (cp_parser_range_for): Use safe_push instead of quick_push. 264 2652016-11-23 Jakub Jelinek <jakub@redhat.com> 266 267 PR c++/77907 268 * cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor 269 and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR 270 with the object on lhs and maybe_constant_value returned expr on rhs. 271 272 PR c++/71450 273 * pt.c (tsubst_copy): Return error_mark_node when mark_used 274 fails, even when complain & tf_error. 275 276 PR c++/77739 277 * cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass 278 false as handle_invisiref_parm_p to cp_genericize_tree. 279 (struct cp_genericize_data): Add handle_invisiref_parm_p field. 280 (cp_genericize_r): Don't wrap is_invisiref_parm into references 281 if !wtd->handle_invisiref_parm_p. 282 (cp_genericize_tree): Add handle_invisiref_parm_p argument, 283 set wtd.handle_invisiref_parm_p to it. 284 (cp_genericize): Pass true as handle_invisiref_parm_p to 285 cp_genericize_tree. Formatting fix. 286 2872016-11-21 Bernd Edlinger <bernd.edlinger@hotmail.de> 288 289 PR c++/71973 290 * decl.c (duplicate_decls): Warn when a built-in function is redefined. 291 Don't overload builtin functions with C++ functions. 292 Handle const_tm_ptr_type_node like file_ptr_node. 293 Copy the TREE_NOTHROW flag unmodified to the old decl. 294 2952016-11-18 Jason Merrill <jason@redhat.com> 296 297 PR objc++/78418 - ICE in string tests on darwin 298 * tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P. 299 3002016-11-18 Jakub Jelinek <jakub@redhat.com> 301 302 PR c++/77285 303 * mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call 304 check_abi_tags. 305 3062016-11-18 Jason Merrill <jason@redhat.com> 307 308 PR c++/67631 - list-init and explicit conversions 309 * semantics.c (finish_compound_literal): Call digest_init_flags. 310 * typeck2.c (digest_init_flags): Add complain parm. 311 (store_init_value): Pass it. 312 3132016-11-18 Richard Sandiford <richard.sandiford@arm.com> 314 Alan Hayward <alan.hayward@arm.com> 315 David Sherwood <david.sherwood@arm.com> 316 317 * class.c (finish_struct_bits): Use SET_DECL_MODE. 318 (build_base_field_1, layout_class_type, finish_struct_1): Likewise. 319 * decl.c (make_label_decl): Likewise. 320 * pt.c (tsubst_decl): Likewise. 321 3222016-11-17 Jason Merrill <jason@redhat.com> 323 324 PR c++/78193 - inherited ctor regressions on sparc32. 325 * call.c (build_over_call): Don't set CALL_FROM_THUNK_P here. 326 (build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR. 327 (convert_like_real) [ck_rvalue]: Also pass non-addressable 328 types along directly. 329 3302016-11-17 Paolo Carlini <paolo.carlini@oracle.com> 331 332 PR c++/55080 333 * parser.c (cp_parser_non_integral_constant_expression): Issue a 334 pedwarn instead of an error for case NIC_FLOAT. 335 3362016-11-17 Jason Merrill <jason@redhat.com> 337 338 PR c++/78124 - list-initialization and inherited ctor 339 * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE. 340 341 PR c++/78369 - {} as default argument 342 * call.c (build_special_member_call): Handle CONSTRUCTOR. 343 344 PR c++/68377 345 * parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING. 346 3472016-11-16 Jason Merrill <jason@redhat.com> 348 349 PR c++/78373 350 * decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference. 351 * typeck2.c (store_init_value): Likewise. 352 353 * decl.c (store_decomp_type, lookup_decomp_type): New. 354 (cp_finish_decomp): Call store_decomp_type. 355 * semantics.c (finish_decltype_type): Call lookup_decomp_type. 356 * cp-tree.h: Declare lookup_decomp_type. 357 3582016-11-15 Jakub Jelinek <jakub@redhat.com> 359 360 * decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl, 361 set DECL_ASSEMBLER_NAME. 362 * parser.c (cp_parser_decomposition_declaration): Likewise 363 if returning error_mark_node. 364 * mangle.c (mangle_decomp): New function. 365 * cp-tree.h (mangle_decomp): New declaration. 366 3672016-11-15 Jason Merrill <jason@redhat.com> 368 369 PR c++/78358 370 * semantics.c (finish_decltype_type): Strip references for a tuple 371 decomposition. 372 * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables. 373 374 * decl2.c (decl_maybe_constant_var_p): References qualify. 375 * constexpr.c (non_const_var_error): Handle references. 376 * init.c (constant_value_1): Always check decl_constant_var_p. 377 * cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references. 378 * error.c (dump_decl_name): Split out from dump_decl. 379 3802016-11-14 Jason Merrill <jason@redhat.com> 381 382 * tree.c (bitfield_p): New. 383 * cp-tree.h: Declare it. 384 * typeck.c (cxx_sizeof_expr, cxx_alignof_expr) 385 (cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD. 386 * decl.c (cp_finish_decomp): Look through reference. Always 387 SET_DECL_DECOMPOSITION_P. 388 * semantics.c (finish_decltype_type): Adjust decomposition handling. 389 3902016-11-13 Jakub Jelinek <jakub@redhat.com> 391 Jason Merrill <jason@redhat.com> 392 393 Implement P0217R3 - C++17 structured bindings 394 * cp-tree.h (struct lang_decl_base): Add decomposition_p. 395 (DECL_DECOMPOSITION_P): New 396 (enum auto_deduction_context): Add adc_decomp_type. 397 (enum cp_declarator_kind): Add cdk_decomp. 398 * constexpr.c (cxx_eval_constant_expression): Look through 399 DECL_VALUE_EXPR. 400 (potential_constant_expression_1): Likewise. 401 * decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT. 402 (check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P. 403 (cp_finish_decl): Pass adc_decomp_type for decomposition. 404 (find_decomp_class_base, get_tuple_size, get_tuple_element_type) 405 (get_tuple_decomp_init, cp_finish_decomp): New. 406 (grokdeclarator): Handle decomposition. 407 * init.c (build_aggr_init): Handle decomposition array. 408 (build_vec_init): Handle initialization from { array }. 409 * name-lookup.c (add_function): Always wrap TEMPLATE_DECL in 410 OVERLOAD. 411 * parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp. 412 (function_declarator_p, strip_declarator_types) 413 (cp_parser_check_declarator_template_parameters): Likewise. 414 (cp_parser_range_for, cp_convert_range_for): Handle decomposition. 415 (cp_parser_simple_declaration): Parse decomposition. 416 (cp_parser_decomposition_declaration): New. 417 * pt.c (tsubst_decomp_names): New. 418 (subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition. 419 (do_auto_deduction): Handle adc_decomp_type. 420 * semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR. 421 * typeck.c (is_bitfield_expr_with_lowered_type): Likewise. 422 * tree.c (lvalue_kind): Likewise. 423 (cp_build_reference_type): Handle reference collapsing. 424 4252016-11-13 Jason Merrill <jason@redhat.com> 426 427 * call.c (build_new_method_call_1): Include template arguments in 428 error message. 429 (print_error_for_call_failure): Likewise. 430 (build_new_function_call): Pass them in. 431 * name-lookup.c (supplement_binding_1): Don't complain about a 432 conflict with an erroneous declaration. 433 * error.c (dump_decl): Fix printing of alias declaration. 434 * decl.c (make_typename_type): Call cxx_incomplete_type_error. 435 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. 436 * semantics.c (perform_koenig_lookup): Don't wrap an error in 437 TEMPLATE_ID_EXPR. 438 4392016-11-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> 440 441 PR c/35503 442 * parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict. 443 4442016-11-12 Jason Merrill <jason@redhat.com> 445 446 CWG 2233 447 * typeck.c (convert_arguments): Handle default arg followed by none. 448 449 * constexpr.c (potential_constant_expression_1): REALPART_EXPR and 450 IMAGPART_EXPR can be lvalues. 451 452 DR 374 453 PR c++/56480 454 * pt.c (check_specialization_namespace): Allow any enclosing 455 namespace. 456 (check_unqualified_spec_or_inst): New. 457 (check_explicit_specialization): Call it. 458 * parser.c (cp_parser_elaborated_type_specifier) 459 (cp_parser_class_head): Call it. 460 4612016-11-10 Jason Merrill <jason@redhat.com> 462 463 PR c++/77337 464 * pt.c (tsubst_friend_function): Don't set DECL_INITIAL. 465 (instantiate_decl): It's OK to defer a constexpr function. 466 * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check 467 DECL_LANG_SPECIFIC. 468 * decl2.c (decl_defined_p): Use it. No longer static. 469 * decl.c (redeclaration_error_message): Use decl_defined_p. 470 * constexpr.c (cxx_eval_call_expression): Set input_location around 471 call to instantiate_decl. 472 4732016-11-10 Jakub Jelinek <jakub@redhat.com> 474 475 * mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for 476 public or external symbols. 477 4782016-11-09 Jakub Jelinek <jakub@redhat.com> 479 480 PR c++/78283 481 * mangle.c (start_mangling): Reset G.need_cxx1z_warning. 482 4832016-11-09 Jason Merrill <jason@redhat.com> 484 485 * parser.c (cp_parser_simple_type_specifier): Allow placeholder 486 for template template parameter. 487 (cp_parser_type_id_1): Improve diagnostic. 488 * decl.c (grokdeclarator): Handle class deduction diagnostics here. 489 * pt.c (splice_late_return_type): Not here. 490 (tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template. 491 (do_class_deduction): Handle non-class templates. 492 493 Implement P0127R2, Declaring non-type parameters with auto. 494 * cp-tree.h (enum auto_deduction_context): Add adc_unify. 495 * decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type 496 parameter types. 497 * pt.c (do_auto_deduction): Add outer_targs parameter. 498 (convert_template_argument): Call do_auto_deduction. If adc_unify, 499 don't give up on dependent init. 500 (unify): Likewise. In C++17, walk into the type of a 501 TEMPLATE_PARM_INDEX. 502 (for_each_template_parm): Add any_fn parameter. 503 (struct pair_fn_data): Likewise. 504 (for_each_template_parm_r): Call it for any tree. In C++17, walk 505 into the type of a TEMPLATE_PARM_INDEX. 506 (zero_r, array_deduction_r, try_array_deduction): New. 507 (type_unification_real): Call try_array_deduction. 508 (get_partial_spec_bindings): Likewise. 509 5102016-11-07 Jason Merrill <jason@redhat.com> 511 512 Implement P0012R1, Make exception specifications part of the type 513 system. 514 * cp-tree.h (enum tsubst_flags): Add tf_fndecl_type. 515 (flag_noexcept_type, ce_type): New. 516 * call.c (build_conv): Add ck_fnptr. 517 (enum conversion_kind): Change ck_tsafe to ck_fnptr. 518 (convert_like_real): Likewise. 519 (standard_conversion): Likewise. Allow function pointer 520 conversions for pointers to member functions. 521 (reference_compatible_p): Allow function pointer conversions. 522 (direct_reference_binding): Likewise. 523 (reference_binding): Reference-compatible is no longer a subset of 524 reference-related. 525 (is_subseq): Also strip ck_lvalue after next_conversion. 526 * class.c (instantiate_type): Check fnptr_conv_p. 527 (resolve_address_of_overloaded_function): Likewise. 528 * cvt.c (can_convert_tx_safety): Now static. 529 (noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New. 530 * decl.c (flag_noexcept_type): Define. 531 (cxx_init_decl_processing): Set it. 532 (bad_specifiers): Check it. 533 (grokdeclarator) [cdk_function]: Add exception-spec to type here. 534 * lambda.c (maybe_add_lambda_conv_op): Add exception-spec to 535 returned pointer. 536 * mangle.c (struct globals): Add need_cxx1z_warning. 537 (mangle_decl): Check it. 538 (write_exception_spec): New. 539 (write_function_type): Call it. 540 (canonicalize_for_substitution): Handle exception spec. 541 (write_type): Likewise. 542 (write_encoding): Set processing_template_decl across mangling of 543 partially-instantiated type. 544 * pt.c (determine_specialization): Pass tf_fndecl_type. 545 (tsubst_decl, fn_type_unification): Likewise. 546 (tsubst): Strip tf_fndecl_type, pass it to 547 tsubst_exception_specification. 548 (convert_nontype_argument_function): Handle function pointer 549 conversion. 550 (convert_nontype_argument): Likewise. 551 (unify, for_each_template_parm_r): Walk into noexcept-specifier. 552 * rtti.c (ptr_initializer): Encode noexcept. 553 * tree.c (canonical_eh_spec): New. 554 (build_exception_variant): Use it. 555 * typeck.c (composite_pointer_type): Handle fnptr conversion. 556 (comp_except_specs): Compare canonical EH specs. 557 (structural_comptypes): Call it. 558 559 * call.c (standard_conversion): Reorganize pointer conversions. 560 * pt.c (convert_nontype_argument_function): Convert to ref here. 561 (convert_nontype_argument): Not here. 562 (convert_template_argument): Add original type to error message. 563 (RECUR_AND_CHECK_FAILURE): Remove trailing semicolon. 564 (unify): Compare function-qualifiers. 565 * typeck.c (same_type_ignoring_top_level_qualifiers_p): Use 566 cp_build_qualified_type rather than TYPE_MAIN_VARIANT. 567 568 * pt.c (push_tinst_level_loc): Add template instantiations to the 569 announce_function stream. 570 5712016-11-04 Paolo Carlini <paolo.carlini@oracle.com> 572 573 PR c++/67980 574 * pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr 575 to suppress unwanted warnings. 576 5772016-11-03 Jason Merrill <jason@redhat.com> 578 579 PR c++/78198 580 * call.c (convert_default_arg): Look through inheriting ctors. 581 5822016-11-03 Jakub Jelinek <jakub@redhat.com> 583 Alexandre Oliva <aoliva@redhat.com> 584 Jason Merrill <jason@redhat.com> 585 586 PR debug/28767 587 PR debug/56974 588 * tree.c (cp_check_qualified_type): Use check_base_type and 589 TYPE_QUALS comparison instead of check_qualified_type. 590 (cxx_type_hash_eq): Return false if type_memfn_rqual don't match. 591 * cp-objcp-common.c (cp_get_debug_type): New function. 592 (cp_decl_dwarf_attribute): Don't handle types here. 593 (cp_type_dwarf_attribute): New function. 594 * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute): 595 Declare. 596 (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE): 597 Define. 598 5992016-11-03 Jason Merrill <jason@redhat.com> 600 601 * tree.c (cp_check_qualified_type): Call check_base_type instead 602 of check_qualified_type. 603 (cxx_type_hash_eq): Check ref-qualifiers. 604 * typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL. 605 6062016-11-01 Jason Merrill <jason@redhat.com> 607 608 Implement P0136R1, Rewording inheriting constructors. 609 * call.c (enum rejection_reason_code): Add rr_inherited_ctor. 610 (inherited_ctor_rejection): New. 611 (add_function_candidate): Reject inherited ctors for copying. 612 (enforce_access): Use strip_inheriting_ctors. 613 (print_z_candidate): Likewise. Handle rr_inherited_ctor. 614 (convert_like_real): Avoid copying inheriting ctor parameters. 615 (build_over_call): Likewise. A base ctor inheriting from vbase 616 has no parms. Sorry about varargs. 617 (joust): A local constructor beats inherited with the same convs. 618 * class.c (add_method): Handle hiding inheriting ctors. 619 (one_inherited_ctor): Handle new semantics. 620 (add_implicitly_declared_members): Pass using_decl down. 621 (build_clone): A base ctor inheriting from vbase has no parms. 622 * cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base. 623 (SET_DECL_INHERITED_CTOR): Likewise. 624 (DECL_INHERITED_CTOR_BASE): Adjust. 625 * constexpr.c: Adjust. 626 * error.c (dump_function_decl): Decorate inheriting ctors. 627 * init.c (emit_mem_initializers): Suppress access control in 628 inheriting ctor. 629 * mangle.c (write_special_name_constructor): Handle new inheriting 630 ctor mangling. 631 * method.c (strip_inheriting_ctors, inherited_ctor_binfo) 632 (ctor_omit_inherited_parms, binfo_inherited_from): New. 633 (synthesized_method_walk): Use binfo_inherited_from. Suppress 634 access control in inheriting ctor. 635 (deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance. 636 (maybe_explain_implicit_delete): Explain ambigous ctor inheritance. 637 (add_one_base_init, do_build_copy_constructor): Adjust. 638 (locate_fn_flags, explain_implicit_non_constexpr): Adjust. 639 (implicitly_declare_fn): Adjust. 640 (get_inherited_ctor): Remove. 641 * name-lookup.c (do_class_using_decl): Check for indirect ctor 642 inheritance. 643 * optimize.c (cdtor_comdat_group): Adjust for new mangling. 644 (maybe_clone_body): Handle omitted parms in base clone. 645 (maybe_thunk_body): Don't thunk if base clone omits parms. 646 * pt.c (tsubst_decl): Adjust. 647 (instantiate_template_1): Suppress access control in inheriting 648 ctor. 649 (fn_type_unification): Do deduction with inherited ctor. 650 * tree.c (special_function_p): Adjust. 651 6522016-11-01 Jakub Jelinek <jakub@redhat.com> 653 654 * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline. 655 6562016-11-01 Jason Merrill <jason@redhat.com> 657 658 * class.c (declared_access): Split out from handle_using_decl. 659 6602016-10-31 Jakub Jelinek <jakub@redhat.com> 661 662 PR c++/78089 663 * parser.c (cp_parser_postfix_expression): Replace return statement in 664 the first switch with setting postfix_expression to the return 665 expression and break;. 666 667 PR c++/77886 668 * pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over 669 FALLTHROUGH_LABEL_P flag to the new LABEL_DECL. 670 (tsubst_expr) <case LABEL_EXPR>: Likewise. 671 6722016-09-11 Le-Chun Wu <lcwu@google.com> 673 Mark Wielaard <mjw@redhat.com> 674 675 * name-lookup.c (pushdecl_maybe_friend): When emitting a 676 shadowing warning, use the code corresponding to the 677 given -Wshadow= variant. 678 6792016-10-26 Jason Merrill <jason@redhat.com> 680 681 * class.c (add_method): Allow using-declarations to coexist. 682 6832016-10-25 Jason Merrill <jason@redhat.com> 684 685 * constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL. 686 (cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR 687 with CONSTRUCTOR_NO_IMPLICIT_ZERO. 688 (cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO. 689 6902016-10-25 Jakub Jelinek <jakub@redhat.com> 691 692 * parser.c (cp_parser_postfix_expression): Adding missing break;. 693 694 * cp-tree.h (finish_builtin_launder): Declare. 695 * parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER. 696 * semantics.c (finish_builtin_launder): New function. 697 * pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER. 698 * constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER. 699 (potential_constant_expression_1): Likewise. 700 7012016-10-24 Jakub Jelinek <jakub@redhat.com> 702 703 * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference 704 and DW_AT_rvalue_reference. 705 706 * cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x) 707 instead of TREE_CODE (x) == VAR_DECL. 708 * constraint.cc (get_concept_definition): Likewise. 709 (finish_shorthand_constraint): Likewise. 710 * init.c (warn_placement_new_too_small): Likewise. 711 * cp-gimplify.c (cp_genericize_r): Likewise. 712 7132016-10-21 Jason Merrill <jason@redhat.com> 714 715 PR c++/77656 716 * pt.c (convert_template_argument): Call convert_nontype_argument 717 on value-dependent but not type-dependent arguments. 718 (convert_nontype_argument): Handle value-dependent arguments. 719 (canonicalize_expr_argument): New. 720 (deducible_expression, unify): Skip CONVERT_EXPR. 721 * error.c (dump_template_argument): Likewise. 722 * mangle.c (write_expression): Likewise. 723 724 * ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl. 725 7262016-10-21 Jakub Jelinek <jakub@redhat.com> 727 728 * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle 729 DW_AT_const_expr. 730 7312016-10-17 Jakub Jelinek <jakub@redhat.com> 732 733 * cp-objcp-common.h (cp_function_decl_explicit_p, 734 cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove. 735 (cp_decl_dwarf_attribute): Declare. 736 (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P, 737 LANG_HOOKS_FUNCTION_DECL_DELETED_P, 738 LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove. 739 (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine. 740 * cp-objcp-common.c (cp_function_decl_explicit_p, 741 cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove. 742 (cp_decl_dwarf_attribute): New function. 743 7442016-10-15 Jason Merrill <jason@redhat.com> 745 746 PR c++/77945 747 * constexpr.c (maybe_simplify_trivial_copy): New. 748 (cxx_eval_store_expression): Call it. 749 * call.c (build_over_call): Use unsigned char for trivial copy. 750 7512016-10-14 Jason Merrill <jason@redhat.com> 752 753 Implement P0017R1, C++17 aggregates with bases. 754 * class.c (build_base_field_1): Split out from... 755 (build_base_field): ...here. In C++17 mode, build a field for 756 empty bases. 757 * decl.c (xref_basetypes): In C++17 aggregates can have bases. 758 (next_initializable_field): Allow base fields in C++17. 759 * typeck2.c (process_init_constructor_record): Likewise. 760 7612016-10-14 Jakub Jelinek <jakub@redhat.com> 762 763 DR 1511 - const volatile variables and ODR 764 * decl.c (grokvardecl): Change flags argument to type_quals, 765 add conceptp argument. Set TREE_PUBLIC for non-static volatile vars. 766 (grokdeclarator): Adjust grokvardecl caller. 767 7682016-10-13 Martin Sebor <msebor@redhat.com> 769 770 PR c++/71912 771 * class.c (struct flexmems_t): Add members. 772 (find_flexarrays): Add arguments. Correct handling of anonymous 773 structs. 774 (diagnose_flexarrays): Adjust to issue warnings in addition to errors. 775 (check_flexarrays): Add argument. 776 (diagnose_invalid_flexarray): New functions. 777 7782016-10-13 Jakub Jelinek <jakub@redhat.com> 779 Jason Merrill <jason@redhat.com> 780 781 Implement P0386R2 - C++17 inline variables 782 * cp-tree.h (struct lang_type): Shrink language field to 1 bit 783 from 4. Add var_declared_inline_p field. Mention 2 spare bits. 784 (DECL_VAR_DECLARED_INLINE_P): Define. 785 (SET_DECL_VAR_DECLARED_INLINE_P): Define. 786 (DECL_INLINE_VAR_P): Define. 787 (diagnose_inline_vars_for_namespace): Declare. 788 * decl.c (diagnose_inline_vars_for_namespace): New function. 789 (duplicate_decls): For static data members copy 790 DECL_DECLARED_CONSTEXPR_P. 791 (redeclaration_error_message): Handle C++17 redundant redeclaration 792 of constexpr static data member outside of class. 793 (maybe_commonize_var): Handle inline variables. 794 (check_initializer): Ignore inline variables for diagnostics. 795 Adjust diagnostic wording for C++17. 796 (make_rtl_for_nonlocal_decl): Allow in-class definition of 797 inline static data members. 798 (bad_specifiers): Don't diagnose inline on variables here. 799 (grokvardecl): Add inlinep argument, non-static const inline variables 800 are TREE_PUBLIC. 801 (check_static_variable_definition): Return early also for inline 802 variables. 803 (mark_inline_variable): New. 804 (grokdeclarator): Handle inline variables and inline static data 805 members. 806 * typeck2.c (store_init_value): Don't diagnose non-constant 807 initializers for non-constexpr inline static data members. 808 * decl2.c (vague_linkage_p): Return true for inline variables. 809 (c_parse_final_cleanups): In-class declaration of inline static 810 data members is a definition. Call diagnose_inline_vars_for_namespace 811 through walk_namespaces. 812 * pt.c (instantiate_decl): Set pattern_defined for in-class definitions 813 of inline static data members. 814 8152016-10-13 Jason Merrill <jason@redhat.com> 816 817 * decl.c (mark_inline_variable): New. 818 819>>>>>>> .r241142 8202016-10-13 Thomas Preud'homme <thomas.preudhomme@arm.com> 821 822 * decl2.c: Include memmodel.h. 823 * rtti.c: Likewise. 824 8252016-10-11 Jason Merrill <jason@redhat.com> 826 827 PR c++/77742 828 * init.c (build_new_1): Don't -Waligned-new about placement new. 829 (malloc_alignment): New. Consider MALLOC_ABI_ALIGNMENT. 830 * decl.c (cxx_init_decl_processing): New. 831 8322016-10-10 Jason Merrill <jason@redhat.com> 833 834 PR c++/77890 835 PR c++/77912 836 * pt.c (do_class_deduction): Set cp_unevaluated_operand. 837 (tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE. 838 8392016-10-08 Jason Merrill <jason@redhat.com> 840 841 * cp-gimplify.c (cp_fold): Add variable name. 842 843 * cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion 844 into COND_EXPR. 845 8462016-10-07 Jason Merrill <jason@redhat.com> 847 848 Further P0135 refinement. 849 * call.c (build_user_type_conversion_1): Consider conversions from 850 a single element in an initializer-list. 851 (build_temp): Undo early_elide_copy change. 852 (build_over_call): Check that we don't try to copy a TARGET_EXPR 853 in C++17 mode. Set user_conv_p here. 854 (convert_like_real): Not here. 855 (check_self_delegation): Split out from... 856 (build_special_member_call): ...here. Handle C++17 copy elision. 857 * cvt.c (early_elide_copy): Remove. 858 (ocp_convert): Undo early_elide_copy change. 859 * except.c (build_throw): Likewise. 860 * init.c (expand_default_init): Likewise. 861 * typeck.c (cp_build_modify_expr): Likewise. 862 8632016-10-07 Nathan Sidwell <nathan@acm.org> 864 865 PR c++/64433 866 DR1658, DR1611 867 * init.c (emit_mem_initializers): Don't construct vbases of 868 abstract classes. 869 (push_base_cleanups): Don't push vbase cleanups for abstract class 870 when in C++14 mode. 871 * method.c (synthethesized_method_walk): Don't walk vbases of 872 abstract classes when in C++14 mode. 873 8742016-10-07 Jakub Jelinek <jakub@redhat.com> 875 876 Implement LWG2296 helper intrinsic 877 * parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF. 878 * cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR. 879 * constexpr.c (potential_constant_expression_1): Likewise. 880 * error.c (dump_expr): Likewise. 881 * typeck.c (cp_build_addressof): New function. 882 * cp-tree.h (cp_build_addressof): Declare. 883 * cxx-pretty-print.h (pp_cxx_addressof_expression): Declare. 884 * cp-tree.def (ADDRESSOF_EXPR): New tree code. 885 * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle 886 ADDRESSOF_EXPR. Add __builtin_addressof and 887 __has_unique_object_representations into syntax in function comment. 888 (pp_cxx_addressof_expression): New function. 889 * pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR. 890 8912016-10-07 Bernd Edlinger <bernd.edlinger@hotmail.de> 892 893 PR c++/77700 894 * parser.c (cp_parser_base_specifier): Fix a warning. 895 8962016-10-07 Bernd Schmidt <bschmidt@redhat.com> 897 898 PR c++/69733 899 * decl.c (grokdeclarator): Try to find the correct location for an 900 ignored qualifier. 901 9022016-10-07 Martin Liska <mliska@suse.cz> 903 904 * lambda.c (maybe_add_lambda_conv_op): Set default value. 905 9062016-10-06 Jason Merrill <jason@redhat.com> 907 908 * call.c (build_temp, convert_like_real): Don't re-copy 909 TARGET_EXPR. Handle packed fields. 910 (build_x_va_arg): Wrap it in a TARGET_EXPR. 911 (build_over_call): Add sanity check. 912 * cvt.c (early_elide_copy): New. 913 (ocp_convert): Use it. 914 * except.c (build_throw): Use it. 915 * init.c (get_nsdmi): Put back the TARGET_EXPR. 916 (expand_default_init): Call early_elide_copy. 917 * typeck.c (cp_build_modify_expr): Call early_elide_copy. 918 9192016-10-06 Jakub Jelinek <jakub@redhat.com> 920 921 Implement P0258R2 - helper for C++17 922 std::has_unique_object_representations trait 923 * cp-tree.h (enum cp_trait_kind): Add 924 CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. 925 (struct lang_type_class): Add unique_obj_representations 926 and unique_obj_representations_set bitfields. 927 (CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS, 928 CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define. 929 (type_has_unique_obj_representations): Declare. 930 * parser.c (cp_parser_primary_expression): Handle 931 RID_HAS_UNIQUE_OBJ_REPRESENTATIONS. 932 (cp_parser_trait_expr): Likewise. Formatting fix. 933 * semantics.c (trait_expr_value, finish_trait_expr): Handle 934 CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. 935 * tree.c (type_has_unique_obj_representations): New function. 936 (record_has_unique_obj_representations): New function. 937 * cxx-pretty-print.c (pp_cxx_trait_expression): Handle 938 CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS. 939 9402016-10-05 Jason Merrill <jason@redhat.com> 941 942 Implement P0135R1, Guaranteed copy elision. 943 * cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17. 944 945 PR c++/54293 946 * call.c (reference_binding): Fix binding to member of temporary. 947 948 * call.c (extend_ref_init_temps): Fix TARGET_EXPR handling. 949 950 * parser.c (cp_parser_skip_to_end_of_statement): Add missing break. 951 952 * semantics.c (finish_compound_literal): Handle class placeholder. 953 9542016-10-05 Marek Polacek <polacek@redhat.com> 955 956 Implement P0305R1, Selection statements with initializer. 957 * cp-array-notation.c (create_an_loop): Call finish_init_stmt 958 instead of finish_for_init_stmt. 959 * cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt. 960 * decl.c (poplevel): Adjust a comment. 961 * init.c (build_vec_init): Call finish_init_stmt instead of 962 finish_for_init_stmt. 963 * name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment. 964 * name-lookup.h (enum scope_kind): Likewise. 965 * parser.c (cp_parser_statement): Update commentary. 966 (cp_parser_init_statement_p): New function. 967 (cp_parser_selection_statement): Parse the optional init-statement. 968 (cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt. 969 (cp_parser_c_for): Likewise. 970 (cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt. 971 (cp_parser_range_for_member_function): Update commentary. 972 (cp_parser_iteration_statement): 973 (cp_parser_for_init_statement): Rename to cp_parser_init_statement. 974 * pt.c (tsubst_omp_for_iterator): Update commentary. 975 (tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt. 976 * semantics.c (finish_for_init_stmt): Rename to finish_init_stmt. 977 Update commentary. 978 9792016-10-04 Jason Merrill <jason@redhat.com> 980 981 PR c++/77852 982 * pt.c (do_class_deduction): Handle list-initialization. 983 (do_auto_deduction): Call it sooner. 984 (build_deduction_guide): Use tsubst_arg_types. 985 (rewrite_template_parm): Don't copy_type. 986 987 PR c++/77775 988 * constexpr.c (cxx_eval_component_reference): Use name matching 989 for PMFs. 990 991 Implement P0091R2, Template argument deduction for class templates. 992 * parser.c (cp_parser_simple_type_specifier): Parse class placeholder. 993 Use the location of the beginning of the type-specifier. 994 (cp_parser_init_declarator): Parse deduction guide. 995 (cp_parser_diagnose_invalid_type_name): Mention class deduction. 996 (cp_parser_type_id_1): Don't accept class placeholder as template arg. 997 * cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New. 998 * decl.c (grokdeclarator): Check for uninitialized auto here. 999 (start_decl_1): Not here. 1000 (cp_finish_decl): Or here. Don't collapse a list when doing 1001 class deduction. 1002 (grokfndecl): Check deduction guide scope and body. 1003 * error.c (dump_decl, dump_function_decl, dump_function_name): 1004 Handle deduction guides. 1005 * pt.c (make_template_placeholder, do_class_deduction): New. 1006 (build_deduction_guide, rewrite_template_parm): New. 1007 (dguide_name, dguide_name_p, deduction_guide_p): New. 1008 (do_auto_deduction): Call do_class_deduction. 1009 (splice_late_return_type, is_auto): Handle class placeholders. 1010 (template_parms_level_to_args): Split from template_parms_to_args. 1011 (tsubst_template_parms_level): Split from tsubst_template_parms. 1012 * typeck2.c (build_functional_cast): Handle class placeholder. 1013 10142016-10-04 Martin Sebor <msebor@redhat.com> 1015 1016 PR c++/77804 1017 * init.c (warn_placement_new_too_small): Avoid assuming an array type 1018 has a constant size. 1019 10202016-10-04 Jakub Jelinek <jakub@redhat.com> 1021 1022 PR c++/77791 1023 * parser.c (cp_parser_lambda_declarator_opt): Only pedwarn 1024 for C++11 on decls in the param_list. Test cxx_dialect < cxx14 before 1025 the loop just once. 1026 1027 * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*, 1028 CPTI_LANG_NAME_JAVA and CPTI_JCLASS. 1029 (java_byte_type_node, java_short_type_node, java_int_type_node, 1030 java_long_type_node, java_float_type_node, java_double_type_node, 1031 java_char_type_node, java_boolean_type_node, lang_name_java, 1032 jclass_node): Remove. 1033 (enum languages): Remove lang_java. 1034 (TYPE_FOR_JAVA): Remove. 1035 (struct lang_type_class): Remove java_interface bit-field. 1036 (TYPE_JAVA_INTERFACE): Remove. 1037 (pragma_java_exceptions): Remove. 1038 (check_java_method, build_java_class_ref): Remove prototypes. 1039 * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA. 1040 * decl2.c (acceptable_java_type, check_java_method): Remove. 1041 (import_export_decl): Remove TYPE_FOR_JAVA handling. 1042 (build_java_method_aliases): Remove. 1043 (c_parse_final_cleanups): Don't call build_java_method_aliases. 1044 (possibly_inlined_p): Don't test pragma_java_exceptions. 1045 * init.c (build_new_1): Remove TYPE_FOR_JAVA handling. 1046 (build_java_class_ref): Remove. 1047 * pt.c (maybe_new_partial_specialization, lookup_template_class_1, 1048 instantiate_class_template_1): Don't copy TYPE_FOR_JAVA. 1049 * except.c (eh_type_info): Remove java type handling. 1050 (decl_is_java_type, choose_personality_routine): Remove. 1051 (initialize_handler_parm): Don't call choose_personality_routine. 1052 (expand_start_catch_block): Don't handle java types. 1053 (build_throw): Likewise. 1054 * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions. 1055 * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA. 1056 * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE. 1057 (java_iface_lookup_fn): Remove. 1058 (build_java_interface_fn_ref): Remove. 1059 * tree.c (cxx_attribute_table): Remove java_interface. 1060 (handle_java_interface_attribute): Remove. 1061 * lex.c (pragma_java_exceptions): Remove. 1062 (init_cp_pragma): Don't register GCC java_exceptions pragma. 1063 (handle_pragma_java_exceptions): Remove. 1064 (retrofit_lang_decl): Don't handle lang_name_java. 1065 * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA. 1066 * error.c (language_to_string): Don't handle lang_java. 1067 * decl.c (record_builtin_java_type): Remove. 1068 (initialize_predefined_identifiers): Remove Java. 1069 (cxx_init_decl_processing): Remove java_*_type_node. 1070 (cp_finish_decl): Don't handle TYPE_FOR_JAVA. 1071 (grokfndecl): Likewise. 1072 (check_special_function_return_type): Likewise. 1073 (grokdeclarator): Don't set TYPE_FOR_JAVA. 1074 (grokparms): Don't handle TYPE_FOR_JAVA. 1075 (xref_basetypes): Likewise. 1076 (check_function_type): Likewise. 1077 (finish_constructor_body): Likewise. 1078 * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA 1079 and java_*_type_node. 1080 (write_bare_function_type): Don't handle TYPE_FOR_JAVA. 1081 (write_java_integer_type_codes): Remove. 1082 * class.c (add_method): Don't handle TYPE_FOR_JAVA. 1083 (add_implicitly_declared_members, determine_key_method, 1084 finish_struct_1): Likewise. 1085 (push_lang_context): Don't handle lang_name_java. 1086 10872016-10-03 Marek Polacek <polacek@redhat.com> 1088 1089 Core 903 1090 * typeck.c (cp_build_binary_op): Pass original operands to 1091 null_ptr_cst_p, not those after the default conversions. 1092 10932016-10-03 Bernd Edlinger <bernd.edlinger@hotmail.de> 1094 1095 * parser.c (cp_parser_condition): Fix a warning. 1096 10972016-09-29 Jakub Jelinek <jakub@redhat.com> 1098 1099 Implement P0001R1 - C++17 removal of register storage class specifier 1100 * decl.c (cp_finish_decl): Diagnose register storage class 1101 on vars except when used in GNU global or local register variable 1102 extension. 1103 (grokdeclarator): Diagnose register storage class on parameters. 1104 * except.c (expand_start_catch_block): Set DECL_REGISTER only 1105 after cp_finish_decl call. 1106 11072016-09-29 Marek Polacek <polacek@redhat.com> 1108 1109 * rtti.c (involves_incomplete_p): Add fall through comment. 1110 11112016-09-28 Jakub Jelinek <jakub@redhat.com> 1112 1113 PR c++/77467 1114 * constexpr.c (enum constexpr_switch_state): New. 1115 (struct constexpr_ctx): Add css_state field. 1116 (label_matches): Add CTX and STMT arguments, remove I and 1117 DEFAULT_LABEL. For CASE_LABEL_EXPR assert ctx->css_state != NULL, 1118 handle default labels according to css_state. 1119 (cxx_eval_statement_list): Remove statement skipping, label_matches 1120 and default_label handling code. 1121 (cxx_eval_loop_expr): Exit after first iteration even if 1122 switches (jump_target). 1123 (cxx_eval_switch_expr): Set up css_state field in ctx, if default 1124 label has been seen in the body, but no cases matched, evaluate 1125 the body second time. 1126 (cxx_eval_constant_expression): Handle stmt skipping and label_matches 1127 here. Handle PREDICT_EXPR. For MODIFY_EXPR or INIT_EXPR, assert 1128 statement is not skipped. For COND_EXPR during skipping, don't 1129 evaluate condition, just the then block and if still skipping at the 1130 end also the else block. 1131 (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer. 1132 (is_sub_constant_expr): Likewise. 1133 11342016-09-27 Jakub Jelinek <jakub@redhat.com> 1135 1136 Implement P0018R3, C++17 lambda capture of *this by value as [=,*this] 1137 * parser.c (cp_parser_lambda_introducer): Formatting fix. Pass 1138 true instead of false as by_reference_p to add_capture for 'this'. 1139 Parse '*this' simple-capture. 1140 * lambda.c (build_capture_proxy): Handle '*this' capture by value. 1141 (add_capture): Adjust function comment. For id == this_identifier, 1142 treat by_reference_p as capturing '*this' by reference, i.e. 'this' 1143 by value, and !by_reference_p as capturing '*this' by value. 1144 (add_default_capture): For implicit 'this' capture, always pass 1145 by_reference_p true rather than false. 1146 1147 PR c++/77722 1148 * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also 1149 functions that have just a STATEMENT_LIST instead of BIND_EXPR, or 1150 BIND_EXPR with some statement rather than STATEMENT_LIST as body. 1151 11522016-09-26 Nathan Sidwell <nathan@acm.org> 1153 1154 * init.c (expand_default_init): Fix } indentation. 1155 * method.c (process_subob_fn): Simplify control structure to 1156 remove gotos. 1157 (implicitly_declare_fn): Remove duplicated lambda ctor check. 1158 11592016-09-26 Marek Polacek <polacek@redhat.com> 1160 1161 PR c/7652 1162 * parser.c (cp_parser_storage_class_specifier_opt): Add 1163 gcc_fallthrough. 1164 (cp_parser_skip_to_end_of_template_parameter_list): Likewise. 1165 (cp_parser_cache_defarg): Likewise. 1166 (cp_parser_omp_for_cond): Likewise. 1167 * semantics.c (finish_decltype_type): Likewise. 1168 * typeck.c (structural_comptypes): Likewise. 1169 (cp_build_binary_op): Likewise. 1170 (cp_build_modify_expr): Likewise. 1171 11722016-09-26 Marek Polacek <polacek@redhat.com> 1173 1174 PR c/7652 1175 * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH. 1176 (potential_constant_expression_1): Likewise. 1177 * constraint.cc (function_concept_check_p): Check fn for null. 1178 * parser.c (cp_parser_expression_statement): Handle attribute 1179 fallthrough. 1180 (cp_parser_statement): Likewise. 1181 (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on 1182 labels. 1183 (cp_parser_std_attribute): Handle fallthrough attribute. 1184 (cp_parser_check_std_attribute): Add %< %> quotes. 1185 * pt.c (tsubst_copy_and_build): Handle internal functions. 1186 (instantiation_dependent_scope_ref_p): Return if the expression is 1187 null. 1188 11892016-09-24 Marek Polacek <polacek@redhat.com> 1190 1191 PR c/77490 1192 * typeck.c (cp_build_unary_op): Warn about bit not on expressions that 1193 have boolean value. 1194 11952016-09-23 Jakub Jelinek <jakub@redhat.com> 1196 1197 Implement P0138R2, C++17 construction rules for enum class values 1198 * cp-tree.h (is_direct_enum_init): Declare. 1199 * decl.c (is_direct_enum_init): New function. 1200 (reshape_init): Use it. 1201 * typeck.c (convert_for_assignment): Likewise. 1202 1203 * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to 1204 make check-g++. 1205 1206 * constexpr.c (call_stack): Remove unnecessary 1207 = vNULL initialization of file scope vec. 1208 1209 * name-lookup.c (store_bindings, store_class_bindings): Don't 1210 initialize static local bindings_need_stored to vNULL. 1211 1212 * typeck2.c (process_init_constructor_record): Use 1213 CONSTRUCTOR_NELTS (...) instead of 1214 vec_safe_length (CONSTRUCTOR_ELTS (...)). 1215 * decl.c (reshape_init_r): Likewise. 1216 (check_initializer): Likewise. 1217 12182016-09-22 Paolo Carlini <paolo.carlini@oracle.com> 1219 1220 PR c++/71979 1221 * class.c (build_base_path): Allow for lookup_base returning 1222 NULL_TREE. 1223 12242016-09-21 Jason Merrill <jason@redhat.com> 1225 1226 Core 903 1227 * call.c (null_ptr_cst_p): Check char_type_p. 1228 12292016-09-21 Jakub Jelinek <jakub@redhat.com> 1230 1231 PR c++/77651 1232 * init.c (build_new_1): Don't suggest to use -faligned-new if 1233 aligned_new_threshold is non-zero. 1234 (type_has_new_extended_alignment): Change aligned_new_threshhold 1235 to aligned_new_threshold. 1236 * call.c (second_parm_is_size_t, aligned_allocation_fn_p, 1237 aligned_deallocation_fn_p, build_op_delete_call): Likewise. 1238 * decl.c (cxx_init_decl_processing): Likewise. 1239 12402016-09-20 Jakub Jelinek <jakub@redhat.com> 1241 1242 PR c++/77626 1243 * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on 1244 FIELD_DECLs with error_mark_node type. Remove useless break; after 1245 return. 1246 1247 PR c++/77638 1248 * parser.c (cp_parser_template_declaration_after_parameter): For 2 1249 argument operator"" template set ok to false for 1250 parm == error_mark_node. 1251 1252 PR c++/77637 1253 * parser.c (cp_parser_std_attribute_list): Reject ... without 1254 preceding attribute. 1255 12562016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de> 1257 1258 PR c++/77434 1259 * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here. 1260 12612016-09-16 Patrick Palka <ppalka@gcc.gnu.org> 1262 1263 PR c++/77639 1264 * parser.c (cp_parser_class_head): When 1265 processing_template_parmlist, don't assume that the 1266 class-head may start an explicit specialization. 1267 12682016-09-16 Jakub Jelinek <jakub@redhat.com> 1269 1270 PR c++/77482 1271 * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P 1272 if DECL_LANG_SPECIFIC is non-NULL. Fix up formatting. 1273 1274 PR c++/77338 1275 * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only 1276 call is_really_empty_class on complete types. 1277 1278 PR c++/77375 1279 * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any 1280 TYPE_HAS_MUTABLE_P for any bases. 1281 12822016-09-16 Jason Merrill <jason@redhat.com> 1283 1284 * class.c (check_bases, set_one_vmethod_tm_attributes): Use 1285 least_bit_hwi. 1286 * decl.c (cxx_init_decl_processing): Use pow2p_hwi. 1287 * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi. 1288 12892016-09-14 Jakub Jelinek <jakub@redhat.com> 1290 1291 PR c++/77549 1292 * name-lookup.c (consider_binding_level): Look through TREE_LIST 1293 and OVERLOAD. 1294 12952016-09-14 Marek Polacek <polacek@redhat.com> 1296 1297 * typeck.c (cp_build_unary_op): Diagnose incrementing boolean 1298 expressions. Tweak an error message. 1299 13002016-09-14 Marek Polacek <polacek@redhat.com> 1301 1302 * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to 1303 bool. 1304 * decl2.c (one_static_initialization_or_destruction): Use true instead 1305 of 1. 1306 * init.c (build_vec_init): Use false instead of 0. 1307 * pt.c (tsubst_copy_and_build): Likewise. 1308 * semantics.c (simplify_loop_decl_cond): Likewise. 1309 * typeck.c (rationalize_conditional_expr): Likewise. 1310 (cp_build_binary_op): Use true instead of 1. 1311 (cp_build_unary_op): Change nonconvert parameter type to bool. Use true 1312 instead of 1. 1313 (build_unary_op): Change nonconvert parameter type to bool. 1314 (unary_complex_lvalue): Use false instead of 0. 1315 13162016-09-13 Jakub Jelinek <jakub@redhat.com> 1317 1318 Implement P0028R4, C++17 using attribute namespaces without repetition 1319 * parser.c (cp_parser_std_attribute): Add ATTR_NS argument. Diagnose 1320 non-NULL ATTR_NS with scoped attribute token. Handle non-NULL 1321 ATTR_NS with non-scoped attribute tokens. Allow named ops in 1322 identifier after ::. 1323 (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down 1324 to cp_parser_std_attribute calls. 1325 (cp_parser_std_attribute_spec): Parse optional C++17 1326 attribute-using-prefix, adjust grammar in function comment. 1327 1328 PR c++/77553 1329 * constexpr.c (cxx_fold_pointer_plus_expression): New function. 1330 (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR. 1331 (cxx_eval_pointer_plus_expression): Remove. 1332 (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't 1333 call cxx_eval_pointer_plus_expression. 1334 13352016-09-13 David Malcolm <dmalcolm@redhat.com> 1336 1337 * parser.c (cp_parser_class_specifier_1): Update for renaming of 1338 add_fixit_insert to add_fixit_insert_before. 1339 (cp_parser_class_head): Likewise. 1340 13412016-09-12 Bernd Edlinger <bernd.edlinger@hotmail.de> 1342 1343 PR c++/77496 1344 * call.c (build_conditional_expr_1): Call warn_for_omitted_condop. 1345 * class.c (instantiate_type): Look through the SAVE_EXPR. 1346 13472016-09-09 Jason Merrill <jason@redhat.com> 1348 1349 Implement P0035R4, C++17 new of over-aligned types. 1350 * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE. 1351 (align_type_node): New macro. 1352 * call.c (build_operator_new_call): Handle C++17 aligned new. 1353 (second_parm_is_size_t, build_op_delete_call): Likewise. 1354 (non_placement_deallocation_fn_p): Likewise. Rename to 1355 usual_deallocation_fn_p. 1356 (aligned_allocation_fn_p, aligned_deallocation_fn_p): New. 1357 * decl.c (cxx_init_decl_processing): Add aligned new support. 1358 * init.c (type_has_new_extended_alignment): New. 1359 (build_new_1): Handle aligned new. 1360 * tree.c (vec_copy_and_insert): New. 1361 13622016-09-02 Jakub Jelinek <jakub@redhat.com> 1363 1364 PR sanitizer/77396 1365 * decl2.c (do_static_initialization_or_destruction): Only 1366 call asan_dynamic_init_call if INITP is true. 1367 13682016-09-01 Martin Sebor <msebor@redhat.com> 1369 1370 * mangle.c: Increase buffer size to guarantee it fits the output 1371 of the formatted function regardless of its arguments. 1372 13732016-09-01 Marek Polacek <polacek@redhat.com> 1374 1375 PR c/7652 1376 * error.c (dump_type): Fix falls through comment. 1377 (dump_decl): Likewise. 1378 (dump_expr): Likewise. 1379 13802016-08-30 David Malcolm <dmalcolm@redhat.com> 1381 1382 * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it 1383 hint to ">>" within nested template argument list error. 1384 13852016-08-30 David Malcolm <dmalcolm@redhat.com> 1386 1387 * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace 1388 rather than add_fixit_misspelled_id. 1389 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. 1390 13912016-08-29 Jason Merrill <jason@redhat.com> 1392 1393 PR c++/77379 1394 * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks. 1395 (mangle_thunk): Add thunk parameter. 1396 * method.c (finish_thunk): Pass it. 1397 * cp-tree.h: Declare it. 1398 13992016-08-15 Jason Merrill <jason@redhat.com> 1400 1401 Avoid calling a trivial default constructor. 1402 * class.c (default_ctor_p): New. 1403 (in_class_defaulted_default_constructor): Use it. 1404 (type_has_non_user_provided_default_constructor): Use it. 1405 * call.c (build_over_call): Handle trivial default constructor. 1406 * cp-tree.h: Declare default_ctor_p. 1407 1408 PR c++/57728 1409 * pt.c (do_type_instantiation): Don't mess with non-user-provided 1410 member functions. 1411 14122016-08-25 Marek Polacek <polacek@redhat.com> 1413 1414 * parser.c (cp_parser_binary_expression): Pass LHS to 1415 warn_logical_not_parentheses. 1416 14172016-08-18 Marek Polacek <polacek@redhat.com> 1418 1419 PR c/7652 1420 * call.c (add_builtin_candidate): Add gcc_fallthrough. 1421 * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise. 1422 * parser.c (cp_parser_skip_to_end_of_statement): Likewise. 1423 (cp_parser_cache_defarg): Likewise. 1424 14252016-08-12 Marek Polacek <polacek@redhat.com> 1426 1427 PR c/7652 1428 * call.c (add_builtin_candidate): Add FALLTHRU. 1429 (build_integral_nontype_arg_conv): Adjust fall through comment. 1430 (build_new_op_1): Add FALLTHRU. 1431 (convert_like_real): Adjust fall through comment. 1432 * class.c (fixed_type_or_null): Likewise. 1433 * constexpr.c (cxx_eval_constant_expression): Likewise. 1434 (potential_constant_expression_1): Likewise. Add FALLTHRU. 1435 * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment. 1436 (cp_fold): Add FALLTHRU. 1437 * cvt.c (build_expr_type_conversion): Adjust fall through comment. 1438 * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU. 1439 (pp_cxx_qualified_id): Likewise. 1440 (cxx_pretty_printer::constant): Adjust fall through comment. 1441 (cxx_pretty_printer::primary_expression): Add FALLTHRU. 1442 (pp_cxx_pm_expression): Adjust fall through comment. 1443 (cxx_pretty_printer::expression): Add FALLTHRU. 1444 (cxx_pretty_printer::declaration_specifiers): Reformat code. 1445 (pp_cxx_type_specifier_seq): Adjust fall through comment. 1446 (pp_cxx_ptr_operator): Likewise. Add FALLTHRU. 1447 * error.c (dump_type): Adjust fall through comment. 1448 (dump_decl): Likewise. 1449 * mangle.c (write_type): Likewise. 1450 * method.c (synthesized_method_walk): Add FALLTHRU. 1451 * name-lookup.c (arg_assoc_type): Likewise. 1452 * parser.c (cp_lexer_print_token): Adjust fall through comment. 1453 (cp_parser_primary_expression): Add FALLTHRU. 1454 (cp_parser_operator): Likewise. 1455 * pt.c (find_parameter_packs_r): Likewise. 1456 (tsubst_aggr_type): Adjust fall through comment. 1457 * semantics.c (finish_omp_clauses): Add FALLTHRU. 1458 * tree.c (lvalue_kind): Likewise. 1459 14602016-08-12 Alexandre Oliva <aoliva@redhat.com> 1461 1462 PR debug/63240 1463 * cp-objcp-common.c (cp_function_decl_defaulted): New. 1464 (cp_function_decl_explicit_p): Const_tree-ify. 1465 (cp_function_decl_deleted_p): Likewise. 1466 * cp-objcp-common.h (cp_function_decl_defaulted): Declare. 1467 (cp_function_decl_explicit_p): Const_tree-ify. 1468 (cp_function_decl_deleted_p): Likewise. 1469 (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine. 1470 14712016-08-11 Jakub Jelinek <jakub@redhat.com> 1472 1473 PR c++/72868 1474 * constexpr.c (label_matches): Handle case range expressions. 1475 14762016-08-11 Jason Merrill <jason@redhat.com> 1477 1478 PR c++/73456 1479 * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION. 1480 14812016-08-10 Jason Merrill <jason@redhat.com> 1482 1483 Implement C++17 constexpr if. 1484 * cp-tree.h (IF_STMT_CONSTEXPR_P): New. 1485 * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it. 1486 * parser.h (struct cp_parser): Add in_discarded_stmt field. 1487 * parser.c (cp_parser_selection_statement): Handle 'if constexpr'. 1488 (cp_parser_jump_statement): Avoid deducing from a discarded return. 1489 * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if. 1490 * semantics.c (begin_if_stmt): Set the binding level this_entity. 1491 (finish_if_stmt_cond): Require the condition of a 1492 constexpr if to be constant. 1493 * decl.c (level_for_constexpr_if): New. 1494 (named_label_entry): Add in_constexpr_if field. 1495 (poplevel_named_label_1): Set it. 1496 (check_goto): Check it. 1497 (check_previous_goto_1): Check level_for_constexpr_if. 1498 14992016-08-09 Jason Merrill <jason@redhat.com> 1500 1501 PR c++/68703 1502 * decl2.c (any_dependent_type_attributes_p): New. 1503 * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it. 1504 * semantics.c (finish_id_expression): Check it. 1505 * typeck.c (finish_class_member_access_expr): Check it. 1506 1507 PR c++/71712 1508 * class.c (check_abi_tags): Don't duplicate tags for conversion ops. 1509 1510 Adjust mangling of ABI tags on class template member functions. 1511 * class.c (missing_abi_tags): New. 1512 (check_abi_tags): Don't check template. Add just_checking mode. 1513 * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New. 1514 (sorted_abi_tags): Split out from write_abi_tags. 1515 (struct releasing_vec): New. 1516 (write_unqualified_name): Only look for the primary 1517 template for types. Implement backward compatibility. 1518 1519 PR c++/72849 1520 * constexpr.c (cxx_eval_constant_expression): Check 1521 COMPLETE_TYPE_P before calling is_really_empty_class. 1522 * class.c (is_really_empty_class): Don't call complete_type. 1523 1524 PR c++/56701 1525 * typeck.c (cp_build_addr_expr_1): Remove special *this handling. 1526 15272016-08-09 Jakub Jelinek <jakub@redhat.com> 1528 1529 PR c++/72809 1530 * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for 1531 builtin aggregate types without TYPE_BINFO. 1532 15332016-08-08 Jason Merrill <jason@redhat.com> 1534 1535 Implement C++17 constexpr lambda. 1536 * class.c (finalize_literal_type_property): Handle lambdas. 1537 * constexpr.c (is_valid_constexpr_fn): Likewise. No longer static. 1538 (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle 1539 lambdas. 1540 (cxx_eval_constant_expression): Handle capture proxy. 1541 (var_in_constexpr_fn): Don't check for C++14. 1542 (var_in_maybe_constexpr_fn): New. 1543 (potential_constant_expression_1): Use it. Check DECL_EXPR for 1544 declarations not allowed in constexpr function. Handle 1545 STATIC_ASSERT, RANGE_FOR_STMT. 1546 * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn. 1547 (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members. 1548 * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P. 1549 (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location. 1550 (lambda_static_thunk_p): New. 1551 * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR. 1552 (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator. 1553 (cp_parser_decl_specifier_seq): Handle it. 1554 (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq. 1555 * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P. 1556 (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P. 1557 * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS. 1558 (dump_expr) [FUNCTION_DECL]: Pass it. 1559 15602016-08-08 Jason Merrill <jason@redhat.com> 1561 1562 PR c++/67131 1563 * class.c (is_really_empty_class): Call complete_type. 1564 * constexpr.c (cxx_eval_constant_expression): Check 1565 is_really_empty_class. 1566 (potential_constant_expression_1): Likewise. Check for error type. 1567 15682016-08-08 Jakub Jelinek <jakub@redhat.com> 1569 1570 PR c++/58706 1571 * parser.c: Include tree-iterator.h. 1572 (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init 1573 to FOR_BLOCK. 1574 (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK 1575 entries. 1576 15772016-08-06 Jonathan Wakely <jwakely@redhat.com> 1578 1579 * call.c (convert_like_real): Harmonize diagnostics for invalid 1580 reference binding. 1581 15822016-08-05 Martin Sebor <msebor@redhat.com> 1583 1584 * constexpr.c (cxx_eval_store_expression): Remove hyphen from 1585 the spelling of "constant-expression" in diagnostic messages 1586 for consistency. 1587 (cxx_eval_constant_expression): Same. 1588 (cxx_eval_outermost_constant_expr): Same. 1589 (potential_constant_expression_1): Same. 1590 15912016-08-05 Nathan Sidwell <nathan@acm.org> 1592 1593 PR c++/68724 1594 * pt.c (unify): TRAIT_EXPR is an expr. 1595 15962016-08-04 Paolo Carlini <paolo.carlini@oracle.com> 1597 1598 PR c++/72800 1599 * lambda.c (add_capture): Check lambda_capture_field_type return 1600 value for error_mark_node. 1601 16022016-08-04 Patrick Palka <ppalka@gcc.gnu.org> 1603 1604 PR c++/72759 1605 * pt.c (tsubst_qualified_id): Return error_mark_node if 1606 template_args is error_mark_node. 1607 16082016-08-04 Jason Merrill <jason@redhat.com> 1609 1610 PR c++/72415 1611 * pt.c (tsubst_pack_expansion): Pull a single pack expansion out 1612 of the TREE_VEC. 1613 1614 * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P. 1615 (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS. 1616 * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c, 1617 name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust. 1618 1619 PR c++/72796 1620 * typeck.c (finish_class_member_access_expr): Avoid stripping 1621 SCOPE_REF to dependent base. 1622 16232016-08-04 Thomas Schwinge <thomas@codesourcery.com> 1624 1625 * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics. 1626 (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics. 1627 (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine): 1628 Simplify code, and improve diagnostics. 1629 (cp_parser_oacc_routine): Likewise. Move pragma context 1630 checking... 1631 (cp_parser_pragma): ... here. 1632 1633 * parser.h (struct cp_omp_declare_simd_data): New. 1634 (struct cp_parser): Use it for oacc_routine member. 1635 * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine) 1636 (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine): 1637 Use it. Simplify code. 1638 (cp_parser_new): Initialize all members pointing to special 1639 parsing data structures. 1640 (cp_parser_cilk_simd_fn_vector_attrs): Initialize 1641 parser->cilk_simd_fn_info->clauses. 1642 (cp_parser_omp_declare_simd): Initialize 1643 parser->omp_declare_simd->clauses. 1644 (cp_parser_late_parsing_omp_declare_simd): Simplify code. 1645 16462016-08-04 Marek Polacek <polacek@redhat.com> 1647 1648 PR c++/70229 1649 * constexpr.c (check_constexpr_ctor_body_1): Allow typedef 1650 declarations. 1651 16522016-08-01 Jason Merrill <jason@redhat.com> 1653 1654 * mangle.c (mangle_decl): Warn about mangled name change even if 1655 DECL_REALLY_EXTERN. 1656 1657 * mangle.c (get_abi_tags): New. 1658 (find_substitution, write_unqualified_name, write_abi_tags) 1659 (maybe_check_abi_tags): Use it. 1660 1661 * mangle.c (mangle_decl): Fix mangled name change warning. 1662 1663 PR c++/72766 1664 * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy 1665 of nelts. 1666 * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in 1667 C++11 and up. 1668 16692016-07-30 Martin Sebor <msebor@redhat.com> 1670 1671 PR c++/60760 1672 PR c++/71091 1673 * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions 1674 involving null pointers. 1675 (cxx_eval_component_reference): Reject null pointer dereferences. 1676 (cxx_eval_indirect_ref): Reject indirecting through null pointers. 1677 (cxx_eval_constant_expression): Reject invalid expressions involving 1678 null pointers. 1679 16802016-07-29 Marek Polacek <polacek@redhat.com> 1681 1682 PR c/71926 1683 * semantics.c (maybe_convert_cond): Use the location of COND for the 1684 parentheses warning. 1685 16862016-07-29 Jason Merrill <jason@redhat.com> 1687 1688 * decl.c (build_enumerator): Tweak diagnostic. 1689 1690 PR c++/72457 1691 * init.c (expand_aggr_init_1): Only handle value-init of bases. 1692 * constexpr.c (build_data_member_initialization): Handle multiple 1693 initializers for the same field. 1694 16952016-07-28 Paolo Carlini <paolo.carlini@oracle.com> 1696 1697 PR c++/71665 1698 * decl.c (build_enumerator): Check the type of the enumerator before 1699 calling cxx_constant_value. 1700 17012016-07-27 Jason Merrill <jason@redhat.com> 1702 1703 PR c++/71747 1704 * pt.c (get_partial_spec_bindings): Replace tparms and spec_args 1705 parameters with spec_tmpl. Call push_tinst_level. 1706 (most_specialized_partial_spec): Adjust. 1707 (more_specialized_partial_spec): Adjust. 1708 17092016-07-25 Jason Merrill <jason@redhat.com> 1710 1711 PR c++/65970 1712 * cp-gimplify.c (genericize_cp_loop): Revert location change. 1713 1714 PR c++/71837 1715 * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST. 1716 (build_lambda_object): Call build_x_compound_expr_from_list. 1717 * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise. 1718 1719 PR c++/71833 1720 PR c++/54440 1721 * pt.c (coerce_template_parameter_pack): Fix logic for 1722 pack index. 1723 1724 PR c++/65970 1725 * constexpr.c (cxx_eval_loop_expr): Count iterations. 1726 * cp-gimplify.c (genericize_cp_loop): Use start_locus even for 1727 infinite loops. 1728 1729 PR c++/71972 1730 * constexpr.c (cxx_eval_array_reference): Handle looking for the 1731 value of an element we're currently modifying. 1732 17332016-07-24 Jason Merrill <jason@redhat.com> 1734 1735 PR c++/71515 1736 * pt.c (resolve_typename_type): Try to avoid calling 1737 currently_open_class. 1738 17392016-07-23 Jason Merrill <jason@redhat.com> 1740 1741 PR c++/66617 1742 * call.c (add_list_candidates): Handle VTT parm. 1743 (build_new_method_call_1): Likewise. 1744 1745 PR c++/55922 1746 PR c++/63151 1747 * init.c (expand_aggr_init_1): Handle list-initialization from {}. 1748 1749 PR c++/70709 1750 * class.c (walk_subobject_offsets): Handle 0-length array. 1751 1752 PR c++/70778 1753 * pt.c (tsubst): Also substitute into the template of a 1754 BOUND_TEMPLATE_TEMPLATE_PARM. 1755 1756 PR c++/71738 1757 * pt.c (lookup_template_class_1): Handle getting template from tsubst. 1758 1759 PR c++/71350 1760 * decl.c (reshape_init_r): Check complain for missing braces warning. 1761 17622016-07-22 Jason Merrill <jason@redhat.com> 1763 1764 PR c++/71576 1765 * call.c (convert_like_real): Use lvalue_kind. 1766 1767 PR c++/71748 1768 PR c++/52746 1769 * pt.c (tsubst_baselink): Call 1770 adjust_result_of_qualified_name_lookup for unqualified 1771 destructors. 1772 17732016-07-21 Jason Merrill <jason@redhat.com> 1774 1775 PR c++/69223 1776 * semantics.c (apply_deduced_return_type): Call 1777 complete_type_or_else before building the new RESULT_DECL. 1778 1779 PR c++/71274 1780 * decl2.c (maybe_instantiate_decl): Split out from mark_used. 1781 (decl_constant_var_p): Use it instead. 1782 1783 PR c++/71630 1784 * pt.c (instantiate_decl): Fix pattern_defined for namespace scope 1785 variable templates. 1786 1787 PR c++/71913 1788 * call.c (unsafe_copy_elision_p): It's OK to elide when 1789 initializing an unknown object. 1790 1791 * call.c (build_over_call): Check unsafe_copy_elision_p even for 1792 trivial constructors. 1793 * method.c (do_build_copy_constructor): Don't copy tail padding 1794 even in a trivial constructor. 1795 17962016-07-21 Jakub Jelinek <jakub@redhat.com> 1797 1798 PR c++/71728 1799 * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>: 1800 Replace assert with test, return false if the goto isn't break 1801 or continue. Formatting fix. 1802 18032016-07-21 Richard Biener <rguenther@suse.de> 1804 1805 * vtable-class-hierarchy.c (vtv_generate_init_routine): Set 1806 DECL_IGNORED_P. 1807 18082016-07-21 Jakub Jelinek <jakub@redhat.com> 1809 1810 PR c++/71941 1811 * cp-gimplify.c (cp_genericize): For nested cp_genericize calls 1812 save/restore bc_label array. 1813 18142016-07-21 Jason Merrill <jason@redhat.com> 1815 1816 PR c++/70781 1817 * parser.c (cp_parser_lambda_expression): Unset OK if there was an 1818 error parsing the lambda-declarator. 1819 1820 PR c++/71896 1821 * constexpr.c (cxx_eval_binary_expression): Handle comparison 1822 between lowered and unlowered PTRMEM_CST. 1823 1824 PR c++/65168 1825 * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr. 1826 Don't set c_inhibit_evaluation_warnings. 1827 1828 PR c++/71121 1829 * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value. 1830 18312016-07-21 Andrew Sutton <andrew.n.sutton@gmail.com> 1832 Jason Merrill <jason@redhat.com> 1833 1834 Improving concepts performance and diagnostics. 1835 PR c++/67565 1836 PR c++/67579 1837 PR c++/71843 1838 * cp-tree.def (CHECK_CONSTR): New. 1839 * cp-tree.h (CHECK_CONSTR_CONCEPT): New. 1840 (CHECK_CONSTR_ARGS): New. 1841 * constraint.cc (make_predicate_constraint): Remove in favor of 1842 normalize_expression. 1843 (resolve_constraint_check): Actually return error_mark_node when 1844 resolution fails. 1845 (resolve_variable_concept_check): Perform coercion as if processing 1846 a template. Also return errors on resolution failure. 1847 (lift_*): Remove all of these functions. Don't unnecessarily inline 1848 concepts. 1849 (learn_*): Add facilities to memoize implications for subsumption 1850 during normalization. 1851 (expanding_concept): New. 1852 (expand_concept): New. Return the inlined and normalized definition 1853 of a concept when needed. 1854 (transform_*, xform_*): Rename to normalize_* to better reflect the 1855 responsibility of those functions. 1856 (normalize_template_id_expression): Check for non-boolean operands 1857 when possible. Generate check constraints instead of normal variable 1858 references. 1859 (normalize_call_expression): Report errors when resolution fails. 1860 (check_for_logical_overloads): Rewrite this check to more accurately 1861 report the error. 1862 (normalize_atom): Check for overloaded calls and invalid types before 1863 determining if the expression refers to a concept. 1864 (build_constraints): Don't cache normalized constraints or decomposed 1865 assumptions. 1866 (finish_shorthand_constraint): Return a normalized expression instead 1867 of a predicate constraint. 1868 (finish_template_introduction): Same. 1869 (placeholder_extract_concept_and_args): Rewrite this since we only 1870 ever get check constraints here. 1871 (equivalent_placeholder_constraints): Rewrite in terms of check 1872 constraints, and handle error_mark_nodes correctly. 1873 (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr) 1874 (tsubst_implicit_conversion_constr) 1875 (tsubst_argument_deduction_constr, tsubst_exception_constr) 1876 (tsubst_parameterized_constraint, tsubst_constraint): New. 1877 (tsbust_conjunection): Replace with tsubst_logical_operator and 1878 actually generate the right kind of constraint. 1879 (tsubst_requirement_body): Reverse the order of substituted arguments 1880 so that they appear in the order written (helps diagnostics). 1881 (satisfy_check_constraint): New. 1882 (satisfy_conjunction): Simplify. 1883 (satisfy_disjunction): Same. 1884 (satisfy_constraint_1): Handle check constraints. 1885 (eval_constr): New (private) global state. 1886 (evaluating_constraints_sentinel): New. Manages eval_constr. 1887 (satisfy_constraint): Add timing variables. 1888 (satisfy_associated_constraints): Add hooks for memoization. 1889 (evaluate_function_concept): Build a check constraint instead of 1890 normalizing its definition. 1891 (evaluate_variable_concept): Same. 1892 (evaluate_constraint_expression): Normalize, but in the current 1893 declaration processing context. 1894 (evaluating_constraints_p): New. 1895 (elide_constraint_failure_p): Actually emit constraint_thresh errors. 1896 (diagnose_*): Remove artificial indentation. Add a new parameter to 1897 each that tracks the current (complete) constraint prior to any 1898 substitutions. 1899 (diagnose_expression): Removed. 1900 (diagnose_call_expression): Same. 1901 (diagnose_template_id): Same. 1902 (diagnose_template_id): New. 1903 (diagnose_logical_constraint): New. 1904 (diagnose_expression_constraint): Show the original expression. 1905 (diagnose_type_constraint): Show the original type. 1906 (diagnose_implicit_conversion_constraint): Be specific about 1907 failures, don't re-diagnose a known-to-be-failed substitutions, 1908 and manage elisions properly. 1909 (diagnose_argument_deduction_constraint): Same. 1910 (diagnose_exception_constraint): Same. 1911 (diagnose_parameterized_constraint): Same. 1912 (constraint_p): Allow EXPR_PACK_EXPANSION. 1913 * logic.cc (next_by_distance): Removed. No longer used. 1914 (any_p): Renamed from any_of. 1915 (term_entry, term_hasher): New. 1916 (term_list): Rewrite to include a hash table for quick lookup. 1917 Also, make less stateful. 1918 (proof_state): Extend to allow goals to be discharged once 1919 satisfied. 1920 (non_atomic_constraint_p): New. 1921 (any_non_atomic_constraints_p): New. 1922 (...rest...): Previous implementation completely replaced with an 1923 iterative algorithm that opportunistically prunes the search space 1924 before committing to using more memory. 1925 * parser.c: (cp_parser_type_parameter): Normalize constraints. 1926 (cp_parser_explicit_template_declaration): Same. 1927 * pt.c: (finish_template_variable): Be less redundant with this error 1928 message. 1929 (template_args_equal): No longer static. 1930 (tsubst_decl): Don't try to find specializations of variables that 1931 have already been instantiated. 1932 (build_non_dependent_expr): Avoid infinite recursion during concept 1933 expansion. 1934 (make_constrained_auto): Normalize constraints. 1935 (do_auto_deduction): When doing auto deduction from a 1936 partial-concept-id, be sure to include the explicit args checking 1937 the constraints. 1938 (constraint_sat_*): New. Memoize satisfied constraints. 1939 (concept_spec_*): New. Memoize expressions associated with a concept 1940 specialization. 1941 (constraint_memos, concept_memos): New. 1942 (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New. 1943 (lookup_concept_satisfaction, memoize_concept_satisfaction): New. 1944 (get_concept_expansion, save_concept_expansion): New. 1945 (hash_subsumption_args): New. 1946 (comp_subsumption_args): New. 1947 (subsumption_*): New. Memoize parts of the subsumption relation. 1948 (lookup_subsumption_result, save_subsumption_result): New. 1949 (init_constraint_processing): Initialize memo tables. 1950 (get_constraints): Shortcut if !flag_concepts. 1951 * decl.c (grokfndecl): Normalize constraints. 1952 * error.c (dump_simple_decl): Print "concept" when appropriate. 1953 (dump_function_decl): Same. 1954 (dump_template_decl): Don't write requirements when we're not 1955 printing the header. 1956 (dump_expr): Handle fold expressions. 1957 * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle 1958 fold expressions. 1959 (get_fold_operator): New. 1960 (pp_cxx_unary_left_fold_expression): New. 1961 (pp_cxx_unary_right_fold_expression): New. 1962 (pp_cxx_binary_fold_expression): New. 1963 (pp_cxx_check_constraint): New. 1964 (pp_cxx_*_constraint): Rewrite the grammar of internal constraints 1965 to make them easier to read when debugging. 1966 * search.c (accessible_p): Don't shortcut when evaluating constraints. 1967 * tree.c (cp_tree_equal): Handle CHECK_CONSTR. 1968 19692016-07-20 David Malcolm <dmalcolm@redhat.com> 1970 1971 PR c/70339 1972 PR c/71858 1973 * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h, 1974 and parser.h. 1975 (suggest_alternatives_for): If no candidates are found, try 1976 lookup_name_fuzzy and report if if finds a suggestion. 1977 (consider_binding_level): New function. 1978 (lookup_name_fuzzy) New function. 1979 * parser.c: Include gcc-rich-location.h. 1980 (cp_lexer_next_token_is_decl_specifier_keyword): Move most of 1981 logic into... 1982 (cp_keyword_starts_decl_specifier_p): ...this new function. 1983 (cp_parser_diagnose_invalid_type_name): When issuing 1984 "does not name a type" errors, attempt to make a suggestion using 1985 lookup_name_fuzzy. 1986 * parser.h (cp_keyword_starts_decl_specifier_p): New prototype. 1987 * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject 1988 types that are not CLASS_TYPE_P, rather than rejecting individual 1989 tree codes. 1990 19912016-07-20 Jakub Jelinek <jakub@redhat.com> 1992 1993 PR c++/71909 1994 * parser.c (cp_parser_save_member_function_body): Consume 1995 __transaction_relaxed or __transaction_atomic with optional 1996 attribute. Only skip catch with block if try keyword is seen. 1997 1998 PR c++/50060 1999 * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval 2000 when evaluating call arguments. Use fold_builtin_call_array instead 2001 of fold_build_call_array_loc, return t if it returns NULL. Otherwise 2002 check the result with potential_constant_expression and call 2003 cxx_eval_constant_expression on it. 2004 20052016-07-19 Jason Merrill <jason@redhat.com> 2006 2007 PR c++/67164 2008 * pt.c (iterative_hash_template_arg, template_args_equal): Don't 2009 handle ARGUMENT_PACK_SELECT. 2010 20112016-07-18 Jakub Jelinek <jakub@redhat.com> 2012 2013 PR c++/70869 2014 PR c++/71054 2015 * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change. 2016 * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL 2017 non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and 2018 DECL_SIZE_UNIT. 2019 2020 PR c++/71835 2021 * call.c (build_op_call_1): Use convert_like_with_context only 2022 if cand->fn is a decl. 2023 2024 PR c++/71828 2025 * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>: 2026 For lval don't use cxx_eval_unary_expression and instead recurse 2027 and if needed rebuild the reference. 2028 2029 PR c++/71826 2030 * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P. 2031 2032 PR c++/71822 2033 * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively 2034 fold *expr_p before genericizing it. 2035 2036 PR c++/71871 2037 * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change. 2038 20392016-07-15 Jason Merrill <jason@redhat.com> 2040 2041 PR c++/71495 2042 * call.c (convert_like_real): Mask complain. 2043 * semantics.c (perform_koenig_lookup): Likewise. 2044 2045 PR c++/71092 2046 * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph 2047 threw away DECL_SAVED_TREE. 2048 2049 PR c++/71117 2050 Core 2189 2051 * call.c (add_template_conv_candidate): Disable if there are 2052 viable candidates. 2053 2054 PR c++/71511 2055 * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE. 2056 2057 PR c++/71513 2058 * pt.c (tsubst_attributes): Fix loop logic. 2059 2060 PR c++/71604 2061 PR c++/54430 2062 * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly. 2063 (cp_parser_simple_declaration): Diagnose type definition in 2064 for-range-declaration. 2065 2066 PR c++/71711 2067 * operators.def: Add *_FOLD_EXPR. 2068 * cp-tree.h (FOLD_EXPR_P): Parenthesize. 2069 * mangle.c (write_expression): Handle fold-expressions. 2070 * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold) 2071 (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle 2072 partial instantiation. 2073 2074 PR c++/71814 2075 * mangle.c (write_expression): Handle sizeof... an argument pack. 2076 2077 PR c++/71718 2078 * pt.c (push_tinst_level_loc): Set at_eof before fatal_error. 2079 2080 PR c++/70824 2081 * init.c (constant_value_1): Don't instantiated DECL_INITIAL of 2082 artificial variables. 2083 20842016-07-15 Cesar Philippidis <cesar@codesourcery.com> 2085 2086 * parser.c (cp_parser_oacc_declare): Don't scan for 2087 GOMP_MAP_POINTER. 2088 * semantics.c (handle_omp_array_sections): Mark data clauses with 2089 GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having 2090 zero-length subarrays. 2091 20922016-07-11 Jason Merrill <jason@redhat.com> 2093 2094 * decl.c (store_parm_decls): Remove check for void parm. 2095 20962016-07-08 Jason Merrill <jason@redhat.com> 2097 2098 * cp-tree.h: Unpoison lvalue_p. 2099 * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c, 2100 tree.c, typeck.c, typeck2.c: Use lvalue_p instead of 2101 real_lvalue_p. 2102 2103 * tree.c (obvalue_p): Rename from lvalue_p. 2104 (lvalue_p): Define for c-common. 2105 * call.c, cp-tree.h, cvt.c, init.c: Adjust. 2106 * typeck.c: Adjust. 2107 (cp_build_addr_expr_1): Remove obsolete code. 2108 2109 * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p. 2110 * call.c, cp-tree.h, typeck.c: Adjust. 2111 2112 * lambda.c (maybe_add_lambda_conv_op): Fix null object argument. 2113 2114 P0145R2: Refining Expression Order for C++. 2115 * cp-gimplify.c (lvalue_has_side_effects): New. 2116 (cp_gimplify_expr): Implement assignment ordering. 2117 * call.c (op_is_ordered, build_over_call): Adjust for 2118 -fargs-in-order renaming to -fstrong-eval-order. 2119 * cp-gimplify.c (cp_gimplify_expr): Likewise. 2120 21212016-07-07 Jakub Jelinek <jakub@redhat.com> 2122 Kai Tietz <ktietz70@googlemail.com> 2123 2124 PR c++/70869 2125 PR c++/71054 2126 * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static 2127 artificial vars, genericize their initializers. 2128 21292016-07-05 David Malcolm <dmalcolm@redhat.com> 2130 2131 PR c++/62314 2132 * parser.c (cp_parser_class_specifier_1): When reporting 2133 missing semicolons, use a fixit-hint to suggest insertion 2134 of a semicolon immediately after the closing brace, 2135 offsetting the reported column accordingly. 2136 21372016-07-04 Jan Beulich <jbeulich@suse.com> 2138 2139 * lang-specs.h ("@c++-header"): Conditionalize "-o". 2140 21412016-06-29 Thomas Schwinge <thomas@codesourcery.com> 2142 2143 * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>: 2144 Move pragma context checking into... 2145 (cp_parser_omp_cancellation_point): ... here, and improve 2146 diagnostic messages. 2147 * semantics.c (finish_omp_cancel, finish_omp_cancellation_point): 2148 Improve diagnostic messages. 2149 21502016-06-28 Jakub Jelinek <jakub@redhat.com> 2151 2152 * Make-lang.in: Don't cat ../stage_current if it does not exist. 2153 21542016-06-24 Jason Merrill <jason@redhat.com> 2155 2156 P0145R2: Refining Expression Order for C++. 2157 * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS. 2158 2159 * tree.c (get_target_expr_sfinae): Handle bit-fields. 2160 (build_target_expr): Call mark_rvalue_use. 2161 21622016-06-24 Jakub Jelinek <jakub@redhat.com> 2163 2164 * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p. 2165 (build_over_call): For magic == 3, do no conversion only on 3rd 2166 argument. 2167 21682016-06-23 Andi Kleen <ak@linux.intel.com> 2169 2170 * Make-lang.in: Add support for autofdo. 2171 21722016-06-21 Jason Merrill <jason@redhat.com> 2173 2174 * constraint.cc (constraints_satisfied_p): Keep as many levels of 2175 args as our template has levels of parms. 2176 2177 * pt.c (template_parm_outer_level, uses_outer_template_parms): New. 2178 (type_dependent_expression_p): Use uses_outer_template_parms. 2179 21802016-06-20 David Malcolm <dmalcolm@redhat.com> 2181 2182 * parser.c (cp_parser_string_literal): Convert non-standard 2183 concatenation error to directly use a rich_location, and 2184 use that to add the location of the first literal to the 2185 diagnostic. 2186 21872016-06-17 Paolo Carlini <paolo.carlini@oracle.com> 2188 2189 * decl.c (validate_constexpr_redeclaration): Change pair of errors 2190 to error + inform. 2191 * error.c (dump_function_decl): Save the constexpr specifier too. 2192 21932016-06-17 Jakub Jelinek <jakub@redhat.com> 2194 2195 * tree.c (builtin_valid_in_constant_expr_p): Test for 2196 DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just 2197 DECL_BUILT_IN. 2198 (bot_manip): Likewise. 2199 * call.c (magic_varargs_p): Likewise. 2200 22012016-06-17 Paolo Carlini <paolo.carlini@oracle.com> 2202 2203 * decl.c (grokfndecl): Change pair of errors to error + inform. 2204 22052016-06-17 Jason Merrill <jason@redhat.com> 2206 2207 PR c++/71209 2208 * typeck.c (finish_class_member_access_expr): Avoid "not a base" 2209 warning when there are dependent bases. 2210 22112016-06-17 Jakub Jelinek <jakub@redhat.com> 2212 2213 * semantics.c (handle_omp_array_sections_1): Don't ICE when 2214 processing_template_decl when checking for bitfields and unions. 2215 Look through REFERENCE_REF_P as base of COMPONENT_REF. 2216 (finish_omp_clauses): Look through REFERENCE_REF_P even for 2217 array sections with COMPONENT_REF bases. 2218 22192016-06-16 Jakub Jelinek <jakub@redhat.com> 2220 2221 * parser.c (cp_parser_omp_var_list_no_open): Call 2222 convert_from_reference before cp_parser_postfix_dot_deref_expression. 2223 * semantics.c (finish_omp_clauses): Don't ICE when 2224 processing_template_decl when checking for bitfields and unions. 2225 Look through REFERENCE_REF_P as base of COMPONENT_REF. 2226 22272016-06-15 Paolo Carlini <paolo.carlini@oracle.com> 2228 2229 * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and 2230 "%qF" in warning_at instead of "%q+F" in warning. 2231 (check_redeclaration_exception_specification): Likewise in pedwarn 2232 (and error, inform, for consistency). 2233 * call.c (joust): Likewise. 2234 22352016-06-15 Paolo Carlini <paolo.carlini@oracle.com> 2236 2237 PR c++/70202 2238 * decl.c (xref_basetypes): Revert r117839 changes; add fix-up 2239 code at the end of the for loop; also revert r159637 changes, 2240 add back the gcc_assert. 2241 * cp-tree.h (xref_basetypes): Adjust declaration. 2242 * parser.c (cp_parser_class_head): Adjust xref_basetypes call. 2243 22442016-06-14 David Malcolm <dmalcolm@redhat.com> 2245 2246 * search.c: Include spellcheck-tree.h rather than spellcheck.h. 2247 22482016-06-14 David Malcolm <dmalcolm@redhat.com> 2249 2250 * typeck.c: Include "gcc-rich-location.h". 2251 (finish_class_member_access_expr): Simplify fixit code by 2252 using gcc_rich_location::add_fixit_misspelled_id. 2253 22542016-06-14 Jason Merrill <jason@redhat.com> 2255 2256 P0145R2: Refining Expression Order for C++. 2257 * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS) 2258 (CALL_EXPR_REVERSE_ARGS): New. 2259 * call.c (build_new_op_1): Set them. 2260 (extract_call_expr, op_is_ordered): New. 2261 (build_over_call): Set CALL_EXPR_ORDERED_ARGS. 2262 * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags. 2263 * pt.c (tsubst_copy_and_build): Copy new flags. 2264 * semantics.c (simplify_aggr_init_expr): Likewise. 2265 * tree.c (build_aggr_init_expr): Likewise. 2266 (build_min_non_dep_op_overload): Likewise. 2267 22682016-06-14 Jakub Jelinek <jakub@redhat.com> 2269 2270 PR c++/71528 2271 * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external 2272 olddecl vars, preserve their TREE_READONLY bit. 2273 2274 PR c++/71516 2275 * decl.c (complete_vars): Handle gracefully type == error_mark_node. 2276 22772016-06-14 Paolo Carlini <paolo.carlini@oracle.com> 2278 2279 * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init. 2280 22812016-06-13 Paolo Carlini <paolo.carlini@oracle.com> 2282 2283 * decl.c (grokdeclarator): Fix typo in pedwarn text. 2284 22852016-06-10 Thomas Schwinge <thomas@codesourcery.com> 2286 2287 PR c/71381 2288 * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>: 2289 Loosen checking. 2290 22912016-06-09 Paolo Carlini <paolo.carlini@oracle.com> 2292 2293 PR c++/71465 2294 Revert: 2295 2016-06-04 Paolo Carlini <paolo.carlini@oracle.com> 2296 2297 PR c++/70202 2298 * parser.c (cp_parser_class_head): When xref_basetypes fails and 2299 emits an error do not zero the type. 2300 23012016-06-08 Paolo Carlini <paolo.carlini@oracle.com> 2302 2303 * decl.c (maybe_deduce_size_from_array_init): Use 2304 DECL_SOURCE_LOCATION in error_at. 2305 (layout_var_decl): Likewise. 2306 (check_array_initializer): Likewise. 2307 (check_initializer): Likewise. 2308 (duplicate_decls, check_elaborated_type_specifier): Tidy. 2309 23102016-06-08 Martin Sebor <msebor@redhat.com> 2311 Jakub Jelinek <jakub@redhat.com> 2312 2313 PR c++/70507 2314 PR c/68120 2315 * constexpr.c: Include gimple-fold.h. 2316 (cxx_eval_internal_function): New function. 2317 (cxx_eval_call_expression): Call it. 2318 (potential_constant_expression_1): Handle integer arithmetic 2319 overflow built-ins. 2320 * tree.c (builtin_valid_in_constant_expr_p): Handle 2321 BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P. 2322 23232016-06-08 Paolo Carlini <paolo.carlini@oracle.com> 2324 2325 * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the 2326 return value of tsubst_aggr_type for error_mark_node. 2327 23282016-06-08 Jakub Jelinek <jakub@redhat.com> 2329 2330 PR c++/71442 2331 * pt.c (tsubst_copy): Only set TREE_USED on DECLs. 2332 23332016-06-06 Jakub Jelinek <jakub@redhat.com> 2334 Patrick Palka <ppalka@gcc.gnu.org> 2335 2336 PR c++/70847 2337 PR c++/71330 2338 PR c++/71393 2339 * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL 2340 right after cp_fold call if cp_fold has returned the same stmt 2341 already in some earlier cp_fold_r call. 2342 (cp_fold_function): Add pset automatic variable, pass its address 2343 to cp_walk_tree. 2344 23452016-06-04 Paolo Carlini <paolo.carlini@oracle.com> 2346 2347 PR c++/70202 2348 * parser.c (cp_parser_class_head): When xref_basetypes fails and 2349 emits an error do not zero the type. 2350 23512016-06-03 Patrick Palka <ppalka@gcc.gnu.org> 2352 2353 PR c++/27100 2354 * decl.c (duplicate_decls): Properly copy the 2355 DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and 2356 DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL. 2357 23582016-06-03 Chung-Lin Tang <cltang@codesourcery.com> 2359 2360 * semantics.c (finish_omp_clauses): Mark OpenACC reduction 2361 arguments as addressable when async clause exists. 2362 23632016-06-02 Jan Hubicka <jh@suse.cz> 2364 2365 * cp-gimplify.c (genericize_continue_stmt): Force addition of 2366 predict stmt. 2367 23682016-06-02 Paolo Carlini <paolo.carlini@oracle.com> 2369 2370 * decl.c (xref_tag_1): Change pairs of errors to error + inform. 2371 (start_enum): Likewise. 2372 * parser.c (cp_parser_class_head): Likewise. 2373 23742016-06-02 Jakub Jelinek <jakub@redhat.com> 2375 2376 PR c++/71372 2377 * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression 2378 is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS 2379 and TREE_THIS_VOLATILE flags. For ARRAY_REF and ARRAY_RANGE_REF, copy 2380 over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags 2381 to the newly built tree. 2382 23832016-05-31 Jason Merrill <jason@redhat.com> 2384 2385 * pt.c (instantiate_decl): Avoid recalculation. 2386 2387 PR c++/60095 2388 PR c++/69515 2389 PR c++/69009 2390 * pt.c (instantiate_template_1): Don't put the partial 2391 specialization in DECL_TI_TEMPLATE. 2392 (partial_specialization_p, impartial_args): Remove. 2393 (regenerate_decl_from_template): Add args parm. 2394 (instantiate_decl): Look up the partial specialization again. 2395 2396 PR c++/71227 2397 * pt.c (check_explicit_specialization): Give better diagnostic about 2398 specializing a hidden friend. 2399 24002016-05-31 Paolo Carlini <paolo.carlini@oracle.com> 2401 2402 PR c++/71248 2403 * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION 2404 to obtain correct locations; avoid redundant diagnostics on 2405 out-of-class definitions. 2406 24072016-05-30 Martin Sebor <msebor@redhat.com> 2408 2409 PR c++/71306 2410 * init.c (warn_placement_new_too_small): Handle placement new arguments 2411 that are elements of arrays more carefully. Remove a pointless loop. 2412 24132016-05-30 Jakub Jelinek <jakub@redhat.com> 2414 2415 PR c++/71349 2416 * parser.c (cp_parser_omp_for): Don't disallow nowait clause 2417 when combined with target construct. 2418 (cp_parser_omp_parallel): Pass cclauses == NULL as last argument 2419 to cp_parser_omp_all_clauses. 2420 24212016-05-30 Paolo Carlini <paolo.carlini@oracle.com> 2422 2423 PR c++/71238 2424 * lex.c (unqualified_name_lookup_error): Take a location too. 2425 (unqualified_fn_lookup_error): Take a cp_expr. 2426 * cp-tree.h (unqualified_name_lookup_error, 2427 unqualified_fn_lookup_error): Adjust declarations. 2428 * semantics.c (perform_koenig_lookup): Adjust 2429 unqualified_fn_lookup_error call, pass the location of 2430 the identifier too as part of a cp_expr. 2431 24322016-05-30 Paolo Carlini <paolo.carlini@oracle.com> 2433 2434 PR c++/71099 2435 * parser.c (cp_parser_function_specifier_opt): Use current_class_type 2436 to improve the diagnostic about wrong uses of 'virtual'. 2437 24382016-05-29 Paolo Carlini <paolo.carlini@oracle.com> 2439 2440 PR c++/71105 2441 * lambda.c (maybe_add_lambda_conv_op): Early return also when 2442 LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE. 2443 24442016-05-28 Ville Voutilainen <ville.voutilainen@gmail.com> 2445 2446 Revert: 2447 PR c++/69855 2448 * name-lookup.c (pushdecl_maybe_friend_1): Push local function 2449 decls into the global scope after stripping template bits 2450 and setting DECL_ANTICIPATED. 2451 24522016-05-27 Paolo Carlini <paolo.carlini@oracle.com> 2453 2454 PR c++/60385 2455 * name-lookup.c (push_namespace): Return bool, false when pushdecl 2456 fails. 2457 * name-lookup.h (push_namespace): Adjust declaration. 2458 * parser.c (cp_parser_namespace_definition): Check push_namespace 2459 return value. 2460 24612016-05-27 Ville Voutilainen <ville.voutilainen@gmail.com> 2462 2463 PR c++/69855 2464 * name-lookup.c (pushdecl_maybe_friend_1): Push local function 2465 decls into the global scope after stripping template bits 2466 and setting DECL_ANTICIPATED. 2467 24682016-05-26 Jakub Jelinek <jakub@redhat.com> 2469 2470 * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn 2471 if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive. 2472 24732016-05-26 Patrick Palka <ppalka@gcc.gnu.org> 2474 2475 PR c++/70822 2476 PR c++/70106 2477 * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to 2478 SCOPE_REFs too. 2479 * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set 2480 on the qualified_id then propagate it to the resulting 2481 expression. 2482 (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs 2483 too. 2484 * semantics.c (force_paren_expr): If given a SCOPE_REF, just set 2485 its REF_PARENTHESIZED_P flag. 2486 24872016-05-25 Jason Merrill <jason@redhat.com> 2488 2489 PR c++/71173 2490 PR c++/70522 2491 * cp-tree.h (enum tag_types): Add scope_type. 2492 * parser.c (cp_parser_class_name): Use scope_type. 2493 (prefer_type_arg): Handle scope_type. 2494 (cp_parser_lookup_name): Use prefer_type_arg. 2495 * name-lookup.c (lookup_qualified_name): Change bool is_type_p to 2496 int prefer_type, use lookup_flags. 2497 * name-lookup.h: Adjust. 2498 24992016-05-24 Cesar Philippidis <cesar@codesourcery.com> 2500 2501 * parser.c (cp_parser_oacc_declare): Add support for 2502 GOMP_MAP_FIRSTPRIVATE_POINTER. 2503 * semantics.c (handle_omp_array_sections_1): Replace bool is_omp 2504 argument with enum c_omp_region_type ort. Don't privatize OpenACC 2505 non-static members. 2506 (handle_omp_array_sections): Replace bool is_omp argument with enum 2507 c_omp_region_type ort. Update call to handle_omp_array_sections_1. 2508 (finish_omp_clauses): Add specific errors and warning messages for 2509 OpenACC. Use firsrtprivate pointers for OpenACC subarrays. Update 2510 call to handle_omp_array_sections. 2511 25122016-05-24 Jason Merrill <jason@redhat.com> 2513 2514 PR c++/70584 2515 * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold 2516 returns a decl. 2517 (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue. 2518 25192016-05-24 Martin Sebor <msebor@redhat.com> 2520 2521 PR c++/71147 2522 * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p. 2523 * pt.c (instantiate_class_template_1): Try to complete the element 2524 type of a flexible array member. 2525 (can_complete_type_without_circularity): Handle arrays of unknown bound. 2526 * typeck.c (complete_type): Also complete the type of the elements of 2527 arrays with an unspecified bound. 2528 25292016-05-24 Paolo Carlini <paolo.carlini@oracle.com> 2530 2531 PR c++/69872 2532 * typeck2.c (check_narrowing): Check pedwarn return value. 2533 25342016-05-24 Jakub Jelinek <jakub@redhat.com> 2535 2536 PR c++/71257 2537 * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>: 2538 For OMP_CLAUSE_LINEAR_REF don't require type to be 2539 integral or pointer. 2540 25412016-05-24 Richard Biener <rguenther@suse.de> 2542 2543 PR middle-end/70434 2544 PR c/69504 2545 * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR. 2546 * constexpr.c (cxx_eval_array_reference): Handle indexed 2547 vectors. 2548 * typeck.c (cp_build_array_ref): Adjust. 2549 25502016-05-23 Jason Merrill <jason@redhat.com> 2551 2552 PR c++/70344 2553 * constexpr.c (cxx_eval_call_expression): Check for 2554 fun == current_function_decl again. 2555 2556 PR c++/70584 2557 * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call 2558 maybe_undo_parenthesized_ref. 2559 2560 PR c++/70735 2561 * pt.c (tsubst_copy): Just return a local variable from 2562 non-template context. Don't call rest_of_decl_compilation for 2563 duplicated static locals. 2564 (tsubst_decl): Set DECL_CONTEXT of local static from another 2565 function. 2566 25672016-05-23 Paolo Carlini <paolo.carlini@oracle.com> 2568 2569 PR c++/70972 2570 * method.c (forward_parm): Use cp_build_reference_type. 2571 25722016-05-23 Paolo Carlini <paolo.carlini@oracle.com> 2573 2574 PR c++/69095 2575 * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs. 2576 25772016-05-23 Paolo Carlini <paolo.carlini@oracle.com> 2578 2579 * pt.c (check_for_bare_parameter_packs): Improve error message 2580 location for expressions. 2581 25822016-05-20 Nathan Sidwell <nathan@acm.org> 2583 2584 * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if 2585 ... goto. 2586 (cxx_eval_call_expression): Fix comment grammar. 2587 25882016-05-20 Paolo Carlini <paolo.carlini@oracle.com> 2589 2590 PR c++/70572 2591 * decl.c (cp_finish_decl): Check do_auto_deduction return value 2592 and return immediately in case of erroneous code. 2593 25942016-05-19 Marek Polacek <polacek@redhat.com> 2595 2596 PR c++/71075 2597 * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD. 2598 25992016-05-19 Jason Merrill <jason@redhat.com> 2600 2601 PR c++/10200 2602 * pt.c (fn_type_unification): Add outer template args if needed. 2603 (type_unification_real): Handle getting full args. 2604 26052016-05-19 David Malcolm <dmalcolm@redhat.com> 2606 2607 PR c++/71184 2608 * parser.c (cp_parser_operator): For array new/delete, check that 2609 cp_parser_require returned a non-NULL token before dereferencing 2610 it. 2611 26122016-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de> 2613 2614 * decl.c (finish_enum_value_list): Use the specified mode. 2615 26162016-05-18 Jason Merrill <jason@redhat.com> 2617 2618 * pt.c (value_dependent_expression_p): Tweak new cases to better 2619 match the wording in the standard. 2620 26212016-05-18 Paolo Carlini <paolo.carlini@oracle.com> 2622 2623 PR c++/69793 2624 * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token 2625 when the previous cp_lexer_peek_token returns CPP_EOF. 2626 26272016-05-18 Paolo Carlini <paolo.carlini@oracle.com> 2628 2629 PR c++/70466 2630 * call.c (convert_like_real): Check that we are actually converting 2631 from an init list. 2632 26332016-05-16 Matthew Wahab <matthew.wahab@arm.com> 2634 2635 * decl.c (grokdeclarator): Remove errmsg and use of 2636 targetm.invalid_return_type. 2637 (grokparms): Remove errmsg and use of 2638 targetm.invalid_parameter_type. 2639 26402016-05-13 Jason Merrill <jason@redhat.com> 2641 2642 PR c++/10200 2643 PR c++/69753 2644 * pt.c (tsubst_decl): Use uses_template_parms. 2645 (instantiate_template_1): Handle non-dependent calls in templates. 2646 (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL. 2647 (type_dependent_expression_p): Only consider innermost template args. 2648 (dependent_template_arg_p): Check enclosing class of a template here. 2649 (dependent_template_p): Not here. 2650 (type_dependent_object_expression_p): New. 2651 * typeck.c (finish_class_member_access_expr): Use it. 2652 * parser.c (cp_parser_postfix_expression): Use it. 2653 (cp_parser_postfix_dot_deref_expression): Use it. Use comptypes 2654 to detect the current instantiation. 2655 (cp_parser_lookup_name): Really implement DR 141. 2656 * search.c (lookup_field_r): Prefer a dependent using-declaration. 2657 (any_dependent_bases_p): Split out from... 2658 * name-lookup.c (do_class_using_decl): ...here. 2659 * call.c (build_new_method_call_1): Use it. 2660 * semantics.c (finish_call_expr): 'this' doesn't make a call dependent. 2661 * tree.c (non_static_member_function_p): Remove. 2662 * typeck2.c (build_x_arrow): Use dependent_scope_p. 2663 2664 * parser.c (cp_parser_postfix_dot_deref_expression): Use 2665 complete_type_or_else for unknown_type_node, too. 2666 26672016-05-12 Marek Polacek <polacek@redhat.com> 2668 2669 PR c/70756 2670 * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr. 2671 * cp-tree.h (cp_build_modify_expr): Update declaration. 2672 (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline 2673 overloads. 2674 * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to 2675 cp_build_modify_expr. 2676 * decl2.c (set_guard): Likewise. 2677 (handle_tls_init): Likewise. 2678 * init.c (perform_member_init): Likewise. 2679 (expand_virtual_init): Likewise. 2680 (build_new_1): Likewise. 2681 (build_vec_delete_1): Likewise. 2682 (get_temp_regvar): Likewise. 2683 (build_vec_init): Likewise. 2684 * method.c (do_build_copy_assign): Likewise. 2685 (assignable_expr): Likewise. 2686 * semantics.c (finish_omp_for): Likewise. 2687 * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and 2688 cp_pointer_int_sum. 2689 (cp_pointer_int_sum): Add location parameter. Pass it down to 2690 pointer_int_sum. 2691 (pointer_diff): Add location parameter. Use it. 2692 (build_modify_expr): Pass location down to cp_build_modify_expr. 2693 (cp_build_modify_expr): Add location parameter. Use it. 2694 (build_x_modify_expr): Pass location down to cp_build_modify_expr. 2695 * typeck2.c (cxx_incomplete_type_diagnostic, 2696 cxx_incomplete_type_error): Add location parameter. 2697 26982016-05-11 Marek Polacek <polacek@redhat.com> 2699 2700 PR c++/71024 2701 * decl.c (duplicate_decls): Call diagnose_mismatched_decls. 2702 27032016-05-05 Jakub Jelinek <jakub@redhat.com> 2704 2705 * parser.c (cp_parser_selection_statement): For RID_SWITCH, 2706 pass if_p instead of NULL to cp_parser_implicitly_scoped_statement. 2707 27082016-05-04 Marek Polacek <polacek@redhat.com> 2709 2710 * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses 2711 with OPT_Wdangling_else. 2712 27132016-05-03 Martin Sebor <msebor@redhat.com> 2714 2715 PR c++/66561 2716 * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE, 2717 BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions. 2718 27192016-05-03 Marek Polacek <polacek@redhat.com> 2720 2721 PR c/70859 2722 * call.c (build_cxx_call): Pass location and vNULL down to 2723 check_builtin_function_arguments. 2724 27252016-05-03 Richard Biener <rguenther@suse.de> 2726 2727 * Make-lang.in (cc1plus-checksum.c): For stage-final re-use 2728 the checksum from the previous stage. 2729 27302016-05-02 David Malcolm <dmalcolm@redhat.com> 2731 2732 PR c++/62314 2733 * typeck.c (finish_class_member_access_expr): When 2734 giving a hint about a possibly-misspelled member name, 2735 add a fix-it replacement hint. 2736 27372016-05-02 Cesar Philippidis <cesar@codesourcery.com> 2738 2739 * cp-tree.h (finish_omp_clauses): Update prototype. 2740 * parser.c (cp_parser_oacc_all_clauses): Update call to 2741 finish_omp_clauses. 2742 (cp_parser_omp_all_clauses): Likewise. 2743 (cp_parser_omp_for_loop): Likewise. 2744 (cp_omp_split_clauses): Likewise. 2745 (cp_parser_oacc_cache): Likewise. 2746 (cp_parser_oacc_loop): Likewise. 2747 (cp_parser_omp_declare_target): 2748 (cp_parser_cilk_simd_all_clauses): Likewise. 2749 (cp_parser_cilk_for): Likewise. 2750 * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd 2751 arguments with enum c_omp_region_type ort. 2752 (tsubst_omp_clauses): Update calls to finish_omp_clauses. 2753 (tsubst_omp_attribute): Update calls to tsubst_omp_clauses. 2754 (tsubst_omp_for_iterator): Update calls to finish_omp_clauses. 2755 (tsubst_expr): Update calls to tsubst_omp_clauses. 2756 * semantics.c (finish_omp_clauses): Replace bool arguments 2757 allow_fields, declare_simd, and is_cilk with bitmask ort. 2758 (finish_omp_for): Update call to finish_omp_clauses. 2759 27602016-05-02 David Malcolm <dmalcolm@redhat.com> 2761 2762 PR c++/62314 2763 * parser.c (cp_parser_class_head): Capture the start location; 2764 use it to emit a fix-it insertion hint when complaining 2765 about missing "template <> " in explicit specializations. 2766 27672016-05-02 Richard Sandiford <richard.sandiford@arm.com> 2768 2769 * init.c (build_new_1): Use shift operators instead of wi:: shifts. 2770 27712016-05-02 Richard Biener <rguenther@suse.de> 2772 2773 * decl.c (grokdeclarator): Properly insert a DECL_EXPR for 2774 anonymous VLAs. 2775 27762016-04-29 Paolo Carlini <paolo.carlini@oracle.com> 2777 2778 PR c++/66644 2779 * class.c (check_field_decl): Remove final int* parameter, change 2780 the return type to bool; fix logic in order not to reject multiple 2781 initialized fields in anonymous struct. 2782 (check_field_decls): Adjust call. 2783 27842016-04-29 Cesar Philippidis <cesar@codesourcery.com> 2785 2786 PR middle-end/70626 2787 * parser.c (cp_parser_oacc_loop): Don't augment mask with 2788 OACC_LOOP_CLAUSE_MASK. 2789 (cp_parser_oacc_kernels_parallel): Update call to 2790 c_oacc_split_loop_clauses. 2791 27922016-04-28 Jason Merrill <jason@redhat.com> 2793 2794 Implement C++17 [[nodiscard]] attribute. 2795 PR c++/38172 2796 PR c++/54379 2797 * parser.c (cp_parser_std_attribute): Handle [[nodiscard]]. 2798 * tree.c (handle_nodiscard_attribute): New. 2799 (cxx_attribute_table): Add [[nodiscard]]. 2800 * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New. 2801 (maybe_warn_nodiscard): New. 2802 (convert_to_void): Call it. 2803 2804 * cvt.c (cp_get_callee): New. 2805 * constexpr.c (get_function_named_in_call): Use it. 2806 * cxx-pretty-print.c (postfix_expression): Use it. 2807 * except.c (check_noexcept_r): Use it. 2808 * method.c (check_nontriv): Use it. 2809 * tree.c (build_aggr_init_expr): Use it. 2810 * cp-tree.h: Declare it. 2811 28122015-04-27 Ryan Burn <contact@rnburn.com> 2813 Jeff Law <law@redhat.com> 2814 2815 PR c++/69024 2816 PR c++/68997 2817 * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap 2818 instead of cilk_detect_spawn_and_unwrap. 2819 * cp-cilkplus.c (is_conversion_operator_function_decl_p): New. 2820 (find_spawn): New. 2821 (cilk_cp_detect_spawn_and_unwrap): New. 2822 * lambda.c: Include cp-cilkplus.h. 2823 * parser.c: Include cp-cilkplus.h. 2824 * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into... 2825 * cp-cilkpus.h: New file. 2826 28272016-04-27 Nathan Sidwell <nathan@acm.org> 2828 2829 * constexpr.c (get_fundef_copy): Use the original function for 2830 non-recursive evaluations. 2831 (save_fundef_copy): Always expect a slot to be available. 2832 28332016-04-27 Bernd Schmidt <bschmidt@redhat.com> 2834 2835 * parser.c (cp_parser_postfix_expression): Call 2836 warn_for_memset instead of warning directly here. 2837 28382016-04-26 Patrick Palka <ppalka@gcc.gnu.org> 2839 2840 PR c++/70241 2841 * decl.c (build_enumerator): Set current_access_specifier when 2842 declaring an enumerator belonging to an in-class enumeration. 2843 * parser.c (cp_parser_check_access_in_redecleration): Also 2844 consider in-class enumerations. 2845 28462016-04-26 Marek Polacek <polacek@redhat.com> 2847 2848 PR c++/70744 2849 * call.c (build_conditional_expr_1): Call cp_stabilize_reference 2850 instead of stabilize_reference. 2851 (build_over_call): Likewise. 2852 * cp-tree.h (cp_stabilize_reference): Declare. 2853 * tree.c (cp_stabilize_reference): New function. 2854 * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of 2855 stabilize_reference. 2856 (unary_complex_lvalue): Likewise. 2857 (cp_build_modify_expr): Likewise. 2858 28592016-04-26 Jakub Jelinek <jakub@redhat.com> 2860 2861 PR bootstrap/70704 2862 * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of 2863 just flag_checking. 2864 28652016-04-25 Jason Merrill <jason@redhat.com> 2866 2867 * tree.c (std_attribute_table): New. 2868 (init_tree): Register it. 2869 28702016-04-22 Jason Merrill <jason@redhat.com> 2871 2872 * parser.c (cp_parser_perform_range_for_lookup): Decay the array. 2873 28742016-04-21 Patrick Palka <ppalka@gcc.gnu.org> 2875 2876 * name-lookup.c (free_saved_scope): New free list of saved_scope 2877 structures. 2878 (push_to_top_level): Attempt to reuse a saved_scope struct 2879 from free_saved_scope instead of allocating a new one each time. 2880 (pop_from_top_level_1): Chain the now-unused saved_scope structure 2881 onto free_saved_scope. 2882 28832016-04-21 Paolo Carlini <paolo.carlini@oracle.com> 2884 2885 PR c++/70540 2886 * semantics.c (process_outer_var_ref): Unconditionally return 2887 error_mark_node when mark_used returns false. 2888 28892016-04-21 Marek Polacek <polacek@redhat.com> 2890 2891 PR c++/70513 2892 * parser.c (cp_parser_enum_specifier): Check and possibly error for 2893 extra qualification. 2894 28952016-04-20 Nathan Sidwell <nathan@acm.org> 2896 2897 PR c++/55635 2898 * init.c (build_vec_delete_1): Protect operator delete call in try 2899 finally. 2900 (build_delete): Likewise. 2901 * optimize.c (build_delete_destructor_body): Likewise. 2902 29032016-04-20 Ilya Verbin <ilya.verbin@intel.com> 2904 2905 PR c++/69363 2906 * cp-tree.h (finish_omp_clauses): Add new default argument. 2907 * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses 2908 instead of c_finish_cilk_clauses. 2909 * semantics.c (finish_omp_clauses): Add new argument. Allow 2910 floating-point variables in the linear clause for Cilk Plus. 2911 29122016-04-20 Nathan Sidwell <nathan@acm.org> 2913 2914 * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a 2915 TARGET_EXPR. 2916 29172016-04-19 Jason Merrill <jason@redhat.com> 2918 2919 PR c++/66543 2920 * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR. 2921 * pt.c (make_pack_expansion): Call mark_exp_read. 2922 * semantics.c (finish_id_expression): Call mark_type_use in 2923 unevaluated context. 2924 2925 DR 2137 2926 * call.c (implicit_conversion): If we choose a copy constructor 2927 for list-initialization from the same type, the conversion is an 2928 exact match. 2929 2930 * constexpr.c (breaks): Handle EXIT_EXPR. 2931 (cxx_eval_loop_expr): Handle COMPOUND_EXPR body. 2932 (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling 2933 of COMPOUND_EXPR. 2934 2935 PR c++/68206 2936 PR c++/68530 2937 * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR 2938 and GOTO_EXPR. 2939 2940 * pt.c (tsubst_expr): Remove shadowing declaration. 2941 (tsubst_pack_expansion): Add assert. 2942 2943 * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION. 2944 2945 PR c++/70522 2946 * name-lookup.c (qualified_lookup_using_namespace): Look through 2947 hidden names. 2948 29492016-04-18 Michael Matz <matz@suse.de> 2950 2951 * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN. 2952 (layout_class_type): Ditto. 2953 (build_base_field): Use SET_DECL_ALIGN. 2954 (fixup_attribute_variants): Use SET_TYPE_ALIGN. 2955 * decl.c (duplicate_decls): Use SET_DECL_ALIGN. 2956 (record_unknown_type): Use SET_TYPE_ALIGN. 2957 (cxx_init_decl_processing): Ditto. 2958 (copy_type_enum): Ditto. 2959 (grokfndecl): Use SET_DECL_ALIGN. 2960 (copy_type_enum): Use SET_TYPE_ALIGN. 2961 * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN. 2962 (tsubst): Ditto. 2963 * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN. 2964 * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN. 2965 * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN. 2966 * rtti.c (emit_tinfo_decl): Ditto. 2967 29682016-04-18 Jason Merrill <jason@redhat.com> 2969 2970 PR c++/70690 2971 PR c++/70528 2972 * class.c (type_maybe_constexpr_default_constructor): New. 2973 (type_has_constexpr_default_constructor): Revert. 2974 29752016-04-16 Sandra Loosemore <sandra@codesourcery.com> 2976 2977 PR target/1078 2978 2979 * tree.c (cxx_attribute_table): Remove "com_interface" entry. 2980 (handle_com_interface_attribute): Delete. 2981 29822016-04-15 Jason Merrill <jason@redhat.com> 2983 2984 PR c++/70685 2985 * constexpr.c (get_fundef_copy): Handle null *slot. 2986 2987 PR c++/70505 2988 * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR 2989 unknown_type_node, too. 2990 29912016-04-15 Jason Merrill <jason@redhat.com> 2992 Nathan Sidwell <nathan@acm.org> 2993 2994 PR c++/70594 2995 * constexpr.c (constexpr_call_table): Preserve in GC. 2996 (struct fundef_copy, struct fundef_copies_table_t): Delete. 2997 (fundef_copies_table): Preserve in GC. Change to pointer to 2998 tree->tree hash. 2999 (maybe_initialize_fundef_copies_table): Adjust. 3000 (get_fundef_copy): Return a TREE_LIST. Use non-inserting search. 3001 (save_fundef_copy): Adjust for a TREE_LIST. 3002 (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST. 3003 (fini_constexpr): New. 3004 * cp-tree.h (fini_constexpr): Declare. 3005 * decl2.c (c_parse_final_cleanups): Call fini_constexpr. 3006 30072016-04-15 Jakub Jelinek <jakub@redhat.com> 3008 3009 PR c/70436 3010 * parser.c (cp_parser_pragma): Add IF_P argument, pass it down 3011 where needed. 3012 (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt, 3013 cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd, 3014 cp_parser_oacc_routine): Adjust cp_parser_pragma callers. 3015 (cp_parser_statement): Likewise. Adjust cp_parser_cilk_for caller. 3016 (cp_parser_omp_structured_block): Add IF_P argument, pass it down to 3017 cp_parser_statement. 3018 (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop, 3019 cp_parser_oacc_kernels_parallel, cp_parser_omp_critical, 3020 cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master, 3021 cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single, 3022 cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute, 3023 cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target, 3024 cp_parser_omp_taskloop, cp_parser_omp_construct, 3025 cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for): 3026 Add IF_P argument, pass it down where needed. 3027 (cp_parser_omp_for_loop): Likewise. Clear IF_P if nbraces. 3028 (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block 3029 calls. 3030 30312016-04-14 Jason Merrill <jason@redhat.com> 3032 3033 PR c++/70494 3034 * decl.c (cxx_maybe_build_cleanup): Handle non-decls. 3035 * typeck2.c (split_nonconstant_init_1): Use it. 3036 3037 PR c++/70528 3038 * class.c (type_has_constexpr_default_constructor): Return true 3039 for an implicitly declared constructor. 3040 3041 PR c++/70622 3042 * parser.c (cp_parser_init_declarator): Add auto_result parm. 3043 (cp_parser_simple_declaration): Pass it. 3044 (strip_declarator_types): New. 3045 3046 PR c++/70543 3047 * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent 3048 initializer also makes the variable value-dependent. 3049 3050 PR c++/70648 3051 * constexpr.c (cxx_eval_store_expression): Also copy 3052 CONSTRUCTOR_NO_IMPLICIT_ZERO. 3053 30542016-04-14 Martin Sebor <msebor@redhat.com> 3055 3056 PR c++/69517 3057 PR c++/70019 3058 PR c++/70588 3059 * cp-tree.h, decl.c, init.c, typeck2.c: Revert. 3060 30612016-04-14 Jason Merrill <jason@redhat.com> 3062 3063 * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty 3064 parameter ABI change. 3065 30662016-04-13 Martin Sebor <msebor@redhat.com> 3067 3068 PR c++/69517 3069 PR c++/70019 3070 PR c++/70588 3071 * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new 3072 functions. 3073 * decl.c (check_initializer, cp_finish_decl): Call them. 3074 (reshape_init_r): Reject incompletely braced intializer-lists 3075 for VLAs. 3076 * init.c (throw_bad_array_length, build_vla_check) 3077 (build_vla_size_check, build_vla_init_check): Define new functions. 3078 * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p() 3079 to detect a VLA. 3080 (store_init_value): Same. 3081 30822016-04-13 Jason Merrill <jason@redhat.com> 3083 3084 Warn about empty parameter ABI with -Wabi=9. 3085 * call.c (empty_class_msg, mark_for_abi_warning) 3086 (warn_empty_class_abi): New. 3087 (build_call_a): Use them. 3088 * decl.c (store_parm_decls): Use mark_for_abi_warning. 3089 * error.c (pp_format_to_string): New. 3090 3091 Pass empty class parameters like C. 3092 * call.c (pass_as_empty_struct, empty_class_arg): New. 3093 (type_passed_as, build_x_va_arg): Use pass_as_empty_struct. 3094 (build_call_a): Use empty_class_arg. 3095 * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New. 3096 * decl.c (cxx_init_decl_processing): Create empty_struct_type. 3097 30982016-04-13 Jason Merrill <jason@redhat.com> 3099 3100 PR c++/70627 3101 * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE. 3102 31032016-04-13 Paolo Carlini <paolo.carlini@oracle.com> 3104 3105 PR c++/70635 3106 * pt.c (resolve_typename_type): Fix typos in infinite recursion 3107 avoidance mechanism. 3108 31092016-04-13 Jason Merrill <jason@redhat.com> 3110 3111 PR c++/70634 3112 * pt.c (instantiation_dependent_uneval_expression_p): Split out 3113 from instantiation_dependent_expression_p. 3114 (value_dependent_expression_p): Use it for unevaluated operands. 3115 (instantiation_dependent_r): Don't check value-dependence. 3116 (instantiation_dependent_expression_p): Check 3117 value-dependence of the expression as a whole. 3118 * cp-tree.h: Declare instantiation_dependent_uneval_expression_p. 3119 * semantics.c (finish_decltype_type): Use it. 3120 3121 * constexpr.c (potential_nondependent_constant_expression): New. 3122 (potential_nondependent_static_init_expression): New. 3123 (maybe_constant_value_1, fold_non_dependent_expr) 3124 (maybe_constant_init): Use them. 3125 * pt.c (instantiate_non_dependent_expr_sfinae) 3126 (instantiate_non_dependent_or_null, convert_nontype_argument): Use 3127 them. 3128 * cp-tree.h: Declare them. 3129 31302016-04-13 Jakub Jelinek <jakub@redhat.com> 3131 3132 PR c++/70594 3133 * decl.c (pop_labels_1): Removed. 3134 (note_label, sort_labels): New functions. 3135 (pop_labels): During named_labels traversal, just push the slot 3136 pointers into a vector, then qsort it by DECL_UID and only then 3137 call pop_label and chain it into BLOCK_VARS. 3138 31392016-04-13 Jason Merrill <jason@redhat.com> 3140 3141 PR c++/70615 3142 * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here. 3143 (cp_gimplify_expr): Not here. 3144 31452016-04-12 Patrick Palka <ppalka@gcc.gnu.org> 3146 3147 PR c++/70610 3148 * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally 3149 recurse into it. 3150 * typeck.c (build_x_conditional_expr): Unconditionally remember 3151 that the result is an lvalue or xvalue. 3152 31532016-04-12 Jason Merrill <jason@redhat.com> 3154 3155 * class.c (is_really_empty_class): A zero-length array is empty. 3156 An unnamed bit-field doesn't make a class non-empty. 3157 31582016-04-12 Paolo Carlini <paolo.carlini@oracle.com> 3159 3160 PR c++/68722 3161 * parser.c (cp_parser_cache_defarg): When file ends in default 3162 argument simply return error_mark_node. 3163 31642016-04-12 Nathan Sidwell <nathan@acm.org> 3165 3166 PR c++/70501 3167 * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE 3168 similarly to PMF. 3169 31702016-04-11 Jason Merrill <jason@redhat.com> 3171 3172 * mangle.c (decl_is_template_id): The template itself counts as a 3173 template-id. 3174 31752016-04-08 Patrick Palka <ppalka@gcc.gnu.org> 3176 3177 PR c++/70590 3178 PR c++/70452 3179 * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr 3180 on the result if it's not a CONSTRUCTOR. 3181 31822016-04-07 Patrick Palka <ppalka@gcc.gnu.org> 3183 3184 PR c++/70452 3185 * constexpr.c (find_constructor): New function. 3186 (unshare_constructor): New function. 3187 (cxx_eval_call_expression): Use unshare_constructor instead of 3188 unshare_expr. 3189 (find_array_ctor_elt): Likewise. 3190 (cxx_eval_vec_init_1): Likewise. 3191 (cxx_eval_store_expression): Likewise. 3192 (cxx_eval_constant_expression): Likewise. 3193 31942016-04-06 Patrick Palka <ppalka@gcc.gnu.org> 3195 3196 PR c/70436 3197 * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid 3198 potentially generating a future -Wparentheses warning in its 3199 callers. 3200 32012016-04-06 Jason Merrill <jason@redhat.com> 3202 3203 * class.c (check_abi_tags): Fix function template handling. 3204 32052016-04-05 Nathan Sidwell <nathan@acm.org> 3206 3207 PR c++/70512 3208 * class.c (fixup_may_alias): New. 3209 (fixup_attribute_variants): Call it. 3210 32112016-04-05 Patrick Palka <ppalka@gcc.gnu.org> 3212 3213 PR c++/70452 3214 * constexpr.c (struct fundef_copy): New struct. 3215 (struct fundef_copies_table_t): New struct. 3216 (fundef_copies_table): New static variable. 3217 (maybe_initialize_fundef_copies_table): New static function. 3218 (get_fundef_copy): New static function. 3219 (save_fundef_copy): New static function. 3220 (cxx_eval_call_expression): Use get_fundef_copy, and 3221 save_fundef_copy. 3222 (constexpr_call_table): Add "deletable" GTY marker. 3223 32242016-04-05 Patrick Palka <ppalka@gcc.gnu.org> 3225 3226 PR c++/70452 3227 * cp-tree.h (class cache_map): Remove. 3228 * constexpr.c (cv_cache): Change type to 3229 GTY((deletable)) hash_map<tree, tree> *. 3230 (maybe_constant_value): Adjust following the change to cv_cache. 3231 (clear_cv_cache): New static function. 3232 (clear_cv_and_fold_caches): Use it. 3233 * cp-gimplify.c (fold_cache): Change type to 3234 GTY((deletable)) hash_map<tree, tree> *. 3235 (clear_fold_cache): Adjust following the change to fold_cache. 3236 (cp_fold): Likewise. 3237 32382016-04-02 Martin Sebor <msebor@redhat.com> 3239 3240 PR c++/67376 3241 PR c++/70170 3242 PR c++/70172 3243 PR c++/70228 3244 * constexpr.c (diag_array_subscript): New function. 3245 (cxx_eval_array_reference): Detect out of bounds array indices. 3246 32472016-04-01 Jason Merrill <jason@redhat.com> 3248 3249 PR c++/70449 3250 PR c++/70344 3251 * pt.c (instantiate_decl): A function isn't fully defined if 3252 DECL_INITIAL is error_mark_node. 3253 * constexpr.c (cxx_eval_call_expression): Likewise. 3254 32552016-04-01 Jakub Jelinek <jakub@redhat.com> 3256 Marek Polacek <polacek@redhat.com> 3257 3258 PR c++/70488 3259 * init.c (warn_placement_new_too_small): Test whether 3260 DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi. 3261 32622016-04-01 Nathan Sidwell <nathan@acm.org> 3263 3264 PR c++/68475 3265 * decl.c (check_redeclaration_exception_specification): Check 3266 regardless of -fno-exceptions. 3267 * typeck2.c (merge_exception_specifiers): Relax assert by checking 3268 flag_exceptions too. 3269 32702016-03-31 Nathan Sidwell <nathan@acm.org> 3271 3272 * decl.c (start_preparsed_function): Remove unnecessary bracing. 3273 (finish_destructor_body): Don't emit operator delete here. 3274 32752016-03-31 Nathan Sidwell <nathan@acm.org> 3276 3277 PR c++/70393 3278 * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR 3279 elements in field order. 3280 32812016-03-31 Marek Polacek <polacek@redhat.com> 3282 3283 PR c/70297 3284 * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN. 3285 32862016-03-31 Richard Biener <rguenther@suse.de> 3287 3288 PR c++/70430 3289 * typeck.c (cp_build_binary_op): Fix operand order of vector 3290 conditional in truth op handling. 3291 32922016-03-29 Jason Merrill <jason@redhat.com> 3293 3294 PR c++/70353 3295 * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics 3296 in constexpr functions. 3297 32982016-03-28 Jason Merrill <jason@redhat.com> 3299 3300 PR c++/70422 3301 PR c++/64266 3302 PR c++/70353 3303 * decl.c, pt.c, constexpr.c: Revert last patch. 3304 33052016-03-25 Jason Merrill <jason@redhat.com> 3306 Martin Liška <mliska@suse.cz> 3307 3308 PR c++/64266 3309 PR c++/70353 3310 Core issue 1962 3311 * decl.c (cp_fname_init): Decay the initializer to pointer. 3312 (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P, 3313 DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. 3314 Don't call cp_finish_decl. 3315 * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR, 3316 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. Don't call cp_finish_decl. 3317 * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: 3318 Handle DECL_VALUE_EXPR. 3319 33202016-03-24 Jason Merrill <jason@redhat.com> 3321 3322 PR c++/70386 3323 * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs. 3324 3325 PR c++/70323 3326 * constexpr.c (cxx_eval_call_expression): Don't cache result if 3327 *overflow_p. 3328 33292016-03-24 Patrick Palka <ppalka@gcc.gnu.org> 3330 3331 PR c++/62212 3332 * tree.c (build_cplus_array_type): Determine type-dependentess 3333 with uses_template_parms instead of with dependent_type_p. 3334 33352016-03-23 Patrick Palka <ppalka@gcc.gnu.org> 3336 3337 PR c++/70347 3338 * typeck.c (process_init_constructor_union): If the initializer 3339 is empty, use the union's NSDMI if it has one. 3340 33412016-03-23 Patrick Palka <ppalka@gcc.gnu.org> 3342 3343 PR c++/70332 3344 * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an 3345 NSDMI that's part of an aggregrate initialization. 3346 33472016-03-23 Jakub Jelinek <jakub@redhat.com> 3348 3349 PR c++/70001 3350 * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers 3351 for 1..max even for multi-dimensional arrays. Call unshare_expr 3352 on it. 3353 3354 PR c++/70323 3355 * constexpr.c (cxx_eval_constant_expression): Diagnose overflow 3356 on TREE_OVERFLOW constants. 3357 3358 PR c++/70376 3359 * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES 3360 for OMP_TASKLOOP here. 3361 (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call 3362 genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY. 3363 33642016-03-23 Alexandre Oliva <aoliva@redhat.com> 3365 Jason Merrill <jason@redhat.com> 3366 Jakub Jelinek <jakub@redhat.com> 3367 3368 PR c++/69315 3369 * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove. 3370 * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove. 3371 (finish_function): Don't set or test them. 3372 * decl2.c (mark_used): Don't handle defer_mark_used_calls. 3373 33742016-03-23 Jason Merrill <jason@redhat.com> 3375 3376 PR c++/70344 3377 * constexpr.c (cxx_eval_call_expression): Catch invalid recursion. 3378 33792016-03-23 Marek Polacek <polacek@redhat.com> 3380 3381 PR c++/69884 3382 * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes. 3383 33842016-03-22 Ilya Enkovich <enkovich.gnu@gmail.com> 3385 3386 * call.c (build_conditional_expr_1): Always use original 3387 condition type for vector type checks and build. 3388 33892016-03-22 Patrick Palka <ppalka@gcc.gnu.org> 3390 3391 PR c++/70096 3392 * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl. 3393 33942016-03-22 Patrick Palka <ppalka@gcc.gnu.org> 3395 3396 PR c++/70204 3397 * constexpr.c (non_const_var_error): Check 3398 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. 3399 34002016-03-21 Richard Henderson <rth@redhat.com> 3401 3402 PR c++/70273 3403 * decl.c (notice_forced_label_r): New. 3404 (cp_finish_decl): Use it. 3405 34062016-03-21 Jason Merrill <jason@redhat.com> 3407 3408 PR c++/70285 3409 * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields. 3410 34112016-03-18 Jason Merrill <jason@redhat.com> 3412 3413 PR c++/70139 3414 * constexpr.c (cxx_eval_call_expression): Fix trivial copy. 3415 3416 PR c++/70147 3417 * class.c (vptr_via_virtual_p): New. 3418 (most_primary_binfo): Factor out of build_rtti_vtbl_entries. 3419 * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear 3420 a vptr from any virtual base in a not-in-charge 'structor. 3421 3422 * decl.c (build_clobber_this): Factor out of 3423 start_preparsed_function and begin_destructor_body. Handle 3424 virtual bases better. 3425 3426 * class.c (build_if_in_charge): Split out from build_base_path. 3427 * init.c (expand_virtual_init, expand_default_init): Use it. 3428 * call.c (build_special_member_call): Use it. 3429 34302016-03-18 Jakub Jelinek <jakub@redhat.com> 3431 3432 PR c++/70267 3433 * init.c (build_new_1): Complain and return error_mark_node 3434 if alloc_fn is not _Jv_AllocObject function returning pointer. 3435 34362016-03-18 Patrick Palka <ppalka@gcc.gnu.org> 3437 3438 PR c++/70205 3439 * search.c (adjust_result_of_qualified_name_lookup): Don't 3440 update the BASELINK_BINFO of DECL if the second call 3441 to lookup_base fails. 3442 34432016-03-18 Patrick Palka <ppalka@gcc.gnu.org> 3444 3445 PR c++/70218 3446 * parser.c (cp_parser_lambda_expression): Move call to 3447 pop_deferring_access_checks ahead of the call to 3448 cp_parser_end_tentative_firewall. 3449 34502016-03-17 Jakub Jelinek <jakub@redhat.com> 3451 3452 PR c++/70144 3453 * cp-tree.h (magic_varargs_p): Return int instead of bool. 3454 * call.c (magic_varargs_p): Return int instead of bool, return 2 for 3455 Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal 3456 varargs. 3457 (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin, 3458 if magic_varargs_p == 1, call decay_conversion 3459 instead of mark_type_use. Don't store error_mark_node arguments to 3460 argarray, instead return error_mark_node. 3461 3462 PR c++/70272 3463 * decl.c (begin_destructor_body): Don't insert clobber if 3464 is_empty_class (current_class_type). 3465 34662016-03-17 Marek Polacek <polacek@redhat.com> 3467 3468 PR c++/70194 3469 * typeck.c (warn_for_null_address): New function. 3470 (cp_build_binary_op): Call it. 3471 34722016-03-16 Jason Merrill <jason@redhat.com> 3473 3474 PR c++/70259 3475 * decl.c (start_preparsed_function): Don't clobber an empty base. 3476 34772016-03-16 Jakub Jelinek <jakub@redhat.com> 3478 3479 PR c++/70147 3480 * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize 3481 BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm. 3482 3483 PR c++/70147 3484 * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily 3485 set in_base_initializer. 3486 34872016-03-15 Marek Polacek <polacek@redhat.com> 3488 3489 PR c++/70209 3490 * tree.c (strip_typedefs): Call strip_typedefs again on the 3491 DECL_ORIGINAL_TYPE result. 3492 34932016-03-15 Jason Merrill <jason@redhat.com> 3494 3495 PR c++/70095 3496 * pt.c (instantiate_decl): Fix call to variable_template_p. 3497 3498 PR c++/70141 3499 * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE. 3500 35012016-03-14 Casey Carter <casey@carter.net> 3502 Jason Merrill <jason@redhat.com> 3503 3504 P0184R0: Generalizing the Range-Based For Loop 3505 * parser.c (cp_convert_range_for): Set the type of __end separately. 3506 (cp_parser_perform_range_for_lookup): Allow different begin/end 3507 types if they are comparable. 3508 35092016-03-12 Patrick Palka <ppalka@gcc.gnu.org> 3510 3511 PR c++/70106 3512 * semantics.c (force_paren_expr): Just build a PAREN_EXPR when 3513 processing_template_decl and EXPR is a SCOPE_REF. 3514 35152016-03-10 Patrick Palka <ppalka@gcc.gnu.org> 3516 Jakub Jelinek <jakub@redhat.com> 3517 3518 PR c++/70001 3519 * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse 3520 return value from cxx_eval_constant_expression from earlier 3521 elements if it is valid constant initializer requiring no 3522 relocations. 3523 35242016-03-10 Marek Polacek <polacek@redhat.com> 3525 3526 PR c++/70153 3527 * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR. 3528 35292016-03-09 Cesar Philippidis <cesar@codesourcery.com> 3530 3531 * parser.c (cp_parser_oacc_loop): Update cclauses and clauses 3532 when calling c_finish_omp_clauses. 3533 35342016-03-08 Jason Merrill <jason@redhat.com> 3535 3536 * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful 3537 diagnostic for use of "concept". 3538 (cp_parser_requires_clause_opt): And "requires". 3539 (cp_parser_type_parameter, cp_parser_late_return_type_opt) 3540 (cp_parser_explicit_template_declaration): Adjust. 3541 * Make-lang.in (check-c++-all): Add "concepts" to std list. 3542 3543 P0036R0: Unary Folds and Empty Parameter Packs 3544 * pt.c (expand_empty_fold): Remove special cases for *,+,&,|. 3545 35462016-03-08 Jakub Jelinek <jakub@redhat.com> 3547 3548 PR c++/70135 3549 * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs 3550 even after the last iteration of the loop. 3551 3552 * decl.c (duplicate_decls): Fix spelling - becuase -> because. 3553 35542016-03-07 Patrick Palka <ppalka@gcc.gnu.org> 3555 3556 PR c++/66786 3557 * pt.c (get_template_info): Handle PARM_DECL. 3558 (template_class_depth): Check DECL_P instead of 3559 VAR_OR_FUNCTION_DECL_P. 3560 35612016-03-05 Jason Merrill <jason@redhat.com> 3562 3563 PR c++/67364 3564 * constexpr.c (cxx_eval_store_expression): Replace 3565 CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too. 3566 35672016-03-05 Patrick Palka <ppalka@gcc.gnu.org> 3568 3569 PR c++/66786 3570 * pt.c (template_class_depth): Given a lambda type, iterate 3571 into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its 3572 TYPE_CONTEXT. Given a VAR_DECL, iterate into its 3573 CP_DECL_CONTEXT. 3574 35752016-03-04 Jason Merrill <jason@redhat.com> 3576 3577 PR c++/69203 3578 * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New. 3579 * init.c (build_vec_delete_1): Set it. 3580 * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it. 3581 35822016-03-04 Jakub Jelinek <jakub@redhat.com> 3583 3584 * decl.c (start_preparsed_function): Don't emit start clobber at the 3585 start of constructor clones. 3586 3587 PR c++/70035 3588 * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype. 3589 * decl.c (start_preparsed_function): Call 3590 cp_ubsan_maybe_initialize_vtbl_ptrs if needed. 3591 * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs, 3592 cp_ubsan_maybe_initialize_vtbl_ptrs): New functions. 3593 35942016-03-04 Jason Merrill <jason@redhat.com> 3595 3596 PR c++/67364 3597 * constexpr.c (cxx_eval_component_reference): Further tweak. 3598 3599 * constexpr.c (struct constexpr_ctx): Add save_exprs field. 3600 (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping. 3601 (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set. 3602 (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize. 3603 3604 PR c++/70067 3605 * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the 3606 same type. 3607 36082016-03-03 Jason Merrill <jason@redhat.com> 3609 3610 * method.c (synthesized_method_walk): operator= can also be constexpr. 3611 3612 * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get 3613 LAMBDA_EXPR_RETURN_TYPE from the instantiated closure. 3614 3615 PR c++/67164 3616 * pt.c (copy_template_args): New. 3617 (tsubst_pack_expansion): Use it. 3618 3619 * call.c (build_aggr_conv): Use get_nsdmi. 3620 3621 PR c++/51406 3622 * typeck.c (build_static_cast_1): Avoid folding back to lvalue. 3623 3624 PR c++/67364 3625 * constexpr.c (cxx_eval_component_reference): Just return an empty 3626 CONSTRUCTOR for an empty class. 3627 36282016-03-01 Jason Merrill <jason@redhat.com> 3629 3630 PR c++/70036 3631 * parser.c (cp_parser_requires_clause): Call 3632 check_for_bare_parameter_packs. 3633 3634 PR c++/51489 3635 * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT 3636 the operands. 3637 3638 PR c++/69995 3639 * constexpr.c (cxx_eval_call_expression): Unshare arg. 3640 (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init. 3641 [TARGET_EXPR]: Unshare init. 3642 36432016-03-01 Patrick Palka <ppalka@gcc.gnu.org> 3644 3645 PR c++/68948 3646 PR c++/69961 3647 * pt.c (tsubst_baselink): Reinstate the check for an invalid 3648 constructor call. 3649 36502016-02-28 Jason Merrill <jason@redhat.com> 3651 3652 PR c++/69995 3653 * constexpr.c (cxx_eval_store_expression): Unshare init. 3654 36552016-02-26 Jason Merrill <jason@redhat.com> 3656 3657 PR c++/69958 3658 * pt.c (make_argument_pack): New. 3659 (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion. 3660 (tsubst_copy_and_build): Likewise. 3661 36622016-02-25 Jason Merrill <jason@redhat.com> 3663 3664 PR c++/69889 3665 * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New. 3666 * tree.c (build_aggr_init_expr): Set it. 3667 * semantics.c (simplify_aggr_init_expr): Check it. 3668 * cp-gimplify.c (cp_genericize_r): Don't walk into 3669 a call/aggr_init from a thunk. 3670 3671 PR c++/69842 3672 * method.c (forward_parm): Handle parameter packs. 3673 * lambda.c (maybe_add_lambda_conv_op): Use it for them. 3674 3675 PR c++/67364 3676 * constexpr.c (cxx_eval_component_reference): Don't complain about 3677 unevaluated empty classes. 3678 3679 PR c++/68049 3680 * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE. 3681 36822016-02-25 Patrick Palka <ppalka@gcc.gnu.org> 3683 3684 PR c++/69736 3685 * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation. 3686 (maybe_undo_parenthesized_ref): Declare. 3687 * semantics.c (maybe_undo_parenthesized_ref): Split out from 3688 check_return_expr. 3689 (finish_call_expr): Use it. 3690 * typeck.c (check_return_expr): Use it. 3691 * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the 3692 REF_PARENTHESIZED_P flag. 3693 36942016-02-24 Jakub Jelinek <jakub@redhat.com> 3695 3696 PR c++/69922 3697 * class.c (build_base_path): Set TREE_NO_WARNING on the null_test. 3698 Avoid folding it. 3699 * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL 3700 tests. 3701 * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL, 3702 unless they are folded into INTEGER_CST, error_mark_node or some 3703 comparison with NULL, avoid folding them and use either the original 3704 comparison or non-folded comparison of folded arguments. 3705 * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the 3706 comparison, don't fold the comparison right away. 3707 37082016-02-24 Jason Merrill <jason@redhat.com> 3709 3710 PR c++/69323 3711 * friend.c (make_friend_class): Likewise. 3712 * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend. 3713 37142016-02-24 Jason Merrill <jason@redhat.com> 3715 3716 PR c++/69323 3717 * pt.c (instantiate_class_template_1): Set 3718 processing_template_decl before substituting friend_type. 3719 3720016-02-24 Martin Sebor <msebor@redhat.com> 3721 3722 PR c++/69912 3723 * tree.c (build_ctor_subob_ref): Compare types' main variants 3724 instead of the types as they are. 3725 37262016-02-24 Jason Merrill <jason@redhat.com> 3727 3728 * decl.c (start_preparsed_function): Condition ctor clobber on 3729 flag_lifetime_dse > 1. 3730 3731 * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline. 3732 37332016-02-19 Jason Merrill <jason@redhat.com> 3734 3735 PR c++/69743 3736 * call.c (remaining_arguments): No longer static. 3737 * cp-tree.h: Declare it. 3738 * pt.c (more_specialized_fn): Use it. 3739 37402016-02-19 Jakub Jelinek <jakub@redhat.com> 3741 Bernd Edlinger <bernd.edlinger@hotmail.de> 3742 3743 * Make-lang.in: Invoke gperf with -L C++. 3744 * cfns.gperf: Remove prototypes for hash and libc_name_p 3745 inlines. 3746 * cfns.h: Regenerated. 3747 * except.c (nothrow_libfn_p): Adjust. 3748 37492016-02-19 Jakub Jelinek <jakub@redhat.com> 3750 3751 PR c++/69850 3752 * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use 3753 NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR. 3754 37552016-02-19 Patrick Palka <ppalka@gcc.gnu.org> 3756 3757 PR c++/68948 3758 * pt.c (tsubst_baselink): Don't diagnose an invalid constructor 3759 call here. 3760 * semantics.c (finish_call_expr): Don't assume a constructor 3761 call is dependent if only the "this" pointer is dependent. When 3762 building a constructor call, always use a dummy object. 3763 37642016-02-19 Jakub Jelinek <jakub@redhat.com> 3765 3766 PR c++/69850 3767 * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR 3768 condition. 3769 * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary 3770 operators if folding preserved the binop, just with different 3771 arguments. 3772 3773 PR c++/67767 3774 * parser.c (cp_parser_std_attribute_spec_seq): Don't assume 3775 attr_spec is always single element chain, chain all the attributes 3776 properly together in the right order. 3777 37782016-02-18 Jason Merrill <jason@redhat.com> 3779 3780 * mangle.c (maybe_check_abi_tags): Add for_decl parm. Call 3781 mangle_decl. 3782 (mangle_decl): Call maybe_check_abi_tags for function scope. 3783 (mangle_guard_variable): Call maybe_check_abi_tags here. 3784 (write_guarded_var_name): Not here. 3785 37862016-02-17 Jason Merrill <jason@redhat.com> 3787 3788 PR c++/65985 3789 * constexpr.c (build_constexpr_constructor_member_initializers): 3790 Handle an additional STATEMENT_LIST. 3791 3792 PR c++/68585 3793 * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection. 3794 3795 PR c++/68679 3796 * decl2.c (reset_type_linkage_2): Look through member templates. 3797 37982016-02-17 Jakub Jelinek <jakub@redhat.com> 3799 3800 PR c++/69850 3801 * init.c (build_delete): Set TREE_NO_WARNING on ifexp. 3802 38032016-02-17 Jason Merrill <jason@redhat.com> 3804 3805 PR c++/69842 3806 * method.c (forward_parm): Split out from... 3807 (add_one_base_init): ...here. 3808 * lambda.c (maybe_add_lambda_conv_op): Use it. 3809 38102016-02-16 Jason Merrill <jason@redhat.com> 3811 3812 PR c++/10200 3813 PR c++/69753 3814 * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c, 3815 tree.c, typeck2.c: Revert earlier changes. 3816 * parser.c (cp_parser_lookup_name): Ignore namespace-scope 3817 non-type templates after -> or . 3818 38192016-02-16 Jakub Jelinek <jakub@redhat.com> 3820 3821 PR c/69835 3822 * typeck.c (cp_build_binary_op): Revert 2015-09-09 change. 3823 38242016-02-16 Jason Merrill <jason@redhat.com> 3825 3826 PR c++/69657 3827 * name-lookup.c (lookup_qualified_name): Add find_hidden parm. 3828 (set_decl_namespace): Pass it. Complain about finding a hidden friend. 3829 * name-lookup.h: Adjust. 3830 38312016-02-16 James Norris <jnorris@codesourcery.com> 3832 3833 * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking. 3834 * semantics.c (finish_omp_clauses): Add deviceptr checking. 3835 38362016-02-15 Jakub Jelinek <jakub@redhat.com> 3837 3838 PR c++/69658 3839 * init.c (expand_default_init): Only call reshape_init 3840 in the direct-initialization from an initializer list case. 3841 38422016-02-15 Jason Merrill <jason@redhat.com> 3843 3844 PR c++/69753 3845 * semantics.c (finish_call_expr): Implicit 'this' does not make 3846 the call dependent. 3847 * search.c (any_dependent_bases_p): Split out... 3848 * name-lookup.c (do_class_using_decl): ...from here. 3849 * call.c (build_new_method_call_1): Don't complain about missing object 3850 if there are dependent bases. Tweak error. 3851 * tree.c (non_static_member_function_p): Remove. 3852 * pt.c (type_dependent_expression_p): A member template of a 3853 dependent type is dependent. 3854 * cp-tree.h: Adjust. 3855 3856 PR c++/68890 3857 * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check. 3858 38592016-02-12 Patrick Palka <ppalka@gcc.gnu.org> 3860 3861 PR c++/69098 3862 * pt.c (lookup_and_finish_template_variable): New function, 3863 extracted from ... 3864 (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here. Use it. 3865 (tsubst_qualified_id): Consider that EXPR might be a variable 3866 template. 3867 * typeck.c (check_template_keyword): Don't emit an error 3868 if DECL is a variable template. 3869 38702016-02-12 Jakub Jelinek <jakub@redhat.com> 3871 3872 * error.c: Spelling fixes - behaviour -> behavior and 3873 neighbour -> neighbor. 3874 * decl.c: Likewise. 3875 * typeck.c (cp_build_binary_op): Fix up behavior spelling in 3876 diagnostics. 3877 * init.c (build_delete): Likewise. 3878 38792016-02-11 Jakub Jelinek <jakub@redhat.com> 3880 3881 PR c/69768 3882 * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop 3883 arguments for -Waddress warning. Fix up formatting. 3884 38852016-02-11 Paolo Carlini <paolo.carlini@oracle.com> 3886 3887 PR c++/68726 3888 * pt.c (lookup_template_class_1): Check tsubst return value for 3889 error_mark_node. 3890 38912016-02-10 Jason Merrill <jason@redhat.com> 3892 3893 PR c++/68926 3894 * pt.c (resolve_nondeduced_context): Add complain parm. 3895 (do_auto_deduction): Pass it. 3896 * cvt.c (convert_to_void): Likewise. 3897 * decl.c (cp_finish_decl): Likewise. 3898 * init.c (build_new): Likewise. 3899 * rtti.c (get_tinfo_decl_dynamic): Likewise. 3900 * semantics.c (finish_decltype_type): Likewise. 3901 * typeck.c (decay_conversion): Likewise. 3902 * cp-tree.h: Adjust declaration. 3903 * call.c (standard_conversion): Add complain parm, pass it along. 3904 (implicit_conversion): Pass it. 3905 3906 PR c++/69657 3907 * name-lookup.c (ambiguous_decl): Call remove_hidden_names. 3908 (lookup_name_real_1): Likewise. 3909 (remove_hidden_names): Handle non-functions too. 3910 3911 PR c++/10200 3912 * parser.c (cp_parser_lookup_name): When looking for a template 3913 after . or ->, only consider class templates. 3914 (cp_parser_postfix_dot_deref_expression): Handle the current 3915 instantiation. Remember a dependent object expression. 3916 * typeck2.c (build_x_arrow): Handle the current instantiation. 3917 3918 * ptree.c (debug_tree): Implement for cp_expr. 3919 39202016-02-08 Patrick Palka <ppalka@gcc.gnu.org> 3921 3922 PR c++/69139 3923 * parser.c (cp_parser_simple_type_specifier): Make the check 3924 for disambiguating between an 'auto' placeholder and an implicit 3925 template parameter more robust. 3926 39272016-02-08 Patrick Palka <ppalka@gcc.gnu.org> 3928 3929 PR c++/69283 3930 PR c++/67835 3931 * decl2.c (mark_used): When given a TEMPLATE_DECL, return after 3932 setting its TREE_USED flag. 3933 39342016-02-08 Jason Merrill <jason@redhat.com> 3935 3936 PR c++/69657 3937 * name-lookup.c (do_nonmember_using_decl): Leave anticipated 3938 built-ins alone. 3939 39402016-02-08 Jakub Jelinek <jakub@redhat.com> 3941 3942 PR c++/59627 3943 * parser.c (cp_parser_omp_declare_reduction): Set assembler name 3944 of the DECL_OMP_DECLARE_REDUCTION_P decls. 3945 39462016-02-08 Marek Polacek <polacek@redhat.com> 3947 3948 PR c++/69688 3949 * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache. 3950 Call clear_fold_cache. 3951 * cp-tree.h: Adjust declaration. 3952 * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches 3953 rather than clear_cv_cache and clear_fold_cache. 3954 * typeck2.c (store_init_value): Call clear_cv_and_fold_caches. 3955 39562016-02-08 Jason Merrill <jason@redhat.com> 3957 3958 * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New. 3959 * cvt.c (convert): Pass CONV_BACKEND_CONVERT. 3960 (ocp_convert): Use *_maybe_fold. 3961 (cp_convert_to_pointer): Add dofold parameter. 3962 * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert. 3963 39642016-02-05 Martin Sebor <msebor@redhat.com> 3965 3966 PR c++/69662 3967 * init.c (find_field_init): New function. 3968 (warn_placement_new_too_small): Call it. Handle one-element arrays 3969 at ends of structures special. 3970 39712016-02-05 Jason Merrill <jason@redhat.com> 3972 3973 PR c++/68948 3974 * semantics.c (finish_expr_stmt): If expr is error_mark_node, 3975 make sure we've seen_error(). 3976 39772016-02-05 Patrick Palka <ppalka@gcc.gnu.org> 3978 3979 PR c++/68948 3980 * pt.c (tsubst_baselink): Diagnose an invalid constructor call 3981 if lookup_fnfields returns NULL_TREE and the name being looked 3982 up has the form A::A. 3983 39842016-02-04 Patrick Palka <ppalka@gcc.gnu.org> 3985 3986 * constexpr.c (cxx_eval_binary_expression): Fold equality 3987 comparisons involving PTRMEM_CSTs. 3988 39892016-02-04 Jakub Jelinek <jakub@redhat.com> 3990 3991 * class.c (find_flexarrays): Don't declare dom variable. 3992 (diagnose_flexarray): Likewise. 3993 39942016-02-02 Martain Sebor <msebor@redhat.com> 3995 3996 PR c++/69251 3997 PR c++/69253 3998 PR c++/69290 3999 PR c++/69277 4000 PR c++/69349 4001 * class.c (walk_subobject_offsets): Avoid testing the upper bound 4002 of a flexible array member for equality to null. 4003 (find_flexarrays): Remove spurious whitespace introduced in r231665. 4004 (diagnose_flexarrays): Avoid checking the upper bound of arrays. 4005 (check_flexarrays): Same. 4006 * decl.c (compute_array_index_type): Avoid special case for flexible 4007 array members. 4008 (grokdeclarator): Avoid calling compute_array_index_type for flexible 4009 array members. 4010 * error.c (dump_type_suffix): Revert changes introduced in r231665 4011 and rendered unnecessary by the changes above. 4012 * pt.c (tsubst): Same. 4013 * tree.c (build_ctor_subob_ref): Handle flexible array members. 4014 * typeck2.c (digest_init_r): Revert changes introduced in r231665. 4015 (process_init_constructor_array): Same. 4016 (process_init_constructor_record): Same. 4017 40182016-02-03 Patrick Palka <ppalka@gcc.gnu.org> 4019 4020 PR c++/69056 4021 * pt.c (try_one_overload): Handle comparing argument packs so 4022 that there is no conflict if we deduced more arguments of an 4023 argument pack than were explicitly specified. 4024 40252016-01-31 Jakub Jelinek <jakub@redhat.com> 4026 Jason Merrill <jason@redhat.com> 4027 4028 PR c++/68763 4029 * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new 4030 function type if nothing is changing. 4031 40322016-01-31 Jason Merrill <jason@redhat.com> 4033 4034 PR c++/69009 4035 * pt.c (partial_specialization_p, impartial_args): New. 4036 (instantiate_decl): Call impartial_args. 4037 4038 * mangle.c (maybe_check_abi_tags): New. 4039 (write_guarded_var_name): Call it. 4040 (mangle_ref_init_variable): Call check_abi_tags. 4041 4042 * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES 4043 between template and instantiation. 4044 40452016-01-29 Jakub Jelinek <jakub@redhat.com> 4046 4047 PR debug/66869 4048 * decl.c (wrapup_globals_for_namespace): Warn about unused static 4049 function declarations. 4050 40512016-01-29 Marek Polacek <polacek@redhat.com> 4052 4053 PR c++/69509 4054 PR c++/69516 4055 * constexpr.c (cxx_eval_array_reference): Give the "array subscript 4056 out of bound" error earlier. 4057 * init.c (build_vec_init): Change NE_EXPR into GT_EXPR. Update the 4058 commentary. 4059 40602016-01-29 Patrick Palka <ppalka@gcc.gnu.org> 4061 4062 * name-lookup.c (begin_scope): After reusing a cp_binding_level 4063 structure, update free_binding_level before the structure's 4064 level_chain field gets cleared, not after. 4065 40662016-01-28 Jason Merrill <jason@redhat.com> 4067 4068 PR c++/67407 4069 * search.c (dfs_walk_once, dfs_walk_once_r) 4070 (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use 4071 hash_set instead of BINFO_MARKED. 4072 (dfs_unmark_r): Remove. 4073 40742016-01-28 Patrick Palka <ppalka@gcc.gnu.org> 4075 4076 PR c++/24208 4077 * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro. 4078 (cp_lexer_debugging_p): Use it. 4079 (cp_lexer_start_debugging): Likewise. 4080 (cp_lexer_stop_debugging): Likewise. 4081 40822016-01-27 Marek Polacek <polacek@redhat.com> 4083 4084 PR c/68062 4085 * typeck.c (cp_build_binary_op): Promote operand to unsigned, if 4086 needed. Add -Wsign-compare warning. 4087 40882016-01-27 Ryan Burn <contact@rnburn.com> 4089 4090 PR cilkplus/69267 4091 * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed 4092 superfluous post_p argument in call to 4093 cilk_gimplify_call_params_in_spawned_fn. 4094 40952016-01-27 Marek Polacek <polacek@redhat.com> 4096 4097 PR c++/69379 4098 * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs 4099 wrapped in NOP_EXPRs. 4100 41012016-01-27 Martin Sebor <msebor@redhat.com> 4102 4103 PR c++/69317 4104 * mangle.c (mangle_decl): Reference the correct (saved) version 4105 of the ABI in -Wabi diagnostics. 4106 41072016-01-27 Marek Polacek <polacek@redhat.com> 4108 4109 PR c++/69496 4110 * constexpr.c (cxx_eval_array_reference): Evaluate the number of 4111 elements of the array. 4112 41132016-01-26 Jason Merrill <jason@redhat.com> 4114 4115 PR c++/68949 4116 * constexpr.c (register_constexpr_fundef): Keep the un-massaged body. 4117 (cxx_eval_call_expression): Don't look through clones. 4118 * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias. 4119 * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of 4120 maybe-in-charge *tor. 4121 41222016-01-26 Jason Merrill <jason@redhat.com> 4123 4124 PR c++/68782 4125 * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT 4126 and TREE_SIDE_EFFECTS. 4127 (cxx_eval_constant_expression) [CONSTRUCTOR]: Call 4128 verify_constructor_flags. 4129 41302016-01-26 Jakub Jelinek <jakub@redhat.com> 4131 4132 PR c++/68357 4133 * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node, 4134 return error_mark_node instead of building trees with error_mark_node 4135 operands. 4136 41372016-01-26 David Malcolm <dmalcolm@redhat.com> 4138 4139 PR other/69006 4140 * error.c (print_instantiation_partial_context_line): Add missing 4141 newlines from output for the t == NULL case. 4142 (print_instantiation_partial_context): Remove call to pp_newline. 4143 41442016-01-24 Patrick Palka <ppalka@gcc.gnu.org> 4145 4146 Revert: 4147 2016-01-18 Patrick Palka <ppalka@gcc.gnu.org> 4148 4149 PR c++/11858 4150 PR c++/24663 4151 PR c++/24664 4152 * decl.c (grokdeclarator): Don't decay array parameter type to 4153 a pointer type if it's dependent. 4154 (grokparms): Invoke strip_top_quals instead of directly invoking 4155 cp_build_qualified_type. 4156 * pt.c (decay_dependent_array_parm_type): New static function. 4157 (type_unification_real): Call decay_dependent_array_parm_type 4158 to decay a dependent array parameter type to its corresponding 4159 pointer type before unification. 4160 (more_specialized_fn): Likewise. 4161 (get_bindings): Likewise. 4162 * tree.c (cp_build_qualified_type): Trivial typofix in 4163 documentation. 4164 41652016-01-23 Martin Sebor <msebor@redhat.com> 4166 4167 PR c++/58109 4168 PR c++/69022 4169 * decl2.c (is_late_template_attribute): Handle dependent argument 4170 to attribute align and attribute vector_size. 4171 41722016-01-21 Jason Merrill <jason@redhat.com> 4173 4174 PR c++/69392 4175 * lambda.c (lambda_capture_field_type): Handle 'this' specially 4176 for init-capture, too. 4177 4178 PR c++/65687 4179 * decl.c (type_is_deprecated): Don't look into a typedef. 4180 4181 PR c++/40751 4182 PR c++/64987 4183 * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN. 4184 4185 PR c++/43407 4186 * decl.c (start_enum): Add attributes parameter. 4187 * parser.c (cp_parser_enum_specifier): Pass it. 4188 * pt.c (lookup_template_class_1): Pass it. 4189 * cp-tree.h: Adjust. 4190 41912016-01-19 Jason Merrill <jason@redhat.com> 4192 4193 PR c++/59759 4194 * pt.c (convert_template_argument): Handle VAR_DECL properly. 4195 41962016-01-19 Marek Polacek <polacek@redhat.com> 4197 4198 PR c++/68586 4199 * constexpr.c (clear_cv_cache): New. 4200 * cp-gimplify.c (clear_fold_cache): New. 4201 * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare. 4202 * decl.c (finish_enum_value_list): Call them. 4203 4204 PR c++/68965 4205 * pt.c (tsubst_copy): Mark elements in expanded vector as used. 4206 42072016-01-18 Patrick Palka <ppalka@gcc.gnu.org> 4208 4209 PR c++/11858 4210 PR c++/24663 4211 PR c++/24664 4212 * decl.c (grokdeclarator): Don't decay array parameter type to 4213 a pointer type if it's dependent. 4214 (grokparms): Invoke strip_top_quals instead of directly invoking 4215 cp_build_qualified_type. 4216 * pt.c (decay_dependent_array_parm_type): New static function. 4217 (type_unification_real): Call decay_dependent_array_parm_type 4218 to decay a dependent array parameter type to its corresponding 4219 pointer type before unification. 4220 (more_specialized_fn): Likewise. 4221 (get_bindings): Likewise. 4222 * tree.c (cp_build_qualified_type): Trivial typofix in 4223 documentation. 4224 42252016-01-18 Jason Merrill <jason@redhat.com> 4226 4227 * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input. 4228 4229 * cp-gimplify.c (cp_fold): Remove unnecessary special cases. 4230 4231 PR c++/68767 4232 * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify. Do fold COND_EXPR. 4233 (contains_label_1, contains_label_p): Remove. 4234 42352016-01-16 Patrick Palka <ppalka@gcc.gnu.org> 4236 4237 PR c++/69091 4238 * pt.c (type_dependent_expression_p): For a function template 4239 specialization, a type is dependent iff any of its template 4240 arguments are. 4241 42422016-01-16 Patrick Palka <ppalka@gcc.gnu.org> 4243 4244 * cp-array-notation.c (cp_expand_cond_array_notations): Return 4245 error_mark_node only if find_rank failed, not if it was 4246 successful. 4247 42482016-01-16 Patrick Palka <ppalka@gcc.gnu.org> 4249 4250 PR c++/68936 4251 * tree.c (build_min_non_dep_call_vec): Don't retain the 4252 KOENIG_LOOKUP_P flag of the non-dependent expression that's 4253 been built. 4254 (build_min_non_dep_op_overload): Instead, do it here. 4255 42562016-01-15 Jakub Jelinek <jakub@redhat.com> 4257 4258 PR bootstrap/68271 4259 * parser.h (cp_token): Remove pragma_kind field. Add comment 4260 with number of unused bits. 4261 * parser.c (eof_token): Remove pragma_kind field initializer. 4262 (cp_lexer_get_preprocessor_token): Don't set pragma_kind 4263 field, don't clear CPP_PRAGMA u.value. 4264 (cp_parser_pragma_kind): New function. 4265 (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel, 4266 cp_parser_omp_construct, cp_parser_initial_pragma, 4267 cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing 4268 pragma_kind field. 4269 42702016-01-15 Jason Merrill <jason@redhat.com> 4271 4272 PR c++/68847 4273 * call.c (build_cxx_call): Use fold_non_dependent_expr. 4274 4275 * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of 4276 value. 4277 4278 PR c++/69257 4279 * typeck.c (decay_conversion): Don't call mark_rvalue_use for 4280 array/function-to-pointer conversion. Call 4281 complete_type_or_maybe_complain for lvalue-to-rvalue conversion. 4282 * call.c (convert_like_real): Print call context if 4283 decay_conversion errors. 4284 42852016-01-14 Tom de Vries <tom@codesourcery.com> 4286 4287 PR tree-optimization/68773 4288 * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't 4289 set force_output. 4290 42912016-01-14 Jason Merrill <jason@redhat.com> 4292 4293 PR c++/69261 4294 * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR. 4295 42962016-01-12 Marek Polacek <polacek@redhat.com> 4297 4298 PR c++/68979 4299 * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than 4300 error_at and adjust the return value. 4301 43022016-01-12 Jakub Jelinek <jakub@redhat.com> 4303 4304 PR objc++/68511 4305 PR c++/69213 4306 * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return 4307 GS_ERROR whenever seen_error (), only if *expr_p contains 4308 cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed. 4309 4310 PR c++/66808 4311 PR c++/69000 4312 * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO. 4313 43142016-01-11 Jason Merrill <jason@redhat.com> 4315 4316 PR c++/69131 4317 * method.c (walk_field_subobs): Add dtor_from_ctor parm. 4318 (process_subob_fn): Likewise. Don't consider triviality if true. 4319 (synthesize_method_walk): Pass it. 4320 43212016-01-11 David Malcolm <dmalcolm@redhat.com> 4322 4323 PR c++/68795 4324 * parser.c (cp_parser_postfix_expression): Initialize 4325 close_paren_loc to UNKNOWN_LOCATION; only use it if 4326 it has been written to by 4327 cp_parser_parenthesized_expression_list. 4328 (cp_parser_parenthesized_expression_list): Document the behavior 4329 with respect to the CLOSE_PAREN_LOC param. 4330 43312016-01-11 Jakub Jelinek <jakub@redhat.com> 4332 4333 PR c++/69211 4334 * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR 4335 folded operands have side-effects, but folding changed any of them, 4336 build a new tree with the folded operands instead of returning the 4337 unfolded tree. 4338 43392016-01-09 Marek Polacek <polacek@redhat.com> 4340 4341 PR c++/69113 4342 * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set. 4343 43442016-01-09 Jakub Jelinek <jakub@redhat.com> 4345 4346 PR c++/69164 4347 * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs. 4348 43492016-01-08 Jason Merrill <jason@redhat.com> 4350 4351 PR c++/69158 4352 * constexpr.c (cxx_fold_indirect_ref): Handle array type differing 4353 in completion. 4354 43552016-01-08 Marek Polacek <polacek@redhat.com> 4356 4357 PR c++/68449 4358 * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer. 4359 43602016-01-08 Jason Merrill <jason@redhat.com> 4361 4362 * constexpr.c (cxx_eval_call_expression): Remove convert_to_void 4363 workaround. 4364 4365 PR c++/68983 4366 PR c++/67557 4367 * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of 4368 TREE_ADDRESSABLE type. 4369 4370 PR c++/68983 4371 PR c++/67557 4372 * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR. 4373 43742016-01-05 Nathan Sidwell <nathan@acm.org> 4375 4376 PR c++/58583 4377 * pt.c (build_non_dependent_expr): Don't try a checking fold when 4378 parsing an nsdmi. 4379 43802016-01-04 Jakub Jelinek <jakub@redhat.com> 4381 4382 Update copyright years. 4383 4384Copyright (C) 2016 Free Software Foundation, Inc. 4385 4386Copying and distribution of this file, with or without modification, 4387are permitted in any medium without royalty provided the copyright 4388notice and this notice are preserved. 4389