| 2018-12-27 Martin Liska <mliska@suse.cz> |
| |
| PR c++/88263 |
| * decl2.c (get_local_tls_init_fn): Add location_t argument and |
| use it. |
| (get_tls_init_fn): Call it with location of variable for which |
| we'll need to create tls_init function. |
| (handle_tls_init): Likewise. |
| |
| 2018-12-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86524 |
| PR c++/88446 |
| * cp-tree.h (cp_fold_maybe_rvalue, cp_fold_rvalue): Declare. |
| (fold_non_dependent_expr): Add manifestly_const_eval argument. |
| * constexpr.c (cxx_eval_builtin_function_call): Evaluate |
| __builtin_constant_p if ctx->manifestly_const_eval even in constexpr |
| functions. Don't reuse dummy{1,2} vars between different arguments. |
| Use cp_fold_rvalue instead of cp_fully_fold. Fix comment typo. |
| (fold_non_dependent_expr): Add manifestly_const_eval argument, pass |
| it through to cxx_eval_outermost_constant_expr and |
| maybe_constant_value. |
| * cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): No longer |
| static. |
| * semantics.c (finish_static_assert): Call fold_non_dependent_expr |
| with true as manifestly_const_eval. |
| |
| 2018-12-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/88196 - ICE with class non-type template parameter. |
| * pt.c (convert_nontype_argument): If the expr is a PTRMEM_CST, also |
| check if the type we're converting it to is TYPE_PTRMEM_P. |
| |
| 2018-12-20 H.J. Lu <hongjiu.lu@intel.com> |
| |
| PR c/51628 |
| * call.c (convert_for_arg_passing): Call |
| warn_for_address_or_pointer_of_packed_member. |
| * typeck.c (convert_for_assignment): Likewise. |
| |
| 2018-12-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88180 |
| * parser.c (cp_parser_class_specifier_1): If |
| cp_parser_check_type_definition fails, skip default arguments, NSDMIs, |
| etc. like for erroneous template args. |
| |
| * cp-tree.h (cp_fully_fold_init): Declare. |
| * cp-gimplify.c (cp_fully_fold_init): New function. |
| * typeck2.c (split_nonconstant_init, store_init_value): Use it |
| instead of cp_fully_fold. |
| |
| 2018-12-19 Segher Boessenkool <segher@kernel.crashing.org> |
| |
| * parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers |
| on top-level asm. |
| |
| 2018-12-19 Segher Boessenkool <segher@kernel.crashing.org> |
| |
| * parser.c (cp_parser_asm_definition) <RID_CONST, RID_RESTRICT>: Give |
| a more specific error message (instead of just falling through). |
| |
| 2018-12-19 Segher Boessenkool <segher@kernel.crashing.org> |
| |
| * parser.c (cp_parser_asm_definition): Rewrite the loop to work without |
| "done" boolean variable. |
| * parser.c (cp_parser_asm_definition): Keep track of the location each |
| asm qualifier is first seen; use that to give nicer "duplicate asm |
| qualifier" messages. |
| |
| 2018-12-19 Segher Boessenkool <segher@kernel.crashing.org> |
| |
| * parser.c (cp_parser_asm_definition): Rewrite the loop to work without |
| "done" boolean variable. |
| |
| 2018-12-19 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/88375 |
| * typeck.c (convert_for_assignment): Capture location of rhs |
| before stripping, and if available. Use the location when |
| complaining about bad conversions, labelling it with the |
| rhstype if the location was present. |
| * typeck2.c (digest_init_r): Capture location of init before |
| stripping. |
| |
| 2018-12-19 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/87504 |
| * call.c (op_error): Convert 1st param from location_t to |
| const op_location_t &. Use binary_op_rich_location for binary |
| ops. |
| (build_conditional_expr_1): Convert 1st param from location_t to |
| const op_location_t &. |
| (build_conditional_expr): Likewise. |
| (build_new_op_1): Likewise. |
| (build_new_op): Likewise. |
| * cp-tree.h (build_conditional_expr): Likewise. |
| (build_new_op): Likewise. |
| (build_x_binary_op): Likewise. |
| (cp_build_binary_op): Likewise. |
| * parser.c (cp_parser_primary_expression): Build a location |
| for id-expression nodes. |
| (cp_parser_binary_expression): Use an op_location_t when |
| calling build_x_binary_op. |
| (cp_parser_operator): Build a location for user-defined literals. |
| * typeck.c (build_x_binary_op): Convert 1st param from location_t |
| to const op_location_t &. |
| (cp_build_binary_op): Likewise. Use binary_op_rich_location. |
| |
| 2018-12-19 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/43064 |
| PR c++/43486 |
| * call.c (build_conditional_expr_1): Strip location wrappers when |
| checking for CONST_DECL. |
| (conversion_null_warnings): Use location of "expr" if available. |
| * class.c (fixed_type_or_null): Handle location wrappers. |
| * constexpr.c (potential_constant_expression_1): Likewise. |
| * cvt.c (ignore_overflows): Strip location wrappers when |
| checking for INTEGER_CST, and re-wrap the result if present. |
| (ocp_convert): Call fold_for_warn before checking for INTEGER_CST. |
| * decl.c (reshape_init_r): Strip any location wrapper. |
| (undeduced_auto_decl): Likewise. |
| * expr.c (mark_discarded_use): Likewise for expr. |
| * init.c (build_aggr_init): Likewise before checking init for |
| DECL_P. |
| (warn_placement_new_too_small): Call fold_for_warn on adj before |
| checking for CONSTANT_CLASS_P, and on nelts. Strip any location |
| wrapper from op0 and on oper before checking for VAR_P. |
| * parser.c (cp_parser_primary_expression): Call |
| maybe_add_location_wrapper on numeric and string literals. |
| (cp_parser_postfix_expression): Strip any location wrapper when |
| checking for DECL_IS_BUILTIN_CONSTANT_P. |
| (cp_parser_unary_expression): Ensure that folding of NEGATE_EXPR |
| around a constant happens in the presence of location wrappers and |
| returns a wrapped result. |
| (cp_parser_has_attribute_expression): Strip any location wrapper |
| from "oper". |
| (cp_parser_binary_expression): Strip any location wrapper when |
| checking for DECL_P on the lhs. |
| (cp_parser_decltype): Strip any location wrapper from result of |
| cp_parser_decltype_expr. |
| (cp_parser_mem_initializer): Add location wrappers to the |
| parenthesized expression list. |
| (cp_parser_template_parameter_list): Don't create wrapper nodes |
| within a template-parameter-list. |
| (cp_parser_template_argument_list): Don't create wrapper nodes |
| within a template-argument-list. |
| (cp_parser_parameter_declaration): Strip location wrappers from |
| default arguments. |
| (cp_parser_gnu_attribute_list): Don't create wrapper nodes. |
| (cp_parser_std_attribute_spec_seq): Likewise. |
| (cp_parser_omp_all_clauses): Don't create wrapper nodes within |
| OpenMP clauses. |
| (cp_parser_omp_for_loop): Likewise. |
| (cp_parser_omp_declare_reduction_exprs): Likewise. |
| * pt.c (convert_nontype_argument_function): Strip location |
| wrappers from fn_no_ptr before checking for FUNCTION_DECL. |
| (tsubst_default_argument): Move note about which callsite led to |
| instantiation to after the check_default_argument call. |
| (do_auto_deduction): Likewise from init before checking for |
| DECL_P. |
| * semantics.c (force_paren_expr): Likewise from expr before |
| checking for DECL_P. |
| (finish_parenthesized_expr): Likewise from expr before |
| checking for STRING_CST. |
| (perform_koenig_lookup): Likewise from fn. |
| (finish_call_expr): Likewise. |
| (finish_id_expression): Rename to... |
| (finish_id_expression_1): ...this, calling |
| maybe_add_location_wrapper on the result. |
| (capture_decltype): Use lookup_name_real rather than value_member |
| when looking up decl within the capture-list. |
| * tree.c (cp_stabilize_reference): Strip any location wrapper. |
| (builtin_valid_in_constant_expr_p): Likewise. |
| (strip_typedefs_expr): Strip any location wrapper before checking |
| for decls or constants. |
| (is_overloaded_fn): Likewise. |
| (maybe_get_fns): Likewise. |
| (selftest::test_lvalue_kind): Verify lvalue_p. |
| * typeck.c (cxx_sizeof_expr): Strip any location wrapper. |
| (cxx_alignof_expr): Likewise. |
| (is_bitfield_expr_with_lowered_type): Handle location wrappers. |
| (cp_build_array_ref): Call maybe_constant_value on "idx". |
| (cp_build_binary_op): Strip location wrapper from first_arg before |
| checking for PARM_DECL. Likewise for op1 before checking for |
| INTEGER_CST in two places. Likewise for orig_op0 and orig_op1 |
| when checking for STRING_CST. |
| (cp_build_addr_expr_1): Likewise for arg when checking for |
| FUNCTION_DECL. |
| (cp_build_modify_expr): Likewise for newrhs when checking for |
| STRING_CST. |
| (convert_for_assignment): Don't strip location wrappers when |
| stripping NON_LVALUE_EXPR. |
| (maybe_warn_about_returning_address_of_local): Strip location |
| wrapper from whats_returned before checking for DECL_P. |
| (can_do_nrvo_p): Strip location wrapper from retval. |
| (treat_lvalue_as_rvalue_p): Likewise. |
| (check_return_expr): Likewise. |
| * typeck2.c (cxx_incomplete_type_diagnostic): Strip location |
| wrapper from value before checking for VAR_P or PARM_DECL. |
| (digest_init_r): Strip location wrapper from init. When |
| copying "init", also copy the wrapped node. |
| |
| 2018-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87934 |
| * constexpr.c (cxx_eval_constant_expression) <case CONSTRUCTOR>: Do |
| re-process TREE_CONSTANT CONSTRUCTORs if they aren't reduced constant |
| expressions. |
| |
| 2018-12-19 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/87012 |
| * pt.c (convert_template_argument): Canonicalize type after |
| tsubst/deduce. |
| |
| PR c++/88146 |
| * method.c (do_build_copy_constructor): Guard cvquals init and |
| loop over fields to run for non-inherited ctors only. |
| (synthesize_method): Retain location of inherited ctor. |
| |
| 2018-12-17 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88410 |
| * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding, |
| call maybe_constant_value on val to see if it is INTEGER_CST. |
| |
| 2018-12-17 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/52321 |
| * typeck.c (build_static_cast): Print a note when the destination |
| type or the operand is a pointer/reference to incomplete class type. |
| |
| 2018-12-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88482 |
| * except.c (verify_library_fn): New function. |
| (declare_library_fn): Use it. Initialize TM even if the non-TM |
| library function has been user declared. |
| (do_end_catch): Don't set TREE_NOTHROW on error_mark_node. |
| (expand_start_catch_block): Don't call initialize_handler_parm |
| for error_mark_node. |
| (build_throw): Use verify_library_fn. Initialize TM even if the |
| non-TM library function has been user declared. Don't crash if |
| any library fn is error_mark_node. |
| |
| 2018-12-14 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (tsubst_expr) [DECL_EXPR]: Ignore class-scope bindings when |
| looking up a capture proxy. |
| |
| 2018-12-15 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84644 |
| * decl.c (check_tag_decl): A decltype with no declarator |
| doesn't declare anything. |
| |
| 2018-12-14 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/87814 |
| * pt.c (tsubst_exception_specification): Handle |
| DEFERRED_NOEXCEPT with !defer_ok. |
| |
| 2018-12-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86823 |
| * parser.c (cp_parser_template_id): Rearrange deferred access |
| checks into the firewall. |
| |
| 2018-12-14 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/82294 |
| PR c++/87436 |
| * init.c (build_vec_init): Change num_initialized_elts type from int |
| to HOST_WIDE_INT. Build a RANGE_EXPR if e needs to be repeated more |
| than once. |
| |
| 2018-12-13 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/88216 - ICE with class type in non-type template parameter. |
| * mangle.c (write_expression): Handle TARGET_EXPR and |
| VIEW_CONVERT_EXPR. |
| * pt.c (convert_nontype_argument): Don't call |
| get_template_parm_object for value-dependent expressions. |
| |
| 2018-12-13 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/87531 |
| * class.c (finish_struct): Set DECL_CONTEXT of template assign op. |
| * name-lookup.c (get_class_binding_direct): Don't strip using-decl |
| of overload here. |
| * parser.c (cp_parser_postfix_expression): Cope with using decl in |
| overload set. |
| * semantics.c (finish_id_expr): Likewise. |
| |
| 2018-12-12 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokdeclarator): Fix location of error message about |
| static data member definition. |
| |
| 2018-12-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88446 |
| * cp-tree.h (maybe_constant_value): Add manifestly_const_eval |
| argument. |
| * constexpr.c (struct constexpr_call): Rename pretend_const_required |
| member to manifestly_const_eval. |
| (struct constexpr_ctx): Likewise. |
| (constexpr_call_hasher::equal): Adjust users. |
| (cxx_eval_builtin_function_call): Likewise. Formatting fix. |
| (cxx_eval_call_expression): Adjust users. |
| (cxx_eval_outermost_constant_expr, maybe_constant_init_1, |
| maybe_constant_init): Rename pretend_const_required argument to |
| manifestly_const_eval, adjust function comments. |
| (maybe_constant_value): Add manifestly_const_eval argument. If true, |
| don't cache and call cxx_eval_outermost_constant_expr with true as |
| manifestly_const_eval. |
| * decl.c (compute_array_index_type_loc): Call maybe_constant_value |
| with true as manifestly_const_eval. |
| |
| PR c++/88449 |
| * constexpr.c (struct constexpr_call): Add pretend_const_required |
| member. |
| (constexpr_call_hasher::equal): Return false if pretend_const_required |
| members differ. |
| (cxx_eval_call_expression): Adjust new_call initialization. Hash in |
| ctx->pretend_const_required. |
| |
| 2018-12-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87861 |
| * class.c (build_vtbl_initializer): For TARGET_VTABLE_USES_DESCRIPTORS |
| bump index for each added word. |
| * constexpr.c (find_array_ctor_elt): Add forward declaration. |
| (cxx_eval_call_expression): Handle TARGET_VTABLE_USES_DESCRIPTORS |
| vtable calls. |
| (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Divide token |
| by TARGET_VTABLE_USES_DESCRIPTORS if non-zero. |
| |
| 2018-12-11 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86608 - reading constexpr volatile variable. |
| * constexpr.c (potential_constant_expression_1): Check want_rval |
| instead of checking if we have a decl. |
| * decl2.c (decl_maybe_constant_var_p): Don't consider volatile |
| constexpr variables as maybe constant. |
| |
| 2018-12-11 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokvardecl): Add location_t parameter and use it |
| in build_lang_decl_loc and build_decl calls. |
| (grokdeclarator): Move up loc declaration and use it in the |
| grokvardecl call too. |
| |
| 2018-12-09 Cesar Philippidis <cesar@codesourcery.com> |
| |
| * parser.c (cp_parser_oacc_kernels_parallel): Adjust EXPR_LOCATION |
| on the combined acc loop. |
| |
| 2018-12-07 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error messages |
| about bit-fields with function type, warn_if_not_aligned type, and |
| static bit-fields; avoid DECL_NAME for unnamed declarations. |
| |
| 2018-12-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86669 |
| * call.c (make_temporary_var_for_ref_to_temp): Call pushdecl even for |
| automatic vars. |
| |
| PR c++/87506 |
| * constexpr.c (adjust_temp_type): Handle EMPTY_CLASS_EXPR. |
| |
| 2018-12-06 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * class.c (check_bitfield_decl): In error message about non-integral |
| type print the type itself too. |
| * decl.c (grokdeclarator): Do not ICE on unnamed bit-fields declared |
| friends; when calling build_decl for a FIELD_DECL possibly pass the |
| declarator->id_loc. |
| |
| 2018-12-06 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/86747 |
| * pt.c (tsubst_friend_class): Enter tsubsted class context. |
| |
| PR c++/86397 |
| * except.c (build_noexcept_spec): Resolve nondependent |
| expressions. |
| |
| 2018-12-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/88136 - -Wdeprecated-copy false positives |
| * class.c (classtype_has_depr_implicit_copy): Rename from |
| classtype_has_user_copy_or_dtor. |
| * method.c (lazily_declare_fn): Adjust. |
| * decl2.c (cp_warn_deprecated_use): Refer to -Wdeprecated-copy-dtor |
| if deprecation is due to a destructor. |
| |
| 2018-12-06 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/88373 - wrong parse error with ~. |
| * parser.c (cp_parser_template_name): Check tag_type for |
| none_type. |
| |
| 2018-12-06 Segher Boessenkool <segher@kernel.crashing.org> |
| |
| * cp-tree.h (finish_asm_stmt): Update declaration. |
| * parser.c (cp_parser_asm_definition): Detect the inline keyword |
| after asm. Pass a flag for it to finish_asm_stmt. |
| * pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt. |
| * semantics.c (finish_asm_stmt): Add inline_p parameter. Use it to |
| set ASM_INLINE_P. |
| |
| 2018-12-06 Segher Boessenkool <segher@kernel.crashing.org> |
| |
| PR inline-asm/55681 |
| * parser.c (cp_parser_asm_definition): Update grammar. Allow any |
| combination of volatile and goto, in any order, without repetitions. |
| |
| 2018-12-06 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85110 |
| * call.c (conversion_null_warnings): Try to use the location of |
| the expression for the warnings. Add notes showing the parameter |
| of the function decl, where available. |
| (get_fndecl_argument_location): For implicitly-declared functions, |
| use the fndecl location rather than that of the param. |
| (maybe_inform_about_fndecl_for_bogus_argument_init): New function. |
| (convert_like_real): Use it in various places to avoid repetition. |
| (complain_about_bad_argument): Likewise. |
| * cp-tree.h (maybe_inform_about_fndecl_for_bogus_argument_init): |
| New declaration. |
| * decl2.c (check_default_args): Put all diagnostics for the fndecl |
| into a diagnostic group. Use the location of the parameter when |
| complaining about parameters with missing default arguments in |
| preference to that of the fndecl. Attempt to record the location |
| of the first parameter with a default argument and emit a note |
| for the first parameter that's missing one. |
| * typeck.c (convert_arguments): When complaining about parameters |
| with incomplete types, attempt to use the location of the |
| argument. Where available, add a note showing the pertinent |
| parameter in the fndecl. |
| (convert_for_assignment): When complaining about bad conversions |
| at function calls, use the location of the unstripped argument. |
| (convert_for_initialization): When checking for bogus references, |
| add an auto_diagnostic_group, and update the note to use the |
| location of the pertinent parameter, rather than just the callee. |
| |
| 2018-12-06 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error message; |
| print the type too; fix thinko in INDIRECT_TYPE_P use. |
| |
| 2018-12-05 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/85569 |
| * constexpr.c (adjust_temp_type): Test for type equality with |
| same_type_p. |
| (constexpr_call_hasher::equal): Likewise. |
| |
| 2018-12-04 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84636 |
| * decl.c (grokdeclarator): Avoid crashing on an anonymous bit-field |
| with function type. |
| |
| 2018-12-04 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/88184 - ICE when treating name as template-name. |
| * pt.c (lookup_template_function): Always build the TEMPLATE_ID_EXPR |
| with unknown_type_node. |
| |
| 2018-12-04 Julian Brown <julian@codesourcery.com> |
| |
| * parser.c (cp_parser_oacc_wait_list): Fix error message and avoid |
| duplicate diagnostic. |
| |
| 2018-12-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88103 |
| * typeck.c (build_class_member_access_expr): If unary_complex_lvalue |
| turned xvalue_p into non-xvalue_p, call move on it. |
| |
| 2018-12-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88258 |
| * parser.c (cp_parser_skip_to_closing_parenthesis_1, |
| cp_parser_skip_to_end_of_statement, |
| cp_parser_skip_to_end_of_block_or_statement, |
| cp_parser_skip_to_closing_brace, |
| cp_parser_skip_to_closing_square_bracket, |
| cp_parser_skip_balanced_tokens): Don't treat CPP_PRAGMA_EOL specially |
| if in_pragma is false. |
| |
| 2018-12-01 Marek Polacek <polacek@redhat.com> |
| |
| Implement P0634R3, Down with typename! |
| * parser.c (CP_PARSER_FLAGS_TYPENAME_OPTIONAL): New enumerator. |
| (cp_parser_type_name): Remove declaration. |
| (cp_parser_postfix_expression): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL |
| to cp_parser_type_id. |
| (cp_parser_new_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL to |
| cp_parser_type_specifier_seq. |
| (cp_parser_lambda_declarator_opt): Pass |
| CP_PARSER_FLAGS_TYPENAME_OPTIONAL to |
| cp_parser_parameter_declaration_clause. |
| (cp_parser_condition): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator. |
| (cp_parser_simple_declaration): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_init_declarator. |
| (cp_parser_conversion_type_id): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_type_specifier_seq. |
| (cp_parser_default_type_template_argument): Pass |
| CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_type_id. |
| (cp_parser_template_parameter): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL |
| to cp_parser_parameter_declaration. |
| (cp_parser_explicit_instantiation): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator. |
| (cp_parser_simple_type_specifier): Adjust call to cp_parser_type_name |
| to relay if we should treat the typename keyword as optional. Maybe |
| call cp_parser_make_typename_type is parsing a template-id and it's |
| not a TYPE_DECL. |
| (cp_parser_type_name): Remove unused function. |
| (cp_parser_enum_specifier): Pass to CP_PARSER_FLAGS_NONE |
| cp_parser_type_specifier_seq. |
| (cp_parser_alias_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL |
| to cp_parser_type_id. |
| (cp_parser_init_declarator): New parameter. Pass it down to |
| cp_parser_declarator. |
| (cp_parser_declarator): New parameter. Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator. Pass the new parameter to |
| cp_parser_direct_declarator. |
| (cp_parser_direct_declarator): New parameter. Pass it to |
| cp_parser_parameter_declaration_clause and cp_parser_declarator. |
| (cp_parser_declarator_id): |
| (cp_parser_type_id_1): New parameter. Pass it to |
| cp_parser_type_specifier_seq. Adjust call to cp_parser_declarator. |
| (cp_parser_type_id): New parameter. Pass it to cp_parser_type_id_1. |
| (cp_parser_template_type_arg): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_type_id_1. |
| (cp_parser_trailing_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL |
| to cp_parser_type_id_1. |
| (cp_parser_type_specifier_seq): New parameter. |
| (function_being_declared_is_template_p): |
| (cp_parser_parameter_declaration_clause): New parameter. Pass it to |
| cp_parser_parameter_declaration_list. |
| (cp_parser_parameter_declaration_list): New parameter. Pass it to |
| cp_parser_parameter_declaration. |
| (cp_parser_parameter_declaration): New parameter. Pass it to |
| cp_parser_decl_specifier_seq. Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator. |
| (cp_parser_member_declaration): Adjust call to |
| cp_parser_decl_specifier_seq to also include |
| CP_PARSER_FLAGS_TYPENAME_OPTIONAL. Pass |
| CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_declarator. |
| (cp_parser_exception_declaration): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_type_specifier_seq and cp_parser_declarator. |
| (cp_parser_requirement_parameter_list): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_parameter_declaration_clause. |
| (cp_parser_constructor_declarator_p): Resolve the TYPENAME_TYPE. |
| (cp_parser_single_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL |
| to cp_parser_decl_specifier_seq and cp_parser_init_declarator. |
| (cp_parser_cache_defarg): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator and cp_parser_parameter_declaration_list. |
| (cp_parser_objc_method_tail_params_opt): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_parameter_declaration. |
| (cp_parser_objc_class_ivars): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator. |
| (cp_parser_objc_try_catch_finally_statement): Pass CP_PARSER_FLAGS_NONE |
| to cp_parser_parameter_declaration |
| (cp_parser_objc_struct_declaration): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator. |
| (cp_parser_omp_for_loop_init): Pass CP_PARSER_FLAGS_NONE to |
| cp_parser_declarator and cp_parser_type_specifier_seq. |
| |
| 2018-11-30 David Malcolm <dmalcolm@redhat.com> |
| |
| * typeck2.c: Include "gcc-rich-location.h". |
| (cxx_incomplete_type_diagnostic): When complaining about possibly |
| missing parens, add a fix-it hint if the member function takes no |
| additional params. |
| |
| 2018-11-30 James Norris <jnorris@codesourcery.com> |
| |
| * parser.c (cp_parser_oacc_enter_exit_data): Use existing local |
| variable. |
| |
| 2018-11-29 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (compute_array_index_type_loc): New, like the current |
| compute_array_index_type but takes a location_t too. |
| (compute_array_index_type): Forward to the latter. |
| (create_array_type_for_decl): Use compute_array_index_type_loc. |
| |
| 2018-11-29 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/88121 |
| * cp-name-hint.h (suggest_alternative_in_scoped_enum): New decl. |
| * error.c (dump_scope): Ensure that we print any scope for values |
| of unscoped enums. Print the scope of values of scoped enums. |
| (qualified_name_lookup_error): Offer suggestions for failures |
| within scoped enums by calling suggest_alternative_in_scoped_enum. |
| * name-lookup.c (class namespace_hints): Update comment to mention |
| scoped enums. |
| (namespace_hints::namespace_hints): Call |
| maybe_add_candidate_for_scoped_enum. |
| (namespace_hints::maybe_add_candidate_for_scoped_enum): New member |
| (suggest_alternatives_for): Update comment to mention scoped |
| enums. |
| (suggest_alternative_in_scoped_enum): New function. |
| |
| 2018-11-28 Marek Polacek <polacek@redhat.com> |
| |
| Implement P1094R2, Nested inline namespaces. |
| * parser.c (cp_parser_namespace_definition): Parse the optional inline |
| keyword in a nested-namespace-definition. Adjust push_namespace call. |
| Formatting fix. |
| |
| 2018-11-28 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/87531 |
| * class.c (finish_struct): In a template, add artificial using |
| decl for operator=. |
| |
| 2018-11-28 Jan Hubicka <hubicka@ucw.cz> |
| |
| * except.c (do_allocate_exception): Annotate __cxa_allocate_exception |
| as COLD. |
| |
| 2018-11-28 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/88222 - ICE with bit-field with invalid type. |
| * decl.c (grokdeclarator): Check if declarator is null. |
| |
| 2018-11-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87476 |
| * typeck2.c (digest_init_r): Re-add handing of signed/unsigned char |
| strings and add it to the initialization of wide array from non-wide |
| string diagnostics too. |
| |
| 2018-11-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88187 |
| * decl.c (grokdeclarator): Don't diagnose deduction guide errors |
| if !funcdecl_p. |
| |
| PR c++/88181 |
| * class.c (fixup_attribute_variants): Also propagate TYPE_PACKED |
| to variants. |
| |
| 2018-11-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/88120 - ICE when calling save_expr in a template. |
| * typeck.c (cp_build_binary_op): Call cp_save_expr instead of |
| save_expr. |
| |
| 2018-11-22 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87386 |
| * parser.c (cp_parser_operator): Use str.get_value () instead of just |
| str in USERDEF_LITERAL_VALUE and USERDEF_LITERAL_SUFFIX_ID arguments. |
| |
| 2018-11-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88122 |
| * method.c (maybe_explain_implicit_delete): If |
| FUNCTION_FIRST_USER_PARMTYPE (decl) is NULL, set const_p to false |
| instead of ICEing. |
| |
| PR c++/87386 |
| * parser.c (cp_parser_primary_expression): Use |
| id_expression.get_location () instead of id_expr_token->location. |
| Adjust the range from id_expr_token->location to |
| id_expressio.get_finish (). |
| (cp_parser_operator_function_id): Pass location of the operator |
| token down to cp_parser_operator. |
| (cp_parser_operator): Add start_loc argument, always construct a |
| location with caret at start_loc and range from start_loc to the |
| finish of the last token. |
| |
| PR c++/87393 |
| * parser.c (cp_parser_linkage_specification): Remove useless |
| dereference of the consume_open method result. |
| |
| 2018-11-20 Martin Sebor <msebor@redhat.com> |
| |
| * cp-tree.h (cp_check_const_attributes): Declare. |
| * decl2.c (cp_check_const_attributes): Declare extern. |
| * parser.c (cp_parser_has_attribute_expression): New function. |
| (cp_parser_unary_expression): Handle RID_HAS_ATTRIBUTE_EXPRESSION. |
| (cp_parser_gnu_attribute_list): Add argument. |
| |
| 2018-11-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/88110 |
| * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Punt |
| if get_base_address of ADDR_EXPR operand is not a DECL_P. |
| |
| 2018-11-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87781 - detect invalid elaborated-type-specifier. |
| * parser.c (cp_parser_elaborated_type_specifier): Ensure that |
| typename follows a nested-name-specifier. |
| |
| 2018-11-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl2.c (grokfield): Remove obsolete _vptr check; fix |
| explicit template argument list error location. |
| |
| 2018-11-16 Kamlesh Kumar <kamleshbhalui@gmail.com> |
| |
| DR 1207 |
| PR c++/52869 |
| * parser.c (cp_parser_noexcept_specification_opt): Call |
| inject_this_parameter. |
| |
| 2018-11-16 Jason Merrill <jason@redhat.com> |
| |
| Implement P0479R5, [[likely]] and [[unlikely]]. |
| * tree.c (handle_likeliness_attribute): New. |
| (std_attribute_table): Add likely/unlikely. |
| * cp-gimplify.c (lookup_hotness_attribute, remove_hotness_attribute) |
| (process_stmt_hotness_attribute, first_stmt): New. |
| (genericize_if_stmt): Check for duplicate predictions. |
| * parser.c (cp_parser_statement): Call |
| process_stmt_hotness_attribute. |
| (cp_parser_label_for_labeled_statement): Apply attributes to case. |
| * decl.c (finish_case_label): Give label in template type void. |
| * pt.c (tsubst_expr) [CASE_LABEL_EXPR]: Copy attributes. |
| [PREDICT_EXPR]: Handle. |
| |
| 2018-11-16 Nathan Sidwell <nathan@acm.org> |
| |
| Remove ovl_used, it is no longer needed |
| * cp-tree.h (OVL_USED_P): Delete. |
| (lookup_keep): Delete. |
| * friend.c (add_friend): Don't call it. |
| * parser.c (lookup_literal_operator): Likewise. |
| (cp_parser_primary_expression): Likewise. |
| * semantics.c (perform_koenig_lookup): Likewise. |
| * pt.c (tsubst_copy <OVERLOAD>): Don't assert OVL_USED_P. |
| * tree.c (ovl_copy): Delete. |
| (ovl_insert): Remove OVL_USED_P checks. |
| (ovl_iterator::reveal_node): Likewise. |
| (ovl_iterator::remove__node): Likewise. |
| (ovl_used, lookup_keep): Delete. |
| |
| PR c++/87269 |
| * parser.c (lookup_literal_operator): Mark overload for keeping |
| when inside template. Refactor. |
| |
| 2018-11-15 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/86246 |
| PR c++/87989 |
| * typeck.c (finish_class_member_access_expr): Conversion operator |
| to dependent type is dependent. |
| |
| 2018-11-15 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * constexpr.c (ensure_literal_type_for_constexpr_object): Use |
| DECL_SOURCE_LOCATION in error_at calls. |
| |
| 2018-11-15 Nathan Sidwell <nathan@acm.org> |
| |
| DR 2336 |
| * cp-tree.h (enum special_function_kind): Add sfk_virtual_destructor. |
| * method.c (type_has_trivial_fn): Add it. |
| (SFK_DTOR_P): Likewise. |
| (synthesized_method_base_walk): Don't check access of vbases of |
| abstract classes when sfk_virtual_destructor. |
| (synthesized_method_walk): Skip vbases of abstract classes except |
| when sfk_virtual_destructor. |
| (get_defaulted_eh_spec): Set sfk_virtual_destructor as needed. |
| |
| * cp-tree.h (enum special_function_kind): Reorder and comment. |
| * method.c (SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P) |
| (SFK_MOVE_P): New predicates. |
| (walk_field_subobs, synthesized_method_base_walk): Drop |
| copy_arg_p, move_p, assign_p args. Use new SFK predicates. Order |
| parameters consistently. |
| (synthesized_method_walk): Drop ctor_p, copy_arg_p, move_p, |
| assign_p calculations. Use new SFK predicates. Adjust calls to |
| worker functions. |
| |
| 2018-11-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * parser.c (make_id_declarator): Add location_t parameter. |
| (cp_parser_lambda_declarator_opt): Adjust call. |
| (cp_parser_decomposition_declaration): Likewise. |
| (cp_parser_alias_declaration): Likewise. |
| (cp_parser_direct_declarator): Likewise. |
| (cp_parser_member_declaration): Likewise. |
| (cp_parser_objc_class_ivars): Likewise. |
| * decl.c (grokdeclarator): Use declarator->id_loc in two error |
| messages. |
| |
| 2018-11-14 Jakub Jelinek <jakub@redhat.com> |
| |
| P1236R1 - Signed integers are two's complement |
| * constexpr.c (cxx_eval_check_shift_p): Disable the signed LSHIFT_EXPR |
| checks for c++2a. |
| |
| 2018-11-13 David Malcolm <dmalcolm@redhat.com> |
| |
| * call.c: Replace "source_location" with "location_t". |
| * cp-tree.h: Likewise. |
| * cvt.c: Likewise. |
| * name-lookup.c: Likewise. |
| * parser.c: Likewise. |
| * typeck.c: Likewise. |
| |
| 2018-11-12 Jason Merrill <jason@redhat.com> |
| |
| Implement P0315R4, Lambdas in unevaluated contexts. |
| * decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR. |
| * mangle.c (write_expression): Handle LAMBDA_EXPR. |
| * parser.c (cp_parser_lambda_expression): Allow lambdas in |
| unevaluated context. Start the tentative firewall sooner. |
| (cp_parser_lambda_body): Use cp_evaluated. |
| * pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR. |
| (tsubst_function_decl): Substitute a lambda even if it isn't |
| dependent. |
| (tsubst_lambda_expr): Use cp_evaluated. Always complain. |
| (tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial. |
| * semantics.c (begin_class_definition): Allow in template parm list. |
| * tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR. |
| (cp_tree_equal): Handle LAMBDA_EXPR. |
| |
| * pt.c (fn_type_unification): If we have a full set of explicit |
| arguments, go straight to substitution. |
| |
| * decl2.c (min_vis_expr_r, expr_visibility): New. |
| (min_vis_r): Call expr_visibility. |
| (constrain_visibility_for_template): Likewise. |
| |
| Implement P0722R3, destroying operator delete. |
| * call.c (std_destroying_delete_t_p, destroying_delete_p): New. |
| (aligned_deallocation_fn_p, usual_deallocation_fn_p): Use |
| destroying_delete_p. |
| (build_op_delete_call): Handle destroying delete. |
| * decl2.c (coerce_delete_type): Handle destroying delete. |
| * init.c (build_delete): Don't call dtor with destroying delete. |
| * optimize.c (build_delete_destructor_body): Likewise. |
| |
| Implement P0780R2, pack expansion in lambda init-capture. |
| * parser.c (cp_parser_lambda_introducer): Parse pack init-capture. |
| * pt.c (tsubst_pack_expansion): Handle init-capture packs. |
| (lookup_init_capture_pack): New. |
| (tsubst_expr) [DECL_EXPR]: Use it. |
| (tsubst_lambda_expr): Remember field pack expansions for |
| init-captures. |
| |
| * cp-tree.h (struct cp_evaluated): New. |
| * init.c (get_nsdmi): Use it. |
| * parser.c (cp_parser_enclosed_template_argument_list): Use it. |
| * pt.c (coerce_template_parms, tsubst_aggr_type): Use it. |
| |
| 2018-11-09 Jakub Jelinek <jakub@redhat.com> |
| |
| * parser.c (cp_parser_omp_clause_final, cp_parser_omp_clause_if): Use |
| cp_parser_assignment_expression instead of cp_parser_condition. |
| (cp_parser_omp_clause_num_threads, cp_parser_omp_clause_num_tasks, |
| cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority, |
| cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit, |
| cp_parser_omp_clause_linear, cp_parser_omp_clause_device): Use |
| cp_parser_assignment_expression instead of cp_parser_expression. |
| (cp_parser_omp_clause_hint): Likewise. Formatting fix. |
| |
| * parser.c (cp_parser_omp_clause_reduction): Call sorry_at on |
| reduction clause with inscan modifier. |
| |
| * parser.c (cp_parser_omp_requires): Call sorry_at on requires |
| clauses other than atomic_default_mem_order. |
| |
| 2018-11-09 Martin Sebor <msebor@redhat.com> |
| |
| PR middle-end/81824 |
| * pt.c (warn_spec_missing_attributes): Move code to attribs.c. |
| Call decls_mismatched_attributes. |
| |
| 2018-11-08 Jakub Jelinek <jakub@redhat.com> |
| |
| * constexpr.c (potential_constant_expression_1): Handle OMP_DEPOBJ. |
| * cp-gimplify.c (cp_genericize_r): Handle |
| OMP_CLAUSE_{IN,TASK}_REDUCTION. |
| (cxx_omp_predetermined_sharing_1): Don't return |
| OMP_CLAUSE_DEFAULT_SHARED for const qualified decls with no mutable |
| member. Return OMP_CLAUSE_DEFAULT_FIRSTPRIVATE for this pointer. |
| * cp-objcp-common.c (cp_common_init_ts): Handle OMP_DEPOBJ. |
| * cp-tree.def (OMP_DEPOBJ): New tree code. |
| * cp-tree.h (OMP_ATOMIC_DEPENDENT_P): Return true also for first |
| argument being OMP_CLAUSE. |
| (OMP_DEPOBJ_DEPOBJ, OMP_DEPOBJ_CLAUSES): Define. |
| (cp_convert_omp_range_for, cp_finish_omp_range_for): Declare. |
| (finish_omp_atomic): Add LOC, CLAUSES and MO arguments. Remove |
| SEQ_CST argument. |
| (finish_omp_for_block): Declare. |
| (finish_omp_flush): Add MO argument. |
| (finish_omp_depobj): Declare. |
| * cxx-pretty-print.c (cxx_pretty_printer::statement): Handle |
| OMP_DEPOBJ. |
| * dump.c (cp_dump_tree): Likewise. |
| * lex.c (cxx_init): Likewise. |
| * parser.c: Include memmodel.h. |
| (cp_parser_for): Pass false as new is_omp argument to |
| cp_parser_range_for. |
| (cp_parser_range_for): Add IS_OMP argument, return before finalizing |
| if it is true. |
| (cp_parser_omp_clause_name): Handle nontemporal, in_reduction and |
| task_reduction clauses. |
| (cp_parser_omp_var_list_no_open): Handle |
| OMP_CLAUSE_{IN,TASK}_REDUCTION. For OMP_CLAUSE_DEPEND, parse clause |
| operands as either an array section, or lvalue assignment expression. |
| (cp_parser_omp_clause_if): Handle cancel and simd modifiers. |
| (cp_parser_omp_clause_defaultmap): Parse new kinds of defaultmap |
| clause. |
| (cp_parser_omp_clause_reduction): Add IS_OMP and KIND arguments. |
| Parse reduction modifiers. Pass KIND to c_parser_omp_variable_list. |
| (cp_parser_omp_clause_lastprivate, cp_parser_omp_iterators): New |
| functions. |
| (cp_parser_omp_clause_depend): Parse iterator modifier and handle |
| iterators. Parse mutexinoutset and depobj kinds. |
| (cp_parser_oacc_all_clauses): Adjust cp_parser_omp_clause_reduction |
| callers. |
| (cp_parser_omp_all_clauses): Likewise. Handle |
| PRAGMA_OMP_CLAUSE_NONTEMPORAL and |
| PRAGMA_OMP_CLAUSE_{IN,TASK}_REDUCTION. Call |
| cp_parser_omp_clause_lastprivate for OpenMP lastprivate clause. |
| (cp_parser_omp_atomic): Pass pragma_tok->location as |
| LOC to finish_omp_atomic. Parse hint and memory order clauses. |
| Handle default memory order from requires directive if any. Adjust |
| finish_omp_atomic caller. |
| (cp_parser_omp_critical): Allow comma in between (name) and hint |
| clause. |
| (cp_parser_omp_depobj): New function. |
| (cp_parser_omp_flush): Parse flush with memory-order-clause. |
| (cp_parser_omp_for_cond): Allow NE_EXPR even in OpenMP loops. |
| (cp_convert_omp_range_for, cp_finish_omp_range_for): New functions. |
| (cp_parser_omp_for_loop): Parse C++11 range for loops among omp |
| loops. Handle OMP_CLAUSE_IN_REDUCTION like OMP_CLAUSE_REDUCTION. |
| (OMP_SIMD_CLAUSE_MASK): Add if and nontemporal clauses. |
| (cp_parser_omp_simd, cp_parser_omp_for): Call keep_next_level before |
| begin_omp_structured_block and call finish_omp_for_block on |
| finish_omp_structured_block result. |
| (cp_parser_omp_master): Add p_name, mask and cclauses arguments. |
| Allow to be called while parsing combined parallel master. |
| Parse combined master taskloop{, simd}. |
| (cp_parser_omp_parallel): Parse combined |
| parallel master{, taskloop{, simd}} constructs. |
| (cp_parser_omp_single): Use SET_EXPR_LOCATION. |
| (OMP_TASK_CLAUSE_MASK): Add in_reduction clause. |
| (OMP_TASKWAIT_CLAUSE_MASK): Define. |
| (cp_parser_omp_taskwait): Handle taskwait with depend clauses. |
| (OMP_TASKGROUP_CLAUSE_MASK): Define. |
| (cp_parser_omp_taskgroup): Parse taskgroup clauses, adjust |
| c_finish_omp_taskgroup caller. |
| (cp_parser_omp_distribute): Call keep_next_level before |
| begin_omp_structured_block and call finish_omp_for_block on |
| finish_omp_structured_block result. |
| (cp_parser_omp_teams): Force a BIND_EXPR with BLOCK around teams |
| body. |
| (cp_parser_omp_target_data): Allow target data with only |
| use_device_ptr clauses. |
| (cp_parser_omp_target): Set OMP_REQUIRES_TARGET_USED bit in |
| omp_requires_mask. |
| (cp_parser_omp_requires): New function. |
| (OMP_TASKLOOP_CLAUSE_MASK): Add reduction and in_reduction clauses. |
| (cp_parser_omp_taskloop): Add forward declaration. Disallow |
| in_reduction clause when combined with parallel master. Call |
| keep_next_level before begin_omp_structured_block and call |
| finish_omp_for_block on finish_omp_structured_block result. |
| (cp_parser_omp_construct): Adjust cp_parser_omp_master caller. |
| (cp_parser_pragma): Handle PRAGMA_OMP_DEPOBJ and PRAGMA_OMP_REQUIRES. |
| * pt.c (tsubst_omp_clause_decl): Add iterators_cache argument. |
| Adjust recursive calls. Handle iterators. |
| (tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION and |
| OMP_CLAUSE_NONTEMPORAL. Adjust tsubst_omp_clause_decl callers. |
| (tsubst_decomp_names): |
| (tsubst_omp_for_iterator): Change orig_declv into a reference. |
| Handle range for loops. Move orig_declv handling after declv/initv |
| handling. |
| (tsubst_expr): Force a BIND_EXPR with BLOCK around teams body. |
| Adjust finish_omp_atomic caller. Call keep_next_level before |
| begin_omp_structured_block. Call cp_finish_omp_range_for for range |
| for loops and use {begin,finish}_omp_structured_block instead of |
| {push,pop}_stmt_list if there are any range for loops. Call |
| finish_omp_for_block on finish_omp_structured_block result. |
| Handle OMP_DEPOBJ. Handle taskwait with depend clauses. For |
| OMP_ATOMIC call tsubst_omp_clauses on clauses if any, adjust |
| finish_omp_atomic caller. Use OMP_ATOMIC_MEMORY_ORDER rather |
| than OMP_ATOMIC_SEQ_CST. Handle clauses on OMP_TASKGROUP. |
| (dependent_omp_for_p): Always return true for range for loops if |
| processing_template_decl. Return true if class type iterator |
| does not have INTEGER_CST increment. |
| * semantics.c: Include memmodel.h. |
| (handle_omp_array_sections_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION |
| like OMP_CLAUSE_REDUCTION. |
| (handle_omp_array_sections): Likewise. Call save_expr on array |
| reductions before calling build_index_type. Handle depend clauses |
| with iterators. |
| (finish_omp_reduction_clause): Call save_expr for whole array |
| reduction sizes. Don't mark OMP_CLAUSE_DECL addressable if it has |
| reference type. Do mark decl_placeholder addressable if needed. |
| Use error_at with OMP_CLAUSE_LOCATION (c) as first argument instead |
| of error. |
| (cp_omp_finish_iterators): New function. |
| (finish_omp_clauses): Don't diagnose nonmonotonic clause with static, |
| runtime or auto schedule kinds. Diagnose nogroup clause used with |
| reduction clause(s). Handle depend clause with |
| OMP_CLAUSE_DEPEND_DEPOBJ. Diagnose bit-fields. Require |
| omp_depend_t type for OMP_CLAUSE_DEPEND_DEPOBJ kinds and |
| some different type for other kinds. Use cp_build_addr_expr |
| and cp_build_indirect_ref instead of cxx_mark_addressable. |
| Handle depend clauses with iterators. Only handle static data members |
| in the special case that const qualified vars may be specified in |
| firstprivate clause. Complain if const qualified vars without mutable |
| members are mentioned in data-sharing clauses other than firstprivate |
| or shared. Use error_at with OMP_CLAUSE_LOCATION (c) as first |
| argument instead of error. Diagnose more than one nontemporal clause |
| refering to the same variable. Use error_at rather than error for |
| priority and hint clause diagnostics. Fix pasto for hint clause. |
| Diagnose hint expression that doesn't fold into INTEGER_CST. |
| Diagnose if clause with modifier other than cancel. Handle |
| OMP_CLAUSE_{IN,TASK}_REDUCTION like OMP_CLAUSE_REDUCTION. Allow any |
| lvalue as OMP_CLAUSE_DEPEND operand (besides array section), adjust |
| diagnostics. |
| (handle_omp_for_class_iterator): Don't create a new TREE_LIST if one |
| has been created already for range for, just fill TREE_PURPOSE and |
| TREE_VALUE. Call cp_fully_fold on incr. |
| (finish_omp_for): Don't check cond/incr if cond is global_namespace. |
| Pass to c_omp_check_loop_iv_exprs orig_declv if non-NULL. Don't |
| use IS_EMPTY_STMT on NULL pre_body. Adjust c_finish_omp_for caller. |
| (finish_omp_for_block): New function. |
| (finish_omp_atomic): Add LOC argument, pass it through |
| to c_finish_omp_atomic and set it as location of OMP_ATOMIC* trees. |
| Remove SEQ_CST argument. Add CLAUSES and MO arguments. Adjust |
| c_finish_omp_atomic caller. Stick clauses if any into first argument |
| of wrapping OMP_ATOMIC. |
| (finish_omp_depobj): New function. |
| (finish_omp_flush): Add MO argument, if not |
| MEMMODEL_LAST, emit __atomic_thread_fence call with the given value. |
| (finish_omp_cancel): Diagnose if clause with modifier other than |
| cancel. |
| |
| 2018-11-07 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/87904 |
| * cp-tree.h (struct tree_overload): Fix comment. |
| * tree.c (ovl_iterator::reveal_node): Propagate OVL_DEDUP_P. |
| |
| 2018-11-04 Jason Merrill <jason@redhat.com> |
| |
| Implement UDL changes from P0732R2. |
| * cp-tree.h (struct releasing_vec): Move from mangle.c. |
| Add get_ref method. |
| * parser.c (cp_parser_userdef_string_literal): Use it. Handle |
| passing the string to a single template parameter of class type. |
| (cp_parser_template_declaration_after_parameters): Allow it. |
| Pedwarn about the character pack template that was proposed but not |
| accepted for C++14, and don't suggest it. |
| |
| Implement P0732R2, class types in non-type template parameters. |
| * error.c (dump_simple_decl): Look through a template parm object. |
| * mangle.c (write_template_arg): Likewise. |
| (mangle_template_parm_object): New. |
| * pt.c (template_parm_object_p, get_template_parm_object): New. |
| (invalid_tparm_referent_p): Factor from convert_nontype_argument. |
| (convert_nontype_argument, invalid_nontype_parm_type_p): Handle |
| class-type template arguments. |
| * tree.c (lvalue_kind): Likewise. |
| |
| * cvt.c (ocp_convert): Don't wrap a CONSTRUCTOR in a NOP_EXPR. |
| * constexpr.c (initialized_type): Fix AGGR_INIT_EXPR handling. |
| (cxx_eval_vec_init_1): Correct type of AGGR_INIT_EXPR. |
| (cxx_eval_outermost_constant_expr): Make sure a CONSTRUCTOR has the |
| right type. Don't wrap a CONSTRUCTOR if one was passed in. |
| * tree.c (build_aggr_init_expr): Check for void. |
| |
| PR c++/60503 - wrong lambda attribute syntax. |
| * parser.c (cp_parser_lambda_declarator_opt): Fix attribute |
| handling. |
| |
| 2018-11-02 Nathan Sidwell <nathan@acm.org> |
| |
| * decl.c (duplicate_decls): Refactor checks. |
| |
| 2018-11-01 Marek Polacek <polacek@redhat.com> |
| |
| Implement P0846R0, ADL and function templates. |
| * decl.c (grokfndecl): Allow FUNCTION_DECL in assert. |
| * lex.c (unqualified_fn_lookup_error): Handle TEMPLATE_ID_EXPR. |
| * parser.c (cp_parser_postfix_expression): Do ADL for a template-name. |
| (cp_parser_template_id): Give errors if parsing the template argument |
| list didn't go well. Allow FUNCTION_DECL in assert. |
| (cp_parser_template_name): Consider a name to refer to a template if |
| it is an unqualified-id followed by a <. Don't return the identifier |
| if the decl is a function and dependent. |
| * pt.c (tsubst_copy) <case OVERLOAD>: Remove assert. |
| |
| 2018-11-01 Nathan Sidwell <nathan@acm.org> |
| |
| * cp-tree.h (struct lang_function): Delete x_local_names field. |
| (struct lang_decl_base): Rename u2sel to spare. |
| (struct lang_decl_min): Remove lang_decl_u2 union. Keep access |
| field. |
| (LANG_DECL_U2_CHECK): Delete. |
| (DECL_DISCRIMINATOR_P): Require function scope. |
| (DECL_DISCRIMINATOR): Adjust. |
| (DECL_DISCRIMINATOR_SET_P): Delete. |
| (DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUnK_VIRTUAL_OFFSET): Adjust. |
| (local_classes): Don't declare. |
| (determine_local_discriminator): Declare. |
| * decl.c (push_local_name): Delete. |
| (local_entities, determina_local_discrminator): New. |
| (duplicate_decls): Copy DECL_ACCESS. Fix formatting. |
| (cp_finish_decl): Use determine_local_discriminator. |
| (save_function_data): Drop x_local_names. |
| (finish_function): Drop local_names. |
| * decl2.c (finish_anon_union): Use determine_local_disciminator. |
| * mangle.c (write_unnamed_type_name): Use |
| discriminator_for_local_entity. |
| (local_class_index): Delete. |
| (discriminator_for_local_entity): Reimplement. |
| (write_local_name): Adjust discriminator code. |
| * name-lookup.c (do_pushtag): Call determine_local_discrimiator. |
| * semantics.c (finish_omp_threadprivate): Drop DECL_DISCRIMINATOR |
| handling. |
| * class.c (local_classes): Delete. |
| (init_class_processing): Don't init it. |
| |
| 2018-11-01 Martin Liska <mliska@suse.cz> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/64266 |
| PR bootstrap/70422 |
| PR ipa/81277 |
| * cp-tree.h (DECL_FNAME_P): New macro. |
| * decl.c (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P, |
| DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. |
| (cp_finish_decl): |
| * lambda.c (is_capture_proxy): Use DECL_FNAME_P. |
| * pt.c (tsubst_expr): Handle DECL_PRETTY_FUNCTION_P. |
| |
| 2018-10-31 Nathan Sidwell <nathan@acm.org> |
| |
| * cp-tree.h (OVL_DEDUP_P): New. |
| * name-lookup.c (name_lookup::add_overload): Check OVL_DEDUP_P. |
| (get_class_binding_direct): Likwise. |
| * tree.c (ovl_make): Propagate OVL_DEDUP_P. |
| (ovl_copy): Copy it. |
| (ovl_insert): Do not keep using-decls ordered. |
| (lookup_maybe_add): Adjust comment. |
| |
| 2018-10-30 Marek Polacek <polacek@redhat.com> |
| |
| Implement P0892R2, explicit(bool). |
| * call.c (add_template_candidate_real): Return if the declaration is |
| explicit and we're only looking for non-converting constructor. |
| * cp-tree.h (lang_decl_fn): Add has_dependent_explicit_spec_p bit. |
| (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P): New macro. |
| (cp_decl_specifier_seq): Add explicit_specifier field. |
| (build_explicit_specifier, store_explicit_specifier): Declare. |
| * decl.c (grokdeclarator): Call store_explicit_specifier. |
| (build_explicit_specifier): New function. |
| * parser.c (cp_parser_function_specifier_opt) <case RID_EXPLICIT>: |
| Parse C++20 explicit(bool). |
| * pt.c (store_explicit_specifier, lookup_explicit_specifier): New. |
| (tsubst_function_decl): Handle explicit(dependent-expr). |
| |
| 2018-10-30 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokdeclarator): Use declarator->id_loc in diagnostic |
| about flexible array members. |
| |
| 2018-10-29 David Malcolm <dmalcolm@redhat.com> |
| |
| * cp-name-hint.h: New file. |
| * cp-tree.h (expr_to_string): New decl. |
| (suggest_alternatives_for): Move to cp-name-hint.h, changing |
| return type from bool to name_hint. |
| (suggest_alternative_in_explicit_scope): Likewise. |
| * error.c: Define INCLUDE_UNIQUE_PTR. Include "cp-name-hint.h". |
| (expr_to_string): Make non-static. |
| (qualified_name_lookup_error): For the non-"::" case, take |
| responsibity for issuing any suggestion from |
| suggest_alternative_in_explicit_scope, as it changes from |
| returning a bool to returning a name_hint. Replace fallback call |
| to suggest_alternatives_for to a call to |
| suggest_alternatives_in_other_namespaces, capturing the fact that |
| we don't have enough location information to issue a fix-it hint |
| for this case. Update the error to support emitting a fix-it hint |
| where appropriate. For the "::" case, take responsibility for |
| issuing any suggestion from suggest_alternatives_for, supporting |
| emitting a fix-it hint. |
| * lex.c: Define INCLUDE_UNIQUE_PTR. Include "gcc-rich-location.h" |
| and "cp-name-hint.h". |
| (unqualified_name_lookup_error): Take responsibility for issuing |
| any suggestion from suggest_alternatives_for, supporting emitting |
| a fix-it hint. |
| * name-lookup.c (class namespace_limit_reached): New subclass of |
| deferred_diagnostic. |
| (class show_candidate_location): Likewise. |
| (class suggest_alternatives): Likewise. |
| (class namespace_hints): New class. |
| (suggest_alternatives_for): Convert return type from bool to |
| name_hint, replacing all direct diagnostic emission by setting |
| suggestions on the return value, or creating deferred diagnostics. |
| Specifically, split out initial traversal of namespaces into |
| namespace_hints' ctor, and maybe_decorate_with_limit, and move the |
| rest of the implementation to |
| namespace_hints::convert_candidates_to_name_hint and |
| suggest_alternatives_for_1. |
| (namespace_hints::namespace_hints): New ctor, adapted from |
| suggest_alternatives_for's initial namespace traversal, storing |
| location and name, and converting locals "candidates", "limited" |
| and "limit" into members. |
| (namespace_hints::convert_candidates_to_name_hint): New member |
| function. |
| (namespace_hints::maybe_decorate_with_limit): New member function. |
| (suggest_alternatives_for_1): New function, based on second half |
| of old implementation of suggest_alternatives_for, converting from |
| immediate emission of suggestions to using name_hint. |
| (suggest_alternatives_in_other_namespaces): New function. |
| (maybe_suggest_missing_std_header): Convert from immediate |
| emission of suggestions to using name_hint, moving emission |
| implementation to... |
| (class missing_std_header): New subclass of deferred_diagnostic. |
| (maybe_suggest_missing_header): Convert return type from bool to |
| name_hint. |
| (suggest_alternative_in_explicit_scope): Convert from immediate |
| emission of suggestions to using name_hint. |
| * parser.c: Replace include of "c-family/name-hint.h" with |
| "cp-name-hint.h". |
| (cp_parser_diagnose_invalid_type_name): Update |
| "is there a suggestion" logic for change to |
| name_hint::operator bool. Take responsibility for emitting |
| fix-it hints from suggest_alternative_in_explicit_scope. |
| (cp_parser_namespace_name): Take responsibility for emitting |
| fix-it hints from suggest_alternative_in_explicit_scope. Don't |
| emit the "expected namespace-name" error if we've already emitted |
| an "is not a namespace-name" error. |
| |
| 2018-10-29 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/56856 |
| * call.c (build_over_call): Eliminate the "arglocs" array, and the |
| call to maybe_constant_value when building "fargs". |
| |
| 2018-10-29 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (create_array_type_for_decl): Add location_t parameter |
| and use it. |
| (grokdeclarator): Adjust call. |
| |
| 2018-10-29 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87594 - constexpr rejects-valid with range-based for. |
| * constexpr.c (potential_constant_expression_1): If the condition |
| can't be evaluated, return true. |
| |
| 2018-10-29 Joseph Myers <joseph@codesourcery.com> |
| Julian Brown <julian@codesourcery.com> |
| |
| PR c++/66053 |
| * semantics.c (handle_omp_array_sections_1): Allow array |
| sections with "this" pointer for OpenACC. |
| |
| 2018-10-25 Jason Merrill <jason@redhat.com> |
| |
| * parser.c (cp_parser_sizeof_operand): Remove redundant use of |
| grokdeclarator. |
| |
| 2018-10-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86288 |
| * parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when |
| :: is not present and attr_ns non-NULL, canonicalize also attr_id. |
| (cp_parser_attribute_spec): Fix comment typo. |
| |
| 2018-10-24 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/84851 |
| * call.c (maybe_warn_class_memaccess): Tighten up. |
| |
| 2018-10-17 David Malcolm <dmalcolm@redhat.com> |
| |
| * Make-lang.in (selftest-c++): New. |
| (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) |
| (selftest-c++-gdb, selftest-c++-valgrind): Move here from |
| gcc/Makefile.in. |
| |
| 2018-10-17 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84705 |
| * tree.c (build_cplus_new): Avoid duplicate diagnostic about |
| incomplete type, early return error_mark_node if the second |
| argument is error_mark_node. |
| |
| 2018-10-12 Nathan Sidwell <nathan@acm.org> |
| |
| * parser.h (struct cp_parser): Drop implicit_extern_c. |
| * parser.c (cp_debug_parser): Drop implicit_extern_c. |
| (cp_parser_new): Likewise. |
| (cp_parser_translation_unit): Handle implicit extern c here. Call |
| cp_parser_toplevel_declaration. |
| (cp_parser_toplevel_declaration): New, broken out of ... |
| (cp_parser_declaration_seq_opt): ... here. Call it. Drop |
| implicit extern C handling. |
| |
| 2018-10-11 Will Wray <wjwray@gmail.com> |
| |
| PR c++/87364 |
| * cxx-pretty-print.c (pp_cxx_enumeration_constant): New function. |
| (cxx_pretty_printer::constant): Use it. |
| |
| 2018-10-11 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/84993 |
| * call.c (enforce_access): Move diagnostics to... |
| (complain_about_access): ...this new function. |
| * cp-tree.h (class access_failure_info): Rename split out field |
| "m_field_decl" into "m_decl" and "m_diag_decl". |
| (access_failure_info::record_access_failure): Add tree param. |
| (access_failure_info::was_inaccessible_p): New accessor. |
| (access_failure_info::get_decl): New accessor. |
| (access_failure_info::get_diag_decl): New accessor. |
| (access_failure_info::get_any_accessor): New member function. |
| (access_failure_info::add_fixit_hint): New static member function. |
| (complain_about_access): New decl. |
| * typeck.c (access_failure_info::record_access_failure): Update |
| for change to fields. |
| (access_failure_info::maybe_suggest_accessor): Split out into... |
| (access_failure_info::get_any_accessor): ...this new function... |
| (access_failure_info::add_fixit_hint): ...and this new function. |
| (finish_class_member_access_expr): Split out "has no member named" |
| error-handling into... |
| (complain_about_unrecognized_member): ...this new function, and |
| check that the guessed name is accessible along the access path. |
| Only provide a spell-correction fix-it hint if it is; otherwise, |
| attempt to issue an accessor fix-it hint. |
| |
| 2018-10-11 Nathan Sidwell <nathan@acm.org> |
| |
| * parser.c (cp_parser_translation_unit): Return void. Don't fail |
| at first extra }, simplify logic. |
| (c_parse_file): Call finish_translation_unit here. |
| |
| 2018-10-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87582 |
| * typeck.c (maybe_warn_about_returning_address_of_local): If |
| whats_returned is a structured binding identifier and the structured |
| binding is a reference, recurse on its initializer. |
| |
| PR c++/87547 |
| * rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead |
| of TREE_TYPE. |
| |
| 2018-10-10 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87567 - constexpr rejects call to non-constexpr function. |
| * constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return |
| true if the condition is always false. |
| <case WHILE_STMT>: Likewise. |
| |
| 2018-10-09 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84423 |
| * pt.c (convert_template_argument): Immediately return error_mark_node |
| if the second argument is erroneous. |
| * parser.c (cp_parser_type_id): Add location_t * parameter. |
| (cp_parser_type_id_1): Likewise. |
| (cp_parser_alias_declaration): Adjust cp_parser_type_id call, |
| obtain the location of the type and save it. |
| (cp_parser_template_type_arg): Adjust. |
| (cp_parser_trailing_type_id): Likewise. |
| * decl.c (grokdeclarator): Improve error message for 'auto' in |
| alias declaration. |
| |
| 2018-10-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/71128 |
| * pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be |
| explicitly instantiated. |
| |
| 2018-10-05 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/56856 |
| * call.c (build_over_call): Build a vec of locations of the |
| arguments before the call to maybe_constant_value, and pass to |
| check_function_arguments. |
| * cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as |
| c_get_substring_location. |
| * parser.c (cp_parser_string_literal): Capture string |
| concatenation locations. |
| |
| 2018-10-04 Nathan Sidwell <nathan@acm.org> |
| |
| * lang-specs.h: Use string contatenation, not line splicing. |
| |
| 2018-10-03 Jason Merrill <jason@redhat.com> |
| |
| Implement P0840, language support for empty objects. |
| * tree.c (handle_no_unique_addr_attribute): New. |
| (cxx_attribute_table): Add [[no_unique_address]]. |
| * class.c (field_poverlapping_p): New. |
| (layout_class_type): Check it. Adjust DECL_SIZE of potentially |
| overlapping fields. |
| (layout_empty_base_or_field): Rename from layout_empty_base, handle |
| FIELD_DECL as well. |
| (build_base_field, record_subobject_offsets): Adjust. |
| |
| 2018-10-03 Martin Liska <mliska@suse.cz> |
| |
| PR gcov-profile/86109 |
| * parser.c (cp_parser_lambda_declarator_opt): |
| Set DECL_LAMBDA_FUNCTION for lambdas. |
| |
| 2018-10-02 Richard Biener <rguenther@suse.de> |
| |
| * name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE. |
| |
| 2018-09-28 Eric Botcazou <ebotcazou@adacore.com> |
| Pierre-Marie de Rodat <derodat@adacore.com> |
| |
| * method.c (use_thunk): Adjust call to cgraph_node::create_thunk. |
| |
| 2018-09-28 Richard Biener <rguenther@suse.de> |
| |
| * error.c (cp_print_error_function): Simplify by eliding |
| the BLOCK_ABSTRACT_ORIGIN chasing. |
| |
| 2018-09-27 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84940 |
| * semantics.c (finish_unary_op_expr): Check return value of |
| build_x_unary_op for error_mark_node. |
| |
| 2018-09-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87398 |
| * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only |
| look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs. |
| |
| 2018-09-25 Martin Liska <mliska@suse.cz> |
| |
| * name-lookup.c (namespace_scope_ht_size): Remove |
| unused function. |
| * parser.c (cp_lexer_next_token_is_not_keyword): Likewise. |
| |
| 2018-09-24 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85070 |
| * method.c (lazily_declare_fn): During error-recovery add_method |
| may return false. |
| |
| 2018-09-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87372 - __func__ constexpr evaluation. |
| * constexpr.c (maybe_constant_init_1): Pass false for strict down to |
| cxx_eval_outermost_constant_expr. |
| |
| 2018-09-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87109 - wrong ctor with maybe-rvalue semantics. |
| * call.c (build_user_type_conversion_1): Refine the maybe-rvalue |
| check to only return if we're converting the return value to a base |
| class. |
| |
| 2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io> |
| |
| * g++spec.c (lang_specific_driver): Handle -r like -nostdlib. |
| |
| 2018-09-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/87075 - ICE with constexpr array initialization. |
| * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization. |
| |
| 2018-09-19 Marek Polacek <polacek@redhat.com> |
| |
| Add -Wclass-conversion. |
| * decl.c (grok_op_properties): Change a warning from -Wconversion to |
| -Wclass-conversion. Make it print the types. |
| |
| 2018-09-19 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/87324 |
| * parser.c (cp_parser_initializer_list): Assign error_mark_node |
| to the index upon error. |
| |
| 2018-09-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87357 - missing -Wconversion warning |
| * decl.c (grok_op_properties): Remove diagnostic parts mentioning |
| a conversion to a reference to void. Use |
| same_type_ignoring_top_level_qualifiers_p rather than comparing types |
| directly. |
| |
| 2018-09-18 Marek Polacek <polacek@redhat.com> |
| |
| P1064R0 - Allowing Virtual Function Calls in Constant Expressions |
| * call.c (build_over_call): No longer check if we're outside a template |
| function. |
| * class.c (build_vtbl_initializer): Build vtable's constructor with |
| indexes. |
| * constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's |
| initializer. Handle OBJ_TYPE_REF. |
| (potential_constant_expression_1): Handle OBJ_TYPE_REF. |
| * decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL. |
| (initialize_artificial_var): Mark the variable as constexpr. |
| (grokdeclarator): Change error to pedwarn. Only warn when |
| pedantic and not C++2a. |
| |
| 2018-09-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85065 |
| * cp-tree.h (NON_ERROR): New. |
| * pt.c (auto_hash::hash): Use it. |
| (do_auto_deduction): Likewise. |
| |
| 2018-09-18 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/86881 |
| * name-lookup.c (check_local_shadow): Ignore auto types. |
| |
| 2018-09-17 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.c (range_label_for_type_mismatch::get_text): Update for |
| new param. |
| |
| 2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de> |
| |
| * typeck2.c (digest_init_r): Fix overlength strings. |
| |
| 2018-09-13 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| PR c++/87093 |
| * method.c (constructible_expr): We're in an unevaluated context |
| in all cases, not just for class targets. |
| |
| 2018-09-12 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85110 |
| * call.c (struct conversion_info): Add "loc" field. |
| (arg_conversion_rejection): Add "loc" param, using it to |
| initialize the new field. |
| (bad_arg_conversion_rejection): Likewise. |
| (explicit_conversion_rejection): Initialize the new field to |
| UNKNOWN_LOCATION. |
| (template_conversion_rejection): Likewise. |
| (add_function_candidate): Pass on the argument location to the new |
| param of arg_conversion_rejection. |
| (add_conv_candidate): Likewise. |
| (build_builtin_candidate): Likewise. |
| (build_user_type_conversion_1): Likewise. |
| (single_z_candidate): New function. |
| (maybe_get_bad_conversion_for_unmatched_call): New function. |
| (complain_about_bad_argument): New function, based on part of |
| convert_for_assignment. |
| (build_new_method_call_1): Split out handling of the "no viable |
| candidates" case into... |
| (complain_about_no_candidates_for_method_call): ...this new |
| function, and use the new functions above to special-case the |
| handling of a single non-viable candidate due to a bad argument. |
| * cp-tree.h (complain_about_bad_argument): New decl. |
| * typeck.c (convert_for_assignment): Split out one error-handling |
| case into complain_about_bad_argument. |
| |
| 2018-09-09 Cesar Philippidis <cesar@codesourcery.com> |
| Julian Brown <julian@codesourcery.com> |
| |
| PR middle-end/86336 |
| * semantics.c (finish_omp_clauses): Treat C++ references the same in |
| OpenACC as OpenMP. |
| |
| 2018-08-28 Martin Liska <mliska@suse.cz> |
| |
| * constexpr.c (cxx_eval_call_expression): Add quotes |
| to -fconstexpr-depth=. |
| |
| 2018-09-10 Marek Polacek <polacek@redhat.com> |
| |
| * class.c (build_vtbl_ref): Remove. |
| (build_vtbl_ref_1): Rename to build_vtbl_ref. |
| (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1. |
| |
| 2018-09-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87150 - wrong ctor with maybe-rvalue semantics. |
| * call.c (struct conversion): Update commentary. |
| (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE |
| for ck_base. |
| |
| 2018-09-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86678 - constexpr function with non-constant after return. |
| * constexpr.c (potential_constant_expression_1): Add jump_target. |
| (breaks): Check for BREAK_STMT. |
| (continues): Check for CONTINUE_STMT. |
| |
| 2018-09-08 Marek Polacek <polacek@redhat.com> |
| |
| * cxx-pretty-print.c (cxx_pretty_printer::statement) <case |
| RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT. |
| |
| 2018-09-07 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87152 - range-based for loops with initializer broken in templates. |
| * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>: |
| Recur into RANGE_FOR_INIT_STMT. |
| * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT. |
| * cp-tree.h (RANGE_FOR_INIT_STMT): Define. |
| * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump |
| RANGE_FOR_INIT_STMT. |
| * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into |
| RANGE_FOR_INIT_STMT. |
| * semantics.c (begin_range_for_stmt): Adjust call to build_stmt. |
| Do put the init statement in RANGE_FOR_INIT_STMT. |
| (finish_range_for_decl): Pop it for templates. |
| |
| 2018-09-06 Bernd Edlinger <bernd.edlinger@hotmail.de> |
| |
| * decl.c (check_initializer): Call cp_complete_array_type. |
| |
| 2018-09-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87109, wrong overload with ref-qualifiers. |
| * call.c (build_user_type_conversion_1): Use NULL instead of 0. Bail |
| out if performing the maybe-rvalue overload resolution and a conversion |
| function is getting called. |
| |
| PR c++/86982, -Wreturn-local-addr and std::move and std::forward. |
| * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls |
| to std::move or std::forward. |
| (is_std_forward_p): New function. |
| |
| 2018-09-05 Pádraig Brady <p@draigbrady.com> |
| |
| PR c++/87185 |
| * lambda.c (prune_lambda_captures): Protect against const_vars.get |
| returning NULL. |
| |
| 2018-09-04 Marek Polacek <polacek@redhat.com> |
| |
| * cp-tree.h (treat_lvalue_as_rvalue_p): Declare. |
| * except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P. |
| * typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK |
| parameter. |
| (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call. |
| (check_return_expr): Likewise. |
| |
| 2018-09-03 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84980 |
| * constraint.cc (finish_shorthand_constraint): Early return if the |
| constraint is erroneous. |
| |
| 2018-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de> |
| |
| * decl.c (eval_check_narrowing): Remove. |
| (check_initializer): Move call to braced_list_to_string from here ... |
| * typeck2.c (store_init_value): ... to here. |
| (digest_init_r): Remove handing of signed/unsigned char strings. |
| |
| 2018-08-31 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/87155 |
| PR c++/84707 |
| * name-lookup.c (name_lookup::search_namespace): Don't look at |
| inlines when searching for NULL names. |
| |
| * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching |
| of return types and parms. |
| * parser.c (cp_parser_parameter_declaration_clause): Likewise, |
| '()' always means '(void)'. |
| |
| 2018-08-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87095 |
| * decl.c (begin_destructor_body): If current_class_type has |
| virtual bases and the primary base is nearly empty virtual base, |
| voidify clearing of vptr and make it conditional on in-charge |
| argument. |
| |
| 2018-08-29 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85265 |
| * parser.c (cp_parser_introduction_list): If cp_parser_identifier |
| returns error_mark_node early exit the loop. |
| (cp_parser_template_introduction): Improve error-recovery, remove |
| error call about empty introduction-list. |
| |
| 2018-08-29 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85110 |
| * call.c (print_conversion_rejection): Add "fn" param and use it |
| for "no known conversion" messages to underline the pertinent |
| param. |
| (print_z_candidate): Supply "fn" to the new param above. |
| |
| 2018-08-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/87122 |
| * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If |
| processing_template_decl and decl is structured binding decl, call |
| cp_finish_decomp. |
| |
| 2018-08-28 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/86546 |
| * decl.c (finish_case_label): If the type is erroneous early |
| return error_mark_node. |
| |
| 2018-08-27 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/63392 |
| * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it |
| hint. |
| |
| 2018-08-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86993 |
| * cp-tree.h (cxx_readonly_error): Add location_t argument. |
| * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to |
| ERROR_FOR_ASSIGNMENT macro and readonly_error. Add LOC argument |
| to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and |
| pass LOC to it. Formatting fixes. |
| * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error. |
| (cp_build_modify_expr): Pass loc to cxx_readonly_error. |
| * semantics.c (finish_asm_stmt): Pass input_location to |
| cxx_readonly_error. |
| |
| 2018-08-27 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/87091 |
| * decl.c (grokdeclarator): Update for conversion of show_caret_p |
| to a tri-state. |
| * error.c (cp_printer): Likewise. |
| * name-lookup.c (maybe_suggest_missing_std_header): Update call to |
| maybe_add_include_fixit to suggest overriding the location, as it |
| is for a note. |
| * parser.c (cp_parser_string_literal): Update for conversion of |
| show_caret_p to a tri-state. |
| (cp_parser_elaborated_type_specifier): Likewise. |
| (set_and_check_decl_spec_loc): Likewise. |
| * pt.c (listify): Update call to maybe_add_include_fixit to not |
| override the location, as it is for an error. |
| * rtti.c (typeid_ok_p): Likewise. |
| |
| 2018-08-27 Martin Liska <mliska@suse.cz> |
| |
| * call.c (build_call_a): Use new function |
| fndecl_built_in_p and remove check for FUNCTION_DECL if |
| possible. |
| (build_cxx_call): Likewise. |
| * constexpr.c (constexpr_fn_retval): Likewise. |
| (cxx_eval_builtin_function_call): Likewise. |
| (cxx_eval_call_expression): Likewise. |
| (potential_constant_expression_1): Likewise. |
| * cp-gimplify.c (cp_gimplify_expr): Likewise. |
| (cp_fold): Likewise. |
| * decl.c (decls_match): Likewise. |
| (validate_constexpr_redeclaration): Likewise. |
| (duplicate_decls): Likewise. |
| (make_rtl_for_nonlocal_decl): Likewise. |
| * name-lookup.c (consider_binding_level): Likewise. |
| (cp_emit_debug_info_for_using): Likewise. |
| * semantics.c (finish_call_expr): Likewise. |
| * tree.c (builtin_valid_in_constant_expr_p): Likewise. |
| |
| 2018-08-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/87080 |
| * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template. |
| |
| PR c++/87029, Implement -Wredundant-move. |
| * typeck.c (treat_lvalue_as_rvalue_p): New function. |
| (maybe_warn_pessimizing_move): Call convert_from_reference. |
| Warn about redundant moves. |
| |
| 2018-08-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/67012 |
| PR c++/86942 |
| * decl.c (grokdeclarator): Disallow functions with trailing return |
| type with decltype(auto) as its type. Also check the function if |
| it's inner declarator doesn't exist |
| |
| 2018-08-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86499 |
| * parser.c (cp_parser_lambda_introducer): Give error if a non-local |
| lambda has a capture-default. |
| |
| 2018-08-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (check_static_variable_definition): Change to return void. |
| |
| 2018-08-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86981, Implement -Wpessimizing-move. |
| * typeck.c (decl_in_std_namespace_p): New. |
| (is_std_move_p): New. |
| (maybe_warn_pessimizing_move): New. |
| (can_do_nrvo_p): New, factored out of ... |
| (check_return_expr): ... here. Warn about potentially harmful |
| std::move in a return statement. |
| |
| PR c++/65043 |
| * call.c (standard_conversion): Set check_narrowing. |
| * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather |
| than comparing with INTEGER_TYPE. |
| |
| * cp-tree.h: Fix typo. |
| |
| 2018-08-20 David Malcolm <dmalcolm@redhat.com> |
| |
| PR other/84889 |
| * call.c (build_user_type_conversion_1): Add auto_diagnostic_group |
| instance(s). |
| (print_error_for_call_failure): Likewise. |
| (build_op_call_1): Likewise. |
| (build_conditional_expr_1): Likewise. |
| (build_new_op_1): Likewise. |
| (build_op_delete_call): Likewise. |
| (convert_like_real): Likewise. |
| (build_over_call): Likewise. |
| (build_new_method_call_1): Likewise. |
| (joust): Likewise. |
| * class.c (check_tag): Likewise. |
| (finish_struct_anon_r): Likewise. |
| (one_inherited_ctor): Likewise. |
| (finalize_literal_type_property): Likewise. |
| (explain_non_literal_class): Likewise. |
| (find_flexarrays): Likewise. |
| (resolve_address_of_overloaded_function): Likewise. |
| * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise. |
| (is_valid_constexpr_fn): Likewise. |
| (cx_check_missing_mem_inits): Likewise. |
| * cp-gimplify.c (cp_genericize_r): Likewise. |
| * cvt.c (maybe_warn_nodiscard): Likewise. |
| * decl.c (warn_extern_redeclared_static): Likewise. |
| (check_redeclaration_exception_specification): Likewise. |
| (check_no_redeclaration_friend_default_args): Likewise. |
| (duplicate_decls): Likewise. |
| (redeclaration_error_message): Likewise. |
| (warn_misplaced_attr_for_class_type): Likewise. |
| * decl2.c (finish_static_data_member_decl): Likewise. |
| (no_linkage_error): Likewise. |
| (cp_warn_deprecated_use): Likewise. |
| * error.c (qualified_name_lookup_error): Likewise. |
| * friend.c (make_friend_class): Likewise. |
| (do_friend): Likewise. |
| * init.c (perform_member_init): Likewise. |
| (build_new_1): Likewise. |
| (build_vec_delete_1): Likewise. |
| (build_delete): Likewise. |
| * lex.c (unqualified_name_lookup_error): Likewise. |
| * name-lookup.c (check_extern_c_conflict): Likewise. |
| (inform_shadowed): New function. |
| (check_local_shadow): Add auto_diagnostic_group instances, |
| replacing goto "inform_shadowed" label with call to subroutine. |
| (set_local_extern_decl_linkage): Add auto_diagnostic_group |
| instance(s). |
| * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. |
| (cp_parser_namespace_name): Likewise. |
| * pt.c (check_specialization_namespace): Likewise. |
| (check_template_variable): Likewise. |
| (warn_spec_missing_attributes): Likewise. |
| (check_explicit_specialization): Likewise. |
| (process_partial_specialization): Likewise. |
| (lookup_template_class_1): Likewise. |
| (finish_template_variable): Likewise. |
| (do_auto_deduction): Likewise. |
| * search.c (check_final_overrider): Likewise. |
| (look_for_overrides_r): Likewise. |
| * tree.c (maybe_warn_parm_abi): Likewise. |
| * typeck.c (cxx_sizeof_expr): Likewise. |
| (cp_build_function_call_vec): Likewise. |
| (cp_build_binary_op): Likewise. |
| (convert_for_assignment): Likewise. |
| (maybe_warn_about_returning_address_of_local): Likewise. |
| * typeck2.c (abstract_virtuals_error_sfinae): Likewise. |
| (check_narrowing): Likewise. |
| |
| 2018-08-17 David Malcolm <dmalcolm@redhat.com> |
| |
| * typeck.c (string_conv_p): Extract location from EXP and use it |
| in preference to input_location when issuing warnings. |
| |
| 2018-08-15 David Malcolm <dmalcolm@redhat.com> |
| |
| * call.c: Include "gcc-rich-location.h". |
| (convert_like_real): Add range label for "invalid conversion" |
| diagnostic. |
| (perform_implicit_conversion_flags): Add type label to the |
| "could not convert" error. |
| * error.c: Include "gcc-rich-location.h". |
| (range_label_for_type_mismatch::get_text): New function. |
| * typeck.c (convert_for_assignment): Add type label to |
| the "cannot convert" error if a location is available. |
| |
| 2018-08-15 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2 |
| emit an error instead of a permerror. |
| |
| 2018-08-13 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/57891 |
| * call.c (struct conversion): Add check_narrowing_const_only. |
| (build_converted_constant_expr): Set check_narrowing and |
| check_narrowing_const_only. Give error if expr is error node. |
| (convert_like_real): Pass it to check_narrowing. |
| * cp-tree.h (check_narrowing): Add a default parameter. |
| * decl.c (compute_array_index_type): Use input_location instead of |
| location_of. |
| * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error. |
| * typeck2.c (check_narrowing): Don't warn for instantiation-dependent |
| expressions. Call maybe_constant_value instead of |
| fold_non_dependent_expr. Don't mention { } in diagnostic. Only check |
| narrowing for constants if CONST_ONLY. |
| |
| 2018-08-13 Martin Sebor <msebor@redhat.com> |
| |
| PR tree-optimization/71625 |
| * decl.c (check_initializer): Call braced_list_to_string. |
| (eval_check_narrowing): New function. |
| * gcc/cp/typeck2.c (digest_init_r): Accept strings literals |
| as initilizers for all narrow character types. |
| |
| 2018-08-13 Marek Polacek <polacek@redhat.com> |
| |
| P0806R2 - Deprecate implicit capture of this via [=] |
| * lambda.c (add_default_capture): Formatting fixes. Warn about |
| deprecated implicit capture of this via [=]. |
| |
| PR c++/86915 |
| * decl.c (create_array_type_for_decl): Handle null name. |
| |
| 2018-08-10 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86728 - C variadic generic lambda. |
| * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into |
| a pack if it's followed by a declarator-id. |
| |
| 2018-08-08 Jakub Jelinek <jakub@redhat.com> |
| |
| P0595R1 - is_constant_evaluated |
| * cp-tree.h (enum cp_built_in_function): New. |
| (maybe_constant_init): Add pretend_const_required argument. |
| * typeck2.c (store_init_value): Pass true as new argument to |
| maybe_constant_init. |
| * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS |
| for BUILT_IN_UNREACHABLE. |
| (struct constexpr_ctx): Add pretend_const_required field. |
| (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P |
| macro. Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED. Check also |
| DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE. |
| (cxx_eval_outermost_constant_expr): Add pretend_const_required |
| argument, initialize pretend_const_required field in ctx. If the |
| result is TREE_CONSTANT and non_constant_p, retry with |
| pretend_const_required false if it was true. |
| (is_sub_constant_expr): Initialize pretend_const_required_field in |
| ctx. |
| (cxx_constant_value): Pass true as pretend_const_required to |
| cxx_eval_outermost_constant_expr. |
| (maybe_constant_value): Pass false as pretend_const_required to |
| cxx_eval_outermost_constant_expr. |
| (fold_non_dependent_expr): Likewise. |
| (maybe_constant_init_1): Add pretend_const_required argument, pass it |
| down to cxx_eval_outermost_constant_expr. Pass !allow_non_constant |
| instead of false as strict to cxx_eval_outermost_constant_expr. |
| (maybe_constant_init): Add pretend_const_required argument, pass it |
| down to maybe_constant_init_1. |
| (cxx_constant_init): Pass true as pretend_const_required to |
| maybe_constant_init_1. |
| * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to |
| CP_BUILT_IN_IS_CONSTANT_EVALUATED. |
| (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls. |
| * decl.c: Include langhooks.h. |
| (cxx_init_decl_processing): Register __builtin_is_constant_evaluated |
| built-in. |
| * tree.c (builtin_valid_in_constant_expr_p): Return true for |
| CP_BUILT_IN_IS_CONSTANT_EVALUATED. |
| * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE. |
| |
| PR c++/86836 |
| * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names |
| before tsubst_init, not after it. |
| |
| PR c++/86738 |
| * constexpr.c (cxx_eval_binary_expression): For arithmetics involving |
| NULL pointer set *non_constant_p to true. |
| (cxx_eval_component_reference): For dereferencing of a NULL pointer, |
| set *non_constant_p to true and return t. |
| |
| 2018-08-07 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/59480, DR 136 |
| * decl.c (check_no_redeclaration_friend_default_args): New. |
| (duplicate_decls): Use the latter; also check that a friend |
| declaration specifying default arguments is a definition. |
| |
| 2018-08-07 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| PR c++/79133 |
| * name-lookup.c (check_local_shadow): Reject captures and parameters |
| with the same name. |
| |
| 2018-08-06 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86767 |
| * constexpr.c (cxx_eval_statement_list): Handle continue. |
| |
| 2018-08-03 David Malcolm <dmalcolm@redhat.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| * decl.c: Include "gcc-rich-location.h". |
| (add_return_star_this_fixit): New function. |
| (finish_function): When warning about missing return statements in |
| functions returning non-void, add a "return *this;" fix-it hint for |
| assignment operators. |
| |
| 2018-08-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86706 |
| * class.c (build_base_path): Use currently_open_class. |
| |
| 2018-08-02 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.c (cxx_print_error_function): Duplicate "file" before |
| passing it to pp_set_prefix. |
| (cp_print_error_function): Use pp_take_prefix when saving the |
| existing prefix. |
| |
| 2018-08-02 Richard Biener <rguenther@suse.de> |
| |
| PR c++/86763 |
| * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE |
| to the CLASSTYPE_AS_BASE. |
| |
| 2018-08-01 Martin Sebor <msebor@redhat.com> |
| |
| PR tree-optimization/86650 |
| * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and |
| TREE_BLOCK (t) from within percent_K_format to this callsite. |
| |
| 2018-08-01 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/86661 |
| * class.c (note_name_declared_in_class): Use location_of in permerror |
| instead of DECL_SOURCE_LOCATION (for OVERLOADs). |
| |
| 2018-07-31 Tom de Vries <tdevries@suse.de> |
| |
| PR debug/86687 |
| * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE. |
| |
| 2018-07-31 Jakub Jelinek <jakub@redhat.com> |
| |
| P1008R1 - prohibit aggregates with user-declared constructors |
| * class.c (check_bases_and_members): For C++2a set |
| CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than |
| type_has_user_provided_or_explicit_constructor. |
| |
| 2018-07-31 Martin Liska <mliska@suse.cz> |
| |
| PR c++/86653 |
| * parser.c (cp_parser_condition): Initialize non_constant_p |
| to false. |
| |
| 2018-07-28 David Malcolm <dmalcolm@redhat.com> |
| |
| * error.c (cp_printer): In the leading comment, move "%H" and "%I" |
| into alphabetical order, and add missing "%G" and "%K". Within |
| the switch statement, move cases 'G', 'H', 'I' and 'K' so that the |
| cases are in alphabetical order. |
| |
| 2018-07-25 Jakub Jelinek <jakub@redhat.com> |
| |
| * cp-tree.h (enum cp_tree_index): Add |
| CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER |
| and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER. |
| (abi_tag_identifier, aligned_identifier, begin_identifier, |
| end_identifier, get__identifier, gnu_identifier, |
| tuple_element_identifier, tuple_size_identifier, type_identifier, |
| value_identifier, fun_identifier, closure_identifier): Define. |
| * decl.c (initialize_predefined_identifiers): Initialize the above |
| identifiers. |
| (get_tuple_size): Use tuple_size_identifier instead of |
| get_identifier ("tuple_size") and value_identifier instead of |
| get_identifier ("value"). |
| (get_tuple_element_type): Use tuple_element_identifier instead of |
| get_identifier ("tuple_element") and type_identifier instead of |
| get_identifier ("type"). |
| (get_tuple_decomp_init): Use get__identifier instead of |
| get_identifier ("get"). |
| * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of |
| get_identifier ("_FUN"). |
| * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier |
| instead of get_identifier ("__closure"). |
| (cp_parser_std_attribute): Use gnu_identifier instead of |
| get_identifier ("gnu"). |
| (cp_parser_std_attribute_spec): Likewise. Use aligned_identifier |
| instead of get_identifier ("aligned"). |
| * class.c (check_abi_tags, inherit_targ_abi_tags): Use |
| abi_tag_identifier instead of get_identifier ("abi_tag"). |
| |
| PR c++/85515 |
| * cp-tree.h (enum cp_tree_index): Add |
| CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER. |
| (for_range__identifier, for_begin__identifier, for_end__identifier, |
| for_range_identifier, for_begin_identifier, for_end_identifier): |
| Define. |
| * decl.c (initialize_predefined_identifiers): Initialize |
| for_{range,begin,end}{,_}_identifier. |
| * parser.c (build_range_temp): Use for_range__identifier instead of |
| get_identifier ("__for_range"). |
| (cp_convert_range_for): Use for_begin__identifier and |
| for_end__identifier instead of get_identifier ("__for_begin") and |
| get_identifier ("__for_end"). |
| * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} " |
| local symbols to "__for_{range,begin,end}". |
| |
| 2018-07-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86569 |
| * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind |
| of expressions other than INTEGER_CST regardless of TREE_NO_WARNING |
| or warn_nonnull_compare. |
| |
| 2018-07-19 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| Revert fix for c++/59480 (and testsuite followup) |
| |
| 2019-07-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/59480, DR 136 |
| * decl.c (check_no_redeclaration_friend_default_args): New. |
| (duplicate_decls): Use the latter; also check that a friend |
| declaration specifying default arguments is a definition. |
| |
| 2018-07-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86550 |
| * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type |
| specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR. |
| |
| 2018-07-18 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86190 - bogus -Wsign-conversion warning |
| * typeck.c (cp_build_binary_op): Fix formatting. Add a warning |
| sentinel. |
| |
| 2018-07-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/59480, DR 136 |
| * decl.c (check_no_redeclaration_friend_default_args): New. |
| (duplicate_decls): Use the latter; also check that a friend |
| declaration specifying default arguments is a definition. |
| |
| 2018-07-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * class.c (note_name_declared_in_class): Prefer permerror + inform |
| to a pair of permerrors; use DECL_SOURCE_LOCATION. |
| |
| 2018-07-18 Richard Biener <rguenther@suse.de> |
| |
| PR debug/86523 |
| * decl2.c (c_parse_final_cleanups): Call write_out_vars before |
| start_static_storage_duration_function sets current_function_decl. |
| |
| 2018-07-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86480 - nested variadic lambda and constexpr if. |
| * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into |
| IF_STMT_EXTRA_ARGS. |
| * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set |
| cp_unevaluated_operand. |
| [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise. |
| |
| 2018-07-16 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * class.c (resolve_address_of_overloaded_function): Don't emit an |
| inform if the matching permerror returns false. |
| * pt.c (check_specialization_namespace): Likewise. |
| |
| 2018-07-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/3698 |
| PR c++/86208 |
| * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or |
| in TREE_USED flag from stmt to h->to. |
| |
| 2018-07-13 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/86374 |
| * pt.c (lookup_template_class_1): Use tsubst_aggr_type for |
| contexts that are classes. |
| * parser.c (cp_parser_template_id): Combine entering_scope decl & |
| initializer. |
| |
| 2018-07-12 Jakub Jelinek <jakub@redhat.com> |
| |
| * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable |
| type here, instead add "omp declare target implicit" attribute. Add |
| that attribute instead of "omp declare target" also when |
| processing_template_decl. |
| * decl.c (cp_finish_decl): Diagnose vars without mappable type here, |
| and before calling cp_omp_mappable_type call complete_type. |
| |
| 2018-07-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR sanitizer/86406 |
| * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing |
| DEBUG_BEGIN_STMTs. |
| |
| PR c++/86443 |
| * semantics.c (handle_omp_for_class_iterator): Remove lastp argument, |
| instead of setting *lastp turn orig_declv elt into a TREE_LIST. |
| (finish_omp_for): Adjust handle_omp_for_class_iterator caller. |
| * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain |
| TREE_LIST for both the original class iterator and the "last" helper |
| var. |
| |
| 2018-07-09 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokdeclarator): Use rich_location::add_range in three |
| more places; include gcc-rich-location.h. |
| |
| 2018-07-07 Aldy Hernandez <aldyh@redhat.com> |
| |
| * decl.c (build_enumerator): Change overflow type to overflow_type. |
| * init.c (build_new_1): Same. |
| |
| 2018-07-05 Nathan Sidwell <nathan@acm.org> |
| |
| * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not |
| NO_IMPLICIT_EXTERN_C. |
| * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise. |
| |
| 2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| PR c++/86398 |
| * method.c (is_trivially_xible): Return false |
| if is_xible_helper returns a NULL_TREE. |
| |
| 2018-07-03 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (min_location): New. |
| (smallest_type_quals_location): Use the latter. |
| (check_concept_fn): Use DECL_SOURCE_LOCATION. |
| (grokdeclarator): Use accurate locations in a number of error |
| messages involving ds_thread, ds_storage_class, ds_virtual, |
| ds_constexpr, ds_typedef and ds_friend; exploit min_location. |
| |
| 2018-07-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86201 |
| * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings. |
| |
| 2018-07-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86378 - functional cast in noexcept-specifier. |
| * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration. |
| |
| 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range |
| in error message about __thread and thread_local at the same time. |
| |
| 2018-06-29 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86184 |
| * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs. |
| |
| 2018-06-28 David Malcolm <dmalcolm@redhat.com> |
| |
| * parser.c (cp_parser_error_1): After issuing a conflict marker |
| error, consume tokens until the end of the source line. |
| |
| 2018-06-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86342 - -Wdeprecated-copy and system headers. |
| * decl2.c (cp_warn_deprecated_use): Don't warn about declarations |
| in system headers. |
| |
| 2018-06-27 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/86329 |
| * name-lookup.c (consider_binding_level): Filter out names that |
| match anon_aggrname_p. |
| |
| 2018-06-27 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.c (do_pushtag): If we skip a class level, also skip |
| its template level. |
| |
| 2018-06-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86320 - memory-hog with std::array of pair |
| * typeck2.c (process_init_constructor_array): Only compute a |
| constant initializer once. |
| |
| PR c++/80290 - memory-hog with std::pair. |
| * pt.c (fn_type_unification): Add convs parameter. |
| (check_non_deducible_conversion): Remember conversion. |
| (check_non_deducible_conversions): New. Do checks here. |
| (type_unification_real): Not here. Remove flags parm. |
| * call.c (add_function_candidate): Make convs a parameter. |
| Don't recalculate the conversion if it's already set. |
| (add_template_candidate_real): Allocate convs here. |
| (good_conversion, conv_flags): New. |
| |
| 2018-06-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/86291 |
| * parser.c (cp_parser_omp_for_loop_init): Change for_block argument |
| type from vec<tree, va_gc> * to vec<tree, va_gc> *&. |
| |
| 2018-06-23 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (bad_specifiers): Add const location_t* parameter and |
| use locations in error messages about 'inline' and 'virtual'. |
| (mark_inline_variable): Add location_t parameter and use it in |
| error_at and pedwarn messages. |
| (grokdeclarator): Use declspecs->locations[ds_constexpr], |
| declspecs->locations[ds_concept], declspecs->locations[ds_virtual], |
| declspecs->locations[ds_inline] in many error messages; adjust |
| bad_specifiers and mark_inline_variable calls. |
| (grokvardecl): Use declspecs->locations[ds_concept] in error message. |
| |
| 2018-06-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86219 - ICE with erroneous initializer in template. |
| * constexpr.c (fold_non_dependent_expr): Add complain parm. |
| * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c: |
| Pass it. |
| * call.c (build_cxx_call): Don't mess with builtins in a template. |
| * typeck2.c (store_init_value): If fold_non_dependent_expr didn't |
| produce a constant value, go back to the uninstantiated form. |
| |
| Avoid taking the address of something just because it's in parens. |
| * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New. |
| (cxx_fold_indirect_ref): Use it. |
| (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it. |
| * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR. |
| * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of |
| static_cast to reference type. |
| (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR. |
| |
| 2018-06-21 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS. |
| |
| * name-lookup.c (do_push_to_top_level): Don't allocate |
| current_lang_base. |
| (do_pop_from_top_level): Release current_lang_base. |
| |
| Let -fmem-report see callers of cxx_make_type. |
| * lex.c (cxx_make_type): Add MEM_STAT_DECL. |
| (make_class_type): Likewise. |
| (cxx_make_type_hook): New. |
| * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook. |
| |
| 2018-06-20 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/85634 |
| * friend.c (add_friend): Keep lookup sets of tempate sets. |
| |
| 2018-06-20 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter; |
| tidy handling of a null location_t argument; use proper location |
| information in a few additional error messages. |
| (grokdeclarator): Update calls. |
| |
| 2018-06-20 Chung-Lin Tang <cltang@codesourcery.com> |
| Thomas Schwinge <thomas@codesourcery.com> |
| Cesar Philippidis <cesar@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_clause_name): Add support for finalize |
| and if_present. Make present_or_{copy,copyin,copyout,create} aliases |
| to their non-present_or_* counterparts. Make 'self' an alias to |
| PRAGMA_OACC_CLAUSE_HOST. |
| (cp_parser_oacc_data_clause): Update GOMP mappings for |
| PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove |
| PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}. |
| (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses. |
| Remove support for present_or_* clauses. |
| (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses. |
| (OACC_PARALLEL_CLAUSE_MASK): Likewise. |
| (OACC_DECLARE_CLAUSE_MASK): Likewise. |
| (OACC_DATA_CLAUSE_MASK): Likewise. |
| (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses. |
| (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause. |
| (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT. |
| (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses. |
| * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE. |
| * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE. |
| |
| 2018-06-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86240 |
| * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR. |
| (fold_simple_1): Likewise. |
| * error.c (dump_expr): Likewise. |
| |
| 2018-06-20 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/85634 |
| * cp-tree.h (lookup_keep): Drop KEEP parm. |
| (lookup_list_keep): Delete. |
| (maybe_get_fns): Declare. |
| * parser.c (cp_parser_primary_expression): Call lookup_keep here. |
| (cp_parser_template_id): Not here ... |
| * decl.c (cp_finish_decl): ... nor here ... |
| * init.c (build_raw_new_expr): ... nor here ... |
| * pt.c (process_template_parm): ... nor here ... |
| * semantics.c (perform_koenig_lookup): Call lookup_keep. |
| (finish_call_expr): Not here. |
| * tree.c (ovl_cache): Delete. |
| (ovl_make, ovl_copy): No cache. |
| (lookup_keep): Always keep. |
| (lookup_list_keep): Delete. |
| (maybe_get_fns): New, broken out of ... |
| (get_fns): ... here. Call it. |
| (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep. |
| (build_min_nt_call_vec): Likewise. |
| |
| 2018-06-19 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove. |
| * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead. |
| |
| PR c++/86182 - ICE with anonymous union passed to template. |
| * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type |
| used to declare a named variable. |
| |
| 2018-06-18 Jason Merrill <jason@redhat.com> |
| |
| * tree.c (cp_expr_location): New. |
| * cp-tree.h (cp_expr_loc_or_loc): New. |
| * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c, |
| error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c, |
| typeck2.c: Use it instead of EXPR_LOC_OR_LOC. |
| |
| * parser.c (cp_parser_lambda_expression): Use a range for |
| LAMBDA_EXPR_LOCATION. |
| |
| PR c++/86200 - ICE with unexpanded pack in lambda parameter. |
| * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the |
| function type. |
| |
| PR c++/81060 - ICE with unexpanded parameter pack. |
| * pt.c (check_for_bare_parameter_packs): Add loc parameter. |
| * decl.c (grokdeclarator): Call it for qualifying_scope. |
| |
| PR c++/86171 - ICE with recursive alias instantiation. |
| * pt.c (tsubst_decl): Handle recursive alias instantiation. |
| |
| 2018-06-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION |
| in errors about redefined default arguments; tidy. |
| |
| 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org> |
| |
| * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR. |
| * cp-gimplify.c (cp_fold): Likewise. |
| |
| 2018-06-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86147 - wrong capture for template argument. |
| * expr.c (mark_use): Look through NOP_EXPR. |
| |
| * name-lookup.c (do_pushtag): Don't look through complete types, but |
| don't add to them either. Get context from current_binding_level. |
| * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level. |
| |
| * decl.c (start_enum): Do compare dependent underlying type. |
| |
| PR c++/82882 - ICE with lambda in template default argument. |
| * lambda.c (record_null_lambda_scope): New. |
| * pt.c (tsubst_lambda_expr): Use it. |
| * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a |
| function that isn't open. |
| |
| * tree.c (maybe_warn_parm_abi): Inform the location of the class. |
| |
| 2018-06-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/86063 |
| * decl2.c (cp_check_const_attributes): Skip trees that are not |
| TREE_LISTs. |
| |
| 2018-06-14 Jakub Jelinek <jakub@redhat.com> |
| |
| P0624R2 - Default constructible and assignable stateless lambdas |
| * method.c (synthesized_method_walk): For C++2a don't mark |
| sfk_constructor or sfk_copy_assignment as deleted if lambda has |
| no lambda-captures. |
| |
| 2018-06-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in |
| OPT_Wshadow warning_at. |
| (grokfndecl): Consistently use the location_t argument in |
| literal operator diagnostic messages. |
| (grokdeclarator): Use declspecs->locations[ds_storage_class] |
| in error_at call. |
| * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION |
| in permerror call. |
| |
| 2018-06-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86099 - ICE with trivial copy and non-trivial default ctor. |
| * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial |
| constructors. |
| |
| PR c++/86094 - wrong code with defaulted move ctor. |
| * class.c (classtype_has_non_deleted_move_ctor): New. |
| * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init): |
| Handle v12 breakage. |
| |
| 2018-06-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86098 - ICE with template placeholder for TTP. |
| * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check |
| CLASS_PLACEHOLDER_TEMPLATE. |
| |
| 2018-06-12 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl2.c (coerce_new_type, coerce_delete_type): Add location_t |
| parameter and adjust error_at calls. |
| * decl.c (grok_op_properties): Adjust calls. |
| * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls. |
| |
| 2018-06-12 Marek Polacek <polacek@redhat.com> |
| |
| Core issue 1331 - const mismatch with defaulted copy constructor |
| * class.c (check_bases_and_members): When checking a defaulted |
| function, mark it as deleted rather than giving an error. |
| |
| 2018-06-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85792 -Wctor-dtor-privacy and inherited constructor. |
| * class.c (maybe_warn_about_overly_private_class): Handle inherited |
| constructors. |
| |
| PR c++/85963 - -Wunused-but-set with ?: in template. |
| * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use. |
| |
| 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grok_op_properties): Consistently use the location |
| of the decl; remove special casing of POSTINCREMENT_EXPR and |
| POSTDECREMENT_EXPR wrt default arguments. |
| |
| 2018-06-05 Jason Merrill <jason@redhat.com> |
| |
| * constexpr.c (cxx_eval_binary_expression): Special case comparison |
| of pointers to members of the same union. |
| |
| 2018-06-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86094 - wrong code with defaulted move ctor. |
| * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling. |
| |
| 2018-06-10 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokfndecl): Use the location_t argument in two more places. |
| |
| 2018-06-06 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85977 |
| * pt.c (unify): If ELTTYPE has no deducible template parms, skip |
| deduction from the list elements. |
| (type_unification_real): Check convertibility of list elements. |
| |
| 2018-06-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86060 - ICE on range for with -std=c++98. |
| * parser.c (cp_parser_init_statement): Don't clobber *decl after |
| pedwarn. |
| |
| PR c++/85710 - ICE with -Wmemset-elt-size. |
| * semantics.c (finish_call_expr): Call warn_for_memset here. |
| * parser.c (cp_parser_postfix_expression): Not here. |
| (literal_integer_zerop): No longer static. |
| * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL. |
| |
| 2018-06-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85976 |
| * tree.c (cp_tree_equal): Handle USING_DECL. |
| |
| 2018-06-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85731 - wrong error with qualified-id in template. |
| * semantics.c (finish_qualified_id_expr): build_qualified_name |
| for unbound names in the current class. |
| |
| 2018-06-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/61806 - missed SFINAE with partial specialization. |
| * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind |
| parameter to constructor. |
| * pt.c (instantiate_class_template_1): Enable access checking |
| before call to most_specialized_partial_spec. |
| |
| PR c++/85765 - SFINAE and non-type default template arg. |
| * pt.c (type_unification_real): Do full semantic processing if |
| substituting a partial args list replaces all template parms. |
| |
| 2018-06-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85739 - ICE with pointer to member template parm. |
| * cvt.c (perform_qualification_conversions): Use cp_fold_convert. |
| |
| 2018-06-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85761 - ICE with ill-formed use of const outer variable. |
| * expr.c (mark_use): Handle location wrappers. |
| |
| 2018-06-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85764 - bogus 'this' not captured error. |
| * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype. |
| (nonlambda_method_basetype): Handle NSDMI. |
| |
| CWG 1581: When are constexpr member functions defined? |
| * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New. |
| (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns. |
| |
| PR c++/58281 - explicit instantiation of constexpr |
| * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL. |
| |
| * pt.c (instantiate_decl): Any defaulted function is defined. |
| |
| 2018-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/77777 |
| * call.c (resolve_args): Use location of expression, not current input |
| location. |
| |
| 2018-05-30 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Do not warn about zero-as-null when NULL is used. |
| * call.c (conversion_null_warnings): Check for pointer |
| types converted from zero constants. |
| (convert_like_real): Add a warning sentinel at the end. |
| * tree.c (maybe_warn_zero_as_null_pointer_constant): Also |
| check null_node_p. |
| |
| 2018-05-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85807 - ICE with call in template NSDMI. |
| * init.c (get_nsdmi): Use push_to/pop_from_top_level. |
| * tree.c (bot_manip): Don't set_flags_from_callee in a template. |
| |
| PR c++/85873 - constant initializer_list array not in .rodata. |
| * tree.c (build_target_expr): Set TREE_READONLY. |
| * call.c (set_up_extended_ref_temp): Set TREE_READONLY. |
| |
| * parser.c (cp_parser_check_condition_declarator): Handle |
| cp_error_declarator. |
| |
| 2018-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead |
| of using it in dead store. |
| |
| 2018-05-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/67445 - returning temporary initializer_list. |
| PR c++/67711 - assigning from temporary initializer_list. |
| PR c++/48562 - new initializer_list. |
| * typeck.c (maybe_warn_about_returning_address_of_local): Also warn |
| about returning local initializer_list. |
| * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove. |
| * call.c (build_over_call): Warn about assignment from temporary |
| init_list. |
| * init.c (build_new_1): Warn about 'new std::initializer_list'. |
| (find_list_begin, maybe_warn_list_ctor): New. |
| (perform_member_init): Use maybe_warn_list_ctor. |
| |
| 2018-05-29 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85883 |
| * init.c (build_new): Handle deducing a class with new |
| with more than one argument. |
| |
| 2018-05-29 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85952 |
| * init.c (build_aggr_init): For structured binding initialized from |
| array call mark_rvalue_use on the initializer. |
| |
| 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de> |
| |
| * decl2.c (start_static_storage_duration_function): Use |
| splay_tree_delete_pointers. |
| |
| 2018-05-25 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85815 - reference to member of enclosing template. |
| * search.c (lookup_base): Use currently_open_class. |
| (lookup_member): Use it regardless of -fconcepts. |
| * parser.c (cp_parser_postfix_dot_deref_expression): Check it. |
| |
| CWG 616, 1213 - value category of subobject references. |
| * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer. |
| |
| 2018-05-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85842 - -Wreturn-type, constexpr if and generic lambda. |
| * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to |
| generic lambda. |
| |
| 2018-05-24 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Pedwarn on a non-standard position of a C++ attribute. |
| * parser.c (cp_parser_namespace_definition): Pedwarn about attributes |
| after the namespace name. |
| |
| 2018-05-24 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * cp-tree.h (INDIRECT_TYPE_P): New. |
| * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess, |
| joust): Use it instead of POINTER_TYPE_P. |
| * class.c (update_vtable_entry_for_fn, find_flexarrays, |
| * fixed_type_or_null, resolves_to_fixed_type_p): Likewise. |
| * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref, |
| * cxx_eval_increment_expression, potential_constant_expression_1): |
| Likewise. |
| * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise. |
| * cp-objcp-common.c (cxx_get_alias_set): Likewise. |
| * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call, |
| cp_ubsan_maybe_instrument_downcast): Likewise. |
| * cvt.c (cp_convert_to_pointer, ocp_convert, |
| cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise. |
| * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator, |
| pp_cxx_offsetof_expression_1): Likewise. |
| * decl.c (grokparms, static_fn_type): Likewise. |
| * decl2.c (grokbitfield): Likewise. |
| * error.c (dump_expr): Likewise. |
| * except.c (initialize_handler_parm, check_noexcept_r): Likewise. |
| * init.c (warn_placement_new_too_small): Likewise. |
| * lambda.c (build_capture_proxy, add_capture): Likewise. |
| * parser.c (cp_parser_omp_for_loop): Likewise. |
| * pt.c (convert_nontype_argument, fn_type_unification, |
| uses_deducible_template_parms, check_cv_quals_for_unify, |
| dependent_type_p_r): Likewise. |
| * search.c (check_final_overrider): Likewise. |
| * semantics.c (handle_omp_array_sections, finish_omp_clauses, |
| finish_omp_for): Likewise. |
| * tree.c (cp_build_qualified_type_real): Likewise. |
| * typeck.c (build_class_member_access_expr, |
| finish_class_member_access_expr, build_x_indirect_ref, |
| cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1): |
| Likewise. |
| |
| 2018-05-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85864 - literal template and default template arg. |
| * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK. |
| |
| 2018-05-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85847 |
| * init.c (build_new_1): Use fold_non_dependent_expr. Use a dedicated |
| variable for its result. Fix a condition. |
| (build_new): Use fold_non_dependent_expr. Tweak a condition. |
| |
| 2018-05-23 Jason Merrill <jason@redhat.com> |
| |
| Fix cast to rvalue reference from prvalue. |
| * cvt.c (diagnose_ref_binding): Handle rvalue reference. |
| * rtti.c (build_dynamic_cast_1): Don't try to build a reference to |
| non-class type. Handle xvalue argument. |
| * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to |
| rvalue reference. |
| * semantics.c (finish_compound_literal): Do direct-initialization, |
| not cast, to initialize a reference. |
| |
| CWG 616, 1213 - value category of subobject references. |
| * tree.c (lvalue_kind): A reference to a subobject of a prvalue is |
| an xvalue. |
| * typeck2.c (build_m_component_ref): Likewise. |
| * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic |
| distinction between temporary and xvalue. |
| |
| 2018-05-23 Marek Polacek <polacek@redhat.com> |
| |
| Implement P0614R1, Range-based for statements with initializer. |
| * parser.c (cp_parser_range_based_for_with_init_p): New. |
| (cp_parser_init_statement): Use it. Parse the optional init-statement |
| for a range-based for loop. |
| (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:. |
| |
| 2018-05-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/81420 - not extending temporary lifetime. |
| * call.c (extend_ref_init_temps_1): Handle ARRAY_REF. |
| * class.c (build_base_path): Avoid redundant move of an rvalue. |
| |
| PR c++/85866 - error with .* in default template arg. |
| * pt.c (tsubst_copy_and_build): Handle partial instantiation. |
| |
| 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * parser.c (cp_parser_parameter_declaration_list): Remove |
| bool* parameter. |
| (cp_parser_parameter_declaration_clause): Adjust. |
| (cp_parser_cache_defarg): Likewise. |
| |
| 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84588 |
| * parser.c (cp_parser_maybe_commit_to_declaration, |
| cp_parser_check_condition_declarator): New. |
| (cp_parser_simple_declaration): Use the first above. |
| (cp_parser_condition): Use both the above; enforce |
| [stmt.stmt]/2 about the declarator not specifying |
| a function or an array; improve error-recovery. |
| |
| 2018-05-20 Jason Merrill <jason@redhat.com> |
| |
| PR libstdc++/85843 - warning in logic_error copy constructor. |
| * class.c (type_has_user_nondefault_constructor): Check for a |
| user-provided ctor, not user-declared. |
| |
| 2018-05-19 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (tsubst_pack_expansion): Sorry rather than abort |
| on __integer_pack as subexpression of pattern. |
| |
| 2018-05-18 Jason Merrill <jason@redhat.com> |
| |
| PR c++/58407 - deprecated implicit copy ops. |
| * call.c (build_over_call): Warn about deprecated trivial fns. |
| * class.c (classtype_has_user_copy_or_dtor): New. |
| (type_build_ctor_call): Check TREE_DEPRECATED. |
| (type_build_dtor_call): Likewise. |
| * decl2.c (cp_warn_deprecated_use): Move from tree.c. |
| Add checks. Return bool. Handle -Wdeprecated-copy. |
| (mark_used): Use it. |
| * decl.c (grokdeclarator): Remove redundant checks. |
| * typeck2.c (build_functional_cast): Likewise. |
| * method.c (lazily_declare_fn): Mark deprecated copy ops. |
| * init.c (build_aggr_init): Only set TREE_USED if there are |
| side-effects. |
| |
| 2018-05-18 Cesar Philippidis <cesar@codesourcery.com> |
| |
| PR c++/85782 |
| * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for |
| OACC_LOOPs. |
| |
| 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org> |
| |
| * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling. |
| (potential_constant_expression_1): Likewise. |
| |
| 2018-05-16 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85363 |
| * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too. |
| * tree.c (bot_manip): Call set_flags_from_callee for |
| AGGR_INIT_EXPRs too. |
| |
| 2018-05-15 Jason Merrill <jason@redhat.com> |
| |
| * cp-tree.h (cp_expr): Remove copy constructor. |
| * mangle.c (struct releasing_vec): Declare copy constructor. |
| |
| * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet. |
| |
| PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?: |
| * call.c (build_conditional_expr_1): Don't force_rvalue when one arm |
| is a throw-expression. |
| |
| 2018-05-15 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New. |
| (FOR_EACH_CLONE): Update. |
| * decl.c (grokdeclarator): Use it. |
| * decl2.c (vague_linkage_p): Likewise. |
| * mangle.c (mangle_decl): Likewise. |
| * method.c (lazily_declare_fn): Likewise. |
| * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise. |
| * repo.c (repo_emit_p): Likewise. |
| * tree.c (decl_linkage): Likewise. |
| |
| 2018-05-14 Jason Merrill <jason@redhat.com> |
| |
| Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec. |
| * tree.c (build_cp_fntype_variant): New. |
| (build_ref_qualified_type, build_exception_variant) |
| (strip_typedefs, cxx_copy_lang_qualifiers): Use it. |
| (cxx_type_hash_eq, cp_check_qualified_type): Check |
| TYPE_HAS_LATE_RETURN_TYPE. |
| (cp_build_type_attribute_variant): Check cxx_type_hash_eq. |
| (cp_build_qualified_type_real): No need to preserve C++ qualifiers. |
| * class.c (build_clone): Use cxx_copy_lang_qualifiers. |
| (adjust_clone_args): Likewise. |
| * decl.c (grokfndecl): Add late_return_type_p parameter. Use |
| build_cp_fntype_variant. |
| (grokdeclarator): Pass late_return_type_p to grokfndecl. |
| (check_function_type): Use cxx_copy_lang_qualifiers. |
| (static_fn_type): Use cxx_copy_lang_qualifiers. |
| * decl2.c (build_memfn_type, maybe_retrofit_in_chrg) |
| (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type) |
| (change_return_type): Use cxx_copy_lang_qualifiers. |
| * mangle.c (write_type): Use cxx_copy_lang_qualifiers. |
| * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit |
| return type on the declarator like a normal trailing return type. |
| * pt.c (tsubst_function_type): Use build_cp_fntype_variant. |
| (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers. |
| * typeck.c (merge_types): Use build_cp_fntype_variant. |
| |
| 2018-05-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * cp-tree.h (TYPE_REF_P): New. |
| (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update. |
| * call.c (build_list_conv, build_aggr_conv, standard_conversion, |
| direct_reference_binding, reference_binding, implicit_conversion, |
| add_builtin_candidate, build_user_type_conversion_1, build_op_call_1, |
| build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue, |
| build_over_call, perform_implicit_conversion_flags, |
| extend_ref_init_temps, type_has_extended_temps): Use it. |
| * class.c (one_inheriting_sig, check_field_decls, |
| check_bases_and_members, find_flexarrays, finish_struct, |
| fixed_type_or_null): Likewise. |
| * constexpr.c (literal_type_p, cxx_bind_parameters_in_call, |
| non_const_var_error, cxx_eval_constant_expression, |
| potential_constant_expression_1): Likewise. |
| * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable, |
| cp_genericize_r, cxx_omp_privatize_by_reference, |
| cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause, |
| cp_fold_maybe_rvalue): Likewise. |
| * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise. |
| * cvt.c (build_up_reference, convert_to_reference, |
| convert_from_reference, convert_to_void, noexcept_conv_p, |
| fnptr_conv_p): Likewise. |
| * decl.c (poplevel, check_for_uninitialized_const_var, |
| check_initializer, initialize_local_var, cp_finish_decl, |
| get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p, |
| move_signature_fn_p, grok_op_properties, finish_function): Likewise. |
| * decl2.c (grok_array_decl, cp_reconstruct_complex_type, |
| decl_maybe_constant_var_p): Likewise. |
| * error.c (dump_type_prefix, dump_expr): Likewise. |
| * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p, |
| is_admissible_throw_operand_or_catch_parameter): Likewise. |
| * expr.c (mark_use): Likewise. |
| * init.c (build_zero_init_1, build_value_init_noctor, |
| perform_member_init, diagnose_uninitialized_cst_or_ref_member_1, |
| build_new, build_delete): Likewise. |
| * lambda.c (build_lambda_object): Likewise. |
| * mangle.c (write_expression, write_template_arg): Likewise. |
| * method.c (forward_parm, do_build_copy_constructor, |
| do_build_copy_assign, build_stub_object, constructible_expr, |
| walk_field_subobs): Likewise. |
| * parser.c (cp_parser_omp_for_loop_init, |
| cp_parser_omp_declare_reduction_exprs, |
| cp_parser_omp_declare_reduction): Likewise. |
| * pt.c (convert_nontype_argument_function, convert_nontype_argument, |
| convert_template_argument, tsubst_pack_expansion, |
| tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build, |
| maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify, |
| more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r, |
| value_dependent_expression_p, build_deduction_guide): Likewise. |
| * semantics.c (finish_handler_parms, finish_non_static_data_member, |
| finish_compound_literal, omp_privatize_field, |
| handle_omp_array_sections_1, handle_omp_array_sections, |
| cp_check_omp_declare_reduction, finish_omp_reduction_clause, |
| finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink, |
| finish_omp_clauses, finish_decltype_type, capture_decltype, |
| finish_builtin_launder): Likewise. |
| * tree.c (lvalue_kind, cp_build_reference_type, move, |
| cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise. |
| * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr, |
| cp_build_indirect_ref_1, convert_arguments, warn_for_null_address, |
| cp_build_addr_expr_1, maybe_warn_about_useless_cast, |
| build_static_cast_1, build_static_cast, build_reinterpret_cast_1, |
| build_const_cast_1, cp_build_c_cast, cp_build_modify_expr, |
| convert_for_initialization, |
| maybe_warn_about_returning_address_of_local, check_return_expr, |
| cp_type_quals, casts_away_constness, non_reference): Likewise. |
| * typeck2.c (cxx_readonly_error, store_init_value, |
| process_init_constructor_record, build_x_arrow, build_functional_cast, |
| add_exception_specifier): Likewise. |
| |
| 2018-05-14 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p. |
| (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl. |
| |
| 2018-05-11 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/85696 |
| * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype. |
| * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around |
| cxx_omp_predetermined_sharing_1. Rename old function to ... |
| (cxx_omp_predetermined_sharing_1): ... this. |
| * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1 |
| instead of cxx_omp_predetermined_sharing. |
| |
| 2018-05-10 Jason Merrill <jason@redhat.com> |
| |
| * decl.c (cp_finish_decl): Don't instantiate auto variable. |
| (check_static_variable_definition): Allow auto. |
| * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise. |
| |
| * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P. |
| (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P. |
| |
| Core issue 2310 - conversion to base of incomplete type. |
| * class.c (build_base_path): Check COMPLETE_TYPE_P for source type. |
| |
| CWG 2267 - list-initialization of reference temporary |
| * call.c (reference_binding): List-initializing a reference |
| temporary is copy-list-initialization. |
| |
| * parser.c (cp_parser_class_head): Use num_template_headers_for_class. |
| |
| * pt.c (instantiate_decl): Make sure we aren't trying to do a nested |
| instantiation in template context. |
| |
| * class.c (vbase_has_user_provided_move_assign): Use |
| user_provided_p. |
| |
| * lambda.c (lambda_expr_this_capture): Improve logic. |
| |
| * decl.c (make_typename_type): s/parameters/arguments/. |
| * parser.c (cp_parser_nested_name_specifier_opt): Likewise. |
| * pt.c (make_pack_expansion): Correct error message. |
| |
| 2018-05-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85662 |
| * cp-gimplify.c (cp_fold): Use fold_offsetof rather than |
| fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the |
| fold_convert. |
| |
| 2018-05-10 Eric Botcazou <ebotcazou@adacore.com> |
| |
| PR c++/85400 |
| * decl2.c (adjust_var_decl_tls_model): New static function. |
| (comdat_linkage): Call it on a variable. |
| (maybe_make_one_only): Likewise. |
| |
| 2018-05-09 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85713 |
| Revert: |
| 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84588 |
| * parser.c (cp_parser_parameter_declaration_list): When the |
| entire parameter-declaration-list is erroneous maybe call |
| abort_fully_implicit_template. |
| |
| 2018-05-08 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85706 - class deduction under decltype |
| * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE. Clear |
| *walk_subtrees whether or not we walked into the operand. |
| (type_uses_auto): Only look at deduced contexts. |
| |
| 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84588 |
| * parser.c (cp_parser_parameter_declaration_list): When the |
| entire parameter-declaration-list is erroneous maybe call |
| abort_fully_implicit_template. |
| |
| 2018-05-08 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85695 |
| * semantics.c (finish_if_stmt_cond): See through typedefs. |
| |
| 2018-05-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85646 - lambda visibility. |
| * decl2.c (determine_visibility): Don't mess with template arguments |
| from the containing scope. |
| (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor |
| thunk. |
| |
| 2018-05-07 Nathan Sidwell <nathan@acm.org> |
| |
| Remove fno-for-scope |
| * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL) |
| (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR) |
| (SET_DECL_SHADOWED_FOR_VAR): Delete. |
| (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert) |
| (check_for_out_of_scope_variable, init_shadowed_var_for_decl): |
| Don't declare. |
| * name-lookup.h (struct cp_binding_level): Remove |
| dead_vars_from_for field. |
| * cp-lang.c (cp_init_ts): Delete. |
| (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts. |
| * cp-objcp-common.c (shadowed_var_for_decl): Delete. |
| (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert) |
| (init_shadowed_var_for_decl): Delete. |
| * decl.c (poplevel): Remove shadowed for var handling. |
| (cxx_init_decl_processing): Remove -ffor-scope deprecation. |
| * name-lookup.c (find_local_binding): Remove shadowed for var |
| handling. |
| (check_local_shadow): Likewise. |
| (check_for_out_of_scope_variable): Delete. |
| * parser.c (cp_parser_primary_expression): Remove shadowed for var |
| handling. |
| * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting. |
| * semantics.c (begin_for_scope): Always have a scope. |
| (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling. |
| (begin_range_for_stmt, finish_id_expression): Likewise. |
| |
| 2018-05-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85618 - ICE with initialized VLA. |
| * tree.c (vla_type_p): New. |
| * typeck2.c (store_init_value, split_nonconstant_init_1): Check it |
| rather than array_of_runtime_bound_p. |
| |
| 2018-05-05 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * cvt.c (ocp_convert): Early handle the special case of a |
| null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type. |
| |
| 2018-05-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85600 - virtual delete failure. |
| * init.c (build_delete): Always save_expr when deleting. |
| |
| 2018-05-03 Nathan Sidwell <nathan@acm.org> |
| |
| * decl.c (cxx_init_decl_processing): Remove flag_friend_injection. |
| * name-lookup.c (do_pushdecl): Likewise. |
| |
| 2018-05-02 Paolo Carlini <paolo.carlini@oracle.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/68374 |
| * name-lookup.c (check_local_shadow): Don't handle static old |
| declarations in the block handling locals shadowing locals. |
| |
| 2018-05-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85587 - error with scoped enum in template. |
| * semantics.c (finish_qualified_id_expr): Don't return an |
| unqualified IDENTIFIER_NODE. |
| |
| 2018-04-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85580 - extern "C" and local variables |
| * name-lookup.c (check_extern_c_conflict): Ignore local decls. |
| |
| PR c++/84701 - unsigned typeof. |
| * decl.c (grokdeclarator): Overhaul diagnostics for invalid use |
| of long/short/signed/unsigned. |
| |
| PR c++/85305 - pack in lambda init-capture. |
| * parser.c (cp_parser_initializer): Add subexpression_p parm; don't |
| check_for_bare_parameter_packs in a subexpression. |
| (cp_parser_lambda_introducer): Use it. |
| |
| PR c++/61982 - dead stores to destroyed objects. |
| * call.c (build_trivial_dtor_call): New, assigns a clobber. |
| (build_over_call, build_special_member_call): Use it. |
| * cp-tree.h: Declare it. |
| * init.c (build_delete): Remove trivial path. |
| |
| * init.c (build_dtor_call): Use build_special_member_call. |
| (build_delete): Remove redundant uses of save_addr. |
| |
| * decl.c (build_clobber_this): Use build_clobber. |
| |
| 2018-04-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85553 |
| * init.c (build_zero_init_1): For zero initialization of |
| NULLPTR_TYPE_P type use build_int_cst directly. |
| |
| 2018-04-27 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85515 |
| * name-lookup.c (consider_binding_level): Skip compiler-generated |
| variables. |
| * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten |
| nested if statements into a series of rejection tests. Reject |
| lambda-ignored entities as suggestions. |
| |
| 2018-04-27 Jason Merrill <jason@redhat.com> |
| |
| * cvt.c (cp_fold_convert): Use convert_ptrmem. |
| * typeck.c (convert_ptrmem): Add a NOP even if no adjustment. |
| |
| 2018-04-27 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84691 |
| * decl.c (grokdeclarator): Clear friendp upon definition in local |
| class definition error. |
| |
| 2018-04-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85545 - ICE with noexcept PMF conversion. |
| * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to |
| build_ptrmemfunc. |
| * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero |
| adjustment. |
| (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs. |
| |
| 2018-04-27 Nathan Sidwell <nathan@acm.org> |
| |
| * typeck.c (convert_ptrmem): Move local var decls to initialization. |
| |
| * cp-tree.h (TEMPLATE_INFO): Fix comments. |
| (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO. |
| (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line. |
| (dump, print_other_binding_stacks): Remove declarations. |
| * name-lookup.c (print_other_binding_stack): Make static. |
| * pt.c (build_template_decl): Make static. |
| |
| 2018-04-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85545 - ICE with noexcept PMF conversion. |
| * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly. |
| |
| 2018-04-25 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/85437 |
| PR c++/49171 |
| * cp-tree.h (REINTERPRET_CAST_P): New. |
| * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>: |
| Reject REINTERPET_CAST_P conversions. Use cplus_expand_constant |
| for non-trivial PTRMEM_CST cases. |
| * typeck.c (build_nop_reinterpret): New. |
| (build_reinterpret_cast_1): Use it. Set REINTERPRET_CAST_P on |
| NOP_EXPRs returned by cp_convert. |
| |
| 2018-04-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/69560 - wrong alignof(double) on x86. |
| CWG 1879 - Inadequate definition of alignment requirement. |
| * cp-tree.h (ALIGNOF_EXPR_STD_P): New. |
| * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm. |
| (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr) |
| (cxx_alignof_expr): Pass it. |
| * parser.c (cp_parser_unary_expression): Pass it. |
| * pt.c (tsubst_copy): Copy it. |
| (tsubst_copy_and_build): Pass it. |
| * decl.c (fold_sizeof_expr): Pass it. |
| |
| 2018-04-23 Jakub Jelinek <jakub@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/85470 - wrong error with static data member. |
| * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P. |
| * typeck2.c (store_init_value): Likewise. |
| |
| 2018-04-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85462 |
| * cp-tree.h (tinst_level): Remove in_system_header_p member, |
| change refcount member from unsigned char to unsigned short, |
| add refcount_infinity static data member, adjust comments. |
| * pt.c (tinst_level::refcount_infinity): Define. |
| (inc_refcount_use): Remove assert, don't increment if refcount |
| is already refcount_infinity, adjust comment. |
| (dec_refcount_use): Remove assert, don't decrement if refcount |
| is refcount_infinity, adjust comment. |
| (push_tinst_level_loc): Formatting fix. |
| |
| 2018-04-19 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84611 |
| * pt.c (lookup_template_class_1): Check pushtag return value for |
| error_mark_node. |
| |
| 2018-04-19 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/80290 |
| * cp-tree.h (tinst_level::free): Fix whitespace. |
| |
| 2018-04-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84630 |
| * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value |
| for error_mark_node. |
| |
| 2018-04-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84463 |
| * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like |
| tricks from here to ... |
| * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here. Only use it |
| if INDIRECT_REF's operand is INTEGER_CST cast to pointer type. |
| |
| 2018-04-18 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/80290 |
| * cp-tree.h (struct tinst_level): Split decl into tldcl and |
| targs. Add private split_list_p, tree_list_p, and not_list_p |
| inline const predicates; to_list private member function |
| declaration; free public member function declaration; list_p, |
| get_node and maybe_get_node accessors, and refcount data |
| member. Narrow errors to unsigned short. |
| * error.c (print_instantiation_full_context): Use new |
| accessors. |
| (print_instantiation_partial_context_line): Likewise. Drop |
| const from tinst_level-typed parameter. |
| * mangle.c (mangle_decl_string): Likewise. |
| * pt.c (freelist): New template class. |
| (tree_list_freelist_head): New var. |
| (tree_list_freelist): New fn, along with specializations. |
| (tinst_level_freelist_head): New var. |
| (pending_template_freelist_head): Likewise. |
| (tinst_level_freelist, pending_template_freelist): New fns. |
| (tinst_level::to_list, tinst_level::free): Define. |
| (inc_refcount_use, dec_refcount_use): New fns for tinst_level. |
| (set_refcount_ptr): New template fn. |
| (add_pending_template): Adjust for refcounting, freelists and |
| new accessors. |
| (neglectable_inst_p): Take a NULL d as a non-DECL. |
| (limit_bad_template_recursion): Use new accessors. |
| (push_tinst_level): New overload to create the list. |
| (push_tinst_level_loc): Make it static, split decl into two |
| args, adjust tests and initialization to cope with split |
| lists, use freelist, adjust for refcounting. |
| (push_tinst_level_loc): New wrapper with the old interface. |
| (pop_tinst_level): Adjust for refcounting. |
| (record_last_problematic_instantiation): Likewise. |
| (reopen_tinst_level): Likewise. Use new accessors. |
| (instantiate_alias_template): Adjust for split list. |
| (fn_type_unification): Likewise. |
| (get_partial_spec_bindings): Likewise. |
| (instantiate_pending_templates): Use new accessors. Adjust |
| for refcount. Release pending_template to freelist. |
| (instantiating_current_function_p): Use new accessors. |
| |
| 2018-04-16 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/85039 |
| * parser.c (cp_parser_builtin_offset): Reject type definitions. |
| * mangle.c (nested_anon_class_index): Avoid crash returning -1 |
| if we've seen errors. |
| |
| 2018-04-12 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85385 |
| * name-lookup.c (macro_use_before_def::maybe_make): New function, |
| checking that the use is indeed before the definition. |
| (macro_use_before_def::macro_use_before_def): Make private. |
| (macro_use_before_def::~macro_use_before_def): Make private. Move |
| check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make. |
| (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather |
| than using new directly. |
| |
| 2018-04-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85356 - ICE with pointer to member function. |
| * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if |
| flag_noexcept_type. Build the new spec within the function context. |
| * except.c (build_noexcept_spec): Do get constant value in templates |
| if flag_noexcept_type. |
| * decl.c (check_redeclaration_exception_specification): Don't |
| instantiate noexcept on a dependent declaration. |
| |
| 2018-04-12 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85258 |
| * constexpr.c (reduced_constant_expression_p): Return false for null |
| trees. |
| |
| 2018-04-11 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85032 |
| * constexpr.c (potential_constant_expression_1): Consider conversions |
| from classes to literal types potentially constant. |
| |
| 2018-04-10 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/70808 |
| * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of |
| the type like TYPE_PTR_OR_PTRMEM_P. |
| |
| 2018-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR debug/65821 - wrong location for main(). |
| * call.c (clear_location_r, convert_default_arg): Revert. |
| * tree.c (break_out_target_exprs): Add clear_location parm. |
| (struct bot_data): New. |
| (bot_manip): Clear location if requested. |
| * init.c (get_nsdmi): Pass clear_location. |
| |
| 2018-04-10 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85110 |
| * call.c (get_fndecl_argument_location): Make non-static. |
| * cp-tree.h (get_fndecl_argument_location): New decl. |
| * typeck.c (convert_for_assignment): When complaining due to |
| conversions for an argument, show the location of the parameter |
| within the decl. |
| |
| 2018-04-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85312 - P0962 cleanup |
| * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable |
| diagnostics. |
| |
| 2018-04-10 Jason Merrill <jason@redhat.com> |
| |
| PR debug/65821 - wrong location for main(). |
| * call.c (clear_location_r): New. |
| (convert_default_arg): Use it. |
| * tree.c (bot_manip): Remove builtin_LINE/FILE handling. |
| |
| PR c++/85285 - ICE with flexible array after substitution. |
| * pt.c (instantiate_class_template_1): Check for flexible array in |
| union. |
| |
| 2018-04-09 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85227 |
| * decl.c (cp_finish_decomp): In a template, if the type is incomplete |
| issue a pedwarn and defer trying to do bindings. |
| |
| 2018-04-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85279 - dump_expr doesn't understand decltype. |
| * error.c (dump_expr): Handle DECLTYPE_TYPE. |
| |
| PR c++/85262 - ICE with redundant qualification on constructor. |
| * call.c (build_new_method_call_1): Move make_args_non_dependent |
| after A::A() handling. |
| |
| PR c++/85277 - ICE with invalid offsetof. |
| * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD. |
| Adjust -Winvalid-offsetof diagnostic to say conditionally supported. |
| |
| PR c++/85264 - ICE with excess template-parameter-list. |
| * parser.c (cp_parser_check_template_parameters): Add template_id_p |
| parameter. Don't allow an extra template header if true. |
| (cp_parser_class_head): Pass template_id_p. |
| (cp_parser_elaborated_type_specifier): Likewise. |
| (cp_parser_alias_declaration): Likewise. |
| (cp_parser_check_declarator_template_parameters): Likewise. |
| |
| 2018-04-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85194 |
| * parser.c (cp_parser_simple_declaration): For structured bindings, |
| if *maybe_range_for_decl is NULL after parsing it, set it to |
| error_mark_node. |
| |
| 2018-04-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85256 - ICE capturing pointer to VLA. |
| * lambda.c (add_capture): Distinguish between variable-size and |
| variably-modified types. |
| |
| 2018-04-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85214 - ICE with alias, generic lambda, constexpr if. |
| * pt.c (extract_locals_r): Remember local typedefs. |
| |
| 2018-04-06 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/84269 |
| * name-lookup.c (struct std_name_hint): Move out of |
| get_std_name_hint; add field "min_dialect". |
| (get_std_name_hint): Add min_dialect values to all initializers. |
| Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>, |
| <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>, |
| <shared_mutex>, <string_view>, <thread>, and <variant>. |
| Add fstream, ifstream, and ofstream to <fstream>. |
| Add istringstream, ostringstream, and stringstream to <sstream>. |
| Add basic_string to <string>. |
| Add tuple_element and tuple_size to <tuple>. |
| Add declval to <utility>. |
| Fix ordering of <queue> and <tuple>. |
| Return a std_name_hint, rather than a const char *. |
| (get_cxx_dialect_name): New function. |
| (maybe_suggest_missing_std_header): Detect names that aren't yet |
| available in the current dialect, and instead of suggesting a |
| missing #include, warn about the dialect. |
| |
| 2018-04-06 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85210 |
| * pt.c (tsubst_decomp_names): Return error_mark_node and assert |
| errorcount is set if tsubst doesn't return a VAR_DECL. |
| |
| 2018-04-06 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85021 |
| * name-lookup.c (using_directives_contain_std_p): New function. |
| (has_using_namespace_std_directive_p): New function. |
| (suggest_alternatives_for): Simplify if/else logic using early |
| returns. If no candidates were found, and there's a |
| "using namespace std;" directive, call |
| maybe_suggest_missing_std_header. |
| (maybe_suggest_missing_header): Split later part of the function |
| into.. |
| (maybe_suggest_missing_std_header): New. |
| |
| 2018-04-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85242 - ICE with class definition in template parm. |
| * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if |
| processing_template_parmlist. |
| |
| PR c++/85240 - LTO ICE with using of undeduced auto fn. |
| * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto. |
| |
| 2018-04-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85209 |
| * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3) |
| is not prev, if prev == decl. |
| |
| PR c++/85208 |
| * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call |
| maybe_apply_pragma_weak here... |
| (cp_maybe_mangle_decomp): ... but call it here instead. |
| |
| 2018-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85136 - ICE with designated init in template. |
| * decl.c (maybe_deduce_size_from_array_init): Handle dependent |
| designated initializer. |
| (check_array_designated_initializer): Update ce->index with the |
| constant value. |
| |
| PR c++/83808 - ICE with VLA initialization. |
| * typeck2.c (process_init_constructor_array): Don't require a VLA |
| initializer to have VLA type. |
| |
| 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/80956 |
| * call.c (convert_like_real): Fail gracefully for a broken |
| std::initializer_list, missing a definition. |
| |
| * name-lookup.c (do_pushtag): Tweak message, use %< and %>. |
| |
| 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84792 |
| * decl.c (grokdeclarator): Fix diagnostic about typedef name used |
| as nested-name-specifier, keep type and TREE_TYPE (decl) in sync. |
| |
| 2018-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/82152 - ICE with class deduction and inherited ctor. |
| * pt.c (do_class_deduction): Ignore inherited ctors. |
| |
| PR c++/84665 - ICE with array of empty class. |
| * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr. |
| |
| PR c++/85228 - ICE with lambda in enumerator in template. |
| * pt.c (bt_instantiate_type_proc): Don't assume |
| CLASSTYPE_TEMPLATE_INFO is non-null. |
| |
| 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Implement P0969 |
| * decl.c (find_decomp_class_base): Check accessibility instead |
| of declared access, adjust diagnostic. |
| |
| 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Implement P0961 |
| * decl.c (get_tuple_decomp_init): Check the templatedness |
| of a member get. |
| |
| 2018-04-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85200 - ICE with constexpr if in generic lambda. |
| * pt.c (extract_locals_r): Don't record the local specs of variables |
| declared within the pattern. |
| |
| 2018-04-05 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/84979 |
| * pt.c (check_auto_in_tmpl_args): New. |
| (tsubst_qualified_id): Use it to reject template args |
| referencing auto for non-type templates. |
| * parser.c (cp_parser_template_id): Likewise. |
| * cp-tree.h (check_auto_in_tmpl_args): Declare. |
| * typeck2.c (build_functional_cast): Report correct location |
| for invalid use of auto. |
| |
| 2018-04-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85215 - ICE with copy-init from conversion. |
| * call.c (merge_conversion_sequences): Fix type of direct binding |
| sequence. |
| |
| PR c++/84938 - ICE with division by ~-1. |
| * call.c (set_up_extended_ref_temp): Call cp_fully_fold. |
| |
| PR c++/84936 - ICE with unexpanded pack in mem-initializer. |
| * parser.c (cp_parser_mem_initializer_list): Call |
| check_for_bare_parameter_packs. |
| |
| 2018-04-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR inline-asm/85172 |
| * constexpr.c (cxx_eval_builtin_function_call): For calls to |
| builtin_valid_in_constant_expr_p functions, don't call |
| cxx_eval_constant_expression if argument is not |
| potential_constant_expression. |
| |
| PR c++/85146 |
| * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain |
| argument. |
| * semantics.c (calculate_bases): Add complain argument. Use |
| complete_type_or_maybe_complain instead of just complete_type and |
| return an empty vector if it fails. Move make_tree_vector () call |
| after early return. Formatting fixes. |
| (calculate_direct_bases): Likewise. Call release_tree_vector at the |
| end. |
| (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes. |
| * pt.c (tsubst_pack_expansion): Adjust calculate_bases and |
| calculate_direct_bases callers, formatting fixes. |
| |
| 2018-04-04 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85006 - -fconcepts ICE with A<auto...> return type |
| * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack. |
| |
| PR c++/85200 - ICE with constexpr if in generic lambda. |
| * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates. |
| |
| PR c++/84221 - bogus -Wunused with attribute and template. |
| * decl2.c (is_late_template_attribute): Handle unused and used |
| normally on non-TYPE_DECL. |
| |
| PR c++/85135 - ICE with omitted template arguments. |
| * decl.c (grokdeclarator): Catch deduced class type in trailing |
| return type. |
| |
| PR c++/85133 - ICE with missing concept initializer. |
| * decl.c (cp_finish_decl): If a concept initializer is missing, use |
| true. |
| |
| PR c++/85118 - wrong error with generic lambda and std::bind. |
| * call.c (add_template_conv_candidate): Disable if there are any |
| call operators. |
| |
| PR c++/85141 - ICE with compound assignment and static member fn. |
| * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of |
| compound assignment. |
| |
| PR c++/85148 - ICE with 'this' in array NSDMI. |
| * tree.c (replace_placeholders_r): Use handled_component_p. |
| |
| 2018-04-04 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| PR c++/65923 |
| * decl.c (grokfndecl): Handle standard UDL diagnostics here.. |
| * parser.c (cp_parser_unqualified_id): ..not here. |
| |
| 2018-04-04 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/84943 |
| * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as |
| used. |
| * decl2.c (mark_used): Return without effects if tf_conv. |
| |
| 2018-04-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85092 - C++17 ICE with unused list constructor. |
| * call.c (conv_binds_ref_to_prvalue): Also count ck_identity |
| from a TARGET_EXPR. |
| |
| PR c++/85113 - ICE with constexpr and __builtin_constant_p. |
| * constexpr.c (cxx_eval_builtin_function_call): Only defer |
| __builtin_constant_p if ctx->quiet. |
| |
| 2018-04-03 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84768 |
| * pt.c (rewrite_template_parm): If the first argument is |
| error_mark_node return it immediately. |
| (build_deduction_guide): Check the return value of the |
| latter for error_mark_node. |
| (do_class_deduction): Check the return value of the latter. |
| |
| 2018-04-03 Jason Merrill <jason@redhat.com> |
| |
| * semantics.c (finish_if_stmt_cond): Use |
| instantiation_dependent_expression_p. |
| |
| PR c++/85149 - generic lambda and constexpr if. |
| * pt.c (build_extra_args, add_extra_args): Split from |
| tsubst_pack_expansion. |
| (tsubst_expr) [IF_STMT]: Use them. |
| * cp-tree.h (IF_STMT_EXTRA_ARGS): New. |
| |
| * typeck.c (merge_types): Limit matching attribute shortcut to |
| the default case. |
| |
| 2018-04-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85147 |
| * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node. |
| |
| PR c++/85140 |
| * name-lookup.c (handle_namespace_attrs): Return early if attributes |
| is error_mark_node. |
| |
| PR c++/85134 |
| * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object |
| fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early, |
| instead for static data members clear init and set DECL_EXTERNAL. |
| |
| 2018-04-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/64095 - auto... parameter pack. |
| * parser.c (cp_parser_parameter_declaration): Handle turning autos |
| into packs here. |
| (cp_parser_parameter_declaration_list): Not here. |
| |
| 2018-03-31 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/85027 |
| * class.c (instantiate_type): Peel off SAVE_EXPR before |
| BASELINK. |
| |
| 2018-03-30 Jason Merrill <jason@redhat.com> |
| |
| * typeck2.c (process_init_constructor_record): Use |
| init_list_type_node for the CONSTRUCTOR around an anonymous union |
| designated initializer. |
| |
| 2018-03-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84791 |
| * semantics.c (finish_omp_reduction_clause): If |
| OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true |
| even if processing_template_decl. |
| |
| 2018-03-29 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/84269 |
| * name-lookup.c (get_std_name_hint): Add names from <memory>, |
| <tuple>, and <utility>. |
| |
| 2018-03-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85093 - too many template args with pack expansion. |
| * pt.c (coerce_template_parms): Keep pack expansion args that will |
| need to be empty. |
| |
| 2018-03-29 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (build_non_dependent_expr): Propagate expr location. |
| |
| 2018-03-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85060 - wrong-code with call to base member in template. |
| * search.c (any_dependent_bases_p): Check uses_template_parms |
| rather than processing_template_decl. |
| |
| 2018-03-29 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/85110 |
| * typeck.c (convert_for_assignment): When complaining due to |
| conversions for an argument, attempt to use the location of the |
| argument. |
| |
| 2018-03-28 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85028 |
| * pt.c (tsubst_default_argument): Early return if the type of the |
| parameter is erroneous. |
| |
| 2018-03-28 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/84973 |
| * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated |
| templates. |
| |
| PR c++/84968 |
| * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs. |
| |
| 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/85067 |
| * method.c (defaulted_late_check): Partially revert r253321 changes, |
| do not early return upon error. |
| |
| 2018-03-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85077 |
| * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector |
| type call fold to generate VECTOR_CSTs when possible. |
| |
| PR c++/85076 |
| * tree.c (cp_build_reference_type): If to_type is error_mark_node, |
| return it right away. |
| |
| 2018-03-27 Volker Reichelt <v.reichelt@netcologne.de> |
| |
| * search.c (check_final_overrider): Use inform instead of error |
| for the diagnostics of the overridden functions. Tweak wording. |
| |
| 2018-03-27 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85068 |
| * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo |
| is NULL. Assert if thunk_binfo is NULL then errorcount is non-zero. |
| |
| 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/84632 |
| * init.c (build_aggr_init): When initializing from array, |
| reject anything but CONSTRUCTORs and TARGET_EXPRs. |
| (build_vec_init): Handle separately ARRAY_TYPEs. |
| |
| 2018-03-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85062 - ICE with alignas in wrong place. |
| * decl.c (grokdeclarator): Ignore attributes on type-specifiers |
| here. |
| |
| PR c++/85049 - ICE with __integer_pack. |
| * pt.c (unify_pack_expansion): Don't try to deduce generated packs. |
| * cp-tree.h (TEMPLATE_PARM_P): New. |
| |
| 2018-03-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/78489 - wrong SFINAE behavior. |
| |
| PR c++/84489 |
| * pt.c (type_unification_real): Don't defer substitution failure. |
| |
| 2018-03-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/85015 |
| * decl.c (compute_array_index_type): Set osize to mark_rvalue_use |
| result. |
| |
| PR c++/84942 |
| * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace |
| cp_build_unary_op call with gcc_unreachable (). |
| |
| 2018-03-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85045 |
| * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression): |
| Handle EXACT_DIV_EXPR and RDIV_EXPR. Tweak condition. |
| (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR. |
| |
| 2018-03-23 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Implement P0962 |
| * parser.c (cp_parser_perform_range_for_lookup): Change |
| the condition for deciding whether to use members. |
| |
| 2018-03-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/85033 |
| * semantics.c (finish_offsetof): Don't allow CONST_DECLs. |
| |
| 2018-03-23 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/71251 |
| * parser.c (cp_parser_alias_declaration): Call |
| parser_check_template_parameters. |
| |
| PR c++/84789 |
| * pt.c (resolve_typename_type): Drop assert that stopped |
| simplification to template-independent types. Add assert to |
| verify the initial scope is template dependent. |
| * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): |
| Reparse the id expression as a type-name, not a declarator. |
| |
| PR c++/84729 |
| * init.c (build_vec_init): Error at parenthesized array init. |
| |
| PR c++/84610 |
| PR c++/84642 |
| PR c++/84942 |
| * cp-tree.h (temp_override): New template class, generalizing |
| a cleanup that was only used... |
| * parser.c (cp_parser_parameter_declaration_clause): |
| ... here for auto_is_implicit_function_template_parm_p. |
| (cp_parser_gnu_attributes_opt): Use it here as well. |
| (cp_parser_std_attribute): Likewise. |
| |
| 2018-03-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84854 |
| * semantics.c (finish_if_stmt_cond): Check if the type of the condition |
| is boolean. |
| |
| 2018-03-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/81311 - wrong C++17 overload resolution. |
| * call.c (build_user_type_conversion_1): Remove C++17 code. |
| (conv_binds_ref_to_prvalue): New. |
| (build_over_call): Handle C++17 copy elision. |
| (build_special_member_call): Only do C++17 copy elision here if the |
| argument is already the right type. |
| |
| 2018-03-21 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/71965 |
| * init.c (build_vec_init): Silence error, former sorry, |
| without tf_error. |
| |
| PR c++/84610 |
| PR c++/84642 |
| * parser.c (abort_fully_implicit_template_p): New. |
| (cp_parser_skip_to_end_of_statement): Use it. |
| (cp_parser_skip_to_end_of_block_or_statement): Likewise. |
| (finish_fully_implicit_template_p): Clear |
| implicit_template_parms and implicit_template_scope. |
| |
| 2018-03-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84972 |
| * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to |
| error_mark_node when check_array_designated_initializer fails. |
| |
| 2018-03-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84961 |
| * cp-tree.h (genericize_compound_lvalue): Declare. |
| * typeck.c (genericize_compound_lvalue): New function. |
| (unary_complex_lvalue, cp_build_modify_expr): Use it. |
| * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR |
| and PREDECREMENT_EXPR in output and "m" constrained input operands with |
| COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost |
| COMPOUND_EXPR operand. |
| |
| 2018-03-21 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/85008 |
| * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P. |
| * decl2.c (vague_linkage_p): Likewise. |
| |
| 2018-03-21 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/84994 |
| * constexpr.c (constexpr_fn_retval): Make non-"static". |
| * cp-tree.h (constexpr_fn_retval): New decl. |
| * search.c (direct_accessor_p): Update leading comment. |
| (reference_accessor_p): Likewise. |
| (field_accessor_p): Replace check that function body is a |
| RETURN_EXPR with a call to constexpr_fn_retval. Fix |
| indentation of "field_type" decl. |
| |
| 2018-03-21 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84804 |
| * name-lookup.c (do_pushtag): Permit lambdas to be pushed into |
| complete classes. |
| |
| 2018-03-21 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/84850 |
| * call.c (first_non_public_field): New template and function. |
| (first_non_trivial_field): New function. |
| (maybe_warn_class_memaccess): Call them. |
| |
| 2018-03-21 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/84892 |
| * search.c (field_accessor_p): Use class_of_this_parm rather than |
| type_of_this_parm, to check that "this" is a "const T *", rather |
| than a "T *const". |
| |
| 2018-03-21 Nathan Sidwell <nathan@acm.org> |
| |
| * class.c (finish_struct_anon_r): Refactor, deprecate anything |
| other than public non-static data members. |
| * parser.c (cp_parser_init_declarator): Deprecate attributes after |
| parenthesized initializer. |
| |
| PR c++/84836 |
| * name-lookup.c (update_binding): Correct logic for local binding |
| update. |
| |
| 2018-03-21 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/71638, ICE with NSDMI and reference. |
| * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags |
| even when we replace an element. |
| |
| 2018-03-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84978, ICE with NRVO. |
| * constexpr.c (cxx_eval_constant_expression): Handle the case when |
| a RESULT_DECL isn't in the hash map. |
| |
| 2018-03-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84978, ICE with NRVO. |
| * cvt.c (cp_get_fndecl_from_callee): Add fold parameter. |
| (cp_get_callee_fndecl_nofold): New. |
| * cp-gimplify.c (cp_genericize_r): Use it instead. |
| * call.c (check_self_delegation): Likewise. |
| |
| 2018-03-20 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84962 |
| * name-lookup.c (pushdecl_class_level): Push anon-struct's |
| member_vec, if there is one. |
| |
| PR c++/84970 |
| * cp-tree.h (lookup_list_keep): Declare. |
| * tree.c (lookup_list_keep): New, broken out of ... |
| (build_min): ... here. Call it. |
| * decl.c (cp_finish_decl): Call lookup_list_keep. |
| |
| 2018-03-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84937 - ICE with class deduction and auto. |
| * pt.c (rewrite_template_parm): Fix auto handling. |
| |
| 2018-03-19 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84925 |
| * pt.c (enclosing_instantiation_of): Check if fn is null. |
| |
| PR c++/84927 |
| * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags |
| as we evaluate the elements. |
| (cxx_eval_constant_expression): Verify constructor's flags |
| unconditionally. |
| |
| 2018-03-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/71834 - template-id with too few arguments. |
| * pt.c (coerce_template_parms): Check fixed_parameter_pack_p. |
| |
| 2018-03-19 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84835 |
| * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage. |
| * pt.c (build_template_decl): Propagate language linkage. |
| |
| PR c++/84812 |
| * name-lookup.c (set_local_extern_decl_linkage): Defend against |
| ambiguous lookups. |
| |
| 2018-03-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/84910 |
| * parser.c (cp_parser_lambda_introducer): Remove trailing space from |
| diagnostics. |
| * method.c (synthesize_method): Likewise. |
| * pt.c (convert_nontype_argument): Likewise. |
| |
| 2018-03-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84720 - ICE with rvalue ref non-type argument. |
| * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference. |
| (convert_nontype_argument): Revert earlier change. |
| |
| PR c++/80227 - SFINAE and negative array size. |
| * decl.c (compute_array_index_type): Use |
| build_converted_constant_expr and valid_constant_size_p. |
| |
| PR c++/84906 - silent wrong code with ambiguous conversion. |
| * call.c (build_user_type_conversion_1): Set need_temporary_p on |
| ambiguous conversion. |
| (convert_like_real): Check it. |
| |
| PR c++/83937 - wrong C++17 handling of init-list ctor argument. |
| * call.c (build_special_member_call): Don't convert an init-list |
| argument directly to the class type. |
| |
| 2018-03-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/79937 |
| PR c++/82410 |
| * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define. |
| (find_placeholder): Declare. |
| * tree.c (struct replace_placeholders_t): Add exp member. |
| (replace_placeholders_r): Don't walk into ctors with |
| CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to |
| d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x. |
| (replace_placeholders): Initialize data.exp. |
| (find_placeholders_r, find_placeholders): New functions. |
| * typeck2.c (process_init_constructor_record, |
| process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY |
| if adding NSDMI on which find_placeholder returns true. |
| * call.c (build_over_call): Don't call replace_placeholders here. |
| * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on |
| TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on |
| TARGET_EXPR_INITIAL. |
| (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new |
| ctor. |
| |
| 2018-03-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83911 - ICE with multiversioned constructor. |
| * cp-gimplify.c (cp_genericize_r): Replace versioned function with |
| dispatchere here. |
| * call.c (build_over_call): Not here. |
| |
| 2018-03-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84874 |
| * decl.c (reshape_init_class): Don't assert d->cur->index == field |
| if d->cur->index is a FIELD_DECL, instead set field to d->cur->index. |
| |
| 2018-03-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84222 |
| * cp-tree.h (cp_warn_deprecated_use): Declare. |
| * tree.c (cp_warn_deprecated_use): New function. |
| * typeck2.c (build_functional_cast): Use it. |
| * decl.c (grokparms): Likewise. |
| (grokdeclarator): Likewise. Temporarily push nested class scope |
| around grokparms call for out of class member definitions. |
| |
| 2018-03-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84820 - no error for invalid qualified-id. |
| * parser.c (cp_parser_make_indirect_declarator): Don't wrap |
| cp_error_declarator. |
| |
| PR c++/84801 - ICE with unexpanded pack in lambda. |
| * pt.c (check_for_bare_parameter_packs): Don't return early for a |
| lambda in non-template context. |
| |
| PR c++/81236 - auto variable and auto function |
| * pt.c (tsubst_baselink): Update the type of the BASELINK after |
| mark_used. |
| |
| 2018-03-14 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83916 - ICE with template template parameters. |
| * pt.c (convert_template_argument): Don't substitute into type of |
| non-type parameter if we don't have enough arg levels. |
| (unify): Likewise. |
| |
| 2018-03-14 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84596 |
| * semantics.c (finish_static_assert): Check |
| instantiation_dependent_expression_p instead of |
| {type,value}_dependent_expression_p. |
| |
| 2018-03-13 Paolo Carlini <paolo.carlini@oracle.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/82336 - link error with list-init default argument. |
| * decl.c (check_default_argument): Unshare an initializer list. |
| |
| 2018-03-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84843 |
| * decl.c (duplicate_decls): For redefinition of built-in, use error |
| and return error_mark_node. For redeclaration, return error_mark_node |
| rather than olddecl if !flag_permissive. |
| |
| 2018-03-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/82565 - ICE with concepts and generic lambda. |
| * pt.c (instantiate_decl): Clear fn_context for lambdas. |
| |
| 2018-03-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84720 - ICE with rvalue ref non-type argument. |
| * pt.c (convert_nontype_argument): Handle rvalue references. |
| |
| PR c++/84839 - ICE with decltype of parameter pack. |
| * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while |
| instantiating dummy parms. |
| |
| * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto |
| parameter even without -Wpedantic. |
| |
| PR c++/84798 - ICE with auto in abstract function declarator. |
| * parser.c (cp_parser_parameter_declaration_clause): Check |
| parser->default_arg_ok_p. |
| |
| 2018-03-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84808 |
| * constexpr.c (find_array_ctor_elt): Don't use elt reference after |
| first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to |
| sizetype. Formatting fixes. |
| |
| 2018-03-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84355 - ICE with deduction for member class template. |
| * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into |
| CLASS_PLACEHOLDER_TEMPLATE. |
| |
| PR c++/84802 - ICE capturing uninstantiated class. |
| * lambda.c (build_capture_proxy): Call complete_type. |
| |
| 2018-03-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84770 - ICE with typedef and parameter pack. |
| * pt.c (verify_unstripped_args_1): Split out from |
| verify_unstripped_args. |
| |
| PR c++/84785 - ICE with alias template and default targs. |
| * pt.c (type_unification_real): Set processing_template_decl if |
| saw_undeduced == 1. |
| |
| PR c++/84752 - ICE with capture of constexpr array. |
| * call.c (standard_conversion): Set rvaluedness_matches_p on the |
| identity conversion under ck_lvalue. |
| |
| 2018-03-09 Jason Merrill <jason@redhat.com> |
| Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/71169 |
| PR c++/71832 |
| * pt.c (any_erroneous_template_args_p): New. |
| * cp-tree.h (any_erroneous_template_args_p): Declare it. |
| * parser.c (cp_parser_class_specifier_1): Use it. |
| |
| 2018-03-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84726 - unnecessary capture of constant vars. |
| * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P) |
| (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New. |
| * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED. |
| * lambda.c (is_constant_capture_proxy) |
| (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r) |
| (prune_lambda_captures): New. |
| (finish_lambda_function): Call prune_lambda_captures. |
| |
| 2018-03-09 Jason Merrill <jason@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84076 |
| * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr |
| build ADDR_EXPR with REFERENCE_TYPE. |
| (build_over_call): For purposes of check_function_arguments, if |
| argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use |
| its operand rather than the argument itself. |
| |
| 2018-03-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84724 |
| * decl.c (duplicate_decls): Don't override __* prefixed builtins |
| except for __[^b]*_chk, instead issue permerror and for -fpermissive |
| |