PR c++/71568 - SFINAE forming pointer to member function
[gcc.git] / gcc / cp / ChangeLog
index 04d2a6017e810a5d7c256a4d5560291e774fdc8d..5792e5d08d0068b06f25929d3e9c114174e48671 100644 (file)
@@ -1,3 +1,448 @@
+2017-02-27  Jason Merrill  <jason@redhat.com>
+
+       PR c++/71568 - SFINAE forming pointer to member function
+       * init.c (build_offset_ref): Check the return value of
+       perform_or_defer_access_check.
+
+2017-02-27  Marek Polacek  <polacek@redhat.com>
+
+       * decl.c (expand_static_init): Add missing } in a comment.
+
+2017-02-27  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       * init.c: Include intl.h.
+       (build_new_1): Move message strings into pedwarn to make them
+       -Wformat-security friendly. Mark string for translation.
+       * pt.c (tsubst_copy_and_build): Mark string for translation.
+       Make the pointer const.
+       * semantics.c (finish_id_expression): Mark strings for translation.
+
+2017-02-25  Jakub Jelinek  <jakub@redhat.com>
+
+       * call.c (build_op_delete_call): Make msg1 and msg2 const.
+
+2017-02-24  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79588
+       * call.c (build_over_call): Call check_function_arguments even for
+       -Wrestrict, adjust check_function_arguments caller.
+       * parser.c (cp_parser_postfix_expression): Don't handle -Wrestrict
+       here.
+       * typeck.c (cp_build_function_call_vec): Adjust
+       check_function_arguments caller.
+
+2017-02-24  Marek Polacek  <polacek@redhat.com>
+
+       PR translation/79705
+       * decl.c (check_redeclaration_exception_specification): Mark a string
+       for translation.  Make the pointer const.
+
+2017-02-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/79361
+       * pt.c (register_specialization): Check duplicate_decls return value
+       for error_mark_node and pass it back.
+
+2017-02-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/79679 - missing destructor for argument
+       * call.c (build_over_call): Don't pass tf_no_cleanup to argument
+       conversions.
+
+       * pt.c (do_class_deduction): Handle 0 argument case.
+
+2017-02-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79664
+       * parser.c (cp_parser_omp_teams, cp_parser_omp_target): Use
+       SET_EXPR_LOCATION on OMP_TARGET/OMP_TEAMS tree.
+       * constexpr.c (potential_constant_expression_1): Handle
+       OMP_*, OACC_* and CILK_* trees.  Use error_at with
+       EXPR_LOC_OR_LOC (t, input_location) computed early
+       instead of error, or error_at with location_of (t).
+
+2017-02-22  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/79653
+       * parser.c (cp_parser_std_attribute_spec): Don't build the attribute
+       if the alignas expression is erroneous.
+       * pt.c (tsubst_attribute): If tsubst_pack_expansion fails, return
+       error_mark_node.
+
+       PR c++/79657
+       * semantics.c (finish_underlying_type): Bail out for incomplete enums.
+
+2017-02-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/50308 - wrong deprecated warning with ADL
+       PR c++/17729 - duplicate deprecated warning
+       * semantics.c (finish_id_expression): Only call mark_used on a
+       function if we aren't building a call.
+
+       PR c++/41727 - ICE with partial spec of partial instantiation
+       * pt.c (process_partial_specialization): For now, don't check more
+       specialized if there is more than one level of args.
+
+2017-02-21  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/79535
+       * cp-tree.h (maybe_reject_flexarray_init): Declare.
+       * init.c (maybe_reject_flexarray_init): No longer static.
+       Add check for current_function_decl.
+       * parser.c (cp_parser_late_parse_one_default_arg): Reject
+       a default mem-initializer for a flexible array.
+
+2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+           Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/79654
+       * decl.c (cp_finish_decomp): Don't set decl's type to error_mark_node
+       on error.
+       * pt.c (tsubst_decomp_names): Return error_mark_node if the first
+       decl after the decomposition artificial decl has error_mark_node.
+       * decl2.c (prune_vars_needing_no_initialization): Use error_operand_p
+       instead of just == error_mark_node comparison.
+
+2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/79589
+       * decl.c: Include gimplify.h.
+       (cp_finish_decomp): Make sure there is no sharing of trees
+       in between DECL_VALUE_EXPR of decomposition decls.
+
+       PR c++/79655
+       * constexpr.c (cxx_eval_array_reference): Diagnose negative subscript.
+
+       PR c++/79639
+       * constexpr.c (cxx_eval_store_expression): If *valp is a PTRMEM_CST,
+       call cplus_expand_constant on it first.
+
+2017-02-19  Jason Merrill  <jason@redhat.com>
+
+       PR c++/78139 - destructor needed by new-expression
+       * call.c (build_special_member_call): Use tf_no_cleanup.
+
+       PR c++/78282 - auto template and pack expansion
+       * pt.c (find_parameter_packs_r): Don't walk into the type of
+       templates other than template template-parameters.
+
+       PR c++/79606 - ICE with this->base_member in NSDMI
+       * class.c (build_base_path): Check processing_template_decl.
+
+       PR c++/79607 - ICE with T{} initializer
+       * decl.c (type_dependent_init_p): Check the type of a CONSTRUCTOR.
+
+       PR c++/79566 - elaborated-type-specifier in range for
+       * parser.c (cp_parser_simple_declaration): Fix check for type
+       definition.
+
+       PR c++/79400 - confusing suggestion of 'noexcept'
+       * parser.c (cp_parser_exception_specification_opt): Remove
+       suggestion for deprecated dynamic exception-specification.
+
+       PR c++/79470 - partial ordering with reference parameters
+       * pt.c (unify) [INDIRECT_REF]: Handle pack expansions.
+
+       PR c++/79500 - ICE with non-template deduction guide
+       * pt.c (do_class_deduction): Use STRIP_TEMPLATE rather than
+       DECL_TEMPLATE_RESULT.
+
+       PR c++/79580 - ICE with compound literal
+       * parser.c (cp_parser_class_head): If we're in the middle of an
+       expression, use ts_within_enclosing_non_class.
+
+       PR c++/79503 - inherited ctor taking base class
+       * call.c (add_function_candidate): Also check that
+       DECL_INHERITED_CTOR_BASE is reference-related to the parameter type.
+
+2017-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/79380
+       * typeck.c (cxx_alignas_expr): Reject a non-integral alignas
+       argument.
+
+2017-02-19  Eric Fiselier  <eric@efcs.ca>
+           Jonathan Wakely  <jwakely@redhat.com>
+
+       PR c++/69523
+       * parser.c (cp_parser_unqualified_id): Use OPT_Wliteral_suffix to
+       control warning about literal suffix identifiers without a leading
+       underscore.
+
+2017-02-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/79508 - lookup error with member template
+       * parser.c (cp_parser_template_name): Clear
+       parser->context->object_type if we aren't doing lookup.
+
+       PR c++/78690 - ICE with using and global type with same name
+       * pt.c (type_dependent_object_expression_p): True for
+       IDENTIFIER_NODE.
+
+       PR c++/79549 - C++17 ICE with non-type auto template parameter pack
+       * pt.c (convert_template_argument): Just return an auto arg pack.
+       (tsubst_template_args): Don't tsubst an auto pack type.
+
+       PR c++/79556 - C++17 ICE with non-type auto
+       * pt.c (do_auto_deduction): Don't try to deduce from null type.
+
+       PR c++/79533 - C++17 ICE with temporary cast to reference
+       * call.c (build_over_call): Conversion to a reference prevents copy
+       elision.
+
+2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+           Jason Merrill  <jason@redhat.com>
+
+       PR c++/79502 - lost nodiscard attribute
+       * pt.c (apply_late_template_attributes): Do apply non-dependent
+       attributes to types.
+
+2017-02-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/78572 - ICE with self-modifying array initializer
+       * constexpr.c (cxx_eval_store_expression): The object we're
+       initializing is outside the constant-expression.
+       (cxx_eval_call_expression): Set ctx->call.
+
+       PR c++/79050 - ICE with undeduced auto and LTO
+       * decl.c (poplevel): Remove undeduced auto decls.
+
+2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79512
+       * parser.c (cp_parser_omp_target): For -fopenmp-simd
+       ignore #pragma omp target even when not followed by identifier.
+
+2017-02-15  Jason Merrill  <jason@redhat.com>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79464 - ICE in IPA with omitted constructor parms
+       * class.c (build_clone): Also omit parms from TYPE_ARG_TYPES.
+       (adjust_clone_args): Adjust.
+       (add_method): Remember omitted parms.
+       * call.c (add_function_candidate): Likewise.
+       * mangle.c (write_method_parms): Likewise.
+       * method.c (ctor_omit_inherited_parms): Return false if there are no
+       parms to omit.
+
+2017-02-15  Martin Sebor  <msebor@redhat.com>
+
+       PR c++/79363
+       * init.c (maybe_reject_flexarray_init): New function.
+       (perform_member_init): Call it.
+
+2017-02-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79301
+       * parser.c (cp_parser_std_attribute): Don't pedwarn about
+       [[deprecated]] with -std=c++11 and [[fallthrough]] with
+       -std=c++11 and -std=c++14.
+
+       PR c++/79288
+       * decl.c (grokdeclarator): For static data members, handle thread_p
+       only after handling inline.
+
+2017-02-14  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/79420
+       PR c++/79463
+       * parser.c (cp_parser_postfix_dot_deref_expression): Avoid
+       clobbering if the postfix expression isn't an EXPR_P.
+
+2017-02-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/79461 - ICE with lambda in constexpr constructor
+       * constexpr.c (build_data_member_initialization): Ignore
+       initialization of a local variable.
+
+2017-02-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * init.c (warn_placement_new_too_small): Add missing space in
+       diagnostics.
+       * parser.c (cp_parser_oacc_declare): Likewise.
+       * mangle.c (maybe_check_abi_tags): Likewise.
+
+       PR c++/79232
+       * typeck.c (cp_build_modify_expr): Handle properly COMPOUND_EXPRs
+       on lhs that have {PRE{DEC,INC}REMENT,MODIFY,MIN,MAX,COND}_EXPR
+       in the rightmost operand.
+
+2017-02-13  Nathan Sidwell  <nathan@acm.org>
+
+       PR c++/79296 - ICE mangling localized template instantiation
+       * decl2.c (determine_visibility): Use template fn context for
+       local class instantiations.
+
+2017-02-11  Jason Merrill  <jason@redhat.com>
+
+       PR c++/77659 - ICE with new and C++14 aggregate NSDMI
+       * init.c (build_new): Make backups of any CONSTRUCTORs in init.
+       (build_new_1): Use replace_placeholders.
+       * tree.c (replace_placeholders_t): Also track whether we've seen a
+       placeholder.
+       (replace_placeholders, replace_placeholders_r): Adjust.
+       * cp-tree.h: Adjust.
+
+       PR c++/77790 - ICE with auto function in C++11 mode
+       * decl.c (undeduced_auto_decl): Remove C++14 limitation.
+       (require_deduced_type): Add complain parm, return bool.
+       * cp-tree.h: Adjust.
+       * decl2.c (mark_used): Use require_deduced_type.
+
+2017-02-10  Jason Merrill  <jason@redhat.com>
+
+       PR c++/78908 - template ops and bitfields
+       * tree.c (build_min_non_dep): Use unlowered_expr_type.
+
+       PR c++/78897 - constexpr union
+       * constexpr.c (cxx_eval_store_expression): A store to a union member
+       erases a previous store to another member.
+
+       PR c++/71285 - member of fold-expression
+       * semantics.c (finish_unary_fold_expr)
+       (finish_binary_fold_expr): Use null type for fold-expressions.
+
+       PR c++/79401 - protected inherited constructor
+       * call.c (enforce_access): For inheriting constructor, find a base
+       binfo in the path we already have.
+
+2017-02-10  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/79435
+       * pt.c (type_dependent_expression_p): Check if the expression type
+       is null.
+
+       PR c++/79184
+       * cvt.c (ocp_convert): Add a sentinel against -Wint-in-bool-context
+       if warnings shouldn't be given.
+
+2017-02-10  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/71737
+       * pt.c (tsubst_decl): Don't try to preserve a typedef that names
+       an error_mark_node as type.
+
+2017-02-09  Jakub Jelinek  <jakub@redhat.com>
+           Jason Merrill  <jason@redhat.com>
+
+       PR c++/79143
+       * pt.c (instantiate_class_template_1): Copy CLASSTYPE_NON_AGGREGATE
+       from pattern to type.
+
+2017-02-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/79316 - default argument in deduction guide
+       PR c++/79350 - explicit deduction guide
+       * parser.c (cp_parser_constructor_declarator_p)
+       (cp_parser_direct_declarator): Parse deduction guides more like
+       constructors.
+       * cp-tree.h (enum special_function_kind): Add sfk_deduction_guide.
+       * tree.c (special_function_p): Return it.
+       * decl.c (check_special_function_return_type): Handle it.
+       (grokdeclarator, grokfndecl): Adjust.
+       (cp_finish_decl): Pass flags to do_auto_deduction.
+       * error.c (dump_decl_name): Use TFF_UNQUALIFIED_NAME.
+       * pt.c (dguide_name_p): Take a const_tree.
+       (do_class_deduction): Handle explicit.
+       (do_auto_deduction): Pass flags through.
+       (build_deduction_guide): Copy explicit flag.
+
+2017-02-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79429
+       * parser.c (cp_parser_omp_ordered): Don't check for non-pragma_stmt
+       non-pragma_compound context here.
+       (cp_parser_omp_target): Likewise.
+       (cp_parser_pragma): Don't call push_omp_privatization_clauses and
+       parsing for ordered and target omp pragmas in non-pragma_stmt
+       non-pragma_compound contexts.
+
+       PR c/79431
+       * parser.c (cp_parser_oacc_declare): Formatting fix.
+       (cp_parser_omp_declare_target): Don't invoke symtab_node::get on
+       automatic variables.
+
+2016-02-09  Nathan Sidwell  <nathan@codesourcery.com>
+           Chung-Lin Tang  <cltang@codesourcery.com>
+
+       * parser.c (cp_parser_oacc_clause_tile): Disallow collapse.  Fix
+       parsing.  Parse constant expression. Remove semantic checking.
+       (cp_parser_omp_clause_collapse): Disallow tile.
+       (cp_parser_omp_for_loop): Deal with tile clause.  Don't emit a parse
+       error about missing for after already emitting one.  Use more
+       conventional for idiom for unbounded loop.
+       * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_TILE.
+       * semantics.c (finish_omp_clauses): Correct TILE semantic check.
+       (finish_omp_for): Deal with tile clause.
+
+2017-02-07  Nathan Sidwell  <nathan@acm.org>
+
+       * method.c (synthesized_method_base_walk): New.  Broken out of ...
+       (synthesized_method_walk): ... here.  Call it.  Cleanup
+       initializations.
+
+2017-02-07  Patrick Palka  <ppalka@gcc.gnu.org>
+
+       PR c++/79360
+       * typeck2.c (process_init_constructor_union): Consider only
+       FIELD_DECLs when looking for an NSDMI.
+
+2017-02-06  Jason Merrill  <jason@redhat.com>
+
+       PR c++/71193 - incomplete types in templates
+       * parser.c (cp_parser_postfix_dot_deref_expression): In a template
+       handle incomplete type by pedwarning and then treating as dependent.
+
+2017-02-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79379
+       * constexpr.c (cxx_eval_constant_expression): Handle ANNOTATE_EXPR.
+       (potential_constant_expression_1): Likewise.
+
+       PR c++/79377
+       * tree.c (build_min_non_dep_op_overload): For POST{INC,DEC}REMENT_EXPR
+       allow one fewer than expected arguments if flag_permissive.
+
+       PR c++/79372
+       * decl.c (cp_finish_decomp): On error set decl type to error_mark_node.
+       * pt.c (tsubst_expr): Don't call tsubst_decomp_names on decompositions
+       with error_mark_node type.
+
+2017-02-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/78689 - ICE on constructor with label
+       * optimize.c (maybe_clone_body): Replace omitted parameters with
+       null lvalues.
+       * class.c (build_clone): Fix logic for omitting inherited parms.
+
+       PR c++/12245 - excessive memory use
+       * constexpr.c (maybe_constant_value): Fold maybe_constant_value_1
+       back in.  Don't cache constants.
+       (maybe_constant_init): Don't cache constants.
+
+       PR c++/79294 - ICE with invalid template argument
+       * pt.c (convert_nontype_argument_function): Check value-dependence.
+       (convert_nontype_argument): Don't check it here for function ptrs.
+
+2017-02-02  Richard Biener  <rguenther@suse.de>
+
+       PR cp/14179
+       * cp-gimplify.c (cp_fold): When folding a CONSTRUCTOR copy
+       it lazily on the first changed element only and copy it
+       fully upfront, only storing changed elements.
+
+2017-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/69637
+       * decl2.c (grokbitfield): In case of error don't set-up DECL_INITIAL
+       to the width.
+
+2017-01-31  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79304
+       * error.c (dump_expr) <case COMPONENT_REF>: Don't print .
+       after ARROW_EXPR.
+
 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
 
        PR c++/79298