| 2018-07-26 Release Manager |
| |
| * GCC 8.2.0 released. |
| |
| 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. |
| |
| 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. |
| |
| 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. |
| |
| 2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Backport from mainline |
| 2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| gcc/cp/ |
| |
| PR c++/86398 |
| * method.c (is_trivially_xible): Return false |
| if is_xible_helper returns a NULL_TREE. |
| |
| 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. |
| |
| * name-lookup.c (do_push_to_top_level): Don't allocate |
| current_lang_base. |
| (do_pop_from_top_level): Release current_lang_base. |
| |
| 2018-06-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86320 - memory-hog with std::array of pair |
| * typeck2.c (process_init_constructor_array): If zero-initialization |
| is fine for one element, we're done. |
| |
| PR c++/80290 - memory-hog with std::pair. |
| * pt.c (type_unification_real): Skip non-dependent conversion |
| check for a nested list argument. |
| (braced_init_depth): 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-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86219 - ICE with erroneous initializer in template. |
| * constexpr.c (fold_non_dependent_expr): Add complain parm. |
| * typeck2.c (store_init_value): Pass tf_warning_or_error. |
| |
| 2018-06-21 Jason Merrill <jason@redhat.com> |
| |
| 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-20 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/85634 - tsubst ICE on unmarked lookup |
| * parser.c (cp_parser_primary_expression): Keep lookup in template. |
| |
| 2018-06-18 Jason Merrill <jason@redhat.com> |
| |
| 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. |
| |
| 2018-06-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/86147 - wrong capture for template argument. |
| * expr.c (mark_use): Look through NOP_EXPR. |
| |
| 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-13 Jason Merrill <jason@redhat.com> |
| |
| 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-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. |
| |
| 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. |
| |
| PR c++/85764 - bogus 'this' not captured error. |
| * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype. |
| (nonlambda_method_basetype): Handle NSDMI. |
| |
| 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++/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. |
| |
| PR c++/86094 - wrong code with defaulted move ctor. |
| * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling. |
| |
| 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. |
| |
| 2018-06-05 Marek Polacek <polacek@redhat.com> |
| |
| Backported from mainline |
| 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-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-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. |
| |
| 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++/85873 - constant initializer_list array not in .rodata. |
| * call.c (convert_like_real): Treat the backing array for an |
| initializer_list like a C99 compound literal. |
| |
| 2018-05-30 Jakub Jelinek <jakub@redhat.com> |
| |
| Backported from mainline |
| 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-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 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-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. |
| |
| PR c++/85864 - literal template and default template arg. |
| * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK. |
| |
| 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. |
| |
| 2018-05-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/85866 - error with .* in default template arg. |
| * pt.c (tsubst_copy_and_build): Handle partial instantiation. |
| |
| 2018-05-18 Cesar Philippidis <cesar@codesourcery.com> |
| |
| Backport from mainline |
| 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-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 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. |
| |
| 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-04 Jason Merrill <jason@redhat.com> |
| |
| 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. |
| |
| 2018-05-02 Release Manager |
| |
| * GCC 8.1.0 released. |
| |
| 2018-05-02 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. |
| |
| 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 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-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 |
| also a note and return olddecl. |
| |
| 2018-03-09 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84733 |
| * name-lookup.c (do_pushdecl_with_scope): Only clear |
| current_function_decl when pushing a non-class (i.e. namespace) |
| scope. |
| |
| 2018-03-08 Jason Merrill <jason@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/80598 |
| * call.c (build_over_call): In templates set TREE_USED (first_fn) when |
| not calling mark_used for the benefit of -Wunused-function warning. |
| |
| 2018-03-06 Jason Merrill <jason@redhat.com> |
| |
| * lambda.c (is_capture_proxy_with_ref): Remove. |
| * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust. |
| |
| 2018-03-06 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84684 |
| * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated |
| arguments. |
| |
| 2018-03-06 Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/84231 |
| * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE |
| only while processing template decls. |
| * typeck.c (build_x_conditional_expr): Move wrapping of |
| reference type around type... |
| * call.c (build_conditional_expr_1): ... here. Rename |
| is_lvalue to is_glvalue. |
| * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P |
| INDIRECT_REF of COND_EXPR too. |
| |
| PR c++/84593 |
| * init.c (build_zero_init_1): Zero-initialize references. |
| |
| PR c++/84492 |
| * semantics.c (finish_stmt_expr_expr): Reject unresolved |
| overloads used as stmt expr values. |
| |
| 2018-03-05 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84708 - ICE with lambda in local class NSDMI. |
| * lambda.c (lambda_expr_this_capture): Handle local class NSDMI |
| context. |
| |
| 2018-03-05 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84684 |
| * constexpr.c (constexpr_call_hasher::equal): Return false if |
| lhs->hash != rhs->hash. Change return 1 to return true and |
| return 0 to return false. |
| |
| 2018-03-05 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84702 |
| * pt.c (process_template_arg): Mark lookup_keep on a default arg. |
| |
| 2018-03-05 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84707 |
| * decl.c (duplicate_decls): Check DECL_NAME before accessing |
| UDLIT_OPER_P. |
| |
| 2018-03-05 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84694 |
| * friend.c (do_friend): Restore check for identifier_p inside |
| TEMPLATE_ID_EXPR. |
| |
| 2018-03-05 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84618 |
| * parser.c (cp_parser_lambda_introducer): Reject any capture not |
| involving a VAR_DECL or a PARM_DECL. |
| |
| 2018-03-05 Pádraig Brady <P@draigBrady.com> |
| Jason Merrill <jason@redhat.com> |
| Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84497 |
| * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too. |
| |
| 2018-03-03 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84686 - missing volatile loads. |
| * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref. |
| |
| 2018-03-03 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/71464 |
| * optimize.c (maybe_thunk_body): Bail out immediately if either |
| fns[0] or fns[1] is null. |
| |
| 2018-03-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84578 |
| * constexpr.c (get_array_or_vector_nelts): New. |
| (cxx_eval_array_reference): Use it. |
| (cxx_eval_vec_init_1): Likewise. |
| (cxx_eval_store_expression): Likewise. |
| |
| 2018-03-02 Jason Merrill <jason@redhat.com> |
| |
| * semantics.c (force_paren_expr): Remove redundant test. |
| |
| 2018-03-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84663 |
| * decl.c (cp_complete_array_type): Check error_mark_node. |
| |
| PR c++/84664 |
| * typeck.c (cp_perform_integral_promotions): Check the result of |
| mark_rvalue_use. |
| |
| 2018-03-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84662 |
| * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use |
| RETURN instead of return. |
| <case POINTER_PLUS_EXPR>: Likewise. |
| <case CONVERT_EXPR>: If op0 is error_mark_node, just return |
| it instead of wrapping it into CONVERT_EXPR. |
| |
| 2018-03-02 Jason Merrill <jason@redhat.com> |
| |
| Fix MIPS16 ICE. |
| * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC. |
| |
| 2018-03-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84590 |
| * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR |
| wrapped in VIEW_CONVERT_EXPR. |
| |
| 2018-03-01 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/84294 |
| * decl.c (check_redeclaration_no_default_args): Merge attributes |
| specified on redeclarations of the same function template. |
| Remove dead code. |
| |
| 2018-03-01 Marek Polacek <polacek@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| PR c++/84582 |
| * semantics.c (force_paren_expr): Create a PAREN_EXPR when in |
| a template. |
| (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR. |
| * typeck2.c (store_init_value): Call fold_non_dependent_expr instead |
| of instantiate_non_dependent_expr. |
| * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR. |
| |
| 2018-03-01 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84434 |
| * name-lookup.c (member_vec_dedup): Remove manually peeled |
| iteration. Ignore dependent ctor inheritance. |
| |
| 2018-03-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/71569 - decltype of template. |
| * parser.c (cp_parser_decltype_expr): Handle missing template args. |
| |
| 2018-03-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84596 |
| * constexpr.c (require_rvalue_constant_expression): New function. |
| * cp-tree.h: Declare it. |
| * semantics.c (finish_static_assert): Use it instead of |
| require_potential_rvalue_constant_expression. |
| |
| 2018-03-01 Jason Merrill <jason@redhat.com> |
| Alexandre Oliva <aoliva@redhat.com> |
| |
| PR c++/71569 - ICE with redundant args on member variable template. |
| * decl.c (start_decl): Handle partial specialization of member |
| variable template. |
| * pt.c (determine_specialization): Allow partial specialization |
| of member variable template without specializing enclosing class. |
| (process_partial_specialization): Improve error message. |
| |
| 2018-02-28 Jason Merrill <jason@redhat.com> |
| |
| PR c++/71784 - ICE with ref-qualifier and explicit specialization. |
| * pt.c (determine_specialization): Check ref-qualifier. |
| |
| 2018-02-28 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84609 |
| * parser.c (cp_parser_attributes_opt): Formatting fix. |
| (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt, |
| cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt): |
| New functions. |
| (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt |
| instead of tentative parse to peek over optional attribute tokens |
| to check for CPP_COLON after them. |
| |
| PR c++/83871 |
| PR c++/83503 |
| * pt.c (INCLUDE_STRING): Remove define. |
| (warn_spec_missing_attributes): Use pretty_printer instead of |
| std::string. Fix up inform call so that the list of attributes |
| is in %s argument. |
| |
| 2018-02-28 Martin Sebor <msebor@redhat.com> |
| |
| PR testsuite/84617 |
| * decl.c (duplicate_decls): Fully merge attributes const, pure, |
| and malloc. |
| |
| 2018-02-28 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84602 |
| * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg. |
| * name-lookup.c (fields_linear_search): Look in an anon-aggr |
| regardless of want_type. |
| (search_anon_aggr): Just use get_class_binding_direct. |
| |
| 2018-02-28 Jakub Jelinek <jakub@redhat.com> |
| |
| * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling |
| inform_n. |
| |
| 2018-02-27 Martin Sebor <msebor@redhat.com> |
| |
| * pt.c: Avoid including <string> directly. |
| |
| 2018-02-27 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/83871 |
| PR c++/83503 |
| * cp-tree.h (warn_spec_missing_attributes): New function. |
| ((check_explicit_specialization): Add an argument. Call the above |
| function. |
| * decl.c (duplicate_decls): Avoid applying primary function template's |
| attributes to its explicit specializations. |
| cp/pt.c (warn_spec_missing_attributes): Define. |
| |
| 2018-02-27 HÃ¥kon Sandsmark <hsandsmark@gmail.com> |
| |
| PR c++/71546 - lambda init-capture with qualified-id. |
| * parser.c (cp_parser_lambda_introducer): Clear scope after |
| each lambda capture. |
| |
| 2018-02-27 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84426 |
| * name-lookup.h (get_member_slot): Rename ... |
| (find_member_slot): ... here. |
| (add_member_slot): New. |
| * name-lookup.c (member_vec_linear_search): No need to check for |
| NULL slot. |
| (get_member_slot): Rename ... |
| (find_member_slot): ... here. Don't add slot for incomplete class. |
| (add_member_slot): New. |
| * class.c (add_method): Adjust get_member_slot rename. Bail out |
| if push_class_level_binding fails. Create slot and grok |
| properties once we're committed to insertion. |
| |
| 2018-02-27 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84489 - dependent default template argument |
| * pt.c (type_unification_real): Handle early substitution failure. |
| |
| 2018-02-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84560 - ICE capturing multi-dimensional VLA. |
| * tree.c (array_of_runtime_bound_p): False if the element is |
| variably-modified. |
| |
| PR c++/84441 - ICE with base initialized from ?: |
| * call.c (unsafe_copy_elision_p): Handle COND_EXPR. |
| |
| PR c++/84520 - ICE with generic lambda in NSDMI. |
| * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI |
| 'this' in a generic lambda instantiation. |
| |
| PR c++/84559 - ICE with constexpr VLA. |
| * constexpr.c (ensure_literal_type_for_constexpr_object): Check |
| for constexpr variable with VLA type. |
| |
| 2018-02-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84558 |
| * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like |
| a valid constant initializer. Formatting fixes. |
| |
| 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84540 |
| * pt.c (tsubst_attributes): Handle correctly tsubst_attribute |
| returning NULL_TREE. |
| (apply_late_template_attributes): Likewise. |
| |
| 2018-02-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84557 |
| * parser.c (cp_parser_omp_var_list_no_open): Only call |
| cp_parser_lookup_name_simple on names satisfying identifier_p. |
| (cp_parser_oacc_routine): Likewise. |
| |
| 2018-02-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84551 - ICE with concepts and -g. |
| * parser.c (add_debug_begin_stmt): Do nothing in a concept. |
| |
| 2018-02-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84325 |
| * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on |
| non-types. |
| |
| 2018-02-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84447 - ICE with deleted inherited ctor with default arg. |
| * call.c (build_over_call): Handle deleted functions in one place. |
| |
| 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84533 |
| * decl.c (redeclaration_error_message): Don't try to use |
| DECL_DECLARED_CONSTEXPR_P on CONST_DECLs. |
| |
| 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * lambda.c (build_capture_proxy): Define static. |
| * cp-tree.h (build_capture_proxy): Remove. |
| |
| 2018-02-26 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84537 |
| * name-lookup.c (suggest_alternative_in_explicit_scope): Return false |
| if name is error node. |
| |
| 2018-02-25 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84015 - ICE with class deduction and auto template parm. |
| * pt.c (rewrite_template_parm): Use tf_partial in first tsubst. |
| |
| 2018-02-24 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/83692 |
| * constexpr.c (maybe_constant_init_1): New function. |
| (maybe_constant_init): Make it a wrapper around maybe_constant_init_1. |
| (cxx_constant_init): New function. |
| * cp-tree.h (cxx_constant_init): Declare. |
| * typeck2.c (store_init_value): Call cxx_constant_init instead of |
| cxx_constant_value. Move the maybe_constant_init call under an 'else'. |
| |
| 2018-02-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/70468 - ICE with constructor delegation via typedef. |
| * pt.c (tsubst_initializer_list): Check for other mem-initializers |
| with constructor delegation. |
| |
| 2018-02-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84424 - ICE with constexpr and __builtin_shuffle. |
| * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of |
| VECTOR_TYPE. |
| |
| 2018-02-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84493 |
| * parser.c (cp_parser_braced_list): Use require_open instead of |
| consume_open. |
| |
| 2018-02-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84454 - ICE with pack expansion in signature. |
| * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION. |
| |
| 2018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org> |
| |
| * cp-objcp-common.c (cxx_block_may_fallthru): Add case for |
| IF_STMT. |
| |
| 2018-02-20 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84446 |
| * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope |
| on error_mark_node. |
| |
| 2018-02-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84445 |
| * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test |
| TREE_HAS_CONSTRUCTOR if instance is not an internal function call. |
| |
| PR c++/84449 |
| * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs |
| returns error_mark_node, return it immediately. |
| (break_out_target_exprs): If cp_walk_tree with bot_manip returns |
| error_mark_node, return error_mark_node. |
| |
| PR c++/84455 |
| * pt.c (tsubst_lambda_expr): If not nested, increment temporarily |
| function_depth to avoid GC during finish_lambda_function. |
| |
| 2018-02-19 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84429 - ICE capturing VLA. |
| * lambda.c (build_capture_proxy): Handle reference refs. |
| |
| 2018-02-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84448 |
| * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if |
| either operand is error_mark_node, set current.lhs to that instead of |
| creating a binary op with error_mark_node operands. |
| |
| PR c++/84430 |
| * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD. |
| |
| 2018-02-19 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84348 |
| * decl.c (grokdeclarator): Early return error_mark_node upon |
| ill-formed friend declaration. |
| |
| 2018-02-16 Marek Polacek <polacek@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84192 |
| * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't |
| set *jump_target to anything if jump_target is NULL. |
| |
| 2018-02-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84151 - unnecessary volatile load with static member. |
| * call.c (build_new_method_call_1): Avoid loading from a volatile |
| lvalue used as the object argument for a static member function. |
| |
| PR c++/81853 - using-directive and constexpr. |
| * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT. |
| |
| PR c++/84420 - ICE with structured binding in lambda. |
| * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P. |
| |
| PR c++/83835 - C++17 error with constructor ctors. |
| * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P. |
| |
| PR c++/82664 - ICE with reference to function template parm. |
| * pt.c (convert_nontype_argument_function): Avoid obfuscationg |
| NOP_EXPRs. |
| |
| PR c++/82764 - C++17 ICE with empty base |
| * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base. |
| |
| 2018-02-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84421 - type-dependent if constexpr |
| * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p. |
| |
| 2018-02-16 Nathan Sidwell <nathan@acm.org> |
| |
| Deprecate -ffriend-injection. |
| * decl.c (cxx_init_decl_processing): Emit warning on option. |
| * name-lookup.c (do_pushdecl): Emit warning if we push a visible |
| friend. |
| |
| 2018-02-16 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/82468 |
| * decl.c (check_special_function_return_type): Reject template |
| template parameter in deduction guide. |
| |
| 2018-02-16 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84375 |
| * name-lookup.c (do_pushdecl): Bail out on bad local friend injection. |
| |
| 2018-02-15 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83227 - C++17 ICE with init-list derived-to-base conversion. |
| * call.c (convert_like_real): Don't use the copy-list-initialization |
| shortcut for ck_base. |
| |
| PR c++/84045 - ICE with typedef and noexcept. |
| * except.c (build_noexcept_spec): Use strip_typedefs_expr. |
| |
| PR c++/84376 - ICE with omitted template arguments. |
| * pt.c (dguide_name_p): Check for IDENTIFIER_NODE. |
| |
| PR c++/84368 - wrong error with local variable in variadic lambda. |
| * pt.c (tsubst_pack_expansion): Fix handling of non-packs in |
| local_specializations. |
| |
| 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84330 |
| * constraint.cc (tsubst_constraint_info): Handle an error_mark_node |
| as first argument. |
| |
| 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84350 |
| * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null |
| init, early return. |
| |
| 2018-02-14 Nathan Sidwell <nathan@acm.org> |
| |
| * decl2.c (mark_vtable_entries): Set input_location to decl's. |
| (c_parse_final_cleanups): Restore input_location after emitting |
| vtables. |
| |
| 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove. |
| (do_auto_deduction (tree, tree, tree, tsubst_flags_t, |
| auto_deduction_context, tree, int): Add defaults. |
| * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition. |
| (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward |
| tsubst_flags_t argument. |
| * init.c (build_new): Likewise. |
| |
| 2018-02-13 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84364 |
| * typeck.c (check_return_expr): Don't emit -Weffc++ warning |
| about return other than *this in assignment operators if |
| retval is type dependent expression. |
| |
| 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84333 |
| * call.c (build_conditional_expr_1): Use cp_save_expr instead of |
| save_expr for the G++ extension. |
| |
| 2018-02-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84080 - ICE with return type deduction and specialization. |
| * pt.c (determine_specialization): Check uses_template_parms. |
| |
| Fix more variadic capture issues. |
| * pt.c (find_parameter_packs_r): Also look at explicit captures. |
| (check_for_bare_parameter_packs): Check current_class_type for |
| lambda context. |
| (extract_locals_r): Handle seeing a full instantiation of a pack. |
| (tsubst_pack_expansion): Likewise. Force lambda capture. |
| * parser.c (cp_parser_lambda_introducer): Don't |
| check_for_bare_parameter_packs. |
| |
| PR c++/84338 - wrong variadic sizeof. |
| * pt.c (argument_pack_select_arg): Like the macro, but look through |
| a pack expansion. |
| (tsubst, tsubst_copy, dependent_template_arg_p): Use it. |
| (extract_fnparm_pack): Do make_pack_expansion. |
| (extract_locals_r): Do strip a pack expansion. |
| * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove. |
| |
| 2018-02-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84341 |
| * parser.c (cp_parser_binary_expression): Use build_min instead of |
| build2_loc to build the no_toplevel_fold_p toplevel binary expression. |
| |
| 2018-02-12 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/84263 |
| * parser.c (cp_parser_decltype): Push and pop |
| deferring_access_checks. Reorganize to avoid goto. |
| |
| 2018-02-12 Richard Biener <rguenther@suse.de> |
| |
| PR c++/84281 |
| * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact |
| uniform constructors and delay allocating them fully. |
| |
| 2018-02-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84036 - ICE with variadic capture. |
| Handle variadic capture proxies more like non-variadic. |
| * lambda.c (build_capture_proxy): Remove workaround. |
| * pt.c (find_parameter_packs_r): The proxy is a pack. |
| (instantiate_class_template_1): Remove dead lambda code. |
| (extract_fnparm_pack): Don't make_pack_expansion. |
| (extract_locals_r): Don't strip a pack expansion. |
| (tsubst_pack_expansion): Handle proxy packs. Use |
| PACK_EXPANSION_EXTRA_ARGS less. |
| (tsubst_decl) [FIELD_DECL]: Don't register_specialization. |
| (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization. |
| [VAR_DECL]: Handle ARGUMENT_PACK_SELECT. |
| (tsubst_expr) [DECL_EXPR]: Handle proxy packs. |
| (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally. |
| |
| 2018-02-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR sanitizer/83987 |
| * tree.c (cp_free_lang_data): Revert 2018-01-23 change. |
| |
| 2018-02-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/81917 - ICE with void_t and partial specialization. |
| * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before |
| calling most_specialized_partial_spec. |
| |
| 2018-02-09 Nathan Sidwell <nathan@acm.org> |
| |
| PR c/84293 |
| * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1): |
| Pass expr location to strict_aliasing_warning. |
| |
| 2018-02-09 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84296 - ICE with qualified-id in template. |
| PR c++/83714 |
| * pt.c (unknown_base_ref_p): New. |
| (instantiation_dependent_scope_ref_p): Use it instead of |
| any_dependent_bases_p. |
| |
| 2018-02-09 Marek Polacek <polacek@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83659 |
| * constexpr.c (cxx_fold_indirect_ref): Sync some changes from |
| fold_indirect_ref_1, including poly_*int64. Verify first that |
| tree_fits_poly_int64_p (op01). Formatting fixes. |
| |
| 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P. |
| * lambda.c (build_capture_proxy): Likewise. |
| * search.c (field_access_p): Likewise. |
| * semantics.c (omp_clause_decl, omp_privatize_field, |
| finish_omp_clauses): Likewise. |
| |
| 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/83806 |
| * typeck.c (decay_conversion): Use mark_rvalue_use for the special |
| case of nullptr too. |
| |
| 2018-02-08 Nathan Sidwell <nathan@acm.org> |
| |
| * class.c (finish_struct): Fix std:initializer_list diagnostic |
| formatting. |
| |
| 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/83204 |
| * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF. |
| |
| 2018-02-07 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84082 |
| * parser.c (cp_parser_dot_deref_incomplete): New function. |
| (cp_parser_postfix_dot_deref_expression): Use it. |
| |
| 2018-02-07 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/81610 |
| PR c++/80567 |
| * name-lookup.c (suggest_rid_p): New function. |
| (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to |
| suggest_rid_p. |
| |
| 2018-02-07 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84182 - ICE with captured lambda |
| PR c++/84181 |
| * pt.c (extract_locals_r, extract_local_specs): New. |
| (tsubst_pack_expansion): Use them. |
| |
| 2018-02-07 Martin Liska <mliska@suse.cz> |
| |
| PR c++/84059. |
| * class.c (add_method): Append argument value. |
| * cp-tree.h (maybe_version_functions): Add new argument. |
| * decl.c (decls_match): Call it if a declaration does not |
| have DECL_FUNCTION_VERSIONED. |
| (maybe_version_functions): record argument is added. |
| |
| 2018-02-05 Marek Polacek <polacek@redhat.com> |
| |
| * class.c: Remove unused global variables. |
| (build_primary_vtable): Don't gather statistics. |
| (print_class_statistics): Remove. |
| * cp-tree.h (print_class_statistics): Remove. |
| * tree.c (cxx_print_statistics): Don't call print_class_statistics. |
| |
| 2018-02-02 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD. |
| * constexpr.c (cx_check_missing_mem_inits): Likewise. |
| * decl.c (next_initializable_field, find_decomp_class_base, |
| cp_finish_decomp): Likewise. |
| * typeck2.c (process_init_constructor_record): Likewise. |
| |
| 2018-02-02 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84181 - ICE with lambda parm in template argument. |
| * tree.c (strip_typedefs_expr): Use cp_tree_operand_length. |
| |
| 2018-02-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84160 - ICE with nested variadic capture. |
| * lambda.c (is_capture_proxy_with_ref): New. |
| (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a |
| COMPONENT_REF. |
| * expr.c (mark_use): Use is_capture_proxy_with_ref. |
| * constexpr.c (potential_constant_expression_1): Likewise. |
| * semantics.c (process_outer_var_ref): Likewise. |
| |
| 2018-02-01 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84125 |
| * typeck.c (build_address): Relax the assert when |
| processing_template_decl. |
| |
| 2018-02-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84126 - ICE with variadic generic lambda |
| PR c++/84036 |
| PR c++/82249 |
| * pt.c (tsubst_pack_expansion): Handle function parameter_packs in |
| PACK_EXPANSION_EXTRA_ARGS. |
| |
| 2018-02-01 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/83796 |
| * call.c (convert_like_real): If w're initializing from {} explicitly |
| call abstract_virtuals_error_sfinae. |
| |
| 2018-01-31 Jason Merrill <jason@redhat.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83993 |
| * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR |
| around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT |
| on ADDR_EXPR. |
| |
| 2018-01-31 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83993 |
| * constexpr.c (diag_array_subscript): Emit different diagnostics |
| if TYPE_DOMAIN (arraytype) is NULL. |
| (cxx_eval_array_reference, cxx_eval_store_expression): For arrays |
| with NULL TYPE_DOMAIN use size_zero_node as nelts. |
| |
| 2018-01-31 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/84092 |
| * semantics.c (finish_qualified_id_expr): When handling an |
| UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr. |
| |
| 2018-01-31 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/84138 |
| * cp-gimplify.c (cp_fold): Check if X is an error node before |
| calling useless_type_conversion_p. |
| |
| 2018-01-30 Jason Merrill <jason@redhat.com> |
| |
| PR c++/84091 - ICE with local class in lambda in template. |
| * decl2.c (determine_visibility): Look for outer containing template |
| instantiation. |
| |
| PR c++/84098 - ICE with lambda in template NSDMI. |
| * pt.c (instantiate_class_template_1): Ignore more lambdas. |
| |
| 2018-01-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/68810 - wrong location for reinterpret_cast error. |
| * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when |
| !dofold. |
| |
| 2018-01-29 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/83996 |
| * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1] |
| => fooarray[1] in offset_int. |
| |
| 2018-01-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83942 - wrong unused warning with static_cast. |
| * cvt.c (ocp_convert): Call mark_rvalue_use. |
| |
| 2018-01-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83956 - wrong dtor error with anonymous union |
| * method.c (walk_field_subobs): Variant members only affect |
| deletedness. |
| (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic. |
| |
| PR c++/84036 - ICE with variadic capture. |
| PR c++/82249 |
| * pt.c (tsubst_pack_expansion): When optimizing a simple |
| substitution, pull a single pack expansion out of its pack. |
| |
| PR c++/82514 - ICE with local class in generic lambda. |
| * pt.c (regenerated_lambda_fn_p): Remove. |
| (enclosing_instantiation_of): Don't use it. |
| (tsubst_function_decl): Call enclosing_instantiation_of. |
| |
| * pt.c (lookup_template_class_1): Add sanity check. |
| * name-lookup.c (do_pushtag): Don't add closures to local_classes. |
| |
| 2018-01-25 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/84031 |
| * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore |
| recursive calls that return ret. |
| (cp_finish_decomp): Ignore unnamed bitfields. |
| |
| 2018-01-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/82249 - wrong mismatched pack length error. |
| * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle |
| unsubstituted function parameter pack. |
| |
| 2018-01-23 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/83921 |
| * decl.c (check_for_uninitialized_const_var): Not static; add |
| bool and tsubst_flags_t parameters; adjust to be used both in |
| constexpr context and not. |
| * constexpr.c (potential_constant_expression_1): Use the above. |
| * cp-tree.h (check_for_uninitialized_const_var): Declare. |
| |
| 2018-01-23 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83947 - ICE with auto declarations. |
| * pt.c (do_auto_deduction): Don't deduce from an auto decl. |
| * decl.c (undeduced_auto_decl): Limit to vars and fns. |
| |
| 2018-01-23 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/83974 |
| * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout |
| for pointer to member function types. |
| |
| 2018-01-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR sanitizer/83987 |
| * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of |
| DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node. |
| |
| 2018-01-23 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/83988 |
| * pt.c (tsubst_baselink): Remove optype assert. |
| * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE. |
| |
| 2018-01-23 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83958 |
| * decl.c (cp_finish_decomp): Diagnose if reference structure binding |
| refers to incomplete type. |
| |
| 2018-01-23 Nathan Sidwell <nathan@acm.org> |
| |
| Deprecate ARM-era for scope handling |
| * decl.c (poplevel): Flag_new_for_scope is a boolean-like. |
| (cxx_init_decl_processing): Deprecate flag_new_for_scope being |
| cleared. |
| * name-lookup.c (check_for_out_of_scope_variable): Deprecate and |
| cleanup handling. |
| * semantics.c (begin_for_scope): Flag_new_for_scope is |
| boolean-like. |
| (finish_for_stmt, begin_range_for_stmt): Likewise. |
| |
| 2018-01-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83720 |
| * decl2.c (determine_visibility): Fix template_decl handling |
| instead of blocking it. |
| |
| PR c++/83720 - ICE with lambda and LTO. |
| * decl2.c (determine_visibility): Clear template_decl for |
| function-scope decls. Propagate anonymous linkage from containing |
| function. |
| |
| 2018-01-22 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/81933 |
| * typeck2.c (split_nonconstant_init_1): Return false if we didn't |
| split out anything. |
| |
| 2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| PR c++/83895 |
| * decl.c (grokdeclarator): Don't diagnose extra parens |
| on typedefs. |
| |
| 2018-01-19 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/81167 |
| * call.c (joust): Use TREE_TYPE (source) if source is |
| a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn). |
| |
| PR c++/83919 |
| * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers |
| for direct enum init. |
| * decl.c (reshape_init): Likewise. |
| |
| 2018-01-19 Marek Polacek <polacek@redhat.com> |
| |
| * constexpr.c (fold_simple): Simplify. |
| |
| 2018-01-18 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83714 |
| * search.c (any_dependent_bases_p): Handle null TREE_BINFO. |
| * pt.c (instantiation_dependent_scope_ref_p): True if |
| any_dependent_bases_p. |
| |
| 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P |
| vs DECL_NONTRIVIALLY_INITIALIZED_P). |
| |
| 2018-01-18 Jason Merrill <jason@redhat.com> |
| |
| PR c++/82461 - constexpr list-initialized member |
| * constexpr.c (potential_constant_expression_1): Check |
| TARGET_EXPR_DIRECT_INIT_P. |
| |
| 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/81013 |
| * decl.c (xref_basetypes): Early return upon error about derived |
| union. |
| |
| 2018-01-18 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/83160 |
| * cp-tree.h (mark_use): Declare. |
| * expr.c (mark_use): Make extern. |
| * call.c (direct_reference_binding): Set inner conv's |
| rvaluedness_matches_p, if it is an identity. |
| (convert_like_real): Mark lvalue or rvalue use for identity as |
| rvaledness_matches_p demands. |
| |
| 2018-01-18 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83824 |
| * parser.c (attr_chainon): New function. |
| (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq, |
| cp_parser_namespace_definition, cp_parser_init_declarator, |
| cp_parser_type_specifier_seq, cp_parser_parameter_declaration, |
| cp_parser_gnu_attributes_opt): Use it. |
| (cp_parser_member_declaration, cp_parser_objc_class_ivars, |
| cp_parser_objc_struct_declaration): Likewise. Don't reset |
| prefix_attributes if attributes is error_mark_node. |
| |
| 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/78344 |
| * decl.c (grokdeclarator): Do not append the error_mark_node |
| due to an erroneous optional attribute-specifier-seq. |
| |
| 2018-01-17 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83897 |
| * cp-gimplify.c (cp_maybe_instrument_return): Handle |
| CLEANUP_POINT_EXPR. |
| |
| 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/81054 |
| * constexpr.c (ensure_literal_type_for_constexpr_object): Return |
| error_mark_node when we give an error. |
| * decl.c (cp_finish_decl): Use the latter. |
| |
| 2018-01-17 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/83287 |
| * init.c (build_raw_new_expr): Scan list for lookups to keep. |
| |
| 2018-01-17 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/83814 |
| * expr.c (fold_for_warn): Move from c-common.c, reducing to just |
| the C++ part. If processing a template, call |
| fold_non_dependent_expr rather than fully folding. |
| |
| 2018-01-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/81067 - redundant NULL warning. |
| * call.c (convert_like_real): Restore null_node handling. |
| |
| 2018-01-17 Jason Merrill <jason@redhat.com> |
| |
| PR c++/81843 - ICE with variadic member template. |
| PR c++/72801 |
| * pt.c (unify_pack_expansion): Don't try to deduce enclosing |
| template args. |
| |
| 2018-01-17 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/83799 |
| * pt.c (type_dependent_expression_p): Strip any location wrapper |
| before testing tree codes. |
| (selftest::test_type_dependent_expression_p): New function. |
| (selftest::cp_pt_c_tests): Call it. |
| |
| 2018-01-17 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/83739 |
| * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if |
| this not a final instantiation. |
| |
| 2018-01-16 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83714 - ICE checking return in template. |
| * typeck.c (check_return_expr): Call build_non_dependent_expr. |
| |
| 2018-01-16 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83817 |
| * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function |
| is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P |
| instead of CALL_FROM_THUNK_P. |
| |
| PR c++/83825 |
| * name-lookup.c (member_vec_dedup): Return early if len is 0. |
| (resort_type_member_vec, set_class_bindings, |
| insert_late_enum_def_bindings): Use vec qsort method instead of |
| calling qsort directly. |
| |
| 2018-01-15 Martin Sebor <msebor@redhat.com> |
| |
| PR c++/83588 |
| * class.c (find_flexarrays): Make a record of multiple flexible array |
| members. |
| |
| 2018-01-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/83186 - ICE with static_cast of list-initialized temporary. |
| * typeck.c (build_static_cast): Use build_non_dependent_expr. |
| |
| 2018-01-12 Nathan Sidwell <nathan@acm.org> |
| |
| * cp-tree.h (mark_rvalue_use): Add parm name. |
| * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to |
| mark_rvalue_use. |
| * call.c (convert_like_real): Fix formatting. |
| |
| 2018-01-11 Jason Merrill <jason@redhat.com> |
| |
| PR c++/82728 - wrong -Wunused-but-set-variable |
| PR c++/82799 |
| PR c++/83690 |
| * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use. |
| * decl.c (case_conversion): Likewise. |
| * semantics.c (finish_static_assert): Call |
| perform_implicit_conversion_flags. |
| |
| 2018-01-11 Nathan Sidwell <nathan@acm.org> |
| |
| * method.c (enum mangling_flags): Delete long-dead enum. |
| |
| 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * parser.c (cp_parser_std_attribute_spec): When |
| token_pair::require_open / require_close return false simply |
| return error_mark_node, avoid duplicate cp_parser_error about |
| expected '(' / ')', respectively. |
| |
| 2018-01-10 David Malcolm <dmalcolm@redhat.com> |
| |
| PR c++/43486 |
| * call.c (null_ptr_cst_p): Strip location wrappers when |
| converting from '0' to a pointer type in C++11 onwards. |
| (conversion_null_warnings): Replace comparison with null_node with |
| call to null_node_p. |
| (build_over_call): Likewise. |
| * cp-gimplify.c (cp_fold): Remove the early bailout when |
| processing_template_decl. |
| * cp-lang.c (selftest::run_cp_tests): Call |
| selftest::cp_pt_c_tests and selftest::cp_tree_c_tests. |
| * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method. |
| (selftest::run_cp_tests): Move decl to bottom of file. |
| (null_node_p): New inline function. |
| (selftest::cp_pt_c_tests): New decl. |
| (selftest::cp_tree_c_tests): New decl. |
| * cvt.c (build_expr_type_conversion): Replace comparison with |
| null_node with call to null_node_p. |
| * error.c (args_to_string): Likewise. |
| * except.c (build_throw): Likewise. |
| * mangle.c (write_expression): Skip location wrapper nodes. |
| * parser.c (literal_integer_zerop): New function. |
| (cp_parser_postfix_expression): Call maybe_add_location_wrapper on |
| the result for RID_TYPEID. Pass true for new "wrap_locations_p" |
| param of cp_parser_parenthesized_expression_list. When calling |
| warn_for_memset, replace integer_zerop calls with |
| literal_integer_zerop, eliminating the double logical negation |
| cast to bool. Eliminate the special-casing for CONST_DECL in |
| favor of the fold_for_warn within warn_for_memset. |
| (cp_parser_parenthesized_expression_list): Add "wrap_locations_p" |
| param, defaulting to false. Convert "expr" to a cp_expr, and call |
| maybe_add_location_wrapper on it when wrap_locations_p is true. |
| (cp_parser_unary_expression): Call maybe_add_location_wrapper on |
| the result for RID_ALIGNOF and RID_SIZEOF. |
| (cp_parser_builtin_offsetof): Likewise. |
| * pt.c: Include "selftest.h". |
| (tsubst_copy): Handle location wrappers. |
| (tsubst_copy_and_build): Likewise. |
| (build_non_dependent_expr): Likewise. |
| (selftest::test_build_non_dependent_expr): New function. |
| (selftest::cp_pt_c_tests): New function. |
| * tree.c: Include "selftest.h". |
| (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes. |
| (selftest::test_lvalue_kind): New function. |
| (selftest::cp_tree_c_tests): New function. |
| * typeck.c (string_conv_p): Strip any location wrapper from "exp". |
| (cp_build_binary_op): Replace comparison with null_node with call |
| to null_node_p. |
| (build_address): Use location of operand when building address |
| expression. |
| |
| 2018-01-10 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/82541 |
| * call.c (build_conditional_expr_1): Check complain before warning. |
| * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress |
| -Wduplicated-branches. |
| |
| 2018-01-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/81327 |
| * call.c (maybe_warn_class_memaccess): Add forward declaration. |
| Change last argument from tree * to const vec<tree, va_gc> *, adjust |
| args uses and check number of operands too. Don't strip away any |
| nops. Use maybe_constant_value when looking for INTEGER_CST args. |
| Deal with src argument not having pointer type. Check |
| tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless |
| test. |
| (build_over_call): Call maybe_warn_class_memaccess here on the |
| original arguments. |
| (build_cxx_call): Rather than here on converted arguments. |
| |
| 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/81055 |
| * init.c (build_vec_init): Avoid building an INIT_EXPR with |
| error_mark_node as second argument. |
| |
| 2018-01-09 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83734 |
| * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs |
| in STATEMENT_LIST. Remove unneeded assert. |
| |
| 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org> |
| Alan Hayward <alan.hayward@arm.com> |
| David Sherwood <david.sherwood@arm.com> |
| |
| * constexpr.c (cxx_eval_array_reference): Handle polynomial |
| VECTOR_CST_NELTS. |
| (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS. |
| * call.c (build_conditional_expr_1): Likewise. |
| * decl.c (cp_finish_decomp): Likewise. |
| * mangle.c (write_type): Likewise. |
| * typeck.c (structural_comptypes): Likewise. |
| (cp_build_binary_op): Likewise. |
| * typeck2.c (process_init_constructor_array): Likewise. |
| |
| 2018-01-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83555 |
| * typeck.c (build_static_cast_1): For static casts to reference types, |
| call build_base_path with flag_delete_null_pointer_checks as nonnull |
| instead of always false. When -fsanitize=null, call |
| ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST. |
| * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL |
| call if the first argument is INTEGER_CST with REFERENCE_TYPE. |
| |
| 2018-01-03 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/83667 |
| * method.c (make_alias_for): Copy DECL_CONTEXT. |
| |
| 2018-01-03 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/83592 |
| * decl.c (grokdeclarator): Don't warn about MVP in typename context. |
| |
| 2018-01-03 Jakub Jelinek <jakub@redhat.com> |
| |
| PR preprocessor/83602 |
| * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def |
| for builtin macros. |
| |
| PR c++/83634 |
| * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to |
| error_mark_node, return error_mark_node. |
| |
| Update copyright years. |
| |
| 2018-01-02 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/83556 |
| * tree.c (replace_placeholders_r): Pass NULL as last argument to |
| cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and |
| non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees |
| to false and return. |
| (replace_placeholders): Pass NULL instead of &pset as last argument |
| to cp_walk_tree. |
| |
| 2018-01-02 Nathan Sidwell <nathan@acm.org> |
| |
| * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local |
| lval var. |
| |
| Copyright (C) 2018 Free Software Foundation, Inc. |
| |
| Copying and distribution of this file, with or without modification, |
| are permitted in any medium without royalty provided the copyright |
| notice and this notice are preserved. |