PR c++/85815 - reference to member of enclosing template.
[official-gcc.git] / gcc / cp / ChangeLog
blob58fc696c571cf1b2984e524eb59416d065c9ac9c
1 2018-05-25  Jason Merrill  <jason@redhat.com>
3         PR c++/85815 - reference to member of enclosing template.
4         * search.c (lookup_base): Use currently_open_class.
5         (lookup_member): Use it regardless of -fconcepts.
6         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
8         CWG 616, 1213 - value category of subobject references.
9         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
11 2018-05-24  Jason Merrill  <jason@redhat.com>
13         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
14         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
15         generic lambda.
17 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
19         Pedwarn on a non-standard position of a C++ attribute.
20         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
21         after the namespace name.
23 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
25         * cp-tree.h (INDIRECT_TYPE_P): New.
26         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
27         joust): Use it instead of POINTER_TYPE_P.
28         * class.c (update_vtable_entry_for_fn, find_flexarrays,
29         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
30         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
31         * cxx_eval_increment_expression, potential_constant_expression_1):
32         Likewise.
33         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
34         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
35         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
36         cp_ubsan_maybe_instrument_downcast): Likewise.
37         * cvt.c (cp_convert_to_pointer, ocp_convert,
38         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
39         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
40         pp_cxx_offsetof_expression_1): Likewise.
41         * decl.c (grokparms, static_fn_type): Likewise.
42         * decl2.c (grokbitfield): Likewise.
43         * error.c (dump_expr): Likewise.
44         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
45         * init.c (warn_placement_new_too_small): Likewise.
46         * lambda.c (build_capture_proxy, add_capture): Likewise.
47         * parser.c (cp_parser_omp_for_loop): Likewise.
48         * pt.c (convert_nontype_argument, fn_type_unification,
49         uses_deducible_template_parms, check_cv_quals_for_unify,
50         dependent_type_p_r): Likewise.
51         * search.c (check_final_overrider): Likewise.
52         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
53         finish_omp_for): Likewise.
54         * tree.c (cp_build_qualified_type_real): Likewise.
55         * typeck.c (build_class_member_access_expr,
56         finish_class_member_access_expr, build_x_indirect_ref,
57         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
58         Likewise.
60 2018-05-24  Jason Merrill  <jason@redhat.com>
62         PR c++/85864 - literal template and default template arg.
63         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
65 2018-05-24  Marek Polacek  <polacek@redhat.com>
67         PR c++/85847
68         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
69         variable for its result.  Fix a condition.
70         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
72 2018-05-23  Jason Merrill  <jason@redhat.com>
74         Fix cast to rvalue reference from prvalue.
75         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
76         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
77         non-class type.  Handle xvalue argument.
78         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
79         rvalue reference.
80         * semantics.c (finish_compound_literal): Do direct-initialization,
81         not cast, to initialize a reference.
83         CWG 616, 1213 - value category of subobject references.
84         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
85         an xvalue.
86         * typeck2.c (build_m_component_ref): Likewise.
87         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
88         distinction between temporary and xvalue.
90 2018-05-23  Marek Polacek  <polacek@redhat.com>
92         Implement P0614R1, Range-based for statements with initializer.
93         * parser.c (cp_parser_range_based_for_with_init_p): New.
94         (cp_parser_init_statement): Use it.  Parse the optional init-statement
95         for a range-based for loop.
96         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
98 2018-05-22  Jason Merrill  <jason@redhat.com>
100         PR c++/81420 - not extending temporary lifetime.
101         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
102         * class.c (build_base_path): Avoid redundant move of an rvalue.
104         PR c++/85866 - error with .* in default template arg.
105         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
107 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
109         * parser.c (cp_parser_parameter_declaration_list): Remove
110         bool* parameter.
111         (cp_parser_parameter_declaration_clause): Adjust.
112         (cp_parser_cache_defarg): Likewise.
114 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
116         PR c++/84588
117         * parser.c (cp_parser_maybe_commit_to_declaration,
118         cp_parser_check_condition_declarator): New.
119         (cp_parser_simple_declaration): Use the first above.
120         (cp_parser_condition): Use both the above; enforce
121         [stmt.stmt]/2 about the declarator not specifying
122         a function or an array; improve error-recovery.
124 2018-05-20  Jason Merrill  <jason@redhat.com>
126         PR libstdc++/85843 - warning in logic_error copy constructor.
127         * class.c (type_has_user_nondefault_constructor): Check for a
128         user-provided ctor, not user-declared.
130 2018-05-19  Jason Merrill  <jason@redhat.com>
132         * pt.c (tsubst_pack_expansion): Sorry rather than abort
133         on __integer_pack as subexpression of pattern.
135 2018-05-18  Jason Merrill  <jason@redhat.com>
137         PR c++/58407 - deprecated implicit copy ops.
138         * call.c (build_over_call): Warn about deprecated trivial fns.
139         * class.c (classtype_has_user_copy_or_dtor): New.
140         (type_build_ctor_call): Check TREE_DEPRECATED.
141         (type_build_dtor_call): Likewise.
142         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
143         Add checks.  Return bool.  Handle -Wdeprecated-copy.
144         (mark_used): Use it.
145         * decl.c (grokdeclarator): Remove redundant checks.
146         * typeck2.c (build_functional_cast): Likewise.
147         * method.c (lazily_declare_fn): Mark deprecated copy ops.
148         * init.c (build_aggr_init): Only set TREE_USED if there are
149         side-effects.
151 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
153         PR c++/85782
154         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
155         OACC_LOOPs.
157 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
159         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
160         (potential_constant_expression_1): Likewise.
162 2018-05-16  Marek Polacek  <polacek@redhat.com>
164         PR c++/85363
165         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
166         * tree.c (bot_manip): Call set_flags_from_callee for
167         AGGR_INIT_EXPRs too.
169 2018-05-15  Jason Merrill  <jason@redhat.com>
171         * cp-tree.h (cp_expr): Remove copy constructor.
172         * mangle.c (struct releasing_vec): Declare copy constructor.
174         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
176         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
177         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
178         is a throw-expression.
180 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
182         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
183         (FOR_EACH_CLONE): Update.
184         * decl.c (grokdeclarator): Use it.
185         * decl2.c (vague_linkage_p): Likewise.
186         * mangle.c (mangle_decl): Likewise.
187         * method.c (lazily_declare_fn): Likewise.
188         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
189         * repo.c (repo_emit_p): Likewise.
190         * tree.c (decl_linkage): Likewise.
192 2018-05-14  Jason Merrill  <jason@redhat.com>
194         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
195         * tree.c (build_cp_fntype_variant): New.
196         (build_ref_qualified_type, build_exception_variant)
197         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
198         (cxx_type_hash_eq, cp_check_qualified_type): Check
199         TYPE_HAS_LATE_RETURN_TYPE.
200         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
201         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
202         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
203         (adjust_clone_args): Likewise.
204         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
205         build_cp_fntype_variant.
206         (grokdeclarator): Pass late_return_type_p to grokfndecl.
207         (check_function_type): Use cxx_copy_lang_qualifiers.
208         (static_fn_type): Use cxx_copy_lang_qualifiers.
209         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
210         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
211         (change_return_type): Use cxx_copy_lang_qualifiers.
212         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
213         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
214         return type on the declarator like a normal trailing return type.
215         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
216         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
217         * typeck.c (merge_types): Use build_cp_fntype_variant.
219 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
221         * cp-tree.h (TYPE_REF_P): New.
222         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
223         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
224         direct_reference_binding, reference_binding, implicit_conversion,
225         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
226         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
227         build_over_call, perform_implicit_conversion_flags,
228         extend_ref_init_temps, type_has_extended_temps): Use it.
229         * class.c (one_inheriting_sig, check_field_decls,
230         check_bases_and_members, find_flexarrays, finish_struct,
231         fixed_type_or_null): Likewise.
232         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
233         non_const_var_error, cxx_eval_constant_expression,
234         potential_constant_expression_1): Likewise.
235         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
236         cp_genericize_r, cxx_omp_privatize_by_reference,
237         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
238         cp_fold_maybe_rvalue): Likewise.
239         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
240         * cvt.c (build_up_reference, convert_to_reference,
241         convert_from_reference, convert_to_void, noexcept_conv_p,
242         fnptr_conv_p): Likewise.
243         * decl.c (poplevel, check_for_uninitialized_const_var,
244         check_initializer, initialize_local_var, cp_finish_decl,
245         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
246         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
247         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
248         decl_maybe_constant_var_p): Likewise.
249         * error.c (dump_type_prefix, dump_expr): Likewise.
250         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
251         is_admissible_throw_operand_or_catch_parameter): Likewise.
252         * expr.c (mark_use): Likewise.
253         * init.c (build_zero_init_1, build_value_init_noctor,
254         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
255         build_new, build_delete): Likewise.
256         * lambda.c (build_lambda_object): Likewise.
257         * mangle.c (write_expression, write_template_arg): Likewise.
258         * method.c (forward_parm, do_build_copy_constructor,
259         do_build_copy_assign, build_stub_object, constructible_expr,
260         walk_field_subobs): Likewise.
261         * parser.c (cp_parser_omp_for_loop_init,
262         cp_parser_omp_declare_reduction_exprs,
263         cp_parser_omp_declare_reduction): Likewise.
264         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
265         convert_template_argument, tsubst_pack_expansion,
266         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
267         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
268         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
269         value_dependent_expression_p, build_deduction_guide): Likewise.
270         * semantics.c (finish_handler_parms, finish_non_static_data_member,
271         finish_compound_literal, omp_privatize_field,
272         handle_omp_array_sections_1, handle_omp_array_sections,
273         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
274         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
275         finish_omp_clauses, finish_decltype_type, capture_decltype,
276         finish_builtin_launder): Likewise.
277         * tree.c (lvalue_kind, cp_build_reference_type, move,
278         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
279         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
280         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
281         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
282         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
283         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
284         convert_for_initialization,
285         maybe_warn_about_returning_address_of_local, check_return_expr,
286         cp_type_quals, casts_away_constness, non_reference): Likewise.
287         * typeck2.c (cxx_readonly_error, store_init_value,
288         process_init_constructor_record, build_x_arrow, build_functional_cast,
289         add_exception_specifier): Likewise.
291 2018-05-14  Jason Merrill  <jason@redhat.com>
293         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
294         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
296 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
298         PR c/85696
299         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
300         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
301         cxx_omp_predetermined_sharing_1.  Rename old function to ...
302         (cxx_omp_predetermined_sharing_1): ... this.
303         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
304         instead of cxx_omp_predetermined_sharing.
306 2018-05-10  Jason Merrill  <jason@redhat.com>
308         * decl.c (cp_finish_decl): Don't instantiate auto variable.
309         (check_static_variable_definition): Allow auto.
310         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
312         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
313         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
315         Core issue 2310 - conversion to base of incomplete type.
316         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
318         CWG 2267 - list-initialization of reference temporary
319         * call.c (reference_binding): List-initializing a reference
320         temporary is copy-list-initialization.
322         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
324         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
325         instantiation in template context.
327         * class.c (vbase_has_user_provided_move_assign): Use
328         user_provided_p.
330         * lambda.c (lambda_expr_this_capture): Improve logic.
332         * decl.c (make_typename_type): s/parameters/arguments/.
333         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
334         * pt.c (make_pack_expansion): Correct error message.
336 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
338         PR c++/85662
339         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
340         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
341         fold_convert.
343 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
345         PR c++/85400
346         * decl2.c (adjust_var_decl_tls_model): New static function.
347         (comdat_linkage): Call it on a variable.
348         (maybe_make_one_only): Likewise.
350 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
352         PR c++/85713
353         Revert:
354         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
356         PR c++/84588
357         * parser.c (cp_parser_parameter_declaration_list): When the
358         entire parameter-declaration-list is erroneous maybe call
359         abort_fully_implicit_template.
361 2018-05-08  Jason Merrill  <jason@redhat.com>
363         PR c++/85706 - class deduction under decltype
364         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
365         *walk_subtrees whether or not we walked into the operand.
366         (type_uses_auto): Only look at deduced contexts.
368 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
370         PR c++/84588
371         * parser.c (cp_parser_parameter_declaration_list): When the
372         entire parameter-declaration-list is erroneous maybe call
373         abort_fully_implicit_template.
375 2018-05-08  Marek Polacek  <polacek@redhat.com>
377         PR c++/85695
378         * semantics.c (finish_if_stmt_cond): See through typedefs.
380 2018-05-07  Jason Merrill  <jason@redhat.com>
382         PR c++/85646 - lambda visibility.
383         * decl2.c (determine_visibility): Don't mess with template arguments
384         from the containing scope.
385         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
386         thunk.
388 2018-05-07  Nathan Sidwell  <nathan@acm.org>
390         Remove fno-for-scope
391         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
392         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
393         (SET_DECL_SHADOWED_FOR_VAR): Delete.
394         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
395         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
396         Don't declare.
397         * name-lookup.h (struct cp_binding_level): Remove
398         dead_vars_from_for field.
399         * cp-lang.c (cp_init_ts): Delete.
400         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
401         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
402         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
403         (init_shadowed_var_for_decl): Delete.
404         * decl.c (poplevel): Remove shadowed for var handling.
405         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
406         * name-lookup.c (find_local_binding): Remove shadowed for var
407         handling.
408         (check_local_shadow): Likewise.
409         (check_for_out_of_scope_variable): Delete.
410         * parser.c (cp_parser_primary_expression): Remove shadowed for var
411         handling.
412         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
413         * semantics.c (begin_for_scope): Always have a scope.
414         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
415         (begin_range_for_stmt, finish_id_expression): Likewise.
417 2018-05-07  Jason Merrill  <jason@redhat.com>
419         PR c++/85618 - ICE with initialized VLA.
420         * tree.c (vla_type_p): New.
421         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
422         rather than array_of_runtime_bound_p.
424 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
426         * cvt.c (ocp_convert): Early handle the special case of a
427         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
429 2018-05-03  Jason Merrill  <jason@redhat.com>
431         PR c++/85600 - virtual delete failure.
432         * init.c (build_delete): Always save_expr when deleting.
434 2018-05-03  Nathan Sidwell  <nathan@acm.org>
436         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
437         * name-lookup.c (do_pushdecl): Likewise.
439 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
440             Jason Merrill  <jason@redhat.com>
442         PR c++/68374
443         * name-lookup.c (check_local_shadow): Don't handle static old
444         declarations in the block handling locals shadowing locals.
446 2018-05-01  Jason Merrill  <jason@redhat.com>
448         PR c++/85587 - error with scoped enum in template.
449         * semantics.c (finish_qualified_id_expr): Don't return an
450         unqualified IDENTIFIER_NODE.
452 2018-04-30  Jason Merrill  <jason@redhat.com>
454         PR c++/85580 - extern "C" and local variables
455         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
457         PR c++/84701 - unsigned typeof.
458         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
459         of long/short/signed/unsigned.
461         PR c++/85305 - pack in lambda init-capture.
462         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
463         check_for_bare_parameter_packs in a subexpression.
464         (cp_parser_lambda_introducer): Use it.
466         PR c++/61982 - dead stores to destroyed objects.
467         * call.c (build_trivial_dtor_call): New, assigns a clobber.
468         (build_over_call, build_special_member_call): Use it.
469         * cp-tree.h: Declare it.
470         * init.c (build_delete): Remove trivial path.
472         * init.c (build_dtor_call): Use build_special_member_call.
473         (build_delete): Remove redundant uses of save_addr.
475         * decl.c (build_clobber_this): Use build_clobber.
477 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
479         PR c++/85553
480         * init.c (build_zero_init_1): For zero initialization of
481         NULLPTR_TYPE_P type use build_int_cst directly.
483 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
485         PR c++/85515
486         * name-lookup.c (consider_binding_level): Skip compiler-generated
487         variables.
488         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
489         nested if statements into a series of rejection tests.  Reject
490         lambda-ignored entities as suggestions.
492 2018-04-27  Jason Merrill  <jason@redhat.com>
494         * cvt.c (cp_fold_convert): Use convert_ptrmem.
495         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
497 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
499         PR c++/84691
500         * decl.c (grokdeclarator): Clear friendp upon definition in local
501         class definition error.
503 2018-04-27  Jason Merrill  <jason@redhat.com>
505         PR c++/85545 - ICE with noexcept PMF conversion.
506         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
507         build_ptrmemfunc.
508         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
509         adjustment.
510         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
512 2018-04-27  Nathan Sidwell  <nathan@acm.org>
514         * typeck.c (convert_ptrmem): Move local var decls to initialization.
516         * cp-tree.h (TEMPLATE_INFO): Fix comments.
517         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
518         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
519         (dump, print_other_binding_stacks): Remove declarations.
520         * name-lookup.c (print_other_binding_stack): Make static.
521         * pt.c (build_template_decl): Make static.
523 2018-04-26  Jason Merrill  <jason@redhat.com>
525         PR c++/85545 - ICE with noexcept PMF conversion.
526         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
528 2018-04-25  Nathan Sidwell  <nathan@acm.org>
530         PR c++/85437
531         PR c++/49171
532         * cp-tree.h (REINTERPRET_CAST_P): New.
533         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
534         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
535         for non-trivial PTRMEM_CST cases.
536         * typeck.c (build_nop_reinterpret): New.
537         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
538         NOP_EXPRs returned by cp_convert.
540 2018-04-23  Jason Merrill  <jason@redhat.com>
542         PR c++/69560 - wrong alignof(double) on x86.
543         CWG 1879 - Inadequate definition of alignment requirement.
544         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
545         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
546         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
547         (cxx_alignof_expr): Pass it.
548         * parser.c (cp_parser_unary_expression): Pass it.
549         * pt.c (tsubst_copy): Copy it.
550         (tsubst_copy_and_build): Pass it.
551         * decl.c (fold_sizeof_expr): Pass it.
553 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
554             Jason Merrill  <jason@redhat.com>
556         PR c++/85470 - wrong error with static data member.
557         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
558         * typeck2.c (store_init_value): Likewise.
560 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
562         PR c++/85462
563         * cp-tree.h (tinst_level): Remove in_system_header_p member,
564         change refcount member from unsigned char to unsigned short,
565         add refcount_infinity static data member, adjust comments.
566         * pt.c (tinst_level::refcount_infinity): Define.
567         (inc_refcount_use): Remove assert, don't increment if refcount
568         is already refcount_infinity, adjust comment.
569         (dec_refcount_use): Remove assert, don't decrement if refcount
570         is refcount_infinity, adjust comment.
571         (push_tinst_level_loc): Formatting fix.
573 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
575         PR c++/84611
576         * pt.c (lookup_template_class_1): Check pushtag return value for
577         error_mark_node.
579 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
581         PR c++/80290
582         * cp-tree.h (tinst_level::free): Fix whitespace.
584 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
586         PR c++/84630
587         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
588         for error_mark_node.
590 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
592         PR c++/84463
593         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
594         tricks from here to ...
595         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
596         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
598 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
600         PR c++/80290
601         * cp-tree.h (struct tinst_level): Split decl into tldcl and
602         targs.  Add private split_list_p, tree_list_p, and not_list_p
603         inline const predicates; to_list private member function
604         declaration; free public member function declaration; list_p,
605         get_node and maybe_get_node accessors, and refcount data
606         member.  Narrow errors to unsigned short.
607         * error.c (print_instantiation_full_context): Use new
608         accessors.
609         (print_instantiation_partial_context_line): Likewise.  Drop
610         const from tinst_level-typed parameter.
611         * mangle.c (mangle_decl_string): Likewise.
612         * pt.c (freelist): New template class.
613         (tree_list_freelist_head): New var.
614         (tree_list_freelist): New fn, along with specializations.
615         (tinst_level_freelist_head): New var.
616         (pending_template_freelist_head): Likewise.
617         (tinst_level_freelist, pending_template_freelist): New fns.
618         (tinst_level::to_list, tinst_level::free): Define.
619         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
620         (set_refcount_ptr): New template fn.
621         (add_pending_template): Adjust for refcounting, freelists and
622         new accessors.
623         (neglectable_inst_p): Take a NULL d as a non-DECL.
624         (limit_bad_template_recursion): Use new accessors.
625         (push_tinst_level): New overload to create the list.
626         (push_tinst_level_loc): Make it static, split decl into two
627         args, adjust tests and initialization to cope with split
628         lists, use freelist, adjust for refcounting.
629         (push_tinst_level_loc): New wrapper with the old interface.
630         (pop_tinst_level): Adjust for refcounting.
631         (record_last_problematic_instantiation): Likewise.
632         (reopen_tinst_level): Likewise.  Use new accessors.
633         (instantiate_alias_template): Adjust for split list.
634         (fn_type_unification): Likewise.
635         (get_partial_spec_bindings): Likewise.
636         (instantiate_pending_templates): Use new accessors.  Adjust
637         for refcount.  Release pending_template to freelist.
638         (instantiating_current_function_p): Use new accessors.
640 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
642         PR c++/85039
643         * parser.c (cp_parser_builtin_offset): Reject type definitions.
644         * mangle.c (nested_anon_class_index): Avoid crash returning -1
645         if we've seen errors.
647 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
649         PR c++/85385
650         * name-lookup.c (macro_use_before_def::maybe_make): New function,
651         checking that the use is indeed before the definition.
652         (macro_use_before_def::macro_use_before_def): Make private.
653         (macro_use_before_def::~macro_use_before_def): Make private.  Move
654         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
655         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
656         than using new directly.
658 2018-04-12  Jason Merrill  <jason@redhat.com>
660         PR c++/85356 - ICE with pointer to member function.
661         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
662         flag_noexcept_type.  Build the new spec within the function context.
663         * except.c (build_noexcept_spec): Do get constant value in templates
664         if flag_noexcept_type.
665         * decl.c (check_redeclaration_exception_specification): Don't
666         instantiate noexcept on a dependent declaration.
668 2018-04-12  Marek Polacek  <polacek@redhat.com>
670         PR c++/85258
671         * constexpr.c (reduced_constant_expression_p): Return false for null
672         trees.
674 2018-04-11  Marek Polacek  <polacek@redhat.com>
676         PR c++/85032
677         * constexpr.c (potential_constant_expression_1): Consider conversions
678         from classes to literal types potentially constant.
680 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
682         PR c++/70808
683         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
684         the type like TYPE_PTR_OR_PTRMEM_P.
686 2018-04-10  Jason Merrill  <jason@redhat.com>
688         PR debug/65821 - wrong location for main().
689         * call.c (clear_location_r, convert_default_arg): Revert.
690         * tree.c (break_out_target_exprs): Add clear_location parm.
691         (struct bot_data): New.
692         (bot_manip): Clear location if requested.
693         * init.c (get_nsdmi): Pass clear_location.
695 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
697         PR c++/85110
698         * call.c (get_fndecl_argument_location): Make non-static.
699         * cp-tree.h (get_fndecl_argument_location): New decl.
700         * typeck.c (convert_for_assignment): When complaining due to
701         conversions for an argument, show the location of the parameter
702         within the decl.
704 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
706         PR c++/85312 - P0962 cleanup
707         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
708         diagnostics.
710 2018-04-10  Jason Merrill  <jason@redhat.com>
712         PR debug/65821 - wrong location for main().
713         * call.c (clear_location_r): New.
714         (convert_default_arg): Use it.
715         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
717         PR c++/85285 - ICE with flexible array after substitution.
718         * pt.c (instantiate_class_template_1): Check for flexible array in
719         union.
721 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
723         PR c++/85227
724         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
725         issue a pedwarn and defer trying to do bindings.
727 2018-04-09  Jason Merrill  <jason@redhat.com>
729         PR c++/85279 - dump_expr doesn't understand decltype.
730         * error.c (dump_expr): Handle DECLTYPE_TYPE.
732         PR c++/85262 - ICE with redundant qualification on constructor.
733         * call.c (build_new_method_call_1): Move make_args_non_dependent
734         after A::A() handling.
736         PR c++/85277 - ICE with invalid offsetof.
737         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
738         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
740         PR c++/85264 - ICE with excess template-parameter-list.
741         * parser.c (cp_parser_check_template_parameters): Add template_id_p
742         parameter.  Don't allow an extra template header if true.
743         (cp_parser_class_head): Pass template_id_p.
744         (cp_parser_elaborated_type_specifier): Likewise.
745         (cp_parser_alias_declaration): Likewise.
746         (cp_parser_check_declarator_template_parameters): Likewise.
748 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
750         PR c++/85194
751         * parser.c (cp_parser_simple_declaration): For structured bindings,
752         if *maybe_range_for_decl is NULL after parsing it, set it to
753         error_mark_node.
755 2018-04-09  Jason Merrill  <jason@redhat.com>
757         PR c++/85256 - ICE capturing pointer to VLA.
758         * lambda.c (add_capture): Distinguish between variable-size and
759         variably-modified types.
761 2018-04-06  Jason Merrill  <jason@redhat.com>
763         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
764         * pt.c (extract_locals_r): Remember local typedefs.
766 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
768         PR c++/84269
769         * name-lookup.c (struct std_name_hint): Move out of
770         get_std_name_hint; add field "min_dialect".
771         (get_std_name_hint): Add min_dialect values to all initializers.
772         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
773         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
774         <shared_mutex>, <string_view>, <thread>, and <variant>.
775         Add fstream, ifstream, and ofstream to <fstream>.
776         Add istringstream, ostringstream, and stringstream to <sstream>.
777         Add basic_string to <string>.
778         Add tuple_element and tuple_size to <tuple>.
779         Add declval to <utility>.
780         Fix ordering of <queue> and <tuple>.
781         Return a std_name_hint, rather than a const char *.
782         (get_cxx_dialect_name): New function.
783         (maybe_suggest_missing_std_header): Detect names that aren't yet
784         available in the current dialect, and instead of suggesting a
785         missing #include, warn about the dialect.
787 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
789         PR c++/85210
790         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
791         errorcount is set if tsubst doesn't return a VAR_DECL.
793 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
795         PR c++/85021
796         * name-lookup.c (using_directives_contain_std_p): New function.
797         (has_using_namespace_std_directive_p): New function.
798         (suggest_alternatives_for): Simplify if/else logic using early
799         returns.  If no candidates were found, and there's a
800         "using namespace std;" directive, call
801         maybe_suggest_missing_std_header.
802         (maybe_suggest_missing_header): Split later part of the function
803         into..
804         (maybe_suggest_missing_std_header): New.
806 2018-04-06  Jason Merrill  <jason@redhat.com>
808         PR c++/85242 - ICE with class definition in template parm.
809         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
810         processing_template_parmlist.
812         PR c++/85240 - LTO ICE with using of undeduced auto fn.
813         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
815 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
817         PR c++/85209
818         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
819         is not prev, if prev == decl.
821         PR c++/85208
822         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
823         maybe_apply_pragma_weak here...
824         (cp_maybe_mangle_decomp): ... but call it here instead.
826 2018-04-05  Jason Merrill  <jason@redhat.com>
828         PR c++/85136 - ICE with designated init in template.
829         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
830         designated initializer.
831         (check_array_designated_initializer): Update ce->index with the
832         constant value.
834         PR c++/83808 - ICE with VLA initialization.
835         * typeck2.c (process_init_constructor_array): Don't require a VLA
836         initializer to have VLA type.
838 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
840         PR c++/80956
841         * call.c (convert_like_real): Fail gracefully for a broken
842         std::initializer_list, missing a definition.
844         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
846 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
848         PR c++/84792
849         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
850         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
852 2018-04-05  Jason Merrill  <jason@redhat.com>
854         PR c++/82152 - ICE with class deduction and inherited ctor.
855         * pt.c (do_class_deduction): Ignore inherited ctors.
857         PR c++/84665 - ICE with array of empty class.
858         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
860         PR c++/85228 - ICE with lambda in enumerator in template.
861         * pt.c (bt_instantiate_type_proc): Don't assume
862         CLASSTYPE_TEMPLATE_INFO is non-null.
864 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
866         Implement P0969
867         * decl.c (find_decomp_class_base): Check accessibility instead
868         of declared access, adjust diagnostic.
870 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
872         Implement P0961
873         * decl.c (get_tuple_decomp_init): Check the templatedness
874         of a member get.
876 2018-04-05  Jason Merrill  <jason@redhat.com>
878         PR c++/85200 - ICE with constexpr if in generic lambda.
879         * pt.c (extract_locals_r): Don't record the local specs of variables
880         declared within the pattern.
882 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
884         PR c++/84979
885         * pt.c (check_auto_in_tmpl_args): New.
886         (tsubst_qualified_id): Use it to reject template args
887         referencing auto for non-type templates.
888         * parser.c (cp_parser_template_id): Likewise.
889         * cp-tree.h (check_auto_in_tmpl_args): Declare.
890         * typeck2.c (build_functional_cast): Report correct location
891         for invalid use of auto.
893 2018-04-04  Jason Merrill  <jason@redhat.com>
895         PR c++/85215 - ICE with copy-init from conversion.
896         * call.c (merge_conversion_sequences): Fix type of direct binding
897         sequence.
899         PR c++/84938 - ICE with division by ~-1.
900         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
902         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
903         * parser.c (cp_parser_mem_initializer_list): Call
904         check_for_bare_parameter_packs.
906 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
908         PR inline-asm/85172
909         * constexpr.c (cxx_eval_builtin_function_call): For calls to
910         builtin_valid_in_constant_expr_p functions, don't call
911         cxx_eval_constant_expression if argument is not
912         potential_constant_expression.
914         PR c++/85146
915         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
916         argument.
917         * semantics.c (calculate_bases): Add complain argument.  Use
918         complete_type_or_maybe_complain instead of just complete_type and
919         return an empty vector if it fails.  Move make_tree_vector () call
920         after early return.  Formatting fixes.
921         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
922         end.
923         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
924         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
925         calculate_direct_bases callers, formatting fixes.
927 2018-04-04  Jason Merrill  <jason@redhat.com>
929         PR c++/85006 - -fconcepts ICE with A<auto...> return type
930         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
932         PR c++/85200 - ICE with constexpr if in generic lambda.
933         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
935         PR c++/84221 - bogus -Wunused with attribute and template.
936         * decl2.c (is_late_template_attribute): Handle unused and used
937         normally on non-TYPE_DECL.
939         PR c++/85135 - ICE with omitted template arguments.
940         * decl.c (grokdeclarator): Catch deduced class type in trailing
941         return type.
943         PR c++/85133 - ICE with missing concept initializer.
944         * decl.c (cp_finish_decl): If a concept initializer is missing, use
945         true.
947         PR c++/85118 - wrong error with generic lambda and std::bind.
948         * call.c (add_template_conv_candidate): Disable if there are any
949         call operators.
951         PR c++/85141 - ICE with compound assignment and static member fn.
952         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
953         compound assignment.
955         PR c++/85148 - ICE with 'this' in array NSDMI.
956         * tree.c (replace_placeholders_r): Use handled_component_p.
958 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
960         PR c++/65923
961         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
962         * parser.c (cp_parser_unqualified_id): ..not here.
964 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
966         PR c++/84943
967         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
968         used.
969         * decl2.c (mark_used): Return without effects if tf_conv.
971 2018-04-03  Jason Merrill  <jason@redhat.com>
973         PR c++/85092 - C++17 ICE with unused list constructor.
974         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
975         from a TARGET_EXPR.
977         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
978         * constexpr.c (cxx_eval_builtin_function_call): Only defer
979         __builtin_constant_p if ctx->quiet.
981 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
983         PR c++/84768
984         * pt.c (rewrite_template_parm): If the first argument is
985         error_mark_node return it immediately.
986         (build_deduction_guide): Check the return value of the
987         latter for error_mark_node.
988         (do_class_deduction): Check the return value of the latter.
990 2018-04-03  Jason Merrill  <jason@redhat.com>
992         * semantics.c (finish_if_stmt_cond): Use
993         instantiation_dependent_expression_p.
995         PR c++/85149 - generic lambda and constexpr if.
996         * pt.c (build_extra_args, add_extra_args): Split from
997         tsubst_pack_expansion.
998         (tsubst_expr) [IF_STMT]: Use them.
999         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
1001         * typeck.c (merge_types): Limit matching attribute shortcut to
1002         the default case.
1004 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
1006         PR c++/85147
1007         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
1009         PR c++/85140
1010         * name-lookup.c (handle_namespace_attrs): Return early if attributes
1011         is error_mark_node.
1013         PR c++/85134
1014         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
1015         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
1016         instead for static data members clear init and set DECL_EXTERNAL.
1018 2018-04-02  Jason Merrill  <jason@redhat.com>
1020         PR c++/64095 - auto... parameter pack.
1021         * parser.c (cp_parser_parameter_declaration): Handle turning autos
1022         into packs here.
1023         (cp_parser_parameter_declaration_list): Not here.
1025 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
1027         PR c++/85027
1028         * class.c (instantiate_type): Peel off SAVE_EXPR before
1029         BASELINK.
1031 2018-03-30  Jason Merrill  <jason@redhat.com>
1033         * typeck2.c (process_init_constructor_record): Use
1034         init_list_type_node for the CONSTRUCTOR around an anonymous union
1035         designated initializer.
1037 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
1039         PR c++/84791
1040         * semantics.c (finish_omp_reduction_clause): If
1041         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
1042         even if processing_template_decl.
1044 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1046         PR c++/84269
1047         * name-lookup.c (get_std_name_hint): Add names from <memory>,
1048         <tuple>, and <utility>.
1050 2018-03-29  Jason Merrill  <jason@redhat.com>
1052         PR c++/85093 - too many template args with pack expansion.
1053         * pt.c (coerce_template_parms): Keep pack expansion args that will
1054         need to be empty.
1056 2018-03-29  Jason Merrill  <jason@redhat.com>
1058         * pt.c (build_non_dependent_expr): Propagate expr location.
1060 2018-03-27  Jason Merrill  <jason@redhat.com>
1062         PR c++/85060 - wrong-code with call to base member in template.
1063         * search.c (any_dependent_bases_p): Check uses_template_parms
1064         rather than processing_template_decl.
1066 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1068         PR c++/85110
1069         * typeck.c (convert_for_assignment): When complaining due to
1070         conversions for an argument, attempt to use the location of the
1071         argument.
1073 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
1075         PR c++/85028
1076         * pt.c (tsubst_default_argument): Early return if the type of the
1077         parameter is erroneous.
1079 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
1081         PR c++/84973
1082         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
1083         templates.
1085         PR c++/84968
1086         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
1088 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1090         PR c++/85067
1091         * method.c (defaulted_late_check): Partially revert r253321 changes,
1092         do not early return upon error.
1094 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1096         PR c++/85077
1097         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
1098         type call fold to generate VECTOR_CSTs when possible.
1100         PR c++/85076
1101         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
1102         return it right away.
1104 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
1106         * search.c (check_final_overrider): Use inform instead of error
1107         for the diagnostics of the overridden functions.  Tweak wording.
1109 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1111         PR c++/85068
1112         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
1113         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
1115 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1116             Jason Merrill  <jason@redhat.com>
1118         PR c++/84632
1119         * init.c (build_aggr_init): When initializing from array,
1120         reject anything but CONSTRUCTORs and TARGET_EXPRs.
1121         (build_vec_init): Handle separately ARRAY_TYPEs.
1123 2018-03-26  Jason Merrill  <jason@redhat.com>
1125         PR c++/85062 - ICE with alignas in wrong place.
1126         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
1127         here.
1129         PR c++/85049 - ICE with __integer_pack.
1130         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
1131         * cp-tree.h (TEMPLATE_PARM_P): New.
1133 2018-03-23  Jason Merrill  <jason@redhat.com>
1135         PR c++/78489 - wrong SFINAE behavior.
1137         PR c++/84489
1138         * pt.c (type_unification_real): Don't defer substitution failure.
1140 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
1142         PR c++/85015
1143         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
1144         result.
1146         PR c++/84942
1147         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
1148         cp_build_unary_op call with gcc_unreachable ().
1150 2018-03-23  Marek Polacek  <polacek@redhat.com>
1152         PR c++/85045
1153         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
1154         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
1155         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
1157 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
1159         Implement P0962
1160         * parser.c (cp_parser_perform_range_for_lookup): Change
1161         the condition for deciding whether to use members.
1163 2018-03-23  Marek Polacek  <polacek@redhat.com>
1165         PR c++/85033
1166         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
1168 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
1170         PR c++/71251
1171         * parser.c (cp_parser_alias_declaration): Call
1172         parser_check_template_parameters.
1174         PR c++/84789
1175         * pt.c (resolve_typename_type): Drop assert that stopped
1176         simplification to template-independent types.  Add assert to
1177         verify the initial scope is template dependent.
1178         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1179         Reparse the id expression as a type-name, not a declarator.
1181         PR c++/84729
1182         * init.c (build_vec_init): Error at parenthesized array init.
1184         PR c++/84610
1185         PR c++/84642
1186         PR c++/84942
1187         * cp-tree.h (temp_override): New template class, generalizing
1188         a cleanup that was only used...
1189         * parser.c (cp_parser_parameter_declaration_clause):
1190         ... here for auto_is_implicit_function_template_parm_p.
1191         (cp_parser_gnu_attributes_opt): Use it here as well.
1192         (cp_parser_std_attribute): Likewise.
1194 2018-03-22  Marek Polacek  <polacek@redhat.com>
1196         PR c++/84854
1197         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
1198         is boolean.
1200 2018-03-21  Jason Merrill  <jason@redhat.com>
1202         PR c++/81311 - wrong C++17 overload resolution.
1203         * call.c (build_user_type_conversion_1): Remove C++17 code.
1204         (conv_binds_ref_to_prvalue): New.
1205         (build_over_call): Handle C++17 copy elision.
1206         (build_special_member_call): Only do C++17 copy elision here if the
1207         argument is already the right type.
1209 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
1211         PR c++/71965
1212         * init.c (build_vec_init): Silence error, former sorry,
1213         without tf_error.
1215         PR c++/84610
1216         PR c++/84642
1217         * parser.c (abort_fully_implicit_template_p): New.
1218         (cp_parser_skip_to_end_of_statement): Use it.
1219         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
1220         (finish_fully_implicit_template_p): Clear
1221         implicit_template_parms and implicit_template_scope.
1223 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
1225         PR c++/84972
1226         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
1227         error_mark_node when check_array_designated_initializer fails.
1229 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
1231         PR c++/84961
1232         * cp-tree.h (genericize_compound_lvalue): Declare.
1233         * typeck.c (genericize_compound_lvalue): New function.
1234         (unary_complex_lvalue, cp_build_modify_expr): Use it.
1235         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
1236         and PREDECREMENT_EXPR in output and "m" constrained input operands with
1237         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
1238         COMPOUND_EXPR operand.
1240 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1242         PR c++/85008
1243         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
1244         * decl2.c (vague_linkage_p): Likewise.
1246 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
1248         PR c++/84994
1249         * constexpr.c (constexpr_fn_retval): Make non-"static".
1250         * cp-tree.h (constexpr_fn_retval): New decl.
1251         * search.c (direct_accessor_p): Update leading comment.
1252         (reference_accessor_p): Likewise.
1253         (field_accessor_p): Replace check that function body is a
1254         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
1255         indentation of "field_type" decl.
1257 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1259         PR c++/84804
1260         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
1261         complete classes.
1263 2018-03-21  Martin Sebor  <msebor@redhat.com>
1265         PR c++/84850
1266         * call.c (first_non_public_field): New template and function.
1267         (first_non_trivial_field): New function.
1268         (maybe_warn_class_memaccess): Call them.
1270 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
1272         PR c++/84892
1273         * search.c (field_accessor_p): Use class_of_this_parm rather than
1274         type_of_this_parm, to check that "this" is a "const T *", rather
1275         than a "T *const".
1277 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1279         * class.c (finish_struct_anon_r): Refactor, deprecate anything
1280         other than public non-static data members.
1281         * parser.c (cp_parser_init_declarator): Deprecate attributes after
1282         parenthesized initializer.
1284         PR c++/84836
1285         * name-lookup.c (update_binding): Correct logic for local binding
1286         update.
1288 2018-03-21  Marek Polacek  <polacek@redhat.com>
1290         PR c++/71638, ICE with NSDMI and reference.
1291         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1292         even when we replace an element.
1294 2018-03-20  Marek Polacek  <polacek@redhat.com>
1296         PR c++/84978, ICE with NRVO.
1297         * constexpr.c (cxx_eval_constant_expression): Handle the case when
1298         a RESULT_DECL isn't in the hash map.
1300 2018-03-20  Jason Merrill  <jason@redhat.com>
1302         PR c++/84978, ICE with NRVO.
1303         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
1304         (cp_get_callee_fndecl_nofold): New.
1305         * cp-gimplify.c (cp_genericize_r): Use it instead.
1306         * call.c (check_self_delegation): Likewise.
1308 2018-03-20  Nathan Sidwell  <nathan@acm.org>
1310         PR c++/84962
1311         * name-lookup.c (pushdecl_class_level): Push anon-struct's
1312         member_vec, if there is one.
1314         PR c++/84970
1315         * cp-tree.h (lookup_list_keep): Declare.
1316         * tree.c (lookup_list_keep): New, broken out of ...
1317         (build_min): ... here.  Call it.
1318         * decl.c (cp_finish_decl): Call lookup_list_keep.
1320 2018-03-19  Jason Merrill  <jason@redhat.com>
1322         PR c++/84937 - ICE with class deduction and auto.
1323         * pt.c (rewrite_template_parm): Fix auto handling.
1325 2018-03-19  Marek Polacek  <polacek@redhat.com>
1327         PR c++/84925
1328         * pt.c (enclosing_instantiation_of): Check if fn is null.
1330         PR c++/84927
1331         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1332         as we evaluate the elements.
1333         (cxx_eval_constant_expression): Verify constructor's flags
1334         unconditionally.
1336 2018-03-19  Jason Merrill  <jason@redhat.com>
1338         PR c++/71834 - template-id with too few arguments.
1339         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
1341 2018-03-19  Nathan Sidwell  <nathan@acm.org>
1343         PR c++/84835
1344         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
1345         * pt.c (build_template_decl): Propagate language linkage.
1347         PR c++/84812
1348         * name-lookup.c (set_local_extern_decl_linkage): Defend against
1349         ambiguous lookups.
1351 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1353         PR c/84910
1354         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
1355         diagnostics.
1356         * method.c (synthesize_method): Likewise.
1357         * pt.c (convert_nontype_argument): Likewise.
1359 2018-03-16  Jason Merrill  <jason@redhat.com>
1361         PR c++/84720 - ICE with rvalue ref non-type argument.
1362         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
1363         (convert_nontype_argument): Revert earlier change.
1365         PR c++/80227 - SFINAE and negative array size.
1366         * decl.c (compute_array_index_type): Use
1367         build_converted_constant_expr and valid_constant_size_p.
1369         PR c++/84906 - silent wrong code with ambiguous conversion.
1370         * call.c (build_user_type_conversion_1): Set need_temporary_p on
1371         ambiguous conversion.
1372         (convert_like_real): Check it.
1374         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
1375         * call.c (build_special_member_call): Don't convert an init-list
1376         argument directly to the class type.
1378 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1380         PR c++/79937
1381         PR c++/82410
1382         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
1383         (find_placeholder): Declare.
1384         * tree.c (struct replace_placeholders_t): Add exp member.
1385         (replace_placeholders_r): Don't walk into ctors with
1386         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
1387         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
1388         (replace_placeholders): Initialize data.exp.
1389         (find_placeholders_r, find_placeholders): New functions.
1390         * typeck2.c (process_init_constructor_record,
1391         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
1392         if adding NSDMI on which find_placeholder returns true.
1393         * call.c (build_over_call): Don't call replace_placeholders here.
1394         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
1395         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
1396         TARGET_EXPR_INITIAL.
1397         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
1398         ctor.
1400 2018-03-16  Jason Merrill  <jason@redhat.com>
1402         PR c++/83911 - ICE with multiversioned constructor.
1403         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
1404         dispatchere here.
1405         * call.c (build_over_call): Not here.
1407 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1409         PR c++/84874
1410         * decl.c (reshape_init_class): Don't assert d->cur->index == field
1411         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
1413 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
1415         PR c++/84222
1416         * cp-tree.h (cp_warn_deprecated_use): Declare.
1417         * tree.c (cp_warn_deprecated_use): New function.
1418         * typeck2.c (build_functional_cast): Use it.
1419         * decl.c (grokparms): Likewise.
1420         (grokdeclarator): Likewise.  Temporarily push nested class scope
1421         around grokparms call for out of class member definitions.
1423 2018-03-14  Jason Merrill  <jason@redhat.com>
1425         PR c++/84820 - no error for invalid qualified-id.
1426         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
1427         cp_error_declarator.
1429         PR c++/84801 - ICE with unexpanded pack in lambda.
1430         * pt.c (check_for_bare_parameter_packs): Don't return early for a
1431         lambda in non-template context.
1433         PR c++/81236 - auto variable and auto function
1434         * pt.c (tsubst_baselink): Update the type of the BASELINK after
1435         mark_used.
1437 2018-03-14  Jason Merrill  <jason@redhat.com>
1439         PR c++/83916 - ICE with template template parameters.
1440         * pt.c (convert_template_argument): Don't substitute into type of
1441         non-type parameter if we don't have enough arg levels.
1442         (unify): Likewise.
1444 2018-03-14  Marek Polacek  <polacek@redhat.com>
1446         PR c++/84596
1447         * semantics.c (finish_static_assert): Check
1448         instantiation_dependent_expression_p instead of
1449         {type,value}_dependent_expression_p.
1451 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1452             Jason Merrill  <jason@redhat.com>
1454         PR c++/82336 - link error with list-init default argument.
1455         * decl.c (check_default_argument): Unshare an initializer list.
1457 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1459         PR c++/84843
1460         * decl.c (duplicate_decls): For redefinition of built-in, use error
1461         and return error_mark_node.  For redeclaration, return error_mark_node
1462         rather than olddecl if !flag_permissive.
1464 2018-03-13  Jason Merrill  <jason@redhat.com>
1466         PR c++/82565 - ICE with concepts and generic lambda.
1467         * pt.c (instantiate_decl): Clear fn_context for lambdas.
1469 2018-03-13  Jason Merrill  <jason@redhat.com>
1471         PR c++/84720 - ICE with rvalue ref non-type argument.
1472         * pt.c (convert_nontype_argument): Handle rvalue references.
1474         PR c++/84839 - ICE with decltype of parameter pack.
1475         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
1476         instantiating dummy parms.
1478         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
1479         parameter even without -Wpedantic.
1481         PR c++/84798 - ICE with auto in abstract function declarator.
1482         * parser.c (cp_parser_parameter_declaration_clause): Check
1483         parser->default_arg_ok_p.
1485 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1487         PR c++/84808
1488         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
1489         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
1490         sizetype.  Formatting fixes.
1492 2018-03-12  Jason Merrill  <jason@redhat.com>
1494         PR c++/84355 - ICE with deduction for member class template.
1495         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
1496         CLASS_PLACEHOLDER_TEMPLATE.
1498         PR c++/84802 - ICE capturing uninstantiated class.
1499         * lambda.c (build_capture_proxy): Call complete_type.
1501 2018-03-09  Jason Merrill  <jason@redhat.com>
1503         PR c++/84770 - ICE with typedef and parameter pack.
1504         * pt.c (verify_unstripped_args_1): Split out from
1505         verify_unstripped_args.
1507         PR c++/84785 - ICE with alias template and default targs.
1508         * pt.c (type_unification_real): Set processing_template_decl if
1509         saw_undeduced == 1.
1511         PR c++/84752 - ICE with capture of constexpr array.
1512         * call.c (standard_conversion): Set rvaluedness_matches_p on the
1513         identity conversion under ck_lvalue.
1515 2018-03-09  Jason Merrill  <jason@redhat.com>
1516             Paolo Carlini  <paolo.carlini@oracle.com>
1518         PR c++/71169
1519         PR c++/71832
1520         * pt.c (any_erroneous_template_args_p): New.
1521         * cp-tree.h (any_erroneous_template_args_p): Declare it.
1522         * parser.c (cp_parser_class_specifier_1): Use it.
1524 2018-03-09  Jason Merrill  <jason@redhat.com>
1526         PR c++/84726 - unnecessary capture of constant vars.
1527         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1528         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1529         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1530         * lambda.c (is_constant_capture_proxy)
1531         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1532         (prune_lambda_captures): New.
1533         (finish_lambda_function): Call prune_lambda_captures.
1535 2018-03-09  Jason Merrill  <jason@redhat.com>
1536             Jakub Jelinek  <jakub@redhat.com>
1538         PR c++/84076
1539         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1540         build ADDR_EXPR with REFERENCE_TYPE.
1541         (build_over_call): For purposes of check_function_arguments, if
1542         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1543         its operand rather than the argument itself.
1545 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
1547         PR c++/84724
1548         * decl.c (duplicate_decls): Don't override __* prefixed builtins
1549         except for __[^b]*_chk, instead issue permerror and for -fpermissive
1550         also a note and return olddecl.
1552 2018-03-09  Nathan Sidwell  <nathan@acm.org>
1554         PR c++/84733
1555         * name-lookup.c (do_pushdecl_with_scope): Only clear
1556         current_function_decl when pushing a non-class (i.e. namespace)
1557         scope.
1559 2018-03-08  Jason Merrill  <jason@redhat.com>
1560             Jakub Jelinek  <jakub@redhat.com>
1562         PR c++/80598
1563         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1564         not calling mark_used for the benefit of -Wunused-function warning.
1566 2018-03-06  Jason Merrill  <jason@redhat.com>
1568         * lambda.c (is_capture_proxy_with_ref): Remove.
1569         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1571 2018-03-06  Marek Polacek  <polacek@redhat.com>
1573         PR c++/84684
1574         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1575         arguments.
1577 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
1579         PR c++/84231
1580         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1581         only while processing template decls.
1582         * typeck.c (build_x_conditional_expr): Move wrapping of
1583         reference type around type...
1584         * call.c (build_conditional_expr_1): ... here.  Rename
1585         is_lvalue to is_glvalue.
1586         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1587         INDIRECT_REF of COND_EXPR too.
1589         PR c++/84593
1590         * init.c (build_zero_init_1): Zero-initialize references.
1592         PR c++/84492
1593         * semantics.c (finish_stmt_expr_expr): Reject unresolved
1594         overloads used as stmt expr values.
1596 2018-03-05  Jason Merrill  <jason@redhat.com>
1598         PR c++/84708 - ICE with lambda in local class NSDMI.
1599         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1600         context.
1602 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1604         PR c++/84684
1605         * constexpr.c (constexpr_call_hasher::equal): Return false if
1606         lhs->hash != rhs->hash.  Change return 1 to return true and
1607         return 0 to return false.
1609 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1611         PR c++/84702
1612         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1614 2018-03-05  Marek Polacek  <polacek@redhat.com>
1616         PR c++/84707
1617         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1618         UDLIT_OPER_P.
1620 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1622         PR c++/84694
1623         * friend.c (do_friend): Restore check for identifier_p inside
1624         TEMPLATE_ID_EXPR.
1626 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1628         PR c++/84618
1629         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1630         involving a VAR_DECL or a PARM_DECL.
1632 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1633             Jason  Merrill  <jason@redhat.com>
1634             Nathan Sidwell  <nathan@acm.org>
1636         PR c++/84497
1637         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1639 2018-03-03  Jason Merrill  <jason@redhat.com>
1641         PR c++/84686 - missing volatile loads.
1642         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1644 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1646         PR c++/71464
1647         * optimize.c (maybe_thunk_body): Bail out immediately if either
1648         fns[0] or fns[1] is null.
1650 2018-03-02  Marek Polacek  <polacek@redhat.com>
1652         PR c++/84578
1653         * constexpr.c (get_array_or_vector_nelts): New.
1654         (cxx_eval_array_reference): Use it.
1655         (cxx_eval_vec_init_1): Likewise.
1656         (cxx_eval_store_expression): Likewise.
1658 2018-03-02  Jason Merrill  <jason@redhat.com>
1660         * semantics.c (force_paren_expr): Remove redundant test.
1662 2018-03-02  Marek Polacek  <polacek@redhat.com>
1664         PR c++/84663
1665         * decl.c (cp_complete_array_type): Check error_mark_node.
1667         PR c++/84664
1668         * typeck.c (cp_perform_integral_promotions): Check the result of
1669         mark_rvalue_use.
1671 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1673         PR c++/84662
1674         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1675         RETURN instead of return.
1676         <case POINTER_PLUS_EXPR>: Likewise.
1677         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1678         it instead of wrapping it into CONVERT_EXPR.
1680 2018-03-02  Jason Merrill  <jason@redhat.com>
1682         Fix MIPS16 ICE.
1683         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1685 2018-03-02  Marek Polacek  <polacek@redhat.com>
1687         PR c++/84590
1688         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1689         wrapped in VIEW_CONVERT_EXPR.
1691 2018-03-01  Martin Sebor  <msebor@redhat.com>
1693         PR c++/84294
1694         * decl.c (check_redeclaration_no_default_args): Merge attributes
1695         specified on redeclarations of the same function template.
1696         Remove dead code.
1698 2018-03-01  Marek Polacek  <polacek@redhat.com>
1699             Jason Merrill  <jason@redhat.com>
1701         PR c++/84582
1702         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1703         a template.
1704         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1705         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1706         of instantiate_non_dependent_expr.
1707         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1709 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1711         PR c++/84434
1712         * name-lookup.c (member_vec_dedup): Remove manually peeled
1713         iteration.  Ignore dependent ctor inheritance.
1715 2018-03-01  Jason Merrill  <jason@redhat.com>
1717         PR c++/71569 - decltype of template.
1718         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1720 2018-03-01  Marek Polacek  <polacek@redhat.com>
1722         PR c++/84596
1723         * constexpr.c (require_rvalue_constant_expression): New function.
1724         * cp-tree.h: Declare it.
1725         * semantics.c (finish_static_assert): Use it instead of
1726         require_potential_rvalue_constant_expression.
1728 2018-03-01  Jason Merrill  <jason@redhat.com>
1729             Alexandre Oliva <aoliva@redhat.com>
1731         PR c++/71569 - ICE with redundant args on member variable template.
1732         * decl.c (start_decl): Handle partial specialization of member
1733         variable template.
1734         * pt.c (determine_specialization): Allow partial specialization
1735         of member variable template without specializing enclosing class.
1736         (process_partial_specialization): Improve error message.
1738 2018-02-28  Jason Merrill  <jason@redhat.com>
1740         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1741         * pt.c (determine_specialization): Check ref-qualifier.
1743 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1745         PR c++/84609
1746         * parser.c (cp_parser_attributes_opt): Formatting fix.
1747         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1748         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1749         New functions.
1750         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1751         instead of tentative parse to peek over optional attribute tokens
1752         to check for CPP_COLON after them.
1754         PR c++/83871
1755         PR c++/83503
1756         * pt.c (INCLUDE_STRING): Remove define.
1757         (warn_spec_missing_attributes): Use pretty_printer instead of
1758         std::string.  Fix up inform call so that the list of attributes
1759         is in %s argument.
1761 2018-02-28  Martin Sebor  <msebor@redhat.com>
1763         PR testsuite/84617
1764         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1765         and malloc.
1767 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1769         PR c++/84602
1770         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1771         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1772         regardless of want_type.
1773         (search_anon_aggr): Just use get_class_binding_direct.
1775 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1777         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1778         inform_n.
1780 2018-02-27  Martin Sebor  <msebor@redhat.com>
1782         * pt.c: Avoid including <string> directly.
1784 2018-02-27  Martin Sebor  <msebor@redhat.com>
1786         PR c++/83871
1787         PR c++/83503
1788         * cp-tree.h (warn_spec_missing_attributes): New function.
1789         ((check_explicit_specialization): Add an argument.  Call the above
1790         function.
1791         * decl.c (duplicate_decls): Avoid applying primary function template's
1792         attributes to its explicit specializations.
1793         cp/pt.c (warn_spec_missing_attributes): Define.
1795 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1797         PR c++/71546 - lambda init-capture with qualified-id.
1798         * parser.c (cp_parser_lambda_introducer): Clear scope after
1799         each lambda capture.
1801 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1803         PR c++/84426
1804         * name-lookup.h (get_member_slot): Rename ...
1805         (find_member_slot): ... here.
1806         (add_member_slot): New.
1807         * name-lookup.c (member_vec_linear_search): No need to check for
1808         NULL slot.
1809         (get_member_slot): Rename ...
1810         (find_member_slot): ... here.  Don't add slot for incomplete class.
1811         (add_member_slot): New.
1812         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1813         if push_class_level_binding fails.  Create slot and grok
1814         properties once we're committed to insertion.
1816 2018-02-27  Jason Merrill  <jason@redhat.com>
1818         PR c++/84489 - dependent default template argument
1819         * pt.c (type_unification_real): Handle early substitution failure.
1821 2018-02-26  Jason Merrill  <jason@redhat.com>
1823         PR c++/84560 - ICE capturing multi-dimensional VLA.
1824         * tree.c (array_of_runtime_bound_p): False if the element is
1825         variably-modified.
1827         PR c++/84441 - ICE with base initialized from ?:
1828         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1830         PR c++/84520 - ICE with generic lambda in NSDMI.
1831         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1832         'this' in a generic lambda instantiation.
1834         PR c++/84559 - ICE with constexpr VLA.
1835         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1836         for constexpr variable with VLA type.
1838 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1840         PR c++/84558
1841         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1842         a valid constant initializer.  Formatting fixes.
1844 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1846         PR c++/84540
1847         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1848         returning NULL_TREE.
1849         (apply_late_template_attributes): Likewise.
1851 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1853         PR c++/84557
1854         * parser.c (cp_parser_omp_var_list_no_open): Only call
1855         cp_parser_lookup_name_simple on names satisfying identifier_p.
1856         (cp_parser_oacc_routine): Likewise.
1858 2018-02-26  Jason Merrill  <jason@redhat.com>
1860         PR c++/84551 - ICE with concepts and -g.
1861         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1863 2018-02-26  Marek Polacek  <polacek@redhat.com>
1865         PR c++/84325
1866         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1867         non-types.
1869 2018-02-26  Jason Merrill  <jason@redhat.com>
1871         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1872         * call.c (build_over_call): Handle deleted functions in one place.
1874 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1876         PR c++/84533
1877         * decl.c (redeclaration_error_message): Don't try to use
1878         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1880 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1882         * lambda.c (build_capture_proxy): Define static.
1883         * cp-tree.h (build_capture_proxy): Remove.
1885 2018-02-26  Marek Polacek  <polacek@redhat.com>
1887         PR c++/84537
1888         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1889         if name is error node.
1891 2018-02-25  Jason Merrill  <jason@redhat.com>
1893         PR c++/84015 - ICE with class deduction and auto template parm.
1894         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
1896 2018-02-24  Marek Polacek  <polacek@redhat.com>
1898         PR c++/83692
1899         * constexpr.c (maybe_constant_init_1): New function.
1900         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
1901         (cxx_constant_init): New function.
1902         * cp-tree.h (cxx_constant_init): Declare.
1903         * typeck2.c (store_init_value): Call cxx_constant_init instead of
1904         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
1906 2018-02-22  Jason Merrill  <jason@redhat.com>
1908         PR c++/70468 - ICE with constructor delegation via typedef.
1909         * pt.c (tsubst_initializer_list): Check for other mem-initializers
1910         with constructor delegation.
1912 2018-02-22  Jason Merrill  <jason@redhat.com>
1914         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
1915         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
1916         VECTOR_TYPE.
1918 2018-02-22  Marek Polacek  <polacek@redhat.com>
1920         PR c++/84493
1921         * parser.c (cp_parser_braced_list): Use require_open instead of
1922         consume_open.
1924 2018-02-21  Jason Merrill  <jason@redhat.com>
1926         PR c++/84454 - ICE with pack expansion in signature.
1927         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
1929 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1931         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
1932         IF_STMT.
1934 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
1936         PR c++/84446
1937         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
1938         on error_mark_node.
1940 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
1942         PR c++/84445
1943         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
1944         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
1946         PR c++/84449
1947         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
1948         returns error_mark_node, return it immediately.
1949         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
1950         error_mark_node, return error_mark_node.
1952         PR c++/84455
1953         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
1954         function_depth to avoid GC during finish_lambda_function.
1956 2018-02-19  Jason Merrill  <jason@redhat.com>
1958         PR c++/84429 - ICE capturing VLA.
1959         * lambda.c (build_capture_proxy): Handle reference refs.
1961 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
1963         PR c++/84448
1964         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
1965         either operand is error_mark_node, set current.lhs to that instead of
1966         creating a binary op with error_mark_node operands.
1968         PR c++/84430
1969         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
1971 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
1973         PR c++/84348
1974         * decl.c (grokdeclarator): Early return error_mark_node upon
1975         ill-formed friend declaration.
1977 2018-02-16  Marek Polacek  <polacek@redhat.com>
1978             Jakub Jelinek  <jakub@redhat.com>
1980         PR c++/84192
1981         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
1982         set *jump_target to anything if jump_target is NULL.
1984 2018-02-16  Jason Merrill  <jason@redhat.com>
1986         PR c++/84151 - unnecessary volatile load with static member.
1987         * call.c (build_new_method_call_1): Avoid loading from a volatile
1988         lvalue used as the object argument for a static member function.
1990         PR c++/81853 - using-directive and constexpr.
1991         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
1993         PR c++/84420 - ICE with structured binding in lambda.
1994         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
1996         PR c++/83835 - C++17 error with constructor ctors.
1997         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
1999         PR c++/82664 - ICE with reference to function template parm.
2000         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
2001         NOP_EXPRs.
2003         PR c++/82764 - C++17 ICE with empty base
2004         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
2006 2018-02-16  Jason Merrill  <jason@redhat.com>
2008         PR c++/84421 - type-dependent if constexpr
2009         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
2011 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2013         Deprecate -ffriend-injection.
2014         * decl.c (cxx_init_decl_processing): Emit warning on option.
2015         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
2016         friend.
2018 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
2020         PR c++/82468
2021         * decl.c (check_special_function_return_type): Reject template
2022         template parameter in deduction guide.
2024 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2026         PR c++/84375
2027         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
2029 2018-02-15  Jason Merrill  <jason@redhat.com>
2031         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
2032         * call.c (convert_like_real): Don't use the copy-list-initialization
2033         shortcut for ck_base.
2035         PR c++/84045 - ICE with typedef and noexcept.
2036         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
2038         PR c++/84376 - ICE with omitted template arguments.
2039         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
2041         PR c++/84368 - wrong error with local variable in variadic lambda.
2042         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
2043         local_specializations.
2045 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
2047         PR c++/84330
2048         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
2049         as first argument.
2051 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2053         PR c++/84350
2054         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
2055         init, early return.
2057 2018-02-14  Nathan Sidwell  <nathan@acm.org>
2059         * decl2.c (mark_vtable_entries): Set input_location to decl's.
2060         (c_parse_final_cleanups): Restore input_location after emitting
2061         vtables.
2063 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2065         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
2066         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
2067         auto_deduction_context, tree, int): Add defaults.
2068         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
2069         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
2070         tsubst_flags_t argument.
2071         * init.c (build_new): Likewise.
2073 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
2075         PR c++/84364
2076         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
2077         about return other than *this in assignment operators if
2078         retval is type dependent expression.
2080 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
2082         PR c++/84333
2083         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
2084         save_expr for the G++ extension.
2086 2018-02-13  Jason Merrill  <jason@redhat.com>
2088         PR c++/84080 - ICE with return type deduction and specialization.
2089         * pt.c (determine_specialization): Check uses_template_parms.
2091         Fix more variadic capture issues.
2092         * pt.c (find_parameter_packs_r): Also look at explicit captures.
2093         (check_for_bare_parameter_packs): Check current_class_type for
2094         lambda context.
2095         (extract_locals_r): Handle seeing a full instantiation of a pack.
2096         (tsubst_pack_expansion): Likewise.  Force lambda capture.
2097         * parser.c (cp_parser_lambda_introducer): Don't
2098         check_for_bare_parameter_packs.
2100         PR c++/84338 - wrong variadic sizeof.
2101         * pt.c (argument_pack_select_arg): Like the macro, but look through
2102         a pack expansion.
2103         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
2104         (extract_fnparm_pack): Do make_pack_expansion.
2105         (extract_locals_r): Do strip a pack expansion.
2106         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
2108 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
2110         PR c++/84341
2111         * parser.c (cp_parser_binary_expression): Use build_min instead of
2112         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
2114 2018-02-12  Nathan Sidwell  <nathan@acm.org>
2116         PR c++/84263
2117         * parser.c (cp_parser_decltype): Push and pop
2118         deferring_access_checks.  Reorganize to avoid goto.
2120 2018-02-12  Richard Biener  <rguenther@suse.de>
2122         PR c++/84281
2123         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
2124         uniform constructors and delay allocating them fully.
2126 2018-02-09  Jason Merrill  <jason@redhat.com>
2128         PR c++/84036 - ICE with variadic capture.
2129         Handle variadic capture proxies more like non-variadic.
2130         * lambda.c (build_capture_proxy): Remove workaround.
2131         * pt.c (find_parameter_packs_r): The proxy is a pack.
2132         (instantiate_class_template_1): Remove dead lambda code.
2133         (extract_fnparm_pack): Don't make_pack_expansion.
2134         (extract_locals_r): Don't strip a pack expansion.
2135         (tsubst_pack_expansion): Handle proxy packs.  Use
2136         PACK_EXPANSION_EXTRA_ARGS less.
2137         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
2138         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
2139         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
2140         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
2141         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
2143 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
2145         PR sanitizer/83987
2146         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
2148 2018-02-09  Jason Merrill  <jason@redhat.com>
2150         PR c++/81917 - ICE with void_t and partial specialization.
2151         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
2152         calling most_specialized_partial_spec.
2154 2018-02-09  Nathan Sidwell  <nathan@acm.org>
2156         PR c/84293
2157         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
2158         Pass expr location to strict_aliasing_warning.
2160 2018-02-09  Jason Merrill  <jason@redhat.com>
2162         PR c++/84296 - ICE with qualified-id in template.
2163         PR c++/83714
2164         * pt.c (unknown_base_ref_p): New.
2165         (instantiation_dependent_scope_ref_p): Use it instead of
2166         any_dependent_bases_p.
2168 2018-02-09  Marek Polacek  <polacek@redhat.com>
2169             Jakub Jelinek  <jakub@redhat.com>
2171         PR c++/83659
2172         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
2173         fold_indirect_ref_1, including poly_*int64.  Verify first that
2174         tree_fits_poly_int64_p (op01).  Formatting fixes.
2176 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2178         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
2179         * lambda.c (build_capture_proxy): Likewise.
2180         * search.c (field_access_p): Likewise.
2181         * semantics.c (omp_clause_decl, omp_privatize_field,
2182         finish_omp_clauses): Likewise.
2184 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2186         PR c++/83806
2187         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
2188         case of nullptr too.
2190 2018-02-08  Nathan Sidwell  <nathan@acm.org>
2192         * class.c (finish_struct): Fix std:initializer_list diagnostic
2193         formatting.
2195 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2197         PR c++/83204
2198         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
2200 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
2202         PR c++/84082
2203         * parser.c (cp_parser_dot_deref_incomplete): New function.
2204         (cp_parser_postfix_dot_deref_expression): Use it.
2206 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
2208         PR c++/81610
2209         PR c++/80567
2210         * name-lookup.c (suggest_rid_p): New function.
2211         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
2212         suggest_rid_p.
2214 2018-02-07  Jason Merrill  <jason@redhat.com>
2216         PR c++/84182 - ICE with captured lambda
2217         PR c++/84181
2218         * pt.c (extract_locals_r, extract_local_specs): New.
2219         (tsubst_pack_expansion): Use them.
2221 2018-02-07  Martin Liska  <mliska@suse.cz>
2223         PR c++/84059.
2224         * class.c (add_method): Append argument value.
2225         * cp-tree.h (maybe_version_functions): Add new argument.
2226         * decl.c (decls_match): Call it if a declaration does not
2227         have DECL_FUNCTION_VERSIONED.
2228         (maybe_version_functions): record argument is added.
2230 2018-02-05  Marek Polacek  <polacek@redhat.com>
2232         * class.c: Remove unused global variables.
2233         (build_primary_vtable): Don't gather statistics.
2234         (print_class_statistics): Remove.
2235         * cp-tree.h (print_class_statistics): Remove.
2236         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
2238 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
2240         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
2241         * constexpr.c (cx_check_missing_mem_inits): Likewise.
2242         * decl.c (next_initializable_field, find_decomp_class_base,
2243         cp_finish_decomp): Likewise.
2244         * typeck2.c (process_init_constructor_record): Likewise.
2246 2018-02-02  Jason Merrill  <jason@redhat.com>
2248         PR c++/84181 - ICE with lambda parm in template argument.
2249         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
2251 2018-02-01  Jason Merrill  <jason@redhat.com>
2253         PR c++/84160 - ICE with nested variadic capture.
2254         * lambda.c (is_capture_proxy_with_ref): New.
2255         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
2256         COMPONENT_REF.
2257         * expr.c (mark_use): Use is_capture_proxy_with_ref.
2258         * constexpr.c (potential_constant_expression_1): Likewise.
2259         * semantics.c (process_outer_var_ref): Likewise.
2261 2018-02-01  Marek Polacek  <polacek@redhat.com>
2263         PR c++/84125
2264         * typeck.c (build_address): Relax the assert when
2265         processing_template_decl.
2267 2018-02-01  Jason Merrill  <jason@redhat.com>
2269         PR c++/84126 - ICE with variadic generic lambda
2270         PR c++/84036
2271         PR c++/82249
2272         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
2273         PACK_EXPANSION_EXTRA_ARGS.
2275 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
2277         PR c++/83796
2278         * call.c (convert_like_real): If w're initializing from {} explicitly
2279         call abstract_virtuals_error_sfinae.
2281 2018-01-31  Jason Merrill  <jason@redhat.com>
2282             Jakub Jelinek  <jakub@redhat.com>
2284         PR c++/83993
2285         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
2286         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
2287         on ADDR_EXPR.
2289 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
2291         PR c++/83993
2292         * constexpr.c (diag_array_subscript): Emit different diagnostics
2293         if TYPE_DOMAIN (arraytype) is NULL.
2294         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
2295         with NULL TYPE_DOMAIN use size_zero_node as nelts.
2297 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
2299         PR c++/84092
2300         * semantics.c (finish_qualified_id_expr): When handling an
2301         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
2303 2018-01-31  Marek Polacek  <polacek@redhat.com>
2305         PR c++/84138
2306         * cp-gimplify.c (cp_fold): Check if X is an error node before
2307         calling useless_type_conversion_p.
2309 2018-01-30  Jason Merrill  <jason@redhat.com>
2311         PR c++/84091 - ICE with local class in lambda in template.
2312         * decl2.c (determine_visibility): Look for outer containing template
2313         instantiation.
2315         PR c++/84098 - ICE with lambda in template NSDMI.
2316         * pt.c (instantiate_class_template_1): Ignore more lambdas.
2318 2018-01-29  Jason Merrill  <jason@redhat.com>
2320         PR c++/68810 - wrong location for reinterpret_cast error.
2321         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
2322         !dofold.
2324 2018-01-29  Marek Polacek  <polacek@redhat.com>
2326         PR c++/83996
2327         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
2328         => fooarray[1] in offset_int.
2330 2018-01-29  Jason Merrill  <jason@redhat.com>
2332         PR c++/83942 - wrong unused warning with static_cast.
2333         * cvt.c (ocp_convert): Call mark_rvalue_use.
2335 2018-01-26  Jason Merrill  <jason@redhat.com>
2337         PR c++/83956 - wrong dtor error with anonymous union
2338         * method.c (walk_field_subobs): Variant members only affect
2339         deletedness.
2340         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
2342         PR c++/84036 - ICE with variadic capture.
2343         PR c++/82249
2344         * pt.c (tsubst_pack_expansion): When optimizing a simple
2345         substitution, pull a single pack expansion out of its pack.
2347         PR c++/82514 - ICE with local class in generic lambda.
2348         * pt.c (regenerated_lambda_fn_p): Remove.
2349         (enclosing_instantiation_of): Don't use it.
2350         (tsubst_function_decl): Call enclosing_instantiation_of.
2352         * pt.c (lookup_template_class_1): Add sanity check.
2353         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
2355 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
2357         PR c++/84031
2358         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
2359         recursive calls that return ret.
2360         (cp_finish_decomp): Ignore unnamed bitfields.
2362 2018-01-23  Jason Merrill  <jason@redhat.com>
2364         PR c++/82249 - wrong mismatched pack length error.
2365         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
2366         unsubstituted function parameter pack.
2368 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
2370         PR c++/83921
2371         * decl.c (check_for_uninitialized_const_var): Not static; add
2372         bool and tsubst_flags_t parameters; adjust to be used both in
2373         constexpr context and not.
2374         * constexpr.c (potential_constant_expression_1): Use the above.
2375         * cp-tree.h (check_for_uninitialized_const_var): Declare.
2377 2018-01-23  Jason Merrill  <jason@redhat.com>
2379         PR c++/83947 - ICE with auto declarations.
2380         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
2381         * decl.c (undeduced_auto_decl): Limit to vars and fns.
2383 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
2385         PR c++/83974
2386         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
2387         for pointer to member function types.
2389 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2391         PR sanitizer/83987
2392         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
2393         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
2395 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2397         PR c++/83988
2398         * pt.c (tsubst_baselink): Remove optype assert.
2399         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
2401 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2403         PR c++/83958
2404         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
2405         refers to incomplete type.
2407 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2409         Deprecate ARM-era for scope handling
2410         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
2411         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
2412         cleared.
2413         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
2414         cleanup handling.
2415         * semantics.c (begin_for_scope): Flag_new_for_scope is
2416         boolean-like.
2417         (finish_for_stmt, begin_range_for_stmt): Likewise.
2419 2018-01-22  Jason Merrill  <jason@redhat.com>
2421         PR c++/83720
2422         * decl2.c (determine_visibility): Fix template_decl handling
2423         instead of blocking it.
2425         PR c++/83720 - ICE with lambda and LTO.
2426         * decl2.c (determine_visibility): Clear template_decl for
2427         function-scope decls.  Propagate anonymous linkage from containing
2428         function.
2430 2018-01-22  Marek Polacek  <polacek@redhat.com>
2432         PR c++/81933
2433         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
2434         split out anything.
2436 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2438         PR c++/83895
2439         * decl.c (grokdeclarator): Don't diagnose extra parens
2440         on typedefs.
2442 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
2444         PR c++/81167
2445         * call.c (joust): Use TREE_TYPE (source) if source is
2446         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
2448         PR c++/83919
2449         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
2450         for direct enum init.
2451         * decl.c (reshape_init): Likewise.
2453 2018-01-19  Marek Polacek  <polacek@redhat.com>
2455         * constexpr.c (fold_simple): Simplify.
2457 2018-01-18  Jason Merrill  <jason@redhat.com>
2459         PR c++/83714
2460         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
2461         * pt.c (instantiation_dependent_scope_ref_p): True if
2462         any_dependent_bases_p.
2464 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2466         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
2467         vs DECL_NONTRIVIALLY_INITIALIZED_P).
2469 2018-01-18  Jason Merrill  <jason@redhat.com>
2471         PR c++/82461 - constexpr list-initialized member
2472         * constexpr.c (potential_constant_expression_1): Check
2473         TARGET_EXPR_DIRECT_INIT_P.
2475 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2477         PR c++/81013
2478         * decl.c (xref_basetypes): Early return upon error about derived
2479         union.
2481 2018-01-18  Nathan Sidwell  <nathan@acm.org>
2483         PR c++/83160
2484         * cp-tree.h (mark_use): Declare.
2485         * expr.c (mark_use): Make extern.
2486         * call.c (direct_reference_binding): Set inner conv's
2487         rvaluedness_matches_p, if it is an identity.
2488         (convert_like_real): Mark lvalue or rvalue use for identity as
2489         rvaledness_matches_p demands.
2491 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
2493         PR c++/83824
2494         * parser.c (attr_chainon): New function.
2495         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
2496         cp_parser_namespace_definition, cp_parser_init_declarator,
2497         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
2498         cp_parser_gnu_attributes_opt): Use it.
2499         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
2500         cp_parser_objc_struct_declaration): Likewise.  Don't reset
2501         prefix_attributes if attributes is error_mark_node.
2503 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2505         PR c++/78344
2506         * decl.c (grokdeclarator): Do not append the error_mark_node
2507         due to an erroneous optional attribute-specifier-seq.
2509 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
2511         PR c++/83897
2512         * cp-gimplify.c (cp_maybe_instrument_return): Handle
2513         CLEANUP_POINT_EXPR.
2515 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2517         PR c++/81054
2518         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
2519         error_mark_node when we give an error.
2520         * decl.c (cp_finish_decl): Use the latter.
2522 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2524         PR c++/83287
2525         * init.c (build_raw_new_expr): Scan list for lookups to keep.
2527 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2529         PR c++/83814
2530         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2531         the C++ part.  If processing a template, call
2532         fold_non_dependent_expr rather than fully folding.
2534 2018-01-17  Jason Merrill  <jason@redhat.com>
2536         PR c++/81067 - redundant NULL warning.
2537         * call.c (convert_like_real): Restore null_node handling.
2539 2018-01-17  Jason Merrill  <jason@redhat.com>
2541         PR c++/81843 - ICE with variadic member template.
2542         PR c++/72801
2543         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2544         template args.
2546 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2548         PR c++/83799
2549         * pt.c (type_dependent_expression_p): Strip any location wrapper
2550         before testing tree codes.
2551         (selftest::test_type_dependent_expression_p): New function.
2552         (selftest::cp_pt_c_tests): Call it.
2554 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2556         PR c++/83739
2557         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2558         this not a final instantiation.
2560 2018-01-16  Jason Merrill  <jason@redhat.com>
2562         PR c++/83714 - ICE checking return in template.
2563         * typeck.c (check_return_expr): Call build_non_dependent_expr.
2565 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
2567         PR c++/83817
2568         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2569         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2570         instead of CALL_FROM_THUNK_P.
2572         PR c++/83825
2573         * name-lookup.c (member_vec_dedup): Return early if len is 0.
2574         (resort_type_member_vec, set_class_bindings,
2575         insert_late_enum_def_bindings): Use vec qsort method instead of
2576         calling qsort directly.
2578 2018-01-15  Martin Sebor  <msebor@redhat.com>
2580         PR c++/83588
2581         * class.c (find_flexarrays): Make a record of multiple flexible array
2582         members.
2584 2018-01-12  Jason Merrill  <jason@redhat.com>
2586         PR c++/83186 - ICE with static_cast of list-initialized temporary.
2587         * typeck.c (build_static_cast): Use build_non_dependent_expr.
2589 2018-01-12  Nathan Sidwell  <nathan@acm.org>
2591         * cp-tree.h (mark_rvalue_use): Add parm name.
2592         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2593         mark_rvalue_use.
2594         * call.c (convert_like_real): Fix formatting.
2596 2018-01-11  Jason Merrill  <jason@redhat.com>
2598         PR c++/82728 - wrong -Wunused-but-set-variable
2599         PR c++/82799
2600         PR c++/83690
2601         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2602         * decl.c (case_conversion): Likewise.
2603         * semantics.c (finish_static_assert): Call
2604         perform_implicit_conversion_flags.
2606 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2608         * method.c (enum mangling_flags): Delete long-dead enum.
2610 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2612         * parser.c (cp_parser_std_attribute_spec): When
2613         token_pair::require_open / require_close return false simply
2614         return error_mark_node, avoid duplicate cp_parser_error about
2615         expected '(' / ')', respectively.
2617 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2619         PR c++/43486
2620         * call.c (null_ptr_cst_p): Strip location wrappers when
2621         converting from '0' to a pointer type in C++11 onwards.
2622         (conversion_null_warnings): Replace comparison with null_node with
2623         call to null_node_p.
2624         (build_over_call): Likewise.
2625         * cp-gimplify.c (cp_fold): Remove the early bailout when
2626         processing_template_decl.
2627         * cp-lang.c (selftest::run_cp_tests): Call
2628         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2629         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2630         (selftest::run_cp_tests): Move decl to bottom of file.
2631         (null_node_p): New inline function.
2632         (selftest::cp_pt_c_tests): New decl.
2633         (selftest::cp_tree_c_tests): New decl.
2634         * cvt.c (build_expr_type_conversion): Replace comparison with
2635         null_node with call to null_node_p.
2636         * error.c (args_to_string): Likewise.
2637         * except.c (build_throw): Likewise.
2638         * mangle.c (write_expression): Skip location wrapper nodes.
2639         * parser.c (literal_integer_zerop): New function.
2640         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2641         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2642         param of cp_parser_parenthesized_expression_list.  When calling
2643         warn_for_memset, replace integer_zerop calls with
2644         literal_integer_zerop, eliminating the double logical negation
2645         cast to bool.  Eliminate the special-casing for CONST_DECL in
2646         favor of the fold_for_warn within warn_for_memset.
2647         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2648         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2649         maybe_add_location_wrapper on it when wrap_locations_p is true.
2650         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2651         the result for RID_ALIGNOF and RID_SIZEOF.
2652         (cp_parser_builtin_offsetof): Likewise.
2653         * pt.c: Include "selftest.h".
2654         (tsubst_copy): Handle location wrappers.
2655         (tsubst_copy_and_build): Likewise.
2656         (build_non_dependent_expr): Likewise.
2657         (selftest::test_build_non_dependent_expr): New function.
2658         (selftest::cp_pt_c_tests): New function.
2659         * tree.c: Include "selftest.h".
2660         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2661         (selftest::test_lvalue_kind): New function.
2662         (selftest::cp_tree_c_tests): New function.
2663         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2664         (cp_build_binary_op): Replace comparison with null_node with call
2665         to null_node_p.
2666         (build_address): Use location of operand when building address
2667         expression.
2669 2018-01-10  Marek Polacek  <polacek@redhat.com>
2671         PR c++/82541
2672         * call.c (build_conditional_expr_1): Check complain before warning.
2673         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2674         -Wduplicated-branches.
2676 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2678         PR c++/81327
2679         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2680         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2681         args uses and check number of operands too.  Don't strip away any
2682         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2683         Deal with src argument not having pointer type.  Check
2684         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2685         test.
2686         (build_over_call): Call maybe_warn_class_memaccess here on the
2687         original arguments.
2688         (build_cxx_call): Rather than here on converted arguments.
2690 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2692         PR c++/81055
2693         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2694         error_mark_node as second argument.
2696 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2698         PR c++/83734
2699         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2700         in STATEMENT_LIST.  Remove unneeded assert.
2702 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2703             Alan Hayward  <alan.hayward@arm.com>
2704             David Sherwood  <david.sherwood@arm.com>
2706         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2707         VECTOR_CST_NELTS.
2708         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2709         * call.c (build_conditional_expr_1): Likewise.
2710         * decl.c (cp_finish_decomp): Likewise.
2711         * mangle.c (write_type): Likewise.
2712         * typeck.c (structural_comptypes): Likewise.
2713         (cp_build_binary_op): Likewise.
2714         * typeck2.c (process_init_constructor_array): Likewise.
2716 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2718         PR c++/83555
2719         * typeck.c (build_static_cast_1): For static casts to reference types,
2720         call build_base_path with flag_delete_null_pointer_checks as nonnull
2721         instead of always false.  When -fsanitize=null, call
2722         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2723         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2724         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2726 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2728         PR c++/83667
2729         * method.c (make_alias_for): Copy DECL_CONTEXT.
2731 2018-01-03  Marek Polacek  <polacek@redhat.com>
2733         PR c++/83592
2734         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2736 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2738         PR preprocessor/83602
2739         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2740         for builtin macros.
2742         PR c++/83634
2743         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2744         error_mark_node, return error_mark_node.
2746         Update copyright years.
2748 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2750         PR c++/83556
2751         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2752         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2753         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2754         to false and return.
2755         (replace_placeholders): Pass NULL instead of &pset as last argument
2756         to cp_walk_tree.
2758 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2760         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2761         lval var.
2763 Copyright (C) 2018 Free Software Foundation, Inc.
2765 Copying and distribution of this file, with or without modification,
2766 are permitted in any medium without royalty provided the copyright
2767 notice and this notice are preserved.