PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
[official-gcc.git] / gcc / cp / ChangeLog
blob585f111655af8a02570fed398140e10ee4a490ec
1 2018-06-11  Jason Merrill  <jason@redhat.com>
3         PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
4         * class.c (maybe_warn_about_overly_private_class): Handle inherited
5         constructors.
7         PR c++/85963 - -Wunused-but-set with ?: in template.
8         * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
10 2018-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
12         * decl.c (grok_op_properties): Consistently use the location
13         of the decl; remove special casing of POSTINCREMENT_EXPR and
14         POSTDECREMENT_EXPR wrt default arguments.
16 2018-06-05  Jason Merrill  <jason@redhat.com>
18         * constexpr.c (cxx_eval_binary_expression): Special case comparison
19         of pointers to members of the same union.
21 2018-06-11  Jason Merrill  <jason@redhat.com>
23         PR c++/86094 - wrong code with defaulted move ctor.
24         * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
26 2018-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
28         * decl.c (grokfndecl): Use the location_t argument in two more places.
30 2018-06-06  Marek Polacek  <polacek@redhat.com>
32         PR c++/85977
33         * pt.c (unify): If ELTTYPE has no deducible template parms, skip
34         deduction from the list elements.
35         (type_unification_real): Check convertibility of list elements.
37 2018-06-06  Jason Merrill  <jason@redhat.com>
39         PR c++/86060 - ICE on range for with -std=c++98.
40         * parser.c (cp_parser_init_statement): Don't clobber *decl after
41         pedwarn.
43         PR c++/85710 - ICE with -Wmemset-elt-size.
44         * semantics.c (finish_call_expr): Call warn_for_memset here.
45         * parser.c (cp_parser_postfix_expression): Not here.
46         (literal_integer_zerop): No longer static.
47         * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
49 2018-06-05  Marek Polacek  <polacek@redhat.com>
51         PR c++/85976
52         * tree.c (cp_tree_equal): Handle USING_DECL.
54 2018-06-05  Jason Merrill  <jason@redhat.com>
56         PR c++/85731 - wrong error with qualified-id in template.
57         * semantics.c (finish_qualified_id_expr): build_qualified_name
58         for unbound names in the current class.
60 2018-06-04  Jason Merrill  <jason@redhat.com>
62         PR c++/61806 - missed SFINAE with partial specialization.
63         * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
64         parameter to constructor.
65         * pt.c (instantiate_class_template_1): Enable access checking
66         before call to most_specialized_partial_spec.
68         PR c++/85765 - SFINAE and non-type default template arg.
69         * pt.c (type_unification_real): Do full semantic processing if
70         substituting a partial args list replaces all template parms.
72 2018-06-03  Jason Merrill  <jason@redhat.com>
74         PR c++/85739 - ICE with pointer to member template parm.
75         * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
77 2018-06-02  Jason Merrill  <jason@redhat.com>
79         PR c++/85761 - ICE with ill-formed use of const outer variable.
80         * expr.c (mark_use): Handle location wrappers.
82 2018-06-01  Jason Merrill  <jason@redhat.com>
84         PR c++/85764 - bogus 'this' not captured error.
85         * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
86         (nonlambda_method_basetype): Handle NSDMI.
88         CWG 1581: When are constexpr member functions defined?
89         * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
90         (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
92         PR c++/58281 - explicit instantiation of constexpr
93         * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
95         * pt.c (instantiate_decl): Any defaulted function is defined.
97 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
99         PR c++/77777
100         * call.c (resolve_args): Use location of expression, not current input
101         location.
103 2018-05-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
105         Do not warn about zero-as-null when NULL is used.
106         * call.c (conversion_null_warnings): Check for pointer
107         types converted from zero constants.
108         (convert_like_real): Add a warning sentinel at the end.
109         * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
110         check null_node_p.
112 2018-05-30  Jason Merrill  <jason@redhat.com>
114         PR c++/85807 - ICE with call in template NSDMI.
115         * init.c (get_nsdmi): Use push_to/pop_from_top_level.
116         * tree.c (bot_manip): Don't set_flags_from_callee in a template.
118         PR c++/85873 - constant initializer_list array not in .rodata.
119         * tree.c (build_target_expr): Set TREE_READONLY.
120         * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
122         * parser.c (cp_parser_check_condition_declarator): Handle
123         cp_error_declarator.
125 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
127         * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
128         of using it in dead store.
130 2018-05-29  Jason Merrill  <jason@redhat.com>
132         PR c++/67445 - returning temporary initializer_list.
133         PR c++/67711 - assigning from temporary initializer_list.
134         PR c++/48562 - new initializer_list.
135         * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
136         about returning local initializer_list.
137         * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
138         * call.c (build_over_call): Warn about assignment from temporary
139         init_list.
140         * init.c (build_new_1): Warn about 'new std::initializer_list'.
141         (find_list_begin, maybe_warn_list_ctor): New.
142         (perform_member_init): Use maybe_warn_list_ctor.
144 2018-05-29  Marek Polacek  <polacek@redhat.com>
146         PR c++/85883
147         * init.c (build_new): Handle deducing a class with new
148         with more than one argument.
150 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
152         PR c++/85952
153         * init.c (build_aggr_init): For structured binding initialized from
154         array call mark_rvalue_use on the initializer.
156 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
158         * decl2.c (start_static_storage_duration_function): Use
159         splay_tree_delete_pointers.
161 2018-05-25  Jason Merrill  <jason@redhat.com>
163         PR c++/85815 - reference to member of enclosing template.
164         * search.c (lookup_base): Use currently_open_class.
165         (lookup_member): Use it regardless of -fconcepts.
166         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
168         CWG 616, 1213 - value category of subobject references.
169         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
171 2018-05-24  Jason Merrill  <jason@redhat.com>
173         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
174         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
175         generic lambda.
177 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
179         Pedwarn on a non-standard position of a C++ attribute.
180         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
181         after the namespace name.
183 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
185         * cp-tree.h (INDIRECT_TYPE_P): New.
186         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
187         joust): Use it instead of POINTER_TYPE_P.
188         * class.c (update_vtable_entry_for_fn, find_flexarrays,
189         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
190         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
191         * cxx_eval_increment_expression, potential_constant_expression_1):
192         Likewise.
193         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
194         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
195         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
196         cp_ubsan_maybe_instrument_downcast): Likewise.
197         * cvt.c (cp_convert_to_pointer, ocp_convert,
198         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
199         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
200         pp_cxx_offsetof_expression_1): Likewise.
201         * decl.c (grokparms, static_fn_type): Likewise.
202         * decl2.c (grokbitfield): Likewise.
203         * error.c (dump_expr): Likewise.
204         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
205         * init.c (warn_placement_new_too_small): Likewise.
206         * lambda.c (build_capture_proxy, add_capture): Likewise.
207         * parser.c (cp_parser_omp_for_loop): Likewise.
208         * pt.c (convert_nontype_argument, fn_type_unification,
209         uses_deducible_template_parms, check_cv_quals_for_unify,
210         dependent_type_p_r): Likewise.
211         * search.c (check_final_overrider): Likewise.
212         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
213         finish_omp_for): Likewise.
214         * tree.c (cp_build_qualified_type_real): Likewise.
215         * typeck.c (build_class_member_access_expr,
216         finish_class_member_access_expr, build_x_indirect_ref,
217         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
218         Likewise.
220 2018-05-24  Jason Merrill  <jason@redhat.com>
222         PR c++/85864 - literal template and default template arg.
223         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
225 2018-05-24  Marek Polacek  <polacek@redhat.com>
227         PR c++/85847
228         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
229         variable for its result.  Fix a condition.
230         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
232 2018-05-23  Jason Merrill  <jason@redhat.com>
234         Fix cast to rvalue reference from prvalue.
235         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
236         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
237         non-class type.  Handle xvalue argument.
238         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
239         rvalue reference.
240         * semantics.c (finish_compound_literal): Do direct-initialization,
241         not cast, to initialize a reference.
243         CWG 616, 1213 - value category of subobject references.
244         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
245         an xvalue.
246         * typeck2.c (build_m_component_ref): Likewise.
247         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
248         distinction between temporary and xvalue.
250 2018-05-23  Marek Polacek  <polacek@redhat.com>
252         Implement P0614R1, Range-based for statements with initializer.
253         * parser.c (cp_parser_range_based_for_with_init_p): New.
254         (cp_parser_init_statement): Use it.  Parse the optional init-statement
255         for a range-based for loop.
256         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
258 2018-05-22  Jason Merrill  <jason@redhat.com>
260         PR c++/81420 - not extending temporary lifetime.
261         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
262         * class.c (build_base_path): Avoid redundant move of an rvalue.
264         PR c++/85866 - error with .* in default template arg.
265         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
267 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
269         * parser.c (cp_parser_parameter_declaration_list): Remove
270         bool* parameter.
271         (cp_parser_parameter_declaration_clause): Adjust.
272         (cp_parser_cache_defarg): Likewise.
274 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
276         PR c++/84588
277         * parser.c (cp_parser_maybe_commit_to_declaration,
278         cp_parser_check_condition_declarator): New.
279         (cp_parser_simple_declaration): Use the first above.
280         (cp_parser_condition): Use both the above; enforce
281         [stmt.stmt]/2 about the declarator not specifying
282         a function or an array; improve error-recovery.
284 2018-05-20  Jason Merrill  <jason@redhat.com>
286         PR libstdc++/85843 - warning in logic_error copy constructor.
287         * class.c (type_has_user_nondefault_constructor): Check for a
288         user-provided ctor, not user-declared.
290 2018-05-19  Jason Merrill  <jason@redhat.com>
292         * pt.c (tsubst_pack_expansion): Sorry rather than abort
293         on __integer_pack as subexpression of pattern.
295 2018-05-18  Jason Merrill  <jason@redhat.com>
297         PR c++/58407 - deprecated implicit copy ops.
298         * call.c (build_over_call): Warn about deprecated trivial fns.
299         * class.c (classtype_has_user_copy_or_dtor): New.
300         (type_build_ctor_call): Check TREE_DEPRECATED.
301         (type_build_dtor_call): Likewise.
302         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
303         Add checks.  Return bool.  Handle -Wdeprecated-copy.
304         (mark_used): Use it.
305         * decl.c (grokdeclarator): Remove redundant checks.
306         * typeck2.c (build_functional_cast): Likewise.
307         * method.c (lazily_declare_fn): Mark deprecated copy ops.
308         * init.c (build_aggr_init): Only set TREE_USED if there are
309         side-effects.
311 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
313         PR c++/85782
314         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
315         OACC_LOOPs.
317 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
319         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
320         (potential_constant_expression_1): Likewise.
322 2018-05-16  Marek Polacek  <polacek@redhat.com>
324         PR c++/85363
325         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
326         * tree.c (bot_manip): Call set_flags_from_callee for
327         AGGR_INIT_EXPRs too.
329 2018-05-15  Jason Merrill  <jason@redhat.com>
331         * cp-tree.h (cp_expr): Remove copy constructor.
332         * mangle.c (struct releasing_vec): Declare copy constructor.
334         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
336         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
337         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
338         is a throw-expression.
340 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
342         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
343         (FOR_EACH_CLONE): Update.
344         * decl.c (grokdeclarator): Use it.
345         * decl2.c (vague_linkage_p): Likewise.
346         * mangle.c (mangle_decl): Likewise.
347         * method.c (lazily_declare_fn): Likewise.
348         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
349         * repo.c (repo_emit_p): Likewise.
350         * tree.c (decl_linkage): Likewise.
352 2018-05-14  Jason Merrill  <jason@redhat.com>
354         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
355         * tree.c (build_cp_fntype_variant): New.
356         (build_ref_qualified_type, build_exception_variant)
357         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
358         (cxx_type_hash_eq, cp_check_qualified_type): Check
359         TYPE_HAS_LATE_RETURN_TYPE.
360         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
361         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
362         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
363         (adjust_clone_args): Likewise.
364         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
365         build_cp_fntype_variant.
366         (grokdeclarator): Pass late_return_type_p to grokfndecl.
367         (check_function_type): Use cxx_copy_lang_qualifiers.
368         (static_fn_type): Use cxx_copy_lang_qualifiers.
369         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
370         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
371         (change_return_type): Use cxx_copy_lang_qualifiers.
372         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
373         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
374         return type on the declarator like a normal trailing return type.
375         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
376         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
377         * typeck.c (merge_types): Use build_cp_fntype_variant.
379 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
381         * cp-tree.h (TYPE_REF_P): New.
382         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
383         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
384         direct_reference_binding, reference_binding, implicit_conversion,
385         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
386         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
387         build_over_call, perform_implicit_conversion_flags,
388         extend_ref_init_temps, type_has_extended_temps): Use it.
389         * class.c (one_inheriting_sig, check_field_decls,
390         check_bases_and_members, find_flexarrays, finish_struct,
391         fixed_type_or_null): Likewise.
392         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
393         non_const_var_error, cxx_eval_constant_expression,
394         potential_constant_expression_1): Likewise.
395         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
396         cp_genericize_r, cxx_omp_privatize_by_reference,
397         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
398         cp_fold_maybe_rvalue): Likewise.
399         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
400         * cvt.c (build_up_reference, convert_to_reference,
401         convert_from_reference, convert_to_void, noexcept_conv_p,
402         fnptr_conv_p): Likewise.
403         * decl.c (poplevel, check_for_uninitialized_const_var,
404         check_initializer, initialize_local_var, cp_finish_decl,
405         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
406         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
407         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
408         decl_maybe_constant_var_p): Likewise.
409         * error.c (dump_type_prefix, dump_expr): Likewise.
410         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
411         is_admissible_throw_operand_or_catch_parameter): Likewise.
412         * expr.c (mark_use): Likewise.
413         * init.c (build_zero_init_1, build_value_init_noctor,
414         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
415         build_new, build_delete): Likewise.
416         * lambda.c (build_lambda_object): Likewise.
417         * mangle.c (write_expression, write_template_arg): Likewise.
418         * method.c (forward_parm, do_build_copy_constructor,
419         do_build_copy_assign, build_stub_object, constructible_expr,
420         walk_field_subobs): Likewise.
421         * parser.c (cp_parser_omp_for_loop_init,
422         cp_parser_omp_declare_reduction_exprs,
423         cp_parser_omp_declare_reduction): Likewise.
424         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
425         convert_template_argument, tsubst_pack_expansion,
426         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
427         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
428         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
429         value_dependent_expression_p, build_deduction_guide): Likewise.
430         * semantics.c (finish_handler_parms, finish_non_static_data_member,
431         finish_compound_literal, omp_privatize_field,
432         handle_omp_array_sections_1, handle_omp_array_sections,
433         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
434         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
435         finish_omp_clauses, finish_decltype_type, capture_decltype,
436         finish_builtin_launder): Likewise.
437         * tree.c (lvalue_kind, cp_build_reference_type, move,
438         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
439         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
440         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
441         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
442         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
443         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
444         convert_for_initialization,
445         maybe_warn_about_returning_address_of_local, check_return_expr,
446         cp_type_quals, casts_away_constness, non_reference): Likewise.
447         * typeck2.c (cxx_readonly_error, store_init_value,
448         process_init_constructor_record, build_x_arrow, build_functional_cast,
449         add_exception_specifier): Likewise.
451 2018-05-14  Jason Merrill  <jason@redhat.com>
453         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
454         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
456 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
458         PR c/85696
459         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
460         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
461         cxx_omp_predetermined_sharing_1.  Rename old function to ...
462         (cxx_omp_predetermined_sharing_1): ... this.
463         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
464         instead of cxx_omp_predetermined_sharing.
466 2018-05-10  Jason Merrill  <jason@redhat.com>
468         * decl.c (cp_finish_decl): Don't instantiate auto variable.
469         (check_static_variable_definition): Allow auto.
470         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
472         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
473         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
475         Core issue 2310 - conversion to base of incomplete type.
476         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
478         CWG 2267 - list-initialization of reference temporary
479         * call.c (reference_binding): List-initializing a reference
480         temporary is copy-list-initialization.
482         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
484         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
485         instantiation in template context.
487         * class.c (vbase_has_user_provided_move_assign): Use
488         user_provided_p.
490         * lambda.c (lambda_expr_this_capture): Improve logic.
492         * decl.c (make_typename_type): s/parameters/arguments/.
493         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
494         * pt.c (make_pack_expansion): Correct error message.
496 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
498         PR c++/85662
499         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
500         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
501         fold_convert.
503 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
505         PR c++/85400
506         * decl2.c (adjust_var_decl_tls_model): New static function.
507         (comdat_linkage): Call it on a variable.
508         (maybe_make_one_only): Likewise.
510 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
512         PR c++/85713
513         Revert:
514         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
516         PR c++/84588
517         * parser.c (cp_parser_parameter_declaration_list): When the
518         entire parameter-declaration-list is erroneous maybe call
519         abort_fully_implicit_template.
521 2018-05-08  Jason Merrill  <jason@redhat.com>
523         PR c++/85706 - class deduction under decltype
524         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
525         *walk_subtrees whether or not we walked into the operand.
526         (type_uses_auto): Only look at deduced contexts.
528 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
530         PR c++/84588
531         * parser.c (cp_parser_parameter_declaration_list): When the
532         entire parameter-declaration-list is erroneous maybe call
533         abort_fully_implicit_template.
535 2018-05-08  Marek Polacek  <polacek@redhat.com>
537         PR c++/85695
538         * semantics.c (finish_if_stmt_cond): See through typedefs.
540 2018-05-07  Jason Merrill  <jason@redhat.com>
542         PR c++/85646 - lambda visibility.
543         * decl2.c (determine_visibility): Don't mess with template arguments
544         from the containing scope.
545         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
546         thunk.
548 2018-05-07  Nathan Sidwell  <nathan@acm.org>
550         Remove fno-for-scope
551         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
552         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
553         (SET_DECL_SHADOWED_FOR_VAR): Delete.
554         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
555         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
556         Don't declare.
557         * name-lookup.h (struct cp_binding_level): Remove
558         dead_vars_from_for field.
559         * cp-lang.c (cp_init_ts): Delete.
560         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
561         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
562         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
563         (init_shadowed_var_for_decl): Delete.
564         * decl.c (poplevel): Remove shadowed for var handling.
565         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
566         * name-lookup.c (find_local_binding): Remove shadowed for var
567         handling.
568         (check_local_shadow): Likewise.
569         (check_for_out_of_scope_variable): Delete.
570         * parser.c (cp_parser_primary_expression): Remove shadowed for var
571         handling.
572         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
573         * semantics.c (begin_for_scope): Always have a scope.
574         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
575         (begin_range_for_stmt, finish_id_expression): Likewise.
577 2018-05-07  Jason Merrill  <jason@redhat.com>
579         PR c++/85618 - ICE with initialized VLA.
580         * tree.c (vla_type_p): New.
581         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
582         rather than array_of_runtime_bound_p.
584 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
586         * cvt.c (ocp_convert): Early handle the special case of a
587         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
589 2018-05-03  Jason Merrill  <jason@redhat.com>
591         PR c++/85600 - virtual delete failure.
592         * init.c (build_delete): Always save_expr when deleting.
594 2018-05-03  Nathan Sidwell  <nathan@acm.org>
596         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
597         * name-lookup.c (do_pushdecl): Likewise.
599 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
600             Jason Merrill  <jason@redhat.com>
602         PR c++/68374
603         * name-lookup.c (check_local_shadow): Don't handle static old
604         declarations in the block handling locals shadowing locals.
606 2018-05-01  Jason Merrill  <jason@redhat.com>
608         PR c++/85587 - error with scoped enum in template.
609         * semantics.c (finish_qualified_id_expr): Don't return an
610         unqualified IDENTIFIER_NODE.
612 2018-04-30  Jason Merrill  <jason@redhat.com>
614         PR c++/85580 - extern "C" and local variables
615         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
617         PR c++/84701 - unsigned typeof.
618         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
619         of long/short/signed/unsigned.
621         PR c++/85305 - pack in lambda init-capture.
622         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
623         check_for_bare_parameter_packs in a subexpression.
624         (cp_parser_lambda_introducer): Use it.
626         PR c++/61982 - dead stores to destroyed objects.
627         * call.c (build_trivial_dtor_call): New, assigns a clobber.
628         (build_over_call, build_special_member_call): Use it.
629         * cp-tree.h: Declare it.
630         * init.c (build_delete): Remove trivial path.
632         * init.c (build_dtor_call): Use build_special_member_call.
633         (build_delete): Remove redundant uses of save_addr.
635         * decl.c (build_clobber_this): Use build_clobber.
637 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
639         PR c++/85553
640         * init.c (build_zero_init_1): For zero initialization of
641         NULLPTR_TYPE_P type use build_int_cst directly.
643 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
645         PR c++/85515
646         * name-lookup.c (consider_binding_level): Skip compiler-generated
647         variables.
648         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
649         nested if statements into a series of rejection tests.  Reject
650         lambda-ignored entities as suggestions.
652 2018-04-27  Jason Merrill  <jason@redhat.com>
654         * cvt.c (cp_fold_convert): Use convert_ptrmem.
655         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
657 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
659         PR c++/84691
660         * decl.c (grokdeclarator): Clear friendp upon definition in local
661         class definition error.
663 2018-04-27  Jason Merrill  <jason@redhat.com>
665         PR c++/85545 - ICE with noexcept PMF conversion.
666         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
667         build_ptrmemfunc.
668         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
669         adjustment.
670         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
672 2018-04-27  Nathan Sidwell  <nathan@acm.org>
674         * typeck.c (convert_ptrmem): Move local var decls to initialization.
676         * cp-tree.h (TEMPLATE_INFO): Fix comments.
677         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
678         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
679         (dump, print_other_binding_stacks): Remove declarations.
680         * name-lookup.c (print_other_binding_stack): Make static.
681         * pt.c (build_template_decl): Make static.
683 2018-04-26  Jason Merrill  <jason@redhat.com>
685         PR c++/85545 - ICE with noexcept PMF conversion.
686         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
688 2018-04-25  Nathan Sidwell  <nathan@acm.org>
690         PR c++/85437
691         PR c++/49171
692         * cp-tree.h (REINTERPRET_CAST_P): New.
693         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
694         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
695         for non-trivial PTRMEM_CST cases.
696         * typeck.c (build_nop_reinterpret): New.
697         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
698         NOP_EXPRs returned by cp_convert.
700 2018-04-23  Jason Merrill  <jason@redhat.com>
702         PR c++/69560 - wrong alignof(double) on x86.
703         CWG 1879 - Inadequate definition of alignment requirement.
704         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
705         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
706         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
707         (cxx_alignof_expr): Pass it.
708         * parser.c (cp_parser_unary_expression): Pass it.
709         * pt.c (tsubst_copy): Copy it.
710         (tsubst_copy_and_build): Pass it.
711         * decl.c (fold_sizeof_expr): Pass it.
713 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
714             Jason Merrill  <jason@redhat.com>
716         PR c++/85470 - wrong error with static data member.
717         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
718         * typeck2.c (store_init_value): Likewise.
720 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
722         PR c++/85462
723         * cp-tree.h (tinst_level): Remove in_system_header_p member,
724         change refcount member from unsigned char to unsigned short,
725         add refcount_infinity static data member, adjust comments.
726         * pt.c (tinst_level::refcount_infinity): Define.
727         (inc_refcount_use): Remove assert, don't increment if refcount
728         is already refcount_infinity, adjust comment.
729         (dec_refcount_use): Remove assert, don't decrement if refcount
730         is refcount_infinity, adjust comment.
731         (push_tinst_level_loc): Formatting fix.
733 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
735         PR c++/84611
736         * pt.c (lookup_template_class_1): Check pushtag return value for
737         error_mark_node.
739 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
741         PR c++/80290
742         * cp-tree.h (tinst_level::free): Fix whitespace.
744 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
746         PR c++/84630
747         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
748         for error_mark_node.
750 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
752         PR c++/84463
753         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
754         tricks from here to ...
755         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
756         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
758 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
760         PR c++/80290
761         * cp-tree.h (struct tinst_level): Split decl into tldcl and
762         targs.  Add private split_list_p, tree_list_p, and not_list_p
763         inline const predicates; to_list private member function
764         declaration; free public member function declaration; list_p,
765         get_node and maybe_get_node accessors, and refcount data
766         member.  Narrow errors to unsigned short.
767         * error.c (print_instantiation_full_context): Use new
768         accessors.
769         (print_instantiation_partial_context_line): Likewise.  Drop
770         const from tinst_level-typed parameter.
771         * mangle.c (mangle_decl_string): Likewise.
772         * pt.c (freelist): New template class.
773         (tree_list_freelist_head): New var.
774         (tree_list_freelist): New fn, along with specializations.
775         (tinst_level_freelist_head): New var.
776         (pending_template_freelist_head): Likewise.
777         (tinst_level_freelist, pending_template_freelist): New fns.
778         (tinst_level::to_list, tinst_level::free): Define.
779         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
780         (set_refcount_ptr): New template fn.
781         (add_pending_template): Adjust for refcounting, freelists and
782         new accessors.
783         (neglectable_inst_p): Take a NULL d as a non-DECL.
784         (limit_bad_template_recursion): Use new accessors.
785         (push_tinst_level): New overload to create the list.
786         (push_tinst_level_loc): Make it static, split decl into two
787         args, adjust tests and initialization to cope with split
788         lists, use freelist, adjust for refcounting.
789         (push_tinst_level_loc): New wrapper with the old interface.
790         (pop_tinst_level): Adjust for refcounting.
791         (record_last_problematic_instantiation): Likewise.
792         (reopen_tinst_level): Likewise.  Use new accessors.
793         (instantiate_alias_template): Adjust for split list.
794         (fn_type_unification): Likewise.
795         (get_partial_spec_bindings): Likewise.
796         (instantiate_pending_templates): Use new accessors.  Adjust
797         for refcount.  Release pending_template to freelist.
798         (instantiating_current_function_p): Use new accessors.
800 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
802         PR c++/85039
803         * parser.c (cp_parser_builtin_offset): Reject type definitions.
804         * mangle.c (nested_anon_class_index): Avoid crash returning -1
805         if we've seen errors.
807 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
809         PR c++/85385
810         * name-lookup.c (macro_use_before_def::maybe_make): New function,
811         checking that the use is indeed before the definition.
812         (macro_use_before_def::macro_use_before_def): Make private.
813         (macro_use_before_def::~macro_use_before_def): Make private.  Move
814         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
815         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
816         than using new directly.
818 2018-04-12  Jason Merrill  <jason@redhat.com>
820         PR c++/85356 - ICE with pointer to member function.
821         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
822         flag_noexcept_type.  Build the new spec within the function context.
823         * except.c (build_noexcept_spec): Do get constant value in templates
824         if flag_noexcept_type.
825         * decl.c (check_redeclaration_exception_specification): Don't
826         instantiate noexcept on a dependent declaration.
828 2018-04-12  Marek Polacek  <polacek@redhat.com>
830         PR c++/85258
831         * constexpr.c (reduced_constant_expression_p): Return false for null
832         trees.
834 2018-04-11  Marek Polacek  <polacek@redhat.com>
836         PR c++/85032
837         * constexpr.c (potential_constant_expression_1): Consider conversions
838         from classes to literal types potentially constant.
840 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
842         PR c++/70808
843         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
844         the type like TYPE_PTR_OR_PTRMEM_P.
846 2018-04-10  Jason Merrill  <jason@redhat.com>
848         PR debug/65821 - wrong location for main().
849         * call.c (clear_location_r, convert_default_arg): Revert.
850         * tree.c (break_out_target_exprs): Add clear_location parm.
851         (struct bot_data): New.
852         (bot_manip): Clear location if requested.
853         * init.c (get_nsdmi): Pass clear_location.
855 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
857         PR c++/85110
858         * call.c (get_fndecl_argument_location): Make non-static.
859         * cp-tree.h (get_fndecl_argument_location): New decl.
860         * typeck.c (convert_for_assignment): When complaining due to
861         conversions for an argument, show the location of the parameter
862         within the decl.
864 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
866         PR c++/85312 - P0962 cleanup
867         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
868         diagnostics.
870 2018-04-10  Jason Merrill  <jason@redhat.com>
872         PR debug/65821 - wrong location for main().
873         * call.c (clear_location_r): New.
874         (convert_default_arg): Use it.
875         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
877         PR c++/85285 - ICE with flexible array after substitution.
878         * pt.c (instantiate_class_template_1): Check for flexible array in
879         union.
881 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
883         PR c++/85227
884         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
885         issue a pedwarn and defer trying to do bindings.
887 2018-04-09  Jason Merrill  <jason@redhat.com>
889         PR c++/85279 - dump_expr doesn't understand decltype.
890         * error.c (dump_expr): Handle DECLTYPE_TYPE.
892         PR c++/85262 - ICE with redundant qualification on constructor.
893         * call.c (build_new_method_call_1): Move make_args_non_dependent
894         after A::A() handling.
896         PR c++/85277 - ICE with invalid offsetof.
897         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
898         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
900         PR c++/85264 - ICE with excess template-parameter-list.
901         * parser.c (cp_parser_check_template_parameters): Add template_id_p
902         parameter.  Don't allow an extra template header if true.
903         (cp_parser_class_head): Pass template_id_p.
904         (cp_parser_elaborated_type_specifier): Likewise.
905         (cp_parser_alias_declaration): Likewise.
906         (cp_parser_check_declarator_template_parameters): Likewise.
908 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
910         PR c++/85194
911         * parser.c (cp_parser_simple_declaration): For structured bindings,
912         if *maybe_range_for_decl is NULL after parsing it, set it to
913         error_mark_node.
915 2018-04-09  Jason Merrill  <jason@redhat.com>
917         PR c++/85256 - ICE capturing pointer to VLA.
918         * lambda.c (add_capture): Distinguish between variable-size and
919         variably-modified types.
921 2018-04-06  Jason Merrill  <jason@redhat.com>
923         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
924         * pt.c (extract_locals_r): Remember local typedefs.
926 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
928         PR c++/84269
929         * name-lookup.c (struct std_name_hint): Move out of
930         get_std_name_hint; add field "min_dialect".
931         (get_std_name_hint): Add min_dialect values to all initializers.
932         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
933         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
934         <shared_mutex>, <string_view>, <thread>, and <variant>.
935         Add fstream, ifstream, and ofstream to <fstream>.
936         Add istringstream, ostringstream, and stringstream to <sstream>.
937         Add basic_string to <string>.
938         Add tuple_element and tuple_size to <tuple>.
939         Add declval to <utility>.
940         Fix ordering of <queue> and <tuple>.
941         Return a std_name_hint, rather than a const char *.
942         (get_cxx_dialect_name): New function.
943         (maybe_suggest_missing_std_header): Detect names that aren't yet
944         available in the current dialect, and instead of suggesting a
945         missing #include, warn about the dialect.
947 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
949         PR c++/85210
950         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
951         errorcount is set if tsubst doesn't return a VAR_DECL.
953 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
955         PR c++/85021
956         * name-lookup.c (using_directives_contain_std_p): New function.
957         (has_using_namespace_std_directive_p): New function.
958         (suggest_alternatives_for): Simplify if/else logic using early
959         returns.  If no candidates were found, and there's a
960         "using namespace std;" directive, call
961         maybe_suggest_missing_std_header.
962         (maybe_suggest_missing_header): Split later part of the function
963         into..
964         (maybe_suggest_missing_std_header): New.
966 2018-04-06  Jason Merrill  <jason@redhat.com>
968         PR c++/85242 - ICE with class definition in template parm.
969         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
970         processing_template_parmlist.
972         PR c++/85240 - LTO ICE with using of undeduced auto fn.
973         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
975 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
977         PR c++/85209
978         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
979         is not prev, if prev == decl.
981         PR c++/85208
982         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
983         maybe_apply_pragma_weak here...
984         (cp_maybe_mangle_decomp): ... but call it here instead.
986 2018-04-05  Jason Merrill  <jason@redhat.com>
988         PR c++/85136 - ICE with designated init in template.
989         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
990         designated initializer.
991         (check_array_designated_initializer): Update ce->index with the
992         constant value.
994         PR c++/83808 - ICE with VLA initialization.
995         * typeck2.c (process_init_constructor_array): Don't require a VLA
996         initializer to have VLA type.
998 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
1000         PR c++/80956
1001         * call.c (convert_like_real): Fail gracefully for a broken
1002         std::initializer_list, missing a definition.
1004         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
1006 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
1008         PR c++/84792
1009         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
1010         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
1012 2018-04-05  Jason Merrill  <jason@redhat.com>
1014         PR c++/82152 - ICE with class deduction and inherited ctor.
1015         * pt.c (do_class_deduction): Ignore inherited ctors.
1017         PR c++/84665 - ICE with array of empty class.
1018         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
1020         PR c++/85228 - ICE with lambda in enumerator in template.
1021         * pt.c (bt_instantiate_type_proc): Don't assume
1022         CLASSTYPE_TEMPLATE_INFO is non-null.
1024 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
1026         Implement P0969
1027         * decl.c (find_decomp_class_base): Check accessibility instead
1028         of declared access, adjust diagnostic.
1030 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
1032         Implement P0961
1033         * decl.c (get_tuple_decomp_init): Check the templatedness
1034         of a member get.
1036 2018-04-05  Jason Merrill  <jason@redhat.com>
1038         PR c++/85200 - ICE with constexpr if in generic lambda.
1039         * pt.c (extract_locals_r): Don't record the local specs of variables
1040         declared within the pattern.
1042 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
1044         PR c++/84979
1045         * pt.c (check_auto_in_tmpl_args): New.
1046         (tsubst_qualified_id): Use it to reject template args
1047         referencing auto for non-type templates.
1048         * parser.c (cp_parser_template_id): Likewise.
1049         * cp-tree.h (check_auto_in_tmpl_args): Declare.
1050         * typeck2.c (build_functional_cast): Report correct location
1051         for invalid use of auto.
1053 2018-04-04  Jason Merrill  <jason@redhat.com>
1055         PR c++/85215 - ICE with copy-init from conversion.
1056         * call.c (merge_conversion_sequences): Fix type of direct binding
1057         sequence.
1059         PR c++/84938 - ICE with division by ~-1.
1060         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
1062         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
1063         * parser.c (cp_parser_mem_initializer_list): Call
1064         check_for_bare_parameter_packs.
1066 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
1068         PR inline-asm/85172
1069         * constexpr.c (cxx_eval_builtin_function_call): For calls to
1070         builtin_valid_in_constant_expr_p functions, don't call
1071         cxx_eval_constant_expression if argument is not
1072         potential_constant_expression.
1074         PR c++/85146
1075         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
1076         argument.
1077         * semantics.c (calculate_bases): Add complain argument.  Use
1078         complete_type_or_maybe_complain instead of just complete_type and
1079         return an empty vector if it fails.  Move make_tree_vector () call
1080         after early return.  Formatting fixes.
1081         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
1082         end.
1083         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
1084         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
1085         calculate_direct_bases callers, formatting fixes.
1087 2018-04-04  Jason Merrill  <jason@redhat.com>
1089         PR c++/85006 - -fconcepts ICE with A<auto...> return type
1090         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
1092         PR c++/85200 - ICE with constexpr if in generic lambda.
1093         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
1095         PR c++/84221 - bogus -Wunused with attribute and template.
1096         * decl2.c (is_late_template_attribute): Handle unused and used
1097         normally on non-TYPE_DECL.
1099         PR c++/85135 - ICE with omitted template arguments.
1100         * decl.c (grokdeclarator): Catch deduced class type in trailing
1101         return type.
1103         PR c++/85133 - ICE with missing concept initializer.
1104         * decl.c (cp_finish_decl): If a concept initializer is missing, use
1105         true.
1107         PR c++/85118 - wrong error with generic lambda and std::bind.
1108         * call.c (add_template_conv_candidate): Disable if there are any
1109         call operators.
1111         PR c++/85141 - ICE with compound assignment and static member fn.
1112         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
1113         compound assignment.
1115         PR c++/85148 - ICE with 'this' in array NSDMI.
1116         * tree.c (replace_placeholders_r): Use handled_component_p.
1118 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
1120         PR c++/65923
1121         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
1122         * parser.c (cp_parser_unqualified_id): ..not here.
1124 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
1126         PR c++/84943
1127         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
1128         used.
1129         * decl2.c (mark_used): Return without effects if tf_conv.
1131 2018-04-03  Jason Merrill  <jason@redhat.com>
1133         PR c++/85092 - C++17 ICE with unused list constructor.
1134         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
1135         from a TARGET_EXPR.
1137         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
1138         * constexpr.c (cxx_eval_builtin_function_call): Only defer
1139         __builtin_constant_p if ctx->quiet.
1141 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
1143         PR c++/84768
1144         * pt.c (rewrite_template_parm): If the first argument is
1145         error_mark_node return it immediately.
1146         (build_deduction_guide): Check the return value of the
1147         latter for error_mark_node.
1148         (do_class_deduction): Check the return value of the latter.
1150 2018-04-03  Jason Merrill  <jason@redhat.com>
1152         * semantics.c (finish_if_stmt_cond): Use
1153         instantiation_dependent_expression_p.
1155         PR c++/85149 - generic lambda and constexpr if.
1156         * pt.c (build_extra_args, add_extra_args): Split from
1157         tsubst_pack_expansion.
1158         (tsubst_expr) [IF_STMT]: Use them.
1159         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
1161         * typeck.c (merge_types): Limit matching attribute shortcut to
1162         the default case.
1164 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
1166         PR c++/85147
1167         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
1169         PR c++/85140
1170         * name-lookup.c (handle_namespace_attrs): Return early if attributes
1171         is error_mark_node.
1173         PR c++/85134
1174         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
1175         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
1176         instead for static data members clear init and set DECL_EXTERNAL.
1178 2018-04-02  Jason Merrill  <jason@redhat.com>
1180         PR c++/64095 - auto... parameter pack.
1181         * parser.c (cp_parser_parameter_declaration): Handle turning autos
1182         into packs here.
1183         (cp_parser_parameter_declaration_list): Not here.
1185 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
1187         PR c++/85027
1188         * class.c (instantiate_type): Peel off SAVE_EXPR before
1189         BASELINK.
1191 2018-03-30  Jason Merrill  <jason@redhat.com>
1193         * typeck2.c (process_init_constructor_record): Use
1194         init_list_type_node for the CONSTRUCTOR around an anonymous union
1195         designated initializer.
1197 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
1199         PR c++/84791
1200         * semantics.c (finish_omp_reduction_clause): If
1201         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
1202         even if processing_template_decl.
1204 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1206         PR c++/84269
1207         * name-lookup.c (get_std_name_hint): Add names from <memory>,
1208         <tuple>, and <utility>.
1210 2018-03-29  Jason Merrill  <jason@redhat.com>
1212         PR c++/85093 - too many template args with pack expansion.
1213         * pt.c (coerce_template_parms): Keep pack expansion args that will
1214         need to be empty.
1216 2018-03-29  Jason Merrill  <jason@redhat.com>
1218         * pt.c (build_non_dependent_expr): Propagate expr location.
1220 2018-03-27  Jason Merrill  <jason@redhat.com>
1222         PR c++/85060 - wrong-code with call to base member in template.
1223         * search.c (any_dependent_bases_p): Check uses_template_parms
1224         rather than processing_template_decl.
1226 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1228         PR c++/85110
1229         * typeck.c (convert_for_assignment): When complaining due to
1230         conversions for an argument, attempt to use the location of the
1231         argument.
1233 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
1235         PR c++/85028
1236         * pt.c (tsubst_default_argument): Early return if the type of the
1237         parameter is erroneous.
1239 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
1241         PR c++/84973
1242         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
1243         templates.
1245         PR c++/84968
1246         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
1248 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1250         PR c++/85067
1251         * method.c (defaulted_late_check): Partially revert r253321 changes,
1252         do not early return upon error.
1254 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1256         PR c++/85077
1257         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
1258         type call fold to generate VECTOR_CSTs when possible.
1260         PR c++/85076
1261         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
1262         return it right away.
1264 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
1266         * search.c (check_final_overrider): Use inform instead of error
1267         for the diagnostics of the overridden functions.  Tweak wording.
1269 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1271         PR c++/85068
1272         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
1273         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
1275 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1276             Jason Merrill  <jason@redhat.com>
1278         PR c++/84632
1279         * init.c (build_aggr_init): When initializing from array,
1280         reject anything but CONSTRUCTORs and TARGET_EXPRs.
1281         (build_vec_init): Handle separately ARRAY_TYPEs.
1283 2018-03-26  Jason Merrill  <jason@redhat.com>
1285         PR c++/85062 - ICE with alignas in wrong place.
1286         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
1287         here.
1289         PR c++/85049 - ICE with __integer_pack.
1290         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
1291         * cp-tree.h (TEMPLATE_PARM_P): New.
1293 2018-03-23  Jason Merrill  <jason@redhat.com>
1295         PR c++/78489 - wrong SFINAE behavior.
1297         PR c++/84489
1298         * pt.c (type_unification_real): Don't defer substitution failure.
1300 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
1302         PR c++/85015
1303         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
1304         result.
1306         PR c++/84942
1307         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
1308         cp_build_unary_op call with gcc_unreachable ().
1310 2018-03-23  Marek Polacek  <polacek@redhat.com>
1312         PR c++/85045
1313         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
1314         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
1315         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
1317 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
1319         Implement P0962
1320         * parser.c (cp_parser_perform_range_for_lookup): Change
1321         the condition for deciding whether to use members.
1323 2018-03-23  Marek Polacek  <polacek@redhat.com>
1325         PR c++/85033
1326         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
1328 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
1330         PR c++/71251
1331         * parser.c (cp_parser_alias_declaration): Call
1332         parser_check_template_parameters.
1334         PR c++/84789
1335         * pt.c (resolve_typename_type): Drop assert that stopped
1336         simplification to template-independent types.  Add assert to
1337         verify the initial scope is template dependent.
1338         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1339         Reparse the id expression as a type-name, not a declarator.
1341         PR c++/84729
1342         * init.c (build_vec_init): Error at parenthesized array init.
1344         PR c++/84610
1345         PR c++/84642
1346         PR c++/84942
1347         * cp-tree.h (temp_override): New template class, generalizing
1348         a cleanup that was only used...
1349         * parser.c (cp_parser_parameter_declaration_clause):
1350         ... here for auto_is_implicit_function_template_parm_p.
1351         (cp_parser_gnu_attributes_opt): Use it here as well.
1352         (cp_parser_std_attribute): Likewise.
1354 2018-03-22  Marek Polacek  <polacek@redhat.com>
1356         PR c++/84854
1357         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
1358         is boolean.
1360 2018-03-21  Jason Merrill  <jason@redhat.com>
1362         PR c++/81311 - wrong C++17 overload resolution.
1363         * call.c (build_user_type_conversion_1): Remove C++17 code.
1364         (conv_binds_ref_to_prvalue): New.
1365         (build_over_call): Handle C++17 copy elision.
1366         (build_special_member_call): Only do C++17 copy elision here if the
1367         argument is already the right type.
1369 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
1371         PR c++/71965
1372         * init.c (build_vec_init): Silence error, former sorry,
1373         without tf_error.
1375         PR c++/84610
1376         PR c++/84642
1377         * parser.c (abort_fully_implicit_template_p): New.
1378         (cp_parser_skip_to_end_of_statement): Use it.
1379         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
1380         (finish_fully_implicit_template_p): Clear
1381         implicit_template_parms and implicit_template_scope.
1383 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
1385         PR c++/84972
1386         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
1387         error_mark_node when check_array_designated_initializer fails.
1389 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
1391         PR c++/84961
1392         * cp-tree.h (genericize_compound_lvalue): Declare.
1393         * typeck.c (genericize_compound_lvalue): New function.
1394         (unary_complex_lvalue, cp_build_modify_expr): Use it.
1395         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
1396         and PREDECREMENT_EXPR in output and "m" constrained input operands with
1397         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
1398         COMPOUND_EXPR operand.
1400 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1402         PR c++/85008
1403         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
1404         * decl2.c (vague_linkage_p): Likewise.
1406 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
1408         PR c++/84994
1409         * constexpr.c (constexpr_fn_retval): Make non-"static".
1410         * cp-tree.h (constexpr_fn_retval): New decl.
1411         * search.c (direct_accessor_p): Update leading comment.
1412         (reference_accessor_p): Likewise.
1413         (field_accessor_p): Replace check that function body is a
1414         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
1415         indentation of "field_type" decl.
1417 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1419         PR c++/84804
1420         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
1421         complete classes.
1423 2018-03-21  Martin Sebor  <msebor@redhat.com>
1425         PR c++/84850
1426         * call.c (first_non_public_field): New template and function.
1427         (first_non_trivial_field): New function.
1428         (maybe_warn_class_memaccess): Call them.
1430 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
1432         PR c++/84892
1433         * search.c (field_accessor_p): Use class_of_this_parm rather than
1434         type_of_this_parm, to check that "this" is a "const T *", rather
1435         than a "T *const".
1437 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1439         * class.c (finish_struct_anon_r): Refactor, deprecate anything
1440         other than public non-static data members.
1441         * parser.c (cp_parser_init_declarator): Deprecate attributes after
1442         parenthesized initializer.
1444         PR c++/84836
1445         * name-lookup.c (update_binding): Correct logic for local binding
1446         update.
1448 2018-03-21  Marek Polacek  <polacek@redhat.com>
1450         PR c++/71638, ICE with NSDMI and reference.
1451         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1452         even when we replace an element.
1454 2018-03-20  Marek Polacek  <polacek@redhat.com>
1456         PR c++/84978, ICE with NRVO.
1457         * constexpr.c (cxx_eval_constant_expression): Handle the case when
1458         a RESULT_DECL isn't in the hash map.
1460 2018-03-20  Jason Merrill  <jason@redhat.com>
1462         PR c++/84978, ICE with NRVO.
1463         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
1464         (cp_get_callee_fndecl_nofold): New.
1465         * cp-gimplify.c (cp_genericize_r): Use it instead.
1466         * call.c (check_self_delegation): Likewise.
1468 2018-03-20  Nathan Sidwell  <nathan@acm.org>
1470         PR c++/84962
1471         * name-lookup.c (pushdecl_class_level): Push anon-struct's
1472         member_vec, if there is one.
1474         PR c++/84970
1475         * cp-tree.h (lookup_list_keep): Declare.
1476         * tree.c (lookup_list_keep): New, broken out of ...
1477         (build_min): ... here.  Call it.
1478         * decl.c (cp_finish_decl): Call lookup_list_keep.
1480 2018-03-19  Jason Merrill  <jason@redhat.com>
1482         PR c++/84937 - ICE with class deduction and auto.
1483         * pt.c (rewrite_template_parm): Fix auto handling.
1485 2018-03-19  Marek Polacek  <polacek@redhat.com>
1487         PR c++/84925
1488         * pt.c (enclosing_instantiation_of): Check if fn is null.
1490         PR c++/84927
1491         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1492         as we evaluate the elements.
1493         (cxx_eval_constant_expression): Verify constructor's flags
1494         unconditionally.
1496 2018-03-19  Jason Merrill  <jason@redhat.com>
1498         PR c++/71834 - template-id with too few arguments.
1499         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
1501 2018-03-19  Nathan Sidwell  <nathan@acm.org>
1503         PR c++/84835
1504         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
1505         * pt.c (build_template_decl): Propagate language linkage.
1507         PR c++/84812
1508         * name-lookup.c (set_local_extern_decl_linkage): Defend against
1509         ambiguous lookups.
1511 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1513         PR c/84910
1514         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
1515         diagnostics.
1516         * method.c (synthesize_method): Likewise.
1517         * pt.c (convert_nontype_argument): Likewise.
1519 2018-03-16  Jason Merrill  <jason@redhat.com>
1521         PR c++/84720 - ICE with rvalue ref non-type argument.
1522         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
1523         (convert_nontype_argument): Revert earlier change.
1525         PR c++/80227 - SFINAE and negative array size.
1526         * decl.c (compute_array_index_type): Use
1527         build_converted_constant_expr and valid_constant_size_p.
1529         PR c++/84906 - silent wrong code with ambiguous conversion.
1530         * call.c (build_user_type_conversion_1): Set need_temporary_p on
1531         ambiguous conversion.
1532         (convert_like_real): Check it.
1534         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
1535         * call.c (build_special_member_call): Don't convert an init-list
1536         argument directly to the class type.
1538 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1540         PR c++/79937
1541         PR c++/82410
1542         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
1543         (find_placeholder): Declare.
1544         * tree.c (struct replace_placeholders_t): Add exp member.
1545         (replace_placeholders_r): Don't walk into ctors with
1546         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
1547         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
1548         (replace_placeholders): Initialize data.exp.
1549         (find_placeholders_r, find_placeholders): New functions.
1550         * typeck2.c (process_init_constructor_record,
1551         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
1552         if adding NSDMI on which find_placeholder returns true.
1553         * call.c (build_over_call): Don't call replace_placeholders here.
1554         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
1555         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
1556         TARGET_EXPR_INITIAL.
1557         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
1558         ctor.
1560 2018-03-16  Jason Merrill  <jason@redhat.com>
1562         PR c++/83911 - ICE with multiversioned constructor.
1563         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
1564         dispatchere here.
1565         * call.c (build_over_call): Not here.
1567 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1569         PR c++/84874
1570         * decl.c (reshape_init_class): Don't assert d->cur->index == field
1571         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
1573 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
1575         PR c++/84222
1576         * cp-tree.h (cp_warn_deprecated_use): Declare.
1577         * tree.c (cp_warn_deprecated_use): New function.
1578         * typeck2.c (build_functional_cast): Use it.
1579         * decl.c (grokparms): Likewise.
1580         (grokdeclarator): Likewise.  Temporarily push nested class scope
1581         around grokparms call for out of class member definitions.
1583 2018-03-14  Jason Merrill  <jason@redhat.com>
1585         PR c++/84820 - no error for invalid qualified-id.
1586         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
1587         cp_error_declarator.
1589         PR c++/84801 - ICE with unexpanded pack in lambda.
1590         * pt.c (check_for_bare_parameter_packs): Don't return early for a
1591         lambda in non-template context.
1593         PR c++/81236 - auto variable and auto function
1594         * pt.c (tsubst_baselink): Update the type of the BASELINK after
1595         mark_used.
1597 2018-03-14  Jason Merrill  <jason@redhat.com>
1599         PR c++/83916 - ICE with template template parameters.
1600         * pt.c (convert_template_argument): Don't substitute into type of
1601         non-type parameter if we don't have enough arg levels.
1602         (unify): Likewise.
1604 2018-03-14  Marek Polacek  <polacek@redhat.com>
1606         PR c++/84596
1607         * semantics.c (finish_static_assert): Check
1608         instantiation_dependent_expression_p instead of
1609         {type,value}_dependent_expression_p.
1611 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1612             Jason Merrill  <jason@redhat.com>
1614         PR c++/82336 - link error with list-init default argument.
1615         * decl.c (check_default_argument): Unshare an initializer list.
1617 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1619         PR c++/84843
1620         * decl.c (duplicate_decls): For redefinition of built-in, use error
1621         and return error_mark_node.  For redeclaration, return error_mark_node
1622         rather than olddecl if !flag_permissive.
1624 2018-03-13  Jason Merrill  <jason@redhat.com>
1626         PR c++/82565 - ICE with concepts and generic lambda.
1627         * pt.c (instantiate_decl): Clear fn_context for lambdas.
1629 2018-03-13  Jason Merrill  <jason@redhat.com>
1631         PR c++/84720 - ICE with rvalue ref non-type argument.
1632         * pt.c (convert_nontype_argument): Handle rvalue references.
1634         PR c++/84839 - ICE with decltype of parameter pack.
1635         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
1636         instantiating dummy parms.
1638         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
1639         parameter even without -Wpedantic.
1641         PR c++/84798 - ICE with auto in abstract function declarator.
1642         * parser.c (cp_parser_parameter_declaration_clause): Check
1643         parser->default_arg_ok_p.
1645 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1647         PR c++/84808
1648         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
1649         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
1650         sizetype.  Formatting fixes.
1652 2018-03-12  Jason Merrill  <jason@redhat.com>
1654         PR c++/84355 - ICE with deduction for member class template.
1655         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
1656         CLASS_PLACEHOLDER_TEMPLATE.
1658         PR c++/84802 - ICE capturing uninstantiated class.
1659         * lambda.c (build_capture_proxy): Call complete_type.
1661 2018-03-09  Jason Merrill  <jason@redhat.com>
1663         PR c++/84770 - ICE with typedef and parameter pack.
1664         * pt.c (verify_unstripped_args_1): Split out from
1665         verify_unstripped_args.
1667         PR c++/84785 - ICE with alias template and default targs.
1668         * pt.c (type_unification_real): Set processing_template_decl if
1669         saw_undeduced == 1.
1671         PR c++/84752 - ICE with capture of constexpr array.
1672         * call.c (standard_conversion): Set rvaluedness_matches_p on the
1673         identity conversion under ck_lvalue.
1675 2018-03-09  Jason Merrill  <jason@redhat.com>
1676             Paolo Carlini  <paolo.carlini@oracle.com>
1678         PR c++/71169
1679         PR c++/71832
1680         * pt.c (any_erroneous_template_args_p): New.
1681         * cp-tree.h (any_erroneous_template_args_p): Declare it.
1682         * parser.c (cp_parser_class_specifier_1): Use it.
1684 2018-03-09  Jason Merrill  <jason@redhat.com>
1686         PR c++/84726 - unnecessary capture of constant vars.
1687         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1688         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1689         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1690         * lambda.c (is_constant_capture_proxy)
1691         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1692         (prune_lambda_captures): New.
1693         (finish_lambda_function): Call prune_lambda_captures.
1695 2018-03-09  Jason Merrill  <jason@redhat.com>
1696             Jakub Jelinek  <jakub@redhat.com>
1698         PR c++/84076
1699         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1700         build ADDR_EXPR with REFERENCE_TYPE.
1701         (build_over_call): For purposes of check_function_arguments, if
1702         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1703         its operand rather than the argument itself.
1705 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
1707         PR c++/84724
1708         * decl.c (duplicate_decls): Don't override __* prefixed builtins
1709         except for __[^b]*_chk, instead issue permerror and for -fpermissive
1710         also a note and return olddecl.
1712 2018-03-09  Nathan Sidwell  <nathan@acm.org>
1714         PR c++/84733
1715         * name-lookup.c (do_pushdecl_with_scope): Only clear
1716         current_function_decl when pushing a non-class (i.e. namespace)
1717         scope.
1719 2018-03-08  Jason Merrill  <jason@redhat.com>
1720             Jakub Jelinek  <jakub@redhat.com>
1722         PR c++/80598
1723         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1724         not calling mark_used for the benefit of -Wunused-function warning.
1726 2018-03-06  Jason Merrill  <jason@redhat.com>
1728         * lambda.c (is_capture_proxy_with_ref): Remove.
1729         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1731 2018-03-06  Marek Polacek  <polacek@redhat.com>
1733         PR c++/84684
1734         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1735         arguments.
1737 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
1739         PR c++/84231
1740         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1741         only while processing template decls.
1742         * typeck.c (build_x_conditional_expr): Move wrapping of
1743         reference type around type...
1744         * call.c (build_conditional_expr_1): ... here.  Rename
1745         is_lvalue to is_glvalue.
1746         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1747         INDIRECT_REF of COND_EXPR too.
1749         PR c++/84593
1750         * init.c (build_zero_init_1): Zero-initialize references.
1752         PR c++/84492
1753         * semantics.c (finish_stmt_expr_expr): Reject unresolved
1754         overloads used as stmt expr values.
1756 2018-03-05  Jason Merrill  <jason@redhat.com>
1758         PR c++/84708 - ICE with lambda in local class NSDMI.
1759         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1760         context.
1762 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1764         PR c++/84684
1765         * constexpr.c (constexpr_call_hasher::equal): Return false if
1766         lhs->hash != rhs->hash.  Change return 1 to return true and
1767         return 0 to return false.
1769 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1771         PR c++/84702
1772         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1774 2018-03-05  Marek Polacek  <polacek@redhat.com>
1776         PR c++/84707
1777         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1778         UDLIT_OPER_P.
1780 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1782         PR c++/84694
1783         * friend.c (do_friend): Restore check for identifier_p inside
1784         TEMPLATE_ID_EXPR.
1786 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1788         PR c++/84618
1789         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1790         involving a VAR_DECL or a PARM_DECL.
1792 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1793             Jason  Merrill  <jason@redhat.com>
1794             Nathan Sidwell  <nathan@acm.org>
1796         PR c++/84497
1797         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1799 2018-03-03  Jason Merrill  <jason@redhat.com>
1801         PR c++/84686 - missing volatile loads.
1802         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1804 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1806         PR c++/71464
1807         * optimize.c (maybe_thunk_body): Bail out immediately if either
1808         fns[0] or fns[1] is null.
1810 2018-03-02  Marek Polacek  <polacek@redhat.com>
1812         PR c++/84578
1813         * constexpr.c (get_array_or_vector_nelts): New.
1814         (cxx_eval_array_reference): Use it.
1815         (cxx_eval_vec_init_1): Likewise.
1816         (cxx_eval_store_expression): Likewise.
1818 2018-03-02  Jason Merrill  <jason@redhat.com>
1820         * semantics.c (force_paren_expr): Remove redundant test.
1822 2018-03-02  Marek Polacek  <polacek@redhat.com>
1824         PR c++/84663
1825         * decl.c (cp_complete_array_type): Check error_mark_node.
1827         PR c++/84664
1828         * typeck.c (cp_perform_integral_promotions): Check the result of
1829         mark_rvalue_use.
1831 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1833         PR c++/84662
1834         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1835         RETURN instead of return.
1836         <case POINTER_PLUS_EXPR>: Likewise.
1837         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1838         it instead of wrapping it into CONVERT_EXPR.
1840 2018-03-02  Jason Merrill  <jason@redhat.com>
1842         Fix MIPS16 ICE.
1843         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1845 2018-03-02  Marek Polacek  <polacek@redhat.com>
1847         PR c++/84590
1848         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1849         wrapped in VIEW_CONVERT_EXPR.
1851 2018-03-01  Martin Sebor  <msebor@redhat.com>
1853         PR c++/84294
1854         * decl.c (check_redeclaration_no_default_args): Merge attributes
1855         specified on redeclarations of the same function template.
1856         Remove dead code.
1858 2018-03-01  Marek Polacek  <polacek@redhat.com>
1859             Jason Merrill  <jason@redhat.com>
1861         PR c++/84582
1862         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1863         a template.
1864         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1865         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1866         of instantiate_non_dependent_expr.
1867         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1869 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1871         PR c++/84434
1872         * name-lookup.c (member_vec_dedup): Remove manually peeled
1873         iteration.  Ignore dependent ctor inheritance.
1875 2018-03-01  Jason Merrill  <jason@redhat.com>
1877         PR c++/71569 - decltype of template.
1878         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1880 2018-03-01  Marek Polacek  <polacek@redhat.com>
1882         PR c++/84596
1883         * constexpr.c (require_rvalue_constant_expression): New function.
1884         * cp-tree.h: Declare it.
1885         * semantics.c (finish_static_assert): Use it instead of
1886         require_potential_rvalue_constant_expression.
1888 2018-03-01  Jason Merrill  <jason@redhat.com>
1889             Alexandre Oliva <aoliva@redhat.com>
1891         PR c++/71569 - ICE with redundant args on member variable template.
1892         * decl.c (start_decl): Handle partial specialization of member
1893         variable template.
1894         * pt.c (determine_specialization): Allow partial specialization
1895         of member variable template without specializing enclosing class.
1896         (process_partial_specialization): Improve error message.
1898 2018-02-28  Jason Merrill  <jason@redhat.com>
1900         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1901         * pt.c (determine_specialization): Check ref-qualifier.
1903 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1905         PR c++/84609
1906         * parser.c (cp_parser_attributes_opt): Formatting fix.
1907         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1908         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1909         New functions.
1910         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1911         instead of tentative parse to peek over optional attribute tokens
1912         to check for CPP_COLON after them.
1914         PR c++/83871
1915         PR c++/83503
1916         * pt.c (INCLUDE_STRING): Remove define.
1917         (warn_spec_missing_attributes): Use pretty_printer instead of
1918         std::string.  Fix up inform call so that the list of attributes
1919         is in %s argument.
1921 2018-02-28  Martin Sebor  <msebor@redhat.com>
1923         PR testsuite/84617
1924         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1925         and malloc.
1927 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1929         PR c++/84602
1930         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1931         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1932         regardless of want_type.
1933         (search_anon_aggr): Just use get_class_binding_direct.
1935 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1937         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1938         inform_n.
1940 2018-02-27  Martin Sebor  <msebor@redhat.com>
1942         * pt.c: Avoid including <string> directly.
1944 2018-02-27  Martin Sebor  <msebor@redhat.com>
1946         PR c++/83871
1947         PR c++/83503
1948         * cp-tree.h (warn_spec_missing_attributes): New function.
1949         ((check_explicit_specialization): Add an argument.  Call the above
1950         function.
1951         * decl.c (duplicate_decls): Avoid applying primary function template's
1952         attributes to its explicit specializations.
1953         cp/pt.c (warn_spec_missing_attributes): Define.
1955 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1957         PR c++/71546 - lambda init-capture with qualified-id.
1958         * parser.c (cp_parser_lambda_introducer): Clear scope after
1959         each lambda capture.
1961 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1963         PR c++/84426
1964         * name-lookup.h (get_member_slot): Rename ...
1965         (find_member_slot): ... here.
1966         (add_member_slot): New.
1967         * name-lookup.c (member_vec_linear_search): No need to check for
1968         NULL slot.
1969         (get_member_slot): Rename ...
1970         (find_member_slot): ... here.  Don't add slot for incomplete class.
1971         (add_member_slot): New.
1972         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1973         if push_class_level_binding fails.  Create slot and grok
1974         properties once we're committed to insertion.
1976 2018-02-27  Jason Merrill  <jason@redhat.com>
1978         PR c++/84489 - dependent default template argument
1979         * pt.c (type_unification_real): Handle early substitution failure.
1981 2018-02-26  Jason Merrill  <jason@redhat.com>
1983         PR c++/84560 - ICE capturing multi-dimensional VLA.
1984         * tree.c (array_of_runtime_bound_p): False if the element is
1985         variably-modified.
1987         PR c++/84441 - ICE with base initialized from ?:
1988         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1990         PR c++/84520 - ICE with generic lambda in NSDMI.
1991         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1992         'this' in a generic lambda instantiation.
1994         PR c++/84559 - ICE with constexpr VLA.
1995         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1996         for constexpr variable with VLA type.
1998 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
2000         PR c++/84558
2001         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
2002         a valid constant initializer.  Formatting fixes.
2004 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
2006         PR c++/84540
2007         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
2008         returning NULL_TREE.
2009         (apply_late_template_attributes): Likewise.
2011 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
2013         PR c++/84557
2014         * parser.c (cp_parser_omp_var_list_no_open): Only call
2015         cp_parser_lookup_name_simple on names satisfying identifier_p.
2016         (cp_parser_oacc_routine): Likewise.
2018 2018-02-26  Jason Merrill  <jason@redhat.com>
2020         PR c++/84551 - ICE with concepts and -g.
2021         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
2023 2018-02-26  Marek Polacek  <polacek@redhat.com>
2025         PR c++/84325
2026         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
2027         non-types.
2029 2018-02-26  Jason Merrill  <jason@redhat.com>
2031         PR c++/84447 - ICE with deleted inherited ctor with default arg.
2032         * call.c (build_over_call): Handle deleted functions in one place.
2034 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
2036         PR c++/84533
2037         * decl.c (redeclaration_error_message): Don't try to use
2038         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
2040 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
2042         * lambda.c (build_capture_proxy): Define static.
2043         * cp-tree.h (build_capture_proxy): Remove.
2045 2018-02-26  Marek Polacek  <polacek@redhat.com>
2047         PR c++/84537
2048         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
2049         if name is error node.
2051 2018-02-25  Jason Merrill  <jason@redhat.com>
2053         PR c++/84015 - ICE with class deduction and auto template parm.
2054         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
2056 2018-02-24  Marek Polacek  <polacek@redhat.com>
2058         PR c++/83692
2059         * constexpr.c (maybe_constant_init_1): New function.
2060         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
2061         (cxx_constant_init): New function.
2062         * cp-tree.h (cxx_constant_init): Declare.
2063         * typeck2.c (store_init_value): Call cxx_constant_init instead of
2064         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
2066 2018-02-22  Jason Merrill  <jason@redhat.com>
2068         PR c++/70468 - ICE with constructor delegation via typedef.
2069         * pt.c (tsubst_initializer_list): Check for other mem-initializers
2070         with constructor delegation.
2072 2018-02-22  Jason Merrill  <jason@redhat.com>
2074         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
2075         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
2076         VECTOR_TYPE.
2078 2018-02-22  Marek Polacek  <polacek@redhat.com>
2080         PR c++/84493
2081         * parser.c (cp_parser_braced_list): Use require_open instead of
2082         consume_open.
2084 2018-02-21  Jason Merrill  <jason@redhat.com>
2086         PR c++/84454 - ICE with pack expansion in signature.
2087         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
2089 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
2091         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
2092         IF_STMT.
2094 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
2096         PR c++/84446
2097         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
2098         on error_mark_node.
2100 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
2102         PR c++/84445
2103         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
2104         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
2106         PR c++/84449
2107         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
2108         returns error_mark_node, return it immediately.
2109         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
2110         error_mark_node, return error_mark_node.
2112         PR c++/84455
2113         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
2114         function_depth to avoid GC during finish_lambda_function.
2116 2018-02-19  Jason Merrill  <jason@redhat.com>
2118         PR c++/84429 - ICE capturing VLA.
2119         * lambda.c (build_capture_proxy): Handle reference refs.
2121 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
2123         PR c++/84448
2124         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
2125         either operand is error_mark_node, set current.lhs to that instead of
2126         creating a binary op with error_mark_node operands.
2128         PR c++/84430
2129         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
2131 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
2133         PR c++/84348
2134         * decl.c (grokdeclarator): Early return error_mark_node upon
2135         ill-formed friend declaration.
2137 2018-02-16  Marek Polacek  <polacek@redhat.com>
2138             Jakub Jelinek  <jakub@redhat.com>
2140         PR c++/84192
2141         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
2142         set *jump_target to anything if jump_target is NULL.
2144 2018-02-16  Jason Merrill  <jason@redhat.com>
2146         PR c++/84151 - unnecessary volatile load with static member.
2147         * call.c (build_new_method_call_1): Avoid loading from a volatile
2148         lvalue used as the object argument for a static member function.
2150         PR c++/81853 - using-directive and constexpr.
2151         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
2153         PR c++/84420 - ICE with structured binding in lambda.
2154         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
2156         PR c++/83835 - C++17 error with constructor ctors.
2157         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
2159         PR c++/82664 - ICE with reference to function template parm.
2160         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
2161         NOP_EXPRs.
2163         PR c++/82764 - C++17 ICE with empty base
2164         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
2166 2018-02-16  Jason Merrill  <jason@redhat.com>
2168         PR c++/84421 - type-dependent if constexpr
2169         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
2171 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2173         Deprecate -ffriend-injection.
2174         * decl.c (cxx_init_decl_processing): Emit warning on option.
2175         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
2176         friend.
2178 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
2180         PR c++/82468
2181         * decl.c (check_special_function_return_type): Reject template
2182         template parameter in deduction guide.
2184 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2186         PR c++/84375
2187         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
2189 2018-02-15  Jason Merrill  <jason@redhat.com>
2191         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
2192         * call.c (convert_like_real): Don't use the copy-list-initialization
2193         shortcut for ck_base.
2195         PR c++/84045 - ICE with typedef and noexcept.
2196         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
2198         PR c++/84376 - ICE with omitted template arguments.
2199         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
2201         PR c++/84368 - wrong error with local variable in variadic lambda.
2202         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
2203         local_specializations.
2205 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
2207         PR c++/84330
2208         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
2209         as first argument.
2211 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2213         PR c++/84350
2214         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
2215         init, early return.
2217 2018-02-14  Nathan Sidwell  <nathan@acm.org>
2219         * decl2.c (mark_vtable_entries): Set input_location to decl's.
2220         (c_parse_final_cleanups): Restore input_location after emitting
2221         vtables.
2223 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2225         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
2226         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
2227         auto_deduction_context, tree, int): Add defaults.
2228         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
2229         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
2230         tsubst_flags_t argument.
2231         * init.c (build_new): Likewise.
2233 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
2235         PR c++/84364
2236         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
2237         about return other than *this in assignment operators if
2238         retval is type dependent expression.
2240 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
2242         PR c++/84333
2243         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
2244         save_expr for the G++ extension.
2246 2018-02-13  Jason Merrill  <jason@redhat.com>
2248         PR c++/84080 - ICE with return type deduction and specialization.
2249         * pt.c (determine_specialization): Check uses_template_parms.
2251         Fix more variadic capture issues.
2252         * pt.c (find_parameter_packs_r): Also look at explicit captures.
2253         (check_for_bare_parameter_packs): Check current_class_type for
2254         lambda context.
2255         (extract_locals_r): Handle seeing a full instantiation of a pack.
2256         (tsubst_pack_expansion): Likewise.  Force lambda capture.
2257         * parser.c (cp_parser_lambda_introducer): Don't
2258         check_for_bare_parameter_packs.
2260         PR c++/84338 - wrong variadic sizeof.
2261         * pt.c (argument_pack_select_arg): Like the macro, but look through
2262         a pack expansion.
2263         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
2264         (extract_fnparm_pack): Do make_pack_expansion.
2265         (extract_locals_r): Do strip a pack expansion.
2266         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
2268 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
2270         PR c++/84341
2271         * parser.c (cp_parser_binary_expression): Use build_min instead of
2272         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
2274 2018-02-12  Nathan Sidwell  <nathan@acm.org>
2276         PR c++/84263
2277         * parser.c (cp_parser_decltype): Push and pop
2278         deferring_access_checks.  Reorganize to avoid goto.
2280 2018-02-12  Richard Biener  <rguenther@suse.de>
2282         PR c++/84281
2283         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
2284         uniform constructors and delay allocating them fully.
2286 2018-02-09  Jason Merrill  <jason@redhat.com>
2288         PR c++/84036 - ICE with variadic capture.
2289         Handle variadic capture proxies more like non-variadic.
2290         * lambda.c (build_capture_proxy): Remove workaround.
2291         * pt.c (find_parameter_packs_r): The proxy is a pack.
2292         (instantiate_class_template_1): Remove dead lambda code.
2293         (extract_fnparm_pack): Don't make_pack_expansion.
2294         (extract_locals_r): Don't strip a pack expansion.
2295         (tsubst_pack_expansion): Handle proxy packs.  Use
2296         PACK_EXPANSION_EXTRA_ARGS less.
2297         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
2298         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
2299         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
2300         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
2301         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
2303 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
2305         PR sanitizer/83987
2306         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
2308 2018-02-09  Jason Merrill  <jason@redhat.com>
2310         PR c++/81917 - ICE with void_t and partial specialization.
2311         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
2312         calling most_specialized_partial_spec.
2314 2018-02-09  Nathan Sidwell  <nathan@acm.org>
2316         PR c/84293
2317         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
2318         Pass expr location to strict_aliasing_warning.
2320 2018-02-09  Jason Merrill  <jason@redhat.com>
2322         PR c++/84296 - ICE with qualified-id in template.
2323         PR c++/83714
2324         * pt.c (unknown_base_ref_p): New.
2325         (instantiation_dependent_scope_ref_p): Use it instead of
2326         any_dependent_bases_p.
2328 2018-02-09  Marek Polacek  <polacek@redhat.com>
2329             Jakub Jelinek  <jakub@redhat.com>
2331         PR c++/83659
2332         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
2333         fold_indirect_ref_1, including poly_*int64.  Verify first that
2334         tree_fits_poly_int64_p (op01).  Formatting fixes.
2336 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2338         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
2339         * lambda.c (build_capture_proxy): Likewise.
2340         * search.c (field_access_p): Likewise.
2341         * semantics.c (omp_clause_decl, omp_privatize_field,
2342         finish_omp_clauses): Likewise.
2344 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2346         PR c++/83806
2347         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
2348         case of nullptr too.
2350 2018-02-08  Nathan Sidwell  <nathan@acm.org>
2352         * class.c (finish_struct): Fix std:initializer_list diagnostic
2353         formatting.
2355 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2357         PR c++/83204
2358         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
2360 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
2362         PR c++/84082
2363         * parser.c (cp_parser_dot_deref_incomplete): New function.
2364         (cp_parser_postfix_dot_deref_expression): Use it.
2366 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
2368         PR c++/81610
2369         PR c++/80567
2370         * name-lookup.c (suggest_rid_p): New function.
2371         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
2372         suggest_rid_p.
2374 2018-02-07  Jason Merrill  <jason@redhat.com>
2376         PR c++/84182 - ICE with captured lambda
2377         PR c++/84181
2378         * pt.c (extract_locals_r, extract_local_specs): New.
2379         (tsubst_pack_expansion): Use them.
2381 2018-02-07  Martin Liska  <mliska@suse.cz>
2383         PR c++/84059.
2384         * class.c (add_method): Append argument value.
2385         * cp-tree.h (maybe_version_functions): Add new argument.
2386         * decl.c (decls_match): Call it if a declaration does not
2387         have DECL_FUNCTION_VERSIONED.
2388         (maybe_version_functions): record argument is added.
2390 2018-02-05  Marek Polacek  <polacek@redhat.com>
2392         * class.c: Remove unused global variables.
2393         (build_primary_vtable): Don't gather statistics.
2394         (print_class_statistics): Remove.
2395         * cp-tree.h (print_class_statistics): Remove.
2396         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
2398 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
2400         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
2401         * constexpr.c (cx_check_missing_mem_inits): Likewise.
2402         * decl.c (next_initializable_field, find_decomp_class_base,
2403         cp_finish_decomp): Likewise.
2404         * typeck2.c (process_init_constructor_record): Likewise.
2406 2018-02-02  Jason Merrill  <jason@redhat.com>
2408         PR c++/84181 - ICE with lambda parm in template argument.
2409         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
2411 2018-02-01  Jason Merrill  <jason@redhat.com>
2413         PR c++/84160 - ICE with nested variadic capture.
2414         * lambda.c (is_capture_proxy_with_ref): New.
2415         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
2416         COMPONENT_REF.
2417         * expr.c (mark_use): Use is_capture_proxy_with_ref.
2418         * constexpr.c (potential_constant_expression_1): Likewise.
2419         * semantics.c (process_outer_var_ref): Likewise.
2421 2018-02-01  Marek Polacek  <polacek@redhat.com>
2423         PR c++/84125
2424         * typeck.c (build_address): Relax the assert when
2425         processing_template_decl.
2427 2018-02-01  Jason Merrill  <jason@redhat.com>
2429         PR c++/84126 - ICE with variadic generic lambda
2430         PR c++/84036
2431         PR c++/82249
2432         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
2433         PACK_EXPANSION_EXTRA_ARGS.
2435 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
2437         PR c++/83796
2438         * call.c (convert_like_real): If w're initializing from {} explicitly
2439         call abstract_virtuals_error_sfinae.
2441 2018-01-31  Jason Merrill  <jason@redhat.com>
2442             Jakub Jelinek  <jakub@redhat.com>
2444         PR c++/83993
2445         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
2446         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
2447         on ADDR_EXPR.
2449 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
2451         PR c++/83993
2452         * constexpr.c (diag_array_subscript): Emit different diagnostics
2453         if TYPE_DOMAIN (arraytype) is NULL.
2454         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
2455         with NULL TYPE_DOMAIN use size_zero_node as nelts.
2457 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
2459         PR c++/84092
2460         * semantics.c (finish_qualified_id_expr): When handling an
2461         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
2463 2018-01-31  Marek Polacek  <polacek@redhat.com>
2465         PR c++/84138
2466         * cp-gimplify.c (cp_fold): Check if X is an error node before
2467         calling useless_type_conversion_p.
2469 2018-01-30  Jason Merrill  <jason@redhat.com>
2471         PR c++/84091 - ICE with local class in lambda in template.
2472         * decl2.c (determine_visibility): Look for outer containing template
2473         instantiation.
2475         PR c++/84098 - ICE with lambda in template NSDMI.
2476         * pt.c (instantiate_class_template_1): Ignore more lambdas.
2478 2018-01-29  Jason Merrill  <jason@redhat.com>
2480         PR c++/68810 - wrong location for reinterpret_cast error.
2481         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
2482         !dofold.
2484 2018-01-29  Marek Polacek  <polacek@redhat.com>
2486         PR c++/83996
2487         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
2488         => fooarray[1] in offset_int.
2490 2018-01-29  Jason Merrill  <jason@redhat.com>
2492         PR c++/83942 - wrong unused warning with static_cast.
2493         * cvt.c (ocp_convert): Call mark_rvalue_use.
2495 2018-01-26  Jason Merrill  <jason@redhat.com>
2497         PR c++/83956 - wrong dtor error with anonymous union
2498         * method.c (walk_field_subobs): Variant members only affect
2499         deletedness.
2500         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
2502         PR c++/84036 - ICE with variadic capture.
2503         PR c++/82249
2504         * pt.c (tsubst_pack_expansion): When optimizing a simple
2505         substitution, pull a single pack expansion out of its pack.
2507         PR c++/82514 - ICE with local class in generic lambda.
2508         * pt.c (regenerated_lambda_fn_p): Remove.
2509         (enclosing_instantiation_of): Don't use it.
2510         (tsubst_function_decl): Call enclosing_instantiation_of.
2512         * pt.c (lookup_template_class_1): Add sanity check.
2513         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
2515 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
2517         PR c++/84031
2518         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
2519         recursive calls that return ret.
2520         (cp_finish_decomp): Ignore unnamed bitfields.
2522 2018-01-23  Jason Merrill  <jason@redhat.com>
2524         PR c++/82249 - wrong mismatched pack length error.
2525         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
2526         unsubstituted function parameter pack.
2528 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
2530         PR c++/83921
2531         * decl.c (check_for_uninitialized_const_var): Not static; add
2532         bool and tsubst_flags_t parameters; adjust to be used both in
2533         constexpr context and not.
2534         * constexpr.c (potential_constant_expression_1): Use the above.
2535         * cp-tree.h (check_for_uninitialized_const_var): Declare.
2537 2018-01-23  Jason Merrill  <jason@redhat.com>
2539         PR c++/83947 - ICE with auto declarations.
2540         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
2541         * decl.c (undeduced_auto_decl): Limit to vars and fns.
2543 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
2545         PR c++/83974
2546         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
2547         for pointer to member function types.
2549 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2551         PR sanitizer/83987
2552         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
2553         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
2555 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2557         PR c++/83988
2558         * pt.c (tsubst_baselink): Remove optype assert.
2559         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
2561 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2563         PR c++/83958
2564         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
2565         refers to incomplete type.
2567 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2569         Deprecate ARM-era for scope handling
2570         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
2571         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
2572         cleared.
2573         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
2574         cleanup handling.
2575         * semantics.c (begin_for_scope): Flag_new_for_scope is
2576         boolean-like.
2577         (finish_for_stmt, begin_range_for_stmt): Likewise.
2579 2018-01-22  Jason Merrill  <jason@redhat.com>
2581         PR c++/83720
2582         * decl2.c (determine_visibility): Fix template_decl handling
2583         instead of blocking it.
2585         PR c++/83720 - ICE with lambda and LTO.
2586         * decl2.c (determine_visibility): Clear template_decl for
2587         function-scope decls.  Propagate anonymous linkage from containing
2588         function.
2590 2018-01-22  Marek Polacek  <polacek@redhat.com>
2592         PR c++/81933
2593         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
2594         split out anything.
2596 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2598         PR c++/83895
2599         * decl.c (grokdeclarator): Don't diagnose extra parens
2600         on typedefs.
2602 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
2604         PR c++/81167
2605         * call.c (joust): Use TREE_TYPE (source) if source is
2606         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
2608         PR c++/83919
2609         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
2610         for direct enum init.
2611         * decl.c (reshape_init): Likewise.
2613 2018-01-19  Marek Polacek  <polacek@redhat.com>
2615         * constexpr.c (fold_simple): Simplify.
2617 2018-01-18  Jason Merrill  <jason@redhat.com>
2619         PR c++/83714
2620         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
2621         * pt.c (instantiation_dependent_scope_ref_p): True if
2622         any_dependent_bases_p.
2624 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2626         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
2627         vs DECL_NONTRIVIALLY_INITIALIZED_P).
2629 2018-01-18  Jason Merrill  <jason@redhat.com>
2631         PR c++/82461 - constexpr list-initialized member
2632         * constexpr.c (potential_constant_expression_1): Check
2633         TARGET_EXPR_DIRECT_INIT_P.
2635 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2637         PR c++/81013
2638         * decl.c (xref_basetypes): Early return upon error about derived
2639         union.
2641 2018-01-18  Nathan Sidwell  <nathan@acm.org>
2643         PR c++/83160
2644         * cp-tree.h (mark_use): Declare.
2645         * expr.c (mark_use): Make extern.
2646         * call.c (direct_reference_binding): Set inner conv's
2647         rvaluedness_matches_p, if it is an identity.
2648         (convert_like_real): Mark lvalue or rvalue use for identity as
2649         rvaledness_matches_p demands.
2651 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
2653         PR c++/83824
2654         * parser.c (attr_chainon): New function.
2655         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
2656         cp_parser_namespace_definition, cp_parser_init_declarator,
2657         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
2658         cp_parser_gnu_attributes_opt): Use it.
2659         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
2660         cp_parser_objc_struct_declaration): Likewise.  Don't reset
2661         prefix_attributes if attributes is error_mark_node.
2663 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2665         PR c++/78344
2666         * decl.c (grokdeclarator): Do not append the error_mark_node
2667         due to an erroneous optional attribute-specifier-seq.
2669 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
2671         PR c++/83897
2672         * cp-gimplify.c (cp_maybe_instrument_return): Handle
2673         CLEANUP_POINT_EXPR.
2675 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2677         PR c++/81054
2678         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
2679         error_mark_node when we give an error.
2680         * decl.c (cp_finish_decl): Use the latter.
2682 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2684         PR c++/83287
2685         * init.c (build_raw_new_expr): Scan list for lookups to keep.
2687 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2689         PR c++/83814
2690         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2691         the C++ part.  If processing a template, call
2692         fold_non_dependent_expr rather than fully folding.
2694 2018-01-17  Jason Merrill  <jason@redhat.com>
2696         PR c++/81067 - redundant NULL warning.
2697         * call.c (convert_like_real): Restore null_node handling.
2699 2018-01-17  Jason Merrill  <jason@redhat.com>
2701         PR c++/81843 - ICE with variadic member template.
2702         PR c++/72801
2703         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2704         template args.
2706 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2708         PR c++/83799
2709         * pt.c (type_dependent_expression_p): Strip any location wrapper
2710         before testing tree codes.
2711         (selftest::test_type_dependent_expression_p): New function.
2712         (selftest::cp_pt_c_tests): Call it.
2714 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2716         PR c++/83739
2717         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2718         this not a final instantiation.
2720 2018-01-16  Jason Merrill  <jason@redhat.com>
2722         PR c++/83714 - ICE checking return in template.
2723         * typeck.c (check_return_expr): Call build_non_dependent_expr.
2725 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
2727         PR c++/83817
2728         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2729         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2730         instead of CALL_FROM_THUNK_P.
2732         PR c++/83825
2733         * name-lookup.c (member_vec_dedup): Return early if len is 0.
2734         (resort_type_member_vec, set_class_bindings,
2735         insert_late_enum_def_bindings): Use vec qsort method instead of
2736         calling qsort directly.
2738 2018-01-15  Martin Sebor  <msebor@redhat.com>
2740         PR c++/83588
2741         * class.c (find_flexarrays): Make a record of multiple flexible array
2742         members.
2744 2018-01-12  Jason Merrill  <jason@redhat.com>
2746         PR c++/83186 - ICE with static_cast of list-initialized temporary.
2747         * typeck.c (build_static_cast): Use build_non_dependent_expr.
2749 2018-01-12  Nathan Sidwell  <nathan@acm.org>
2751         * cp-tree.h (mark_rvalue_use): Add parm name.
2752         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2753         mark_rvalue_use.
2754         * call.c (convert_like_real): Fix formatting.
2756 2018-01-11  Jason Merrill  <jason@redhat.com>
2758         PR c++/82728 - wrong -Wunused-but-set-variable
2759         PR c++/82799
2760         PR c++/83690
2761         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2762         * decl.c (case_conversion): Likewise.
2763         * semantics.c (finish_static_assert): Call
2764         perform_implicit_conversion_flags.
2766 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2768         * method.c (enum mangling_flags): Delete long-dead enum.
2770 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2772         * parser.c (cp_parser_std_attribute_spec): When
2773         token_pair::require_open / require_close return false simply
2774         return error_mark_node, avoid duplicate cp_parser_error about
2775         expected '(' / ')', respectively.
2777 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2779         PR c++/43486
2780         * call.c (null_ptr_cst_p): Strip location wrappers when
2781         converting from '0' to a pointer type in C++11 onwards.
2782         (conversion_null_warnings): Replace comparison with null_node with
2783         call to null_node_p.
2784         (build_over_call): Likewise.
2785         * cp-gimplify.c (cp_fold): Remove the early bailout when
2786         processing_template_decl.
2787         * cp-lang.c (selftest::run_cp_tests): Call
2788         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2789         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2790         (selftest::run_cp_tests): Move decl to bottom of file.
2791         (null_node_p): New inline function.
2792         (selftest::cp_pt_c_tests): New decl.
2793         (selftest::cp_tree_c_tests): New decl.
2794         * cvt.c (build_expr_type_conversion): Replace comparison with
2795         null_node with call to null_node_p.
2796         * error.c (args_to_string): Likewise.
2797         * except.c (build_throw): Likewise.
2798         * mangle.c (write_expression): Skip location wrapper nodes.
2799         * parser.c (literal_integer_zerop): New function.
2800         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2801         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2802         param of cp_parser_parenthesized_expression_list.  When calling
2803         warn_for_memset, replace integer_zerop calls with
2804         literal_integer_zerop, eliminating the double logical negation
2805         cast to bool.  Eliminate the special-casing for CONST_DECL in
2806         favor of the fold_for_warn within warn_for_memset.
2807         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2808         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2809         maybe_add_location_wrapper on it when wrap_locations_p is true.
2810         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2811         the result for RID_ALIGNOF and RID_SIZEOF.
2812         (cp_parser_builtin_offsetof): Likewise.
2813         * pt.c: Include "selftest.h".
2814         (tsubst_copy): Handle location wrappers.
2815         (tsubst_copy_and_build): Likewise.
2816         (build_non_dependent_expr): Likewise.
2817         (selftest::test_build_non_dependent_expr): New function.
2818         (selftest::cp_pt_c_tests): New function.
2819         * tree.c: Include "selftest.h".
2820         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2821         (selftest::test_lvalue_kind): New function.
2822         (selftest::cp_tree_c_tests): New function.
2823         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2824         (cp_build_binary_op): Replace comparison with null_node with call
2825         to null_node_p.
2826         (build_address): Use location of operand when building address
2827         expression.
2829 2018-01-10  Marek Polacek  <polacek@redhat.com>
2831         PR c++/82541
2832         * call.c (build_conditional_expr_1): Check complain before warning.
2833         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2834         -Wduplicated-branches.
2836 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2838         PR c++/81327
2839         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2840         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2841         args uses and check number of operands too.  Don't strip away any
2842         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2843         Deal with src argument not having pointer type.  Check
2844         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2845         test.
2846         (build_over_call): Call maybe_warn_class_memaccess here on the
2847         original arguments.
2848         (build_cxx_call): Rather than here on converted arguments.
2850 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2852         PR c++/81055
2853         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2854         error_mark_node as second argument.
2856 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2858         PR c++/83734
2859         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2860         in STATEMENT_LIST.  Remove unneeded assert.
2862 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2863             Alan Hayward  <alan.hayward@arm.com>
2864             David Sherwood  <david.sherwood@arm.com>
2866         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2867         VECTOR_CST_NELTS.
2868         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2869         * call.c (build_conditional_expr_1): Likewise.
2870         * decl.c (cp_finish_decomp): Likewise.
2871         * mangle.c (write_type): Likewise.
2872         * typeck.c (structural_comptypes): Likewise.
2873         (cp_build_binary_op): Likewise.
2874         * typeck2.c (process_init_constructor_array): Likewise.
2876 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2878         PR c++/83555
2879         * typeck.c (build_static_cast_1): For static casts to reference types,
2880         call build_base_path with flag_delete_null_pointer_checks as nonnull
2881         instead of always false.  When -fsanitize=null, call
2882         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2883         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2884         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2886 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2888         PR c++/83667
2889         * method.c (make_alias_for): Copy DECL_CONTEXT.
2891 2018-01-03  Marek Polacek  <polacek@redhat.com>
2893         PR c++/83592
2894         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2896 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2898         PR preprocessor/83602
2899         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2900         for builtin macros.
2902         PR c++/83634
2903         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2904         error_mark_node, return error_mark_node.
2906         Update copyright years.
2908 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2910         PR c++/83556
2911         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2912         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2913         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2914         to false and return.
2915         (replace_placeholders): Pass NULL instead of &pset as last argument
2916         to cp_walk_tree.
2918 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2920         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2921         lval var.
2923 Copyright (C) 2018 Free Software Foundation, Inc.
2925 Copying and distribution of this file, with or without modification,
2926 are permitted in any medium without royalty provided the copyright
2927 notice and this notice are preserved.