PR c++/85731 - wrong error with qualified-id in template.
[official-gcc.git] / gcc / cp / ChangeLog
blobf4fa21a7a9782422926d9bb3954825edab4a750a
1 2018-06-05  Jason Merrill  <jason@redhat.com>
3         PR c++/85731 - wrong error with qualified-id in template.
4         * semantics.c (finish_qualified_id_expr): build_qualified_name
5         for unbound names in the current class.
7 2018-06-04  Jason Merrill  <jason@redhat.com>
9         PR c++/61806 - missed SFINAE with partial specialization.
10         * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
11         parameter to constructor.
12         * pt.c (instantiate_class_template_1): Enable access checking
13         before call to most_specialized_partial_spec.
15         PR c++/85765 - SFINAE and non-type default template arg.
16         * pt.c (type_unification_real): Do full semantic processing if
17         substituting a partial args list replaces all template parms.
19 2018-06-03  Jason Merrill  <jason@redhat.com>
21         PR c++/85739 - ICE with pointer to member template parm.
22         * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
24 2018-06-02  Jason Merrill  <jason@redhat.com>
26         PR c++/85761 - ICE with ill-formed use of const outer variable.
27         * expr.c (mark_use): Handle location wrappers.
29 2018-06-01  Jason Merrill  <jason@redhat.com>
31         PR c++/85764 - bogus 'this' not captured error.
32         * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
33         (nonlambda_method_basetype): Handle NSDMI.
35         CWG 1581: When are constexpr member functions defined?
36         * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
37         (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
39         PR c++/58281 - explicit instantiation of constexpr
40         * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
42         * pt.c (instantiate_decl): Any defaulted function is defined.
44 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
46         PR c++/77777
47         * call.c (resolve_args): Use location of expression, not current input
48         location.
50 2018-05-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
52         Do not warn about zero-as-null when NULL is used.
53         * call.c (conversion_null_warnings): Check for pointer
54         types converted from zero constants.
55         (convert_like_real): Add a warning sentinel at the end.
56         * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
57         check null_node_p.
59 2018-05-30  Jason Merrill  <jason@redhat.com>
61         PR c++/85807 - ICE with call in template NSDMI.
62         * init.c (get_nsdmi): Use push_to/pop_from_top_level.
63         * tree.c (bot_manip): Don't set_flags_from_callee in a template.
65         PR c++/85873 - constant initializer_list array not in .rodata.
66         * tree.c (build_target_expr): Set TREE_READONLY.
67         * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
69         * parser.c (cp_parser_check_condition_declarator): Handle
70         cp_error_declarator.
72 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
74         * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
75         of using it in dead store.
77 2018-05-29  Jason Merrill  <jason@redhat.com>
79         PR c++/67445 - returning temporary initializer_list.
80         PR c++/67711 - assigning from temporary initializer_list.
81         PR c++/48562 - new initializer_list.
82         * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
83         about returning local initializer_list.
84         * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
85         * call.c (build_over_call): Warn about assignment from temporary
86         init_list.
87         * init.c (build_new_1): Warn about 'new std::initializer_list'.
88         (find_list_begin, maybe_warn_list_ctor): New.
89         (perform_member_init): Use maybe_warn_list_ctor.
91 2018-05-29  Marek Polacek  <polacek@redhat.com>
93         PR c++/85883
94         * init.c (build_new): Handle deducing a class with new
95         with more than one argument.
97 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
99         PR c++/85952
100         * init.c (build_aggr_init): For structured binding initialized from
101         array call mark_rvalue_use on the initializer.
103 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
105         * decl2.c (start_static_storage_duration_function): Use
106         splay_tree_delete_pointers.
108 2018-05-25  Jason Merrill  <jason@redhat.com>
110         PR c++/85815 - reference to member of enclosing template.
111         * search.c (lookup_base): Use currently_open_class.
112         (lookup_member): Use it regardless of -fconcepts.
113         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
115         CWG 616, 1213 - value category of subobject references.
116         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
118 2018-05-24  Jason Merrill  <jason@redhat.com>
120         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
121         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
122         generic lambda.
124 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
126         Pedwarn on a non-standard position of a C++ attribute.
127         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
128         after the namespace name.
130 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
132         * cp-tree.h (INDIRECT_TYPE_P): New.
133         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
134         joust): Use it instead of POINTER_TYPE_P.
135         * class.c (update_vtable_entry_for_fn, find_flexarrays,
136         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
137         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
138         * cxx_eval_increment_expression, potential_constant_expression_1):
139         Likewise.
140         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
141         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
142         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
143         cp_ubsan_maybe_instrument_downcast): Likewise.
144         * cvt.c (cp_convert_to_pointer, ocp_convert,
145         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
146         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
147         pp_cxx_offsetof_expression_1): Likewise.
148         * decl.c (grokparms, static_fn_type): Likewise.
149         * decl2.c (grokbitfield): Likewise.
150         * error.c (dump_expr): Likewise.
151         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
152         * init.c (warn_placement_new_too_small): Likewise.
153         * lambda.c (build_capture_proxy, add_capture): Likewise.
154         * parser.c (cp_parser_omp_for_loop): Likewise.
155         * pt.c (convert_nontype_argument, fn_type_unification,
156         uses_deducible_template_parms, check_cv_quals_for_unify,
157         dependent_type_p_r): Likewise.
158         * search.c (check_final_overrider): Likewise.
159         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
160         finish_omp_for): Likewise.
161         * tree.c (cp_build_qualified_type_real): Likewise.
162         * typeck.c (build_class_member_access_expr,
163         finish_class_member_access_expr, build_x_indirect_ref,
164         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
165         Likewise.
167 2018-05-24  Jason Merrill  <jason@redhat.com>
169         PR c++/85864 - literal template and default template arg.
170         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
172 2018-05-24  Marek Polacek  <polacek@redhat.com>
174         PR c++/85847
175         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
176         variable for its result.  Fix a condition.
177         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
179 2018-05-23  Jason Merrill  <jason@redhat.com>
181         Fix cast to rvalue reference from prvalue.
182         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
183         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
184         non-class type.  Handle xvalue argument.
185         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
186         rvalue reference.
187         * semantics.c (finish_compound_literal): Do direct-initialization,
188         not cast, to initialize a reference.
190         CWG 616, 1213 - value category of subobject references.
191         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
192         an xvalue.
193         * typeck2.c (build_m_component_ref): Likewise.
194         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
195         distinction between temporary and xvalue.
197 2018-05-23  Marek Polacek  <polacek@redhat.com>
199         Implement P0614R1, Range-based for statements with initializer.
200         * parser.c (cp_parser_range_based_for_with_init_p): New.
201         (cp_parser_init_statement): Use it.  Parse the optional init-statement
202         for a range-based for loop.
203         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
205 2018-05-22  Jason Merrill  <jason@redhat.com>
207         PR c++/81420 - not extending temporary lifetime.
208         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
209         * class.c (build_base_path): Avoid redundant move of an rvalue.
211         PR c++/85866 - error with .* in default template arg.
212         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
214 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
216         * parser.c (cp_parser_parameter_declaration_list): Remove
217         bool* parameter.
218         (cp_parser_parameter_declaration_clause): Adjust.
219         (cp_parser_cache_defarg): Likewise.
221 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
223         PR c++/84588
224         * parser.c (cp_parser_maybe_commit_to_declaration,
225         cp_parser_check_condition_declarator): New.
226         (cp_parser_simple_declaration): Use the first above.
227         (cp_parser_condition): Use both the above; enforce
228         [stmt.stmt]/2 about the declarator not specifying
229         a function or an array; improve error-recovery.
231 2018-05-20  Jason Merrill  <jason@redhat.com>
233         PR libstdc++/85843 - warning in logic_error copy constructor.
234         * class.c (type_has_user_nondefault_constructor): Check for a
235         user-provided ctor, not user-declared.
237 2018-05-19  Jason Merrill  <jason@redhat.com>
239         * pt.c (tsubst_pack_expansion): Sorry rather than abort
240         on __integer_pack as subexpression of pattern.
242 2018-05-18  Jason Merrill  <jason@redhat.com>
244         PR c++/58407 - deprecated implicit copy ops.
245         * call.c (build_over_call): Warn about deprecated trivial fns.
246         * class.c (classtype_has_user_copy_or_dtor): New.
247         (type_build_ctor_call): Check TREE_DEPRECATED.
248         (type_build_dtor_call): Likewise.
249         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
250         Add checks.  Return bool.  Handle -Wdeprecated-copy.
251         (mark_used): Use it.
252         * decl.c (grokdeclarator): Remove redundant checks.
253         * typeck2.c (build_functional_cast): Likewise.
254         * method.c (lazily_declare_fn): Mark deprecated copy ops.
255         * init.c (build_aggr_init): Only set TREE_USED if there are
256         side-effects.
258 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
260         PR c++/85782
261         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
262         OACC_LOOPs.
264 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
266         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
267         (potential_constant_expression_1): Likewise.
269 2018-05-16  Marek Polacek  <polacek@redhat.com>
271         PR c++/85363
272         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
273         * tree.c (bot_manip): Call set_flags_from_callee for
274         AGGR_INIT_EXPRs too.
276 2018-05-15  Jason Merrill  <jason@redhat.com>
278         * cp-tree.h (cp_expr): Remove copy constructor.
279         * mangle.c (struct releasing_vec): Declare copy constructor.
281         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
283         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
284         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
285         is a throw-expression.
287 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
289         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
290         (FOR_EACH_CLONE): Update.
291         * decl.c (grokdeclarator): Use it.
292         * decl2.c (vague_linkage_p): Likewise.
293         * mangle.c (mangle_decl): Likewise.
294         * method.c (lazily_declare_fn): Likewise.
295         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
296         * repo.c (repo_emit_p): Likewise.
297         * tree.c (decl_linkage): Likewise.
299 2018-05-14  Jason Merrill  <jason@redhat.com>
301         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
302         * tree.c (build_cp_fntype_variant): New.
303         (build_ref_qualified_type, build_exception_variant)
304         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
305         (cxx_type_hash_eq, cp_check_qualified_type): Check
306         TYPE_HAS_LATE_RETURN_TYPE.
307         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
308         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
309         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
310         (adjust_clone_args): Likewise.
311         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
312         build_cp_fntype_variant.
313         (grokdeclarator): Pass late_return_type_p to grokfndecl.
314         (check_function_type): Use cxx_copy_lang_qualifiers.
315         (static_fn_type): Use cxx_copy_lang_qualifiers.
316         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
317         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
318         (change_return_type): Use cxx_copy_lang_qualifiers.
319         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
320         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
321         return type on the declarator like a normal trailing return type.
322         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
323         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
324         * typeck.c (merge_types): Use build_cp_fntype_variant.
326 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
328         * cp-tree.h (TYPE_REF_P): New.
329         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
330         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
331         direct_reference_binding, reference_binding, implicit_conversion,
332         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
333         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
334         build_over_call, perform_implicit_conversion_flags,
335         extend_ref_init_temps, type_has_extended_temps): Use it.
336         * class.c (one_inheriting_sig, check_field_decls,
337         check_bases_and_members, find_flexarrays, finish_struct,
338         fixed_type_or_null): Likewise.
339         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
340         non_const_var_error, cxx_eval_constant_expression,
341         potential_constant_expression_1): Likewise.
342         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
343         cp_genericize_r, cxx_omp_privatize_by_reference,
344         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
345         cp_fold_maybe_rvalue): Likewise.
346         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
347         * cvt.c (build_up_reference, convert_to_reference,
348         convert_from_reference, convert_to_void, noexcept_conv_p,
349         fnptr_conv_p): Likewise.
350         * decl.c (poplevel, check_for_uninitialized_const_var,
351         check_initializer, initialize_local_var, cp_finish_decl,
352         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
353         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
354         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
355         decl_maybe_constant_var_p): Likewise.
356         * error.c (dump_type_prefix, dump_expr): Likewise.
357         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
358         is_admissible_throw_operand_or_catch_parameter): Likewise.
359         * expr.c (mark_use): Likewise.
360         * init.c (build_zero_init_1, build_value_init_noctor,
361         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
362         build_new, build_delete): Likewise.
363         * lambda.c (build_lambda_object): Likewise.
364         * mangle.c (write_expression, write_template_arg): Likewise.
365         * method.c (forward_parm, do_build_copy_constructor,
366         do_build_copy_assign, build_stub_object, constructible_expr,
367         walk_field_subobs): Likewise.
368         * parser.c (cp_parser_omp_for_loop_init,
369         cp_parser_omp_declare_reduction_exprs,
370         cp_parser_omp_declare_reduction): Likewise.
371         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
372         convert_template_argument, tsubst_pack_expansion,
373         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
374         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
375         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
376         value_dependent_expression_p, build_deduction_guide): Likewise.
377         * semantics.c (finish_handler_parms, finish_non_static_data_member,
378         finish_compound_literal, omp_privatize_field,
379         handle_omp_array_sections_1, handle_omp_array_sections,
380         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
381         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
382         finish_omp_clauses, finish_decltype_type, capture_decltype,
383         finish_builtin_launder): Likewise.
384         * tree.c (lvalue_kind, cp_build_reference_type, move,
385         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
386         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
387         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
388         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
389         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
390         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
391         convert_for_initialization,
392         maybe_warn_about_returning_address_of_local, check_return_expr,
393         cp_type_quals, casts_away_constness, non_reference): Likewise.
394         * typeck2.c (cxx_readonly_error, store_init_value,
395         process_init_constructor_record, build_x_arrow, build_functional_cast,
396         add_exception_specifier): Likewise.
398 2018-05-14  Jason Merrill  <jason@redhat.com>
400         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
401         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
403 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
405         PR c/85696
406         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
407         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
408         cxx_omp_predetermined_sharing_1.  Rename old function to ...
409         (cxx_omp_predetermined_sharing_1): ... this.
410         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
411         instead of cxx_omp_predetermined_sharing.
413 2018-05-10  Jason Merrill  <jason@redhat.com>
415         * decl.c (cp_finish_decl): Don't instantiate auto variable.
416         (check_static_variable_definition): Allow auto.
417         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
419         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
420         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
422         Core issue 2310 - conversion to base of incomplete type.
423         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
425         CWG 2267 - list-initialization of reference temporary
426         * call.c (reference_binding): List-initializing a reference
427         temporary is copy-list-initialization.
429         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
431         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
432         instantiation in template context.
434         * class.c (vbase_has_user_provided_move_assign): Use
435         user_provided_p.
437         * lambda.c (lambda_expr_this_capture): Improve logic.
439         * decl.c (make_typename_type): s/parameters/arguments/.
440         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
441         * pt.c (make_pack_expansion): Correct error message.
443 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
445         PR c++/85662
446         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
447         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
448         fold_convert.
450 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
452         PR c++/85400
453         * decl2.c (adjust_var_decl_tls_model): New static function.
454         (comdat_linkage): Call it on a variable.
455         (maybe_make_one_only): Likewise.
457 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
459         PR c++/85713
460         Revert:
461         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
463         PR c++/84588
464         * parser.c (cp_parser_parameter_declaration_list): When the
465         entire parameter-declaration-list is erroneous maybe call
466         abort_fully_implicit_template.
468 2018-05-08  Jason Merrill  <jason@redhat.com>
470         PR c++/85706 - class deduction under decltype
471         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
472         *walk_subtrees whether or not we walked into the operand.
473         (type_uses_auto): Only look at deduced contexts.
475 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
477         PR c++/84588
478         * parser.c (cp_parser_parameter_declaration_list): When the
479         entire parameter-declaration-list is erroneous maybe call
480         abort_fully_implicit_template.
482 2018-05-08  Marek Polacek  <polacek@redhat.com>
484         PR c++/85695
485         * semantics.c (finish_if_stmt_cond): See through typedefs.
487 2018-05-07  Jason Merrill  <jason@redhat.com>
489         PR c++/85646 - lambda visibility.
490         * decl2.c (determine_visibility): Don't mess with template arguments
491         from the containing scope.
492         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
493         thunk.
495 2018-05-07  Nathan Sidwell  <nathan@acm.org>
497         Remove fno-for-scope
498         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
499         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
500         (SET_DECL_SHADOWED_FOR_VAR): Delete.
501         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
502         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
503         Don't declare.
504         * name-lookup.h (struct cp_binding_level): Remove
505         dead_vars_from_for field.
506         * cp-lang.c (cp_init_ts): Delete.
507         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
508         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
509         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
510         (init_shadowed_var_for_decl): Delete.
511         * decl.c (poplevel): Remove shadowed for var handling.
512         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
513         * name-lookup.c (find_local_binding): Remove shadowed for var
514         handling.
515         (check_local_shadow): Likewise.
516         (check_for_out_of_scope_variable): Delete.
517         * parser.c (cp_parser_primary_expression): Remove shadowed for var
518         handling.
519         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
520         * semantics.c (begin_for_scope): Always have a scope.
521         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
522         (begin_range_for_stmt, finish_id_expression): Likewise.
524 2018-05-07  Jason Merrill  <jason@redhat.com>
526         PR c++/85618 - ICE with initialized VLA.
527         * tree.c (vla_type_p): New.
528         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
529         rather than array_of_runtime_bound_p.
531 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
533         * cvt.c (ocp_convert): Early handle the special case of a
534         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
536 2018-05-03  Jason Merrill  <jason@redhat.com>
538         PR c++/85600 - virtual delete failure.
539         * init.c (build_delete): Always save_expr when deleting.
541 2018-05-03  Nathan Sidwell  <nathan@acm.org>
543         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
544         * name-lookup.c (do_pushdecl): Likewise.
546 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
547             Jason Merrill  <jason@redhat.com>
549         PR c++/68374
550         * name-lookup.c (check_local_shadow): Don't handle static old
551         declarations in the block handling locals shadowing locals.
553 2018-05-01  Jason Merrill  <jason@redhat.com>
555         PR c++/85587 - error with scoped enum in template.
556         * semantics.c (finish_qualified_id_expr): Don't return an
557         unqualified IDENTIFIER_NODE.
559 2018-04-30  Jason Merrill  <jason@redhat.com>
561         PR c++/85580 - extern "C" and local variables
562         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
564         PR c++/84701 - unsigned typeof.
565         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
566         of long/short/signed/unsigned.
568         PR c++/85305 - pack in lambda init-capture.
569         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
570         check_for_bare_parameter_packs in a subexpression.
571         (cp_parser_lambda_introducer): Use it.
573         PR c++/61982 - dead stores to destroyed objects.
574         * call.c (build_trivial_dtor_call): New, assigns a clobber.
575         (build_over_call, build_special_member_call): Use it.
576         * cp-tree.h: Declare it.
577         * init.c (build_delete): Remove trivial path.
579         * init.c (build_dtor_call): Use build_special_member_call.
580         (build_delete): Remove redundant uses of save_addr.
582         * decl.c (build_clobber_this): Use build_clobber.
584 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
586         PR c++/85553
587         * init.c (build_zero_init_1): For zero initialization of
588         NULLPTR_TYPE_P type use build_int_cst directly.
590 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
592         PR c++/85515
593         * name-lookup.c (consider_binding_level): Skip compiler-generated
594         variables.
595         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
596         nested if statements into a series of rejection tests.  Reject
597         lambda-ignored entities as suggestions.
599 2018-04-27  Jason Merrill  <jason@redhat.com>
601         * cvt.c (cp_fold_convert): Use convert_ptrmem.
602         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
604 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
606         PR c++/84691
607         * decl.c (grokdeclarator): Clear friendp upon definition in local
608         class definition error.
610 2018-04-27  Jason Merrill  <jason@redhat.com>
612         PR c++/85545 - ICE with noexcept PMF conversion.
613         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
614         build_ptrmemfunc.
615         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
616         adjustment.
617         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
619 2018-04-27  Nathan Sidwell  <nathan@acm.org>
621         * typeck.c (convert_ptrmem): Move local var decls to initialization.
623         * cp-tree.h (TEMPLATE_INFO): Fix comments.
624         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
625         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
626         (dump, print_other_binding_stacks): Remove declarations.
627         * name-lookup.c (print_other_binding_stack): Make static.
628         * pt.c (build_template_decl): Make static.
630 2018-04-26  Jason Merrill  <jason@redhat.com>
632         PR c++/85545 - ICE with noexcept PMF conversion.
633         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
635 2018-04-25  Nathan Sidwell  <nathan@acm.org>
637         PR c++/85437
638         PR c++/49171
639         * cp-tree.h (REINTERPRET_CAST_P): New.
640         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
641         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
642         for non-trivial PTRMEM_CST cases.
643         * typeck.c (build_nop_reinterpret): New.
644         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
645         NOP_EXPRs returned by cp_convert.
647 2018-04-23  Jason Merrill  <jason@redhat.com>
649         PR c++/69560 - wrong alignof(double) on x86.
650         CWG 1879 - Inadequate definition of alignment requirement.
651         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
652         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
653         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
654         (cxx_alignof_expr): Pass it.
655         * parser.c (cp_parser_unary_expression): Pass it.
656         * pt.c (tsubst_copy): Copy it.
657         (tsubst_copy_and_build): Pass it.
658         * decl.c (fold_sizeof_expr): Pass it.
660 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
661             Jason Merrill  <jason@redhat.com>
663         PR c++/85470 - wrong error with static data member.
664         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
665         * typeck2.c (store_init_value): Likewise.
667 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
669         PR c++/85462
670         * cp-tree.h (tinst_level): Remove in_system_header_p member,
671         change refcount member from unsigned char to unsigned short,
672         add refcount_infinity static data member, adjust comments.
673         * pt.c (tinst_level::refcount_infinity): Define.
674         (inc_refcount_use): Remove assert, don't increment if refcount
675         is already refcount_infinity, adjust comment.
676         (dec_refcount_use): Remove assert, don't decrement if refcount
677         is refcount_infinity, adjust comment.
678         (push_tinst_level_loc): Formatting fix.
680 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
682         PR c++/84611
683         * pt.c (lookup_template_class_1): Check pushtag return value for
684         error_mark_node.
686 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
688         PR c++/80290
689         * cp-tree.h (tinst_level::free): Fix whitespace.
691 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
693         PR c++/84630
694         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
695         for error_mark_node.
697 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
699         PR c++/84463
700         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
701         tricks from here to ...
702         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
703         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
705 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
707         PR c++/80290
708         * cp-tree.h (struct tinst_level): Split decl into tldcl and
709         targs.  Add private split_list_p, tree_list_p, and not_list_p
710         inline const predicates; to_list private member function
711         declaration; free public member function declaration; list_p,
712         get_node and maybe_get_node accessors, and refcount data
713         member.  Narrow errors to unsigned short.
714         * error.c (print_instantiation_full_context): Use new
715         accessors.
716         (print_instantiation_partial_context_line): Likewise.  Drop
717         const from tinst_level-typed parameter.
718         * mangle.c (mangle_decl_string): Likewise.
719         * pt.c (freelist): New template class.
720         (tree_list_freelist_head): New var.
721         (tree_list_freelist): New fn, along with specializations.
722         (tinst_level_freelist_head): New var.
723         (pending_template_freelist_head): Likewise.
724         (tinst_level_freelist, pending_template_freelist): New fns.
725         (tinst_level::to_list, tinst_level::free): Define.
726         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
727         (set_refcount_ptr): New template fn.
728         (add_pending_template): Adjust for refcounting, freelists and
729         new accessors.
730         (neglectable_inst_p): Take a NULL d as a non-DECL.
731         (limit_bad_template_recursion): Use new accessors.
732         (push_tinst_level): New overload to create the list.
733         (push_tinst_level_loc): Make it static, split decl into two
734         args, adjust tests and initialization to cope with split
735         lists, use freelist, adjust for refcounting.
736         (push_tinst_level_loc): New wrapper with the old interface.
737         (pop_tinst_level): Adjust for refcounting.
738         (record_last_problematic_instantiation): Likewise.
739         (reopen_tinst_level): Likewise.  Use new accessors.
740         (instantiate_alias_template): Adjust for split list.
741         (fn_type_unification): Likewise.
742         (get_partial_spec_bindings): Likewise.
743         (instantiate_pending_templates): Use new accessors.  Adjust
744         for refcount.  Release pending_template to freelist.
745         (instantiating_current_function_p): Use new accessors.
747 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
749         PR c++/85039
750         * parser.c (cp_parser_builtin_offset): Reject type definitions.
751         * mangle.c (nested_anon_class_index): Avoid crash returning -1
752         if we've seen errors.
754 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
756         PR c++/85385
757         * name-lookup.c (macro_use_before_def::maybe_make): New function,
758         checking that the use is indeed before the definition.
759         (macro_use_before_def::macro_use_before_def): Make private.
760         (macro_use_before_def::~macro_use_before_def): Make private.  Move
761         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
762         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
763         than using new directly.
765 2018-04-12  Jason Merrill  <jason@redhat.com>
767         PR c++/85356 - ICE with pointer to member function.
768         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
769         flag_noexcept_type.  Build the new spec within the function context.
770         * except.c (build_noexcept_spec): Do get constant value in templates
771         if flag_noexcept_type.
772         * decl.c (check_redeclaration_exception_specification): Don't
773         instantiate noexcept on a dependent declaration.
775 2018-04-12  Marek Polacek  <polacek@redhat.com>
777         PR c++/85258
778         * constexpr.c (reduced_constant_expression_p): Return false for null
779         trees.
781 2018-04-11  Marek Polacek  <polacek@redhat.com>
783         PR c++/85032
784         * constexpr.c (potential_constant_expression_1): Consider conversions
785         from classes to literal types potentially constant.
787 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
789         PR c++/70808
790         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
791         the type like TYPE_PTR_OR_PTRMEM_P.
793 2018-04-10  Jason Merrill  <jason@redhat.com>
795         PR debug/65821 - wrong location for main().
796         * call.c (clear_location_r, convert_default_arg): Revert.
797         * tree.c (break_out_target_exprs): Add clear_location parm.
798         (struct bot_data): New.
799         (bot_manip): Clear location if requested.
800         * init.c (get_nsdmi): Pass clear_location.
802 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
804         PR c++/85110
805         * call.c (get_fndecl_argument_location): Make non-static.
806         * cp-tree.h (get_fndecl_argument_location): New decl.
807         * typeck.c (convert_for_assignment): When complaining due to
808         conversions for an argument, show the location of the parameter
809         within the decl.
811 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
813         PR c++/85312 - P0962 cleanup
814         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
815         diagnostics.
817 2018-04-10  Jason Merrill  <jason@redhat.com>
819         PR debug/65821 - wrong location for main().
820         * call.c (clear_location_r): New.
821         (convert_default_arg): Use it.
822         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
824         PR c++/85285 - ICE with flexible array after substitution.
825         * pt.c (instantiate_class_template_1): Check for flexible array in
826         union.
828 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
830         PR c++/85227
831         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
832         issue a pedwarn and defer trying to do bindings.
834 2018-04-09  Jason Merrill  <jason@redhat.com>
836         PR c++/85279 - dump_expr doesn't understand decltype.
837         * error.c (dump_expr): Handle DECLTYPE_TYPE.
839         PR c++/85262 - ICE with redundant qualification on constructor.
840         * call.c (build_new_method_call_1): Move make_args_non_dependent
841         after A::A() handling.
843         PR c++/85277 - ICE with invalid offsetof.
844         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
845         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
847         PR c++/85264 - ICE with excess template-parameter-list.
848         * parser.c (cp_parser_check_template_parameters): Add template_id_p
849         parameter.  Don't allow an extra template header if true.
850         (cp_parser_class_head): Pass template_id_p.
851         (cp_parser_elaborated_type_specifier): Likewise.
852         (cp_parser_alias_declaration): Likewise.
853         (cp_parser_check_declarator_template_parameters): Likewise.
855 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
857         PR c++/85194
858         * parser.c (cp_parser_simple_declaration): For structured bindings,
859         if *maybe_range_for_decl is NULL after parsing it, set it to
860         error_mark_node.
862 2018-04-09  Jason Merrill  <jason@redhat.com>
864         PR c++/85256 - ICE capturing pointer to VLA.
865         * lambda.c (add_capture): Distinguish between variable-size and
866         variably-modified types.
868 2018-04-06  Jason Merrill  <jason@redhat.com>
870         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
871         * pt.c (extract_locals_r): Remember local typedefs.
873 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
875         PR c++/84269
876         * name-lookup.c (struct std_name_hint): Move out of
877         get_std_name_hint; add field "min_dialect".
878         (get_std_name_hint): Add min_dialect values to all initializers.
879         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
880         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
881         <shared_mutex>, <string_view>, <thread>, and <variant>.
882         Add fstream, ifstream, and ofstream to <fstream>.
883         Add istringstream, ostringstream, and stringstream to <sstream>.
884         Add basic_string to <string>.
885         Add tuple_element and tuple_size to <tuple>.
886         Add declval to <utility>.
887         Fix ordering of <queue> and <tuple>.
888         Return a std_name_hint, rather than a const char *.
889         (get_cxx_dialect_name): New function.
890         (maybe_suggest_missing_std_header): Detect names that aren't yet
891         available in the current dialect, and instead of suggesting a
892         missing #include, warn about the dialect.
894 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
896         PR c++/85210
897         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
898         errorcount is set if tsubst doesn't return a VAR_DECL.
900 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
902         PR c++/85021
903         * name-lookup.c (using_directives_contain_std_p): New function.
904         (has_using_namespace_std_directive_p): New function.
905         (suggest_alternatives_for): Simplify if/else logic using early
906         returns.  If no candidates were found, and there's a
907         "using namespace std;" directive, call
908         maybe_suggest_missing_std_header.
909         (maybe_suggest_missing_header): Split later part of the function
910         into..
911         (maybe_suggest_missing_std_header): New.
913 2018-04-06  Jason Merrill  <jason@redhat.com>
915         PR c++/85242 - ICE with class definition in template parm.
916         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
917         processing_template_parmlist.
919         PR c++/85240 - LTO ICE with using of undeduced auto fn.
920         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
922 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
924         PR c++/85209
925         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
926         is not prev, if prev == decl.
928         PR c++/85208
929         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
930         maybe_apply_pragma_weak here...
931         (cp_maybe_mangle_decomp): ... but call it here instead.
933 2018-04-05  Jason Merrill  <jason@redhat.com>
935         PR c++/85136 - ICE with designated init in template.
936         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
937         designated initializer.
938         (check_array_designated_initializer): Update ce->index with the
939         constant value.
941         PR c++/83808 - ICE with VLA initialization.
942         * typeck2.c (process_init_constructor_array): Don't require a VLA
943         initializer to have VLA type.
945 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
947         PR c++/80956
948         * call.c (convert_like_real): Fail gracefully for a broken
949         std::initializer_list, missing a definition.
951         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
953 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
955         PR c++/84792
956         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
957         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
959 2018-04-05  Jason Merrill  <jason@redhat.com>
961         PR c++/82152 - ICE with class deduction and inherited ctor.
962         * pt.c (do_class_deduction): Ignore inherited ctors.
964         PR c++/84665 - ICE with array of empty class.
965         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
967         PR c++/85228 - ICE with lambda in enumerator in template.
968         * pt.c (bt_instantiate_type_proc): Don't assume
969         CLASSTYPE_TEMPLATE_INFO is non-null.
971 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
973         Implement P0969
974         * decl.c (find_decomp_class_base): Check accessibility instead
975         of declared access, adjust diagnostic.
977 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
979         Implement P0961
980         * decl.c (get_tuple_decomp_init): Check the templatedness
981         of a member get.
983 2018-04-05  Jason Merrill  <jason@redhat.com>
985         PR c++/85200 - ICE with constexpr if in generic lambda.
986         * pt.c (extract_locals_r): Don't record the local specs of variables
987         declared within the pattern.
989 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
991         PR c++/84979
992         * pt.c (check_auto_in_tmpl_args): New.
993         (tsubst_qualified_id): Use it to reject template args
994         referencing auto for non-type templates.
995         * parser.c (cp_parser_template_id): Likewise.
996         * cp-tree.h (check_auto_in_tmpl_args): Declare.
997         * typeck2.c (build_functional_cast): Report correct location
998         for invalid use of auto.
1000 2018-04-04  Jason Merrill  <jason@redhat.com>
1002         PR c++/85215 - ICE with copy-init from conversion.
1003         * call.c (merge_conversion_sequences): Fix type of direct binding
1004         sequence.
1006         PR c++/84938 - ICE with division by ~-1.
1007         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
1009         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
1010         * parser.c (cp_parser_mem_initializer_list): Call
1011         check_for_bare_parameter_packs.
1013 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
1015         PR inline-asm/85172
1016         * constexpr.c (cxx_eval_builtin_function_call): For calls to
1017         builtin_valid_in_constant_expr_p functions, don't call
1018         cxx_eval_constant_expression if argument is not
1019         potential_constant_expression.
1021         PR c++/85146
1022         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
1023         argument.
1024         * semantics.c (calculate_bases): Add complain argument.  Use
1025         complete_type_or_maybe_complain instead of just complete_type and
1026         return an empty vector if it fails.  Move make_tree_vector () call
1027         after early return.  Formatting fixes.
1028         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
1029         end.
1030         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
1031         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
1032         calculate_direct_bases callers, formatting fixes.
1034 2018-04-04  Jason Merrill  <jason@redhat.com>
1036         PR c++/85006 - -fconcepts ICE with A<auto...> return type
1037         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
1039         PR c++/85200 - ICE with constexpr if in generic lambda.
1040         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
1042         PR c++/84221 - bogus -Wunused with attribute and template.
1043         * decl2.c (is_late_template_attribute): Handle unused and used
1044         normally on non-TYPE_DECL.
1046         PR c++/85135 - ICE with omitted template arguments.
1047         * decl.c (grokdeclarator): Catch deduced class type in trailing
1048         return type.
1050         PR c++/85133 - ICE with missing concept initializer.
1051         * decl.c (cp_finish_decl): If a concept initializer is missing, use
1052         true.
1054         PR c++/85118 - wrong error with generic lambda and std::bind.
1055         * call.c (add_template_conv_candidate): Disable if there are any
1056         call operators.
1058         PR c++/85141 - ICE with compound assignment and static member fn.
1059         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
1060         compound assignment.
1062         PR c++/85148 - ICE with 'this' in array NSDMI.
1063         * tree.c (replace_placeholders_r): Use handled_component_p.
1065 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
1067         PR c++/65923
1068         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
1069         * parser.c (cp_parser_unqualified_id): ..not here.
1071 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
1073         PR c++/84943
1074         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
1075         used.
1076         * decl2.c (mark_used): Return without effects if tf_conv.
1078 2018-04-03  Jason Merrill  <jason@redhat.com>
1080         PR c++/85092 - C++17 ICE with unused list constructor.
1081         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
1082         from a TARGET_EXPR.
1084         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
1085         * constexpr.c (cxx_eval_builtin_function_call): Only defer
1086         __builtin_constant_p if ctx->quiet.
1088 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
1090         PR c++/84768
1091         * pt.c (rewrite_template_parm): If the first argument is
1092         error_mark_node return it immediately.
1093         (build_deduction_guide): Check the return value of the
1094         latter for error_mark_node.
1095         (do_class_deduction): Check the return value of the latter.
1097 2018-04-03  Jason Merrill  <jason@redhat.com>
1099         * semantics.c (finish_if_stmt_cond): Use
1100         instantiation_dependent_expression_p.
1102         PR c++/85149 - generic lambda and constexpr if.
1103         * pt.c (build_extra_args, add_extra_args): Split from
1104         tsubst_pack_expansion.
1105         (tsubst_expr) [IF_STMT]: Use them.
1106         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
1108         * typeck.c (merge_types): Limit matching attribute shortcut to
1109         the default case.
1111 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
1113         PR c++/85147
1114         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
1116         PR c++/85140
1117         * name-lookup.c (handle_namespace_attrs): Return early if attributes
1118         is error_mark_node.
1120         PR c++/85134
1121         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
1122         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
1123         instead for static data members clear init and set DECL_EXTERNAL.
1125 2018-04-02  Jason Merrill  <jason@redhat.com>
1127         PR c++/64095 - auto... parameter pack.
1128         * parser.c (cp_parser_parameter_declaration): Handle turning autos
1129         into packs here.
1130         (cp_parser_parameter_declaration_list): Not here.
1132 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
1134         PR c++/85027
1135         * class.c (instantiate_type): Peel off SAVE_EXPR before
1136         BASELINK.
1138 2018-03-30  Jason Merrill  <jason@redhat.com>
1140         * typeck2.c (process_init_constructor_record): Use
1141         init_list_type_node for the CONSTRUCTOR around an anonymous union
1142         designated initializer.
1144 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
1146         PR c++/84791
1147         * semantics.c (finish_omp_reduction_clause): If
1148         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
1149         even if processing_template_decl.
1151 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1153         PR c++/84269
1154         * name-lookup.c (get_std_name_hint): Add names from <memory>,
1155         <tuple>, and <utility>.
1157 2018-03-29  Jason Merrill  <jason@redhat.com>
1159         PR c++/85093 - too many template args with pack expansion.
1160         * pt.c (coerce_template_parms): Keep pack expansion args that will
1161         need to be empty.
1163 2018-03-29  Jason Merrill  <jason@redhat.com>
1165         * pt.c (build_non_dependent_expr): Propagate expr location.
1167 2018-03-27  Jason Merrill  <jason@redhat.com>
1169         PR c++/85060 - wrong-code with call to base member in template.
1170         * search.c (any_dependent_bases_p): Check uses_template_parms
1171         rather than processing_template_decl.
1173 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1175         PR c++/85110
1176         * typeck.c (convert_for_assignment): When complaining due to
1177         conversions for an argument, attempt to use the location of the
1178         argument.
1180 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
1182         PR c++/85028
1183         * pt.c (tsubst_default_argument): Early return if the type of the
1184         parameter is erroneous.
1186 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
1188         PR c++/84973
1189         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
1190         templates.
1192         PR c++/84968
1193         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
1195 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1197         PR c++/85067
1198         * method.c (defaulted_late_check): Partially revert r253321 changes,
1199         do not early return upon error.
1201 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1203         PR c++/85077
1204         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
1205         type call fold to generate VECTOR_CSTs when possible.
1207         PR c++/85076
1208         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
1209         return it right away.
1211 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
1213         * search.c (check_final_overrider): Use inform instead of error
1214         for the diagnostics of the overridden functions.  Tweak wording.
1216 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1218         PR c++/85068
1219         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
1220         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
1222 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1223             Jason Merrill  <jason@redhat.com>
1225         PR c++/84632
1226         * init.c (build_aggr_init): When initializing from array,
1227         reject anything but CONSTRUCTORs and TARGET_EXPRs.
1228         (build_vec_init): Handle separately ARRAY_TYPEs.
1230 2018-03-26  Jason Merrill  <jason@redhat.com>
1232         PR c++/85062 - ICE with alignas in wrong place.
1233         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
1234         here.
1236         PR c++/85049 - ICE with __integer_pack.
1237         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
1238         * cp-tree.h (TEMPLATE_PARM_P): New.
1240 2018-03-23  Jason Merrill  <jason@redhat.com>
1242         PR c++/78489 - wrong SFINAE behavior.
1244         PR c++/84489
1245         * pt.c (type_unification_real): Don't defer substitution failure.
1247 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
1249         PR c++/85015
1250         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
1251         result.
1253         PR c++/84942
1254         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
1255         cp_build_unary_op call with gcc_unreachable ().
1257 2018-03-23  Marek Polacek  <polacek@redhat.com>
1259         PR c++/85045
1260         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
1261         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
1262         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
1264 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
1266         Implement P0962
1267         * parser.c (cp_parser_perform_range_for_lookup): Change
1268         the condition for deciding whether to use members.
1270 2018-03-23  Marek Polacek  <polacek@redhat.com>
1272         PR c++/85033
1273         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
1275 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
1277         PR c++/71251
1278         * parser.c (cp_parser_alias_declaration): Call
1279         parser_check_template_parameters.
1281         PR c++/84789
1282         * pt.c (resolve_typename_type): Drop assert that stopped
1283         simplification to template-independent types.  Add assert to
1284         verify the initial scope is template dependent.
1285         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1286         Reparse the id expression as a type-name, not a declarator.
1288         PR c++/84729
1289         * init.c (build_vec_init): Error at parenthesized array init.
1291         PR c++/84610
1292         PR c++/84642
1293         PR c++/84942
1294         * cp-tree.h (temp_override): New template class, generalizing
1295         a cleanup that was only used...
1296         * parser.c (cp_parser_parameter_declaration_clause):
1297         ... here for auto_is_implicit_function_template_parm_p.
1298         (cp_parser_gnu_attributes_opt): Use it here as well.
1299         (cp_parser_std_attribute): Likewise.
1301 2018-03-22  Marek Polacek  <polacek@redhat.com>
1303         PR c++/84854
1304         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
1305         is boolean.
1307 2018-03-21  Jason Merrill  <jason@redhat.com>
1309         PR c++/81311 - wrong C++17 overload resolution.
1310         * call.c (build_user_type_conversion_1): Remove C++17 code.
1311         (conv_binds_ref_to_prvalue): New.
1312         (build_over_call): Handle C++17 copy elision.
1313         (build_special_member_call): Only do C++17 copy elision here if the
1314         argument is already the right type.
1316 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
1318         PR c++/71965
1319         * init.c (build_vec_init): Silence error, former sorry,
1320         without tf_error.
1322         PR c++/84610
1323         PR c++/84642
1324         * parser.c (abort_fully_implicit_template_p): New.
1325         (cp_parser_skip_to_end_of_statement): Use it.
1326         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
1327         (finish_fully_implicit_template_p): Clear
1328         implicit_template_parms and implicit_template_scope.
1330 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
1332         PR c++/84972
1333         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
1334         error_mark_node when check_array_designated_initializer fails.
1336 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
1338         PR c++/84961
1339         * cp-tree.h (genericize_compound_lvalue): Declare.
1340         * typeck.c (genericize_compound_lvalue): New function.
1341         (unary_complex_lvalue, cp_build_modify_expr): Use it.
1342         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
1343         and PREDECREMENT_EXPR in output and "m" constrained input operands with
1344         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
1345         COMPOUND_EXPR operand.
1347 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1349         PR c++/85008
1350         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
1351         * decl2.c (vague_linkage_p): Likewise.
1353 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
1355         PR c++/84994
1356         * constexpr.c (constexpr_fn_retval): Make non-"static".
1357         * cp-tree.h (constexpr_fn_retval): New decl.
1358         * search.c (direct_accessor_p): Update leading comment.
1359         (reference_accessor_p): Likewise.
1360         (field_accessor_p): Replace check that function body is a
1361         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
1362         indentation of "field_type" decl.
1364 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1366         PR c++/84804
1367         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
1368         complete classes.
1370 2018-03-21  Martin Sebor  <msebor@redhat.com>
1372         PR c++/84850
1373         * call.c (first_non_public_field): New template and function.
1374         (first_non_trivial_field): New function.
1375         (maybe_warn_class_memaccess): Call them.
1377 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
1379         PR c++/84892
1380         * search.c (field_accessor_p): Use class_of_this_parm rather than
1381         type_of_this_parm, to check that "this" is a "const T *", rather
1382         than a "T *const".
1384 2018-03-21  Nathan Sidwell  <nathan@acm.org>
1386         * class.c (finish_struct_anon_r): Refactor, deprecate anything
1387         other than public non-static data members.
1388         * parser.c (cp_parser_init_declarator): Deprecate attributes after
1389         parenthesized initializer.
1391         PR c++/84836
1392         * name-lookup.c (update_binding): Correct logic for local binding
1393         update.
1395 2018-03-21  Marek Polacek  <polacek@redhat.com>
1397         PR c++/71638, ICE with NSDMI and reference.
1398         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1399         even when we replace an element.
1401 2018-03-20  Marek Polacek  <polacek@redhat.com>
1403         PR c++/84978, ICE with NRVO.
1404         * constexpr.c (cxx_eval_constant_expression): Handle the case when
1405         a RESULT_DECL isn't in the hash map.
1407 2018-03-20  Jason Merrill  <jason@redhat.com>
1409         PR c++/84978, ICE with NRVO.
1410         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
1411         (cp_get_callee_fndecl_nofold): New.
1412         * cp-gimplify.c (cp_genericize_r): Use it instead.
1413         * call.c (check_self_delegation): Likewise.
1415 2018-03-20  Nathan Sidwell  <nathan@acm.org>
1417         PR c++/84962
1418         * name-lookup.c (pushdecl_class_level): Push anon-struct's
1419         member_vec, if there is one.
1421         PR c++/84970
1422         * cp-tree.h (lookup_list_keep): Declare.
1423         * tree.c (lookup_list_keep): New, broken out of ...
1424         (build_min): ... here.  Call it.
1425         * decl.c (cp_finish_decl): Call lookup_list_keep.
1427 2018-03-19  Jason Merrill  <jason@redhat.com>
1429         PR c++/84937 - ICE with class deduction and auto.
1430         * pt.c (rewrite_template_parm): Fix auto handling.
1432 2018-03-19  Marek Polacek  <polacek@redhat.com>
1434         PR c++/84925
1435         * pt.c (enclosing_instantiation_of): Check if fn is null.
1437         PR c++/84927
1438         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1439         as we evaluate the elements.
1440         (cxx_eval_constant_expression): Verify constructor's flags
1441         unconditionally.
1443 2018-03-19  Jason Merrill  <jason@redhat.com>
1445         PR c++/71834 - template-id with too few arguments.
1446         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
1448 2018-03-19  Nathan Sidwell  <nathan@acm.org>
1450         PR c++/84835
1451         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
1452         * pt.c (build_template_decl): Propagate language linkage.
1454         PR c++/84812
1455         * name-lookup.c (set_local_extern_decl_linkage): Defend against
1456         ambiguous lookups.
1458 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1460         PR c/84910
1461         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
1462         diagnostics.
1463         * method.c (synthesize_method): Likewise.
1464         * pt.c (convert_nontype_argument): Likewise.
1466 2018-03-16  Jason Merrill  <jason@redhat.com>
1468         PR c++/84720 - ICE with rvalue ref non-type argument.
1469         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
1470         (convert_nontype_argument): Revert earlier change.
1472         PR c++/80227 - SFINAE and negative array size.
1473         * decl.c (compute_array_index_type): Use
1474         build_converted_constant_expr and valid_constant_size_p.
1476         PR c++/84906 - silent wrong code with ambiguous conversion.
1477         * call.c (build_user_type_conversion_1): Set need_temporary_p on
1478         ambiguous conversion.
1479         (convert_like_real): Check it.
1481         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
1482         * call.c (build_special_member_call): Don't convert an init-list
1483         argument directly to the class type.
1485 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1487         PR c++/79937
1488         PR c++/82410
1489         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
1490         (find_placeholder): Declare.
1491         * tree.c (struct replace_placeholders_t): Add exp member.
1492         (replace_placeholders_r): Don't walk into ctors with
1493         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
1494         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
1495         (replace_placeholders): Initialize data.exp.
1496         (find_placeholders_r, find_placeholders): New functions.
1497         * typeck2.c (process_init_constructor_record,
1498         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
1499         if adding NSDMI on which find_placeholder returns true.
1500         * call.c (build_over_call): Don't call replace_placeholders here.
1501         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
1502         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
1503         TARGET_EXPR_INITIAL.
1504         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
1505         ctor.
1507 2018-03-16  Jason Merrill  <jason@redhat.com>
1509         PR c++/83911 - ICE with multiversioned constructor.
1510         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
1511         dispatchere here.
1512         * call.c (build_over_call): Not here.
1514 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1516         PR c++/84874
1517         * decl.c (reshape_init_class): Don't assert d->cur->index == field
1518         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
1520 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
1522         PR c++/84222
1523         * cp-tree.h (cp_warn_deprecated_use): Declare.
1524         * tree.c (cp_warn_deprecated_use): New function.
1525         * typeck2.c (build_functional_cast): Use it.
1526         * decl.c (grokparms): Likewise.
1527         (grokdeclarator): Likewise.  Temporarily push nested class scope
1528         around grokparms call for out of class member definitions.
1530 2018-03-14  Jason Merrill  <jason@redhat.com>
1532         PR c++/84820 - no error for invalid qualified-id.
1533         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
1534         cp_error_declarator.
1536         PR c++/84801 - ICE with unexpanded pack in lambda.
1537         * pt.c (check_for_bare_parameter_packs): Don't return early for a
1538         lambda in non-template context.
1540         PR c++/81236 - auto variable and auto function
1541         * pt.c (tsubst_baselink): Update the type of the BASELINK after
1542         mark_used.
1544 2018-03-14  Jason Merrill  <jason@redhat.com>
1546         PR c++/83916 - ICE with template template parameters.
1547         * pt.c (convert_template_argument): Don't substitute into type of
1548         non-type parameter if we don't have enough arg levels.
1549         (unify): Likewise.
1551 2018-03-14  Marek Polacek  <polacek@redhat.com>
1553         PR c++/84596
1554         * semantics.c (finish_static_assert): Check
1555         instantiation_dependent_expression_p instead of
1556         {type,value}_dependent_expression_p.
1558 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1559             Jason Merrill  <jason@redhat.com>
1561         PR c++/82336 - link error with list-init default argument.
1562         * decl.c (check_default_argument): Unshare an initializer list.
1564 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1566         PR c++/84843
1567         * decl.c (duplicate_decls): For redefinition of built-in, use error
1568         and return error_mark_node.  For redeclaration, return error_mark_node
1569         rather than olddecl if !flag_permissive.
1571 2018-03-13  Jason Merrill  <jason@redhat.com>
1573         PR c++/82565 - ICE with concepts and generic lambda.
1574         * pt.c (instantiate_decl): Clear fn_context for lambdas.
1576 2018-03-13  Jason Merrill  <jason@redhat.com>
1578         PR c++/84720 - ICE with rvalue ref non-type argument.
1579         * pt.c (convert_nontype_argument): Handle rvalue references.
1581         PR c++/84839 - ICE with decltype of parameter pack.
1582         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
1583         instantiating dummy parms.
1585         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
1586         parameter even without -Wpedantic.
1588         PR c++/84798 - ICE with auto in abstract function declarator.
1589         * parser.c (cp_parser_parameter_declaration_clause): Check
1590         parser->default_arg_ok_p.
1592 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1594         PR c++/84808
1595         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
1596         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
1597         sizetype.  Formatting fixes.
1599 2018-03-12  Jason Merrill  <jason@redhat.com>
1601         PR c++/84355 - ICE with deduction for member class template.
1602         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
1603         CLASS_PLACEHOLDER_TEMPLATE.
1605         PR c++/84802 - ICE capturing uninstantiated class.
1606         * lambda.c (build_capture_proxy): Call complete_type.
1608 2018-03-09  Jason Merrill  <jason@redhat.com>
1610         PR c++/84770 - ICE with typedef and parameter pack.
1611         * pt.c (verify_unstripped_args_1): Split out from
1612         verify_unstripped_args.
1614         PR c++/84785 - ICE with alias template and default targs.
1615         * pt.c (type_unification_real): Set processing_template_decl if
1616         saw_undeduced == 1.
1618         PR c++/84752 - ICE with capture of constexpr array.
1619         * call.c (standard_conversion): Set rvaluedness_matches_p on the
1620         identity conversion under ck_lvalue.
1622 2018-03-09  Jason Merrill  <jason@redhat.com>
1623             Paolo Carlini  <paolo.carlini@oracle.com>
1625         PR c++/71169
1626         PR c++/71832
1627         * pt.c (any_erroneous_template_args_p): New.
1628         * cp-tree.h (any_erroneous_template_args_p): Declare it.
1629         * parser.c (cp_parser_class_specifier_1): Use it.
1631 2018-03-09  Jason Merrill  <jason@redhat.com>
1633         PR c++/84726 - unnecessary capture of constant vars.
1634         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1635         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1636         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1637         * lambda.c (is_constant_capture_proxy)
1638         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1639         (prune_lambda_captures): New.
1640         (finish_lambda_function): Call prune_lambda_captures.
1642 2018-03-09  Jason Merrill  <jason@redhat.com>
1643             Jakub Jelinek  <jakub@redhat.com>
1645         PR c++/84076
1646         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1647         build ADDR_EXPR with REFERENCE_TYPE.
1648         (build_over_call): For purposes of check_function_arguments, if
1649         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1650         its operand rather than the argument itself.
1652 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
1654         PR c++/84724
1655         * decl.c (duplicate_decls): Don't override __* prefixed builtins
1656         except for __[^b]*_chk, instead issue permerror and for -fpermissive
1657         also a note and return olddecl.
1659 2018-03-09  Nathan Sidwell  <nathan@acm.org>
1661         PR c++/84733
1662         * name-lookup.c (do_pushdecl_with_scope): Only clear
1663         current_function_decl when pushing a non-class (i.e. namespace)
1664         scope.
1666 2018-03-08  Jason Merrill  <jason@redhat.com>
1667             Jakub Jelinek  <jakub@redhat.com>
1669         PR c++/80598
1670         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1671         not calling mark_used for the benefit of -Wunused-function warning.
1673 2018-03-06  Jason Merrill  <jason@redhat.com>
1675         * lambda.c (is_capture_proxy_with_ref): Remove.
1676         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1678 2018-03-06  Marek Polacek  <polacek@redhat.com>
1680         PR c++/84684
1681         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1682         arguments.
1684 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
1686         PR c++/84231
1687         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1688         only while processing template decls.
1689         * typeck.c (build_x_conditional_expr): Move wrapping of
1690         reference type around type...
1691         * call.c (build_conditional_expr_1): ... here.  Rename
1692         is_lvalue to is_glvalue.
1693         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1694         INDIRECT_REF of COND_EXPR too.
1696         PR c++/84593
1697         * init.c (build_zero_init_1): Zero-initialize references.
1699         PR c++/84492
1700         * semantics.c (finish_stmt_expr_expr): Reject unresolved
1701         overloads used as stmt expr values.
1703 2018-03-05  Jason Merrill  <jason@redhat.com>
1705         PR c++/84708 - ICE with lambda in local class NSDMI.
1706         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1707         context.
1709 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1711         PR c++/84684
1712         * constexpr.c (constexpr_call_hasher::equal): Return false if
1713         lhs->hash != rhs->hash.  Change return 1 to return true and
1714         return 0 to return false.
1716 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1718         PR c++/84702
1719         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1721 2018-03-05  Marek Polacek  <polacek@redhat.com>
1723         PR c++/84707
1724         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1725         UDLIT_OPER_P.
1727 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1729         PR c++/84694
1730         * friend.c (do_friend): Restore check for identifier_p inside
1731         TEMPLATE_ID_EXPR.
1733 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1735         PR c++/84618
1736         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1737         involving a VAR_DECL or a PARM_DECL.
1739 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1740             Jason  Merrill  <jason@redhat.com>
1741             Nathan Sidwell  <nathan@acm.org>
1743         PR c++/84497
1744         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1746 2018-03-03  Jason Merrill  <jason@redhat.com>
1748         PR c++/84686 - missing volatile loads.
1749         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1751 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1753         PR c++/71464
1754         * optimize.c (maybe_thunk_body): Bail out immediately if either
1755         fns[0] or fns[1] is null.
1757 2018-03-02  Marek Polacek  <polacek@redhat.com>
1759         PR c++/84578
1760         * constexpr.c (get_array_or_vector_nelts): New.
1761         (cxx_eval_array_reference): Use it.
1762         (cxx_eval_vec_init_1): Likewise.
1763         (cxx_eval_store_expression): Likewise.
1765 2018-03-02  Jason Merrill  <jason@redhat.com>
1767         * semantics.c (force_paren_expr): Remove redundant test.
1769 2018-03-02  Marek Polacek  <polacek@redhat.com>
1771         PR c++/84663
1772         * decl.c (cp_complete_array_type): Check error_mark_node.
1774         PR c++/84664
1775         * typeck.c (cp_perform_integral_promotions): Check the result of
1776         mark_rvalue_use.
1778 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1780         PR c++/84662
1781         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1782         RETURN instead of return.
1783         <case POINTER_PLUS_EXPR>: Likewise.
1784         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1785         it instead of wrapping it into CONVERT_EXPR.
1787 2018-03-02  Jason Merrill  <jason@redhat.com>
1789         Fix MIPS16 ICE.
1790         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1792 2018-03-02  Marek Polacek  <polacek@redhat.com>
1794         PR c++/84590
1795         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1796         wrapped in VIEW_CONVERT_EXPR.
1798 2018-03-01  Martin Sebor  <msebor@redhat.com>
1800         PR c++/84294
1801         * decl.c (check_redeclaration_no_default_args): Merge attributes
1802         specified on redeclarations of the same function template.
1803         Remove dead code.
1805 2018-03-01  Marek Polacek  <polacek@redhat.com>
1806             Jason Merrill  <jason@redhat.com>
1808         PR c++/84582
1809         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1810         a template.
1811         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1812         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1813         of instantiate_non_dependent_expr.
1814         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1816 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1818         PR c++/84434
1819         * name-lookup.c (member_vec_dedup): Remove manually peeled
1820         iteration.  Ignore dependent ctor inheritance.
1822 2018-03-01  Jason Merrill  <jason@redhat.com>
1824         PR c++/71569 - decltype of template.
1825         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1827 2018-03-01  Marek Polacek  <polacek@redhat.com>
1829         PR c++/84596
1830         * constexpr.c (require_rvalue_constant_expression): New function.
1831         * cp-tree.h: Declare it.
1832         * semantics.c (finish_static_assert): Use it instead of
1833         require_potential_rvalue_constant_expression.
1835 2018-03-01  Jason Merrill  <jason@redhat.com>
1836             Alexandre Oliva <aoliva@redhat.com>
1838         PR c++/71569 - ICE with redundant args on member variable template.
1839         * decl.c (start_decl): Handle partial specialization of member
1840         variable template.
1841         * pt.c (determine_specialization): Allow partial specialization
1842         of member variable template without specializing enclosing class.
1843         (process_partial_specialization): Improve error message.
1845 2018-02-28  Jason Merrill  <jason@redhat.com>
1847         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1848         * pt.c (determine_specialization): Check ref-qualifier.
1850 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1852         PR c++/84609
1853         * parser.c (cp_parser_attributes_opt): Formatting fix.
1854         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1855         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1856         New functions.
1857         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1858         instead of tentative parse to peek over optional attribute tokens
1859         to check for CPP_COLON after them.
1861         PR c++/83871
1862         PR c++/83503
1863         * pt.c (INCLUDE_STRING): Remove define.
1864         (warn_spec_missing_attributes): Use pretty_printer instead of
1865         std::string.  Fix up inform call so that the list of attributes
1866         is in %s argument.
1868 2018-02-28  Martin Sebor  <msebor@redhat.com>
1870         PR testsuite/84617
1871         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1872         and malloc.
1874 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1876         PR c++/84602
1877         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1878         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1879         regardless of want_type.
1880         (search_anon_aggr): Just use get_class_binding_direct.
1882 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1884         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1885         inform_n.
1887 2018-02-27  Martin Sebor  <msebor@redhat.com>
1889         * pt.c: Avoid including <string> directly.
1891 2018-02-27  Martin Sebor  <msebor@redhat.com>
1893         PR c++/83871
1894         PR c++/83503
1895         * cp-tree.h (warn_spec_missing_attributes): New function.
1896         ((check_explicit_specialization): Add an argument.  Call the above
1897         function.
1898         * decl.c (duplicate_decls): Avoid applying primary function template's
1899         attributes to its explicit specializations.
1900         cp/pt.c (warn_spec_missing_attributes): Define.
1902 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1904         PR c++/71546 - lambda init-capture with qualified-id.
1905         * parser.c (cp_parser_lambda_introducer): Clear scope after
1906         each lambda capture.
1908 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1910         PR c++/84426
1911         * name-lookup.h (get_member_slot): Rename ...
1912         (find_member_slot): ... here.
1913         (add_member_slot): New.
1914         * name-lookup.c (member_vec_linear_search): No need to check for
1915         NULL slot.
1916         (get_member_slot): Rename ...
1917         (find_member_slot): ... here.  Don't add slot for incomplete class.
1918         (add_member_slot): New.
1919         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1920         if push_class_level_binding fails.  Create slot and grok
1921         properties once we're committed to insertion.
1923 2018-02-27  Jason Merrill  <jason@redhat.com>
1925         PR c++/84489 - dependent default template argument
1926         * pt.c (type_unification_real): Handle early substitution failure.
1928 2018-02-26  Jason Merrill  <jason@redhat.com>
1930         PR c++/84560 - ICE capturing multi-dimensional VLA.
1931         * tree.c (array_of_runtime_bound_p): False if the element is
1932         variably-modified.
1934         PR c++/84441 - ICE with base initialized from ?:
1935         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1937         PR c++/84520 - ICE with generic lambda in NSDMI.
1938         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1939         'this' in a generic lambda instantiation.
1941         PR c++/84559 - ICE with constexpr VLA.
1942         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1943         for constexpr variable with VLA type.
1945 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1947         PR c++/84558
1948         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1949         a valid constant initializer.  Formatting fixes.
1951 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1953         PR c++/84540
1954         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1955         returning NULL_TREE.
1956         (apply_late_template_attributes): Likewise.
1958 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1960         PR c++/84557
1961         * parser.c (cp_parser_omp_var_list_no_open): Only call
1962         cp_parser_lookup_name_simple on names satisfying identifier_p.
1963         (cp_parser_oacc_routine): Likewise.
1965 2018-02-26  Jason Merrill  <jason@redhat.com>
1967         PR c++/84551 - ICE with concepts and -g.
1968         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1970 2018-02-26  Marek Polacek  <polacek@redhat.com>
1972         PR c++/84325
1973         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1974         non-types.
1976 2018-02-26  Jason Merrill  <jason@redhat.com>
1978         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1979         * call.c (build_over_call): Handle deleted functions in one place.
1981 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1983         PR c++/84533
1984         * decl.c (redeclaration_error_message): Don't try to use
1985         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1987 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1989         * lambda.c (build_capture_proxy): Define static.
1990         * cp-tree.h (build_capture_proxy): Remove.
1992 2018-02-26  Marek Polacek  <polacek@redhat.com>
1994         PR c++/84537
1995         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1996         if name is error node.
1998 2018-02-25  Jason Merrill  <jason@redhat.com>
2000         PR c++/84015 - ICE with class deduction and auto template parm.
2001         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
2003 2018-02-24  Marek Polacek  <polacek@redhat.com>
2005         PR c++/83692
2006         * constexpr.c (maybe_constant_init_1): New function.
2007         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
2008         (cxx_constant_init): New function.
2009         * cp-tree.h (cxx_constant_init): Declare.
2010         * typeck2.c (store_init_value): Call cxx_constant_init instead of
2011         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
2013 2018-02-22  Jason Merrill  <jason@redhat.com>
2015         PR c++/70468 - ICE with constructor delegation via typedef.
2016         * pt.c (tsubst_initializer_list): Check for other mem-initializers
2017         with constructor delegation.
2019 2018-02-22  Jason Merrill  <jason@redhat.com>
2021         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
2022         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
2023         VECTOR_TYPE.
2025 2018-02-22  Marek Polacek  <polacek@redhat.com>
2027         PR c++/84493
2028         * parser.c (cp_parser_braced_list): Use require_open instead of
2029         consume_open.
2031 2018-02-21  Jason Merrill  <jason@redhat.com>
2033         PR c++/84454 - ICE with pack expansion in signature.
2034         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
2036 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
2038         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
2039         IF_STMT.
2041 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
2043         PR c++/84446
2044         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
2045         on error_mark_node.
2047 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
2049         PR c++/84445
2050         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
2051         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
2053         PR c++/84449
2054         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
2055         returns error_mark_node, return it immediately.
2056         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
2057         error_mark_node, return error_mark_node.
2059         PR c++/84455
2060         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
2061         function_depth to avoid GC during finish_lambda_function.
2063 2018-02-19  Jason Merrill  <jason@redhat.com>
2065         PR c++/84429 - ICE capturing VLA.
2066         * lambda.c (build_capture_proxy): Handle reference refs.
2068 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
2070         PR c++/84448
2071         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
2072         either operand is error_mark_node, set current.lhs to that instead of
2073         creating a binary op with error_mark_node operands.
2075         PR c++/84430
2076         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
2078 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
2080         PR c++/84348
2081         * decl.c (grokdeclarator): Early return error_mark_node upon
2082         ill-formed friend declaration.
2084 2018-02-16  Marek Polacek  <polacek@redhat.com>
2085             Jakub Jelinek  <jakub@redhat.com>
2087         PR c++/84192
2088         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
2089         set *jump_target to anything if jump_target is NULL.
2091 2018-02-16  Jason Merrill  <jason@redhat.com>
2093         PR c++/84151 - unnecessary volatile load with static member.
2094         * call.c (build_new_method_call_1): Avoid loading from a volatile
2095         lvalue used as the object argument for a static member function.
2097         PR c++/81853 - using-directive and constexpr.
2098         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
2100         PR c++/84420 - ICE with structured binding in lambda.
2101         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
2103         PR c++/83835 - C++17 error with constructor ctors.
2104         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
2106         PR c++/82664 - ICE with reference to function template parm.
2107         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
2108         NOP_EXPRs.
2110         PR c++/82764 - C++17 ICE with empty base
2111         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
2113 2018-02-16  Jason Merrill  <jason@redhat.com>
2115         PR c++/84421 - type-dependent if constexpr
2116         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
2118 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2120         Deprecate -ffriend-injection.
2121         * decl.c (cxx_init_decl_processing): Emit warning on option.
2122         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
2123         friend.
2125 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
2127         PR c++/82468
2128         * decl.c (check_special_function_return_type): Reject template
2129         template parameter in deduction guide.
2131 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2133         PR c++/84375
2134         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
2136 2018-02-15  Jason Merrill  <jason@redhat.com>
2138         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
2139         * call.c (convert_like_real): Don't use the copy-list-initialization
2140         shortcut for ck_base.
2142         PR c++/84045 - ICE with typedef and noexcept.
2143         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
2145         PR c++/84376 - ICE with omitted template arguments.
2146         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
2148         PR c++/84368 - wrong error with local variable in variadic lambda.
2149         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
2150         local_specializations.
2152 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
2154         PR c++/84330
2155         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
2156         as first argument.
2158 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2160         PR c++/84350
2161         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
2162         init, early return.
2164 2018-02-14  Nathan Sidwell  <nathan@acm.org>
2166         * decl2.c (mark_vtable_entries): Set input_location to decl's.
2167         (c_parse_final_cleanups): Restore input_location after emitting
2168         vtables.
2170 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2172         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
2173         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
2174         auto_deduction_context, tree, int): Add defaults.
2175         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
2176         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
2177         tsubst_flags_t argument.
2178         * init.c (build_new): Likewise.
2180 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
2182         PR c++/84364
2183         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
2184         about return other than *this in assignment operators if
2185         retval is type dependent expression.
2187 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
2189         PR c++/84333
2190         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
2191         save_expr for the G++ extension.
2193 2018-02-13  Jason Merrill  <jason@redhat.com>
2195         PR c++/84080 - ICE with return type deduction and specialization.
2196         * pt.c (determine_specialization): Check uses_template_parms.
2198         Fix more variadic capture issues.
2199         * pt.c (find_parameter_packs_r): Also look at explicit captures.
2200         (check_for_bare_parameter_packs): Check current_class_type for
2201         lambda context.
2202         (extract_locals_r): Handle seeing a full instantiation of a pack.
2203         (tsubst_pack_expansion): Likewise.  Force lambda capture.
2204         * parser.c (cp_parser_lambda_introducer): Don't
2205         check_for_bare_parameter_packs.
2207         PR c++/84338 - wrong variadic sizeof.
2208         * pt.c (argument_pack_select_arg): Like the macro, but look through
2209         a pack expansion.
2210         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
2211         (extract_fnparm_pack): Do make_pack_expansion.
2212         (extract_locals_r): Do strip a pack expansion.
2213         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
2215 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
2217         PR c++/84341
2218         * parser.c (cp_parser_binary_expression): Use build_min instead of
2219         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
2221 2018-02-12  Nathan Sidwell  <nathan@acm.org>
2223         PR c++/84263
2224         * parser.c (cp_parser_decltype): Push and pop
2225         deferring_access_checks.  Reorganize to avoid goto.
2227 2018-02-12  Richard Biener  <rguenther@suse.de>
2229         PR c++/84281
2230         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
2231         uniform constructors and delay allocating them fully.
2233 2018-02-09  Jason Merrill  <jason@redhat.com>
2235         PR c++/84036 - ICE with variadic capture.
2236         Handle variadic capture proxies more like non-variadic.
2237         * lambda.c (build_capture_proxy): Remove workaround.
2238         * pt.c (find_parameter_packs_r): The proxy is a pack.
2239         (instantiate_class_template_1): Remove dead lambda code.
2240         (extract_fnparm_pack): Don't make_pack_expansion.
2241         (extract_locals_r): Don't strip a pack expansion.
2242         (tsubst_pack_expansion): Handle proxy packs.  Use
2243         PACK_EXPANSION_EXTRA_ARGS less.
2244         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
2245         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
2246         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
2247         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
2248         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
2250 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
2252         PR sanitizer/83987
2253         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
2255 2018-02-09  Jason Merrill  <jason@redhat.com>
2257         PR c++/81917 - ICE with void_t and partial specialization.
2258         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
2259         calling most_specialized_partial_spec.
2261 2018-02-09  Nathan Sidwell  <nathan@acm.org>
2263         PR c/84293
2264         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
2265         Pass expr location to strict_aliasing_warning.
2267 2018-02-09  Jason Merrill  <jason@redhat.com>
2269         PR c++/84296 - ICE with qualified-id in template.
2270         PR c++/83714
2271         * pt.c (unknown_base_ref_p): New.
2272         (instantiation_dependent_scope_ref_p): Use it instead of
2273         any_dependent_bases_p.
2275 2018-02-09  Marek Polacek  <polacek@redhat.com>
2276             Jakub Jelinek  <jakub@redhat.com>
2278         PR c++/83659
2279         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
2280         fold_indirect_ref_1, including poly_*int64.  Verify first that
2281         tree_fits_poly_int64_p (op01).  Formatting fixes.
2283 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2285         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
2286         * lambda.c (build_capture_proxy): Likewise.
2287         * search.c (field_access_p): Likewise.
2288         * semantics.c (omp_clause_decl, omp_privatize_field,
2289         finish_omp_clauses): Likewise.
2291 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2293         PR c++/83806
2294         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
2295         case of nullptr too.
2297 2018-02-08  Nathan Sidwell  <nathan@acm.org>
2299         * class.c (finish_struct): Fix std:initializer_list diagnostic
2300         formatting.
2302 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2304         PR c++/83204
2305         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
2307 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
2309         PR c++/84082
2310         * parser.c (cp_parser_dot_deref_incomplete): New function.
2311         (cp_parser_postfix_dot_deref_expression): Use it.
2313 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
2315         PR c++/81610
2316         PR c++/80567
2317         * name-lookup.c (suggest_rid_p): New function.
2318         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
2319         suggest_rid_p.
2321 2018-02-07  Jason Merrill  <jason@redhat.com>
2323         PR c++/84182 - ICE with captured lambda
2324         PR c++/84181
2325         * pt.c (extract_locals_r, extract_local_specs): New.
2326         (tsubst_pack_expansion): Use them.
2328 2018-02-07  Martin Liska  <mliska@suse.cz>
2330         PR c++/84059.
2331         * class.c (add_method): Append argument value.
2332         * cp-tree.h (maybe_version_functions): Add new argument.
2333         * decl.c (decls_match): Call it if a declaration does not
2334         have DECL_FUNCTION_VERSIONED.
2335         (maybe_version_functions): record argument is added.
2337 2018-02-05  Marek Polacek  <polacek@redhat.com>
2339         * class.c: Remove unused global variables.
2340         (build_primary_vtable): Don't gather statistics.
2341         (print_class_statistics): Remove.
2342         * cp-tree.h (print_class_statistics): Remove.
2343         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
2345 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
2347         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
2348         * constexpr.c (cx_check_missing_mem_inits): Likewise.
2349         * decl.c (next_initializable_field, find_decomp_class_base,
2350         cp_finish_decomp): Likewise.
2351         * typeck2.c (process_init_constructor_record): Likewise.
2353 2018-02-02  Jason Merrill  <jason@redhat.com>
2355         PR c++/84181 - ICE with lambda parm in template argument.
2356         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
2358 2018-02-01  Jason Merrill  <jason@redhat.com>
2360         PR c++/84160 - ICE with nested variadic capture.
2361         * lambda.c (is_capture_proxy_with_ref): New.
2362         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
2363         COMPONENT_REF.
2364         * expr.c (mark_use): Use is_capture_proxy_with_ref.
2365         * constexpr.c (potential_constant_expression_1): Likewise.
2366         * semantics.c (process_outer_var_ref): Likewise.
2368 2018-02-01  Marek Polacek  <polacek@redhat.com>
2370         PR c++/84125
2371         * typeck.c (build_address): Relax the assert when
2372         processing_template_decl.
2374 2018-02-01  Jason Merrill  <jason@redhat.com>
2376         PR c++/84126 - ICE with variadic generic lambda
2377         PR c++/84036
2378         PR c++/82249
2379         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
2380         PACK_EXPANSION_EXTRA_ARGS.
2382 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
2384         PR c++/83796
2385         * call.c (convert_like_real): If w're initializing from {} explicitly
2386         call abstract_virtuals_error_sfinae.
2388 2018-01-31  Jason Merrill  <jason@redhat.com>
2389             Jakub Jelinek  <jakub@redhat.com>
2391         PR c++/83993
2392         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
2393         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
2394         on ADDR_EXPR.
2396 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
2398         PR c++/83993
2399         * constexpr.c (diag_array_subscript): Emit different diagnostics
2400         if TYPE_DOMAIN (arraytype) is NULL.
2401         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
2402         with NULL TYPE_DOMAIN use size_zero_node as nelts.
2404 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
2406         PR c++/84092
2407         * semantics.c (finish_qualified_id_expr): When handling an
2408         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
2410 2018-01-31  Marek Polacek  <polacek@redhat.com>
2412         PR c++/84138
2413         * cp-gimplify.c (cp_fold): Check if X is an error node before
2414         calling useless_type_conversion_p.
2416 2018-01-30  Jason Merrill  <jason@redhat.com>
2418         PR c++/84091 - ICE with local class in lambda in template.
2419         * decl2.c (determine_visibility): Look for outer containing template
2420         instantiation.
2422         PR c++/84098 - ICE with lambda in template NSDMI.
2423         * pt.c (instantiate_class_template_1): Ignore more lambdas.
2425 2018-01-29  Jason Merrill  <jason@redhat.com>
2427         PR c++/68810 - wrong location for reinterpret_cast error.
2428         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
2429         !dofold.
2431 2018-01-29  Marek Polacek  <polacek@redhat.com>
2433         PR c++/83996
2434         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
2435         => fooarray[1] in offset_int.
2437 2018-01-29  Jason Merrill  <jason@redhat.com>
2439         PR c++/83942 - wrong unused warning with static_cast.
2440         * cvt.c (ocp_convert): Call mark_rvalue_use.
2442 2018-01-26  Jason Merrill  <jason@redhat.com>
2444         PR c++/83956 - wrong dtor error with anonymous union
2445         * method.c (walk_field_subobs): Variant members only affect
2446         deletedness.
2447         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
2449         PR c++/84036 - ICE with variadic capture.
2450         PR c++/82249
2451         * pt.c (tsubst_pack_expansion): When optimizing a simple
2452         substitution, pull a single pack expansion out of its pack.
2454         PR c++/82514 - ICE with local class in generic lambda.
2455         * pt.c (regenerated_lambda_fn_p): Remove.
2456         (enclosing_instantiation_of): Don't use it.
2457         (tsubst_function_decl): Call enclosing_instantiation_of.
2459         * pt.c (lookup_template_class_1): Add sanity check.
2460         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
2462 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
2464         PR c++/84031
2465         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
2466         recursive calls that return ret.
2467         (cp_finish_decomp): Ignore unnamed bitfields.
2469 2018-01-23  Jason Merrill  <jason@redhat.com>
2471         PR c++/82249 - wrong mismatched pack length error.
2472         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
2473         unsubstituted function parameter pack.
2475 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
2477         PR c++/83921
2478         * decl.c (check_for_uninitialized_const_var): Not static; add
2479         bool and tsubst_flags_t parameters; adjust to be used both in
2480         constexpr context and not.
2481         * constexpr.c (potential_constant_expression_1): Use the above.
2482         * cp-tree.h (check_for_uninitialized_const_var): Declare.
2484 2018-01-23  Jason Merrill  <jason@redhat.com>
2486         PR c++/83947 - ICE with auto declarations.
2487         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
2488         * decl.c (undeduced_auto_decl): Limit to vars and fns.
2490 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
2492         PR c++/83974
2493         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
2494         for pointer to member function types.
2496 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2498         PR sanitizer/83987
2499         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
2500         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
2502 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2504         PR c++/83988
2505         * pt.c (tsubst_baselink): Remove optype assert.
2506         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
2508 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2510         PR c++/83958
2511         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
2512         refers to incomplete type.
2514 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2516         Deprecate ARM-era for scope handling
2517         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
2518         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
2519         cleared.
2520         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
2521         cleanup handling.
2522         * semantics.c (begin_for_scope): Flag_new_for_scope is
2523         boolean-like.
2524         (finish_for_stmt, begin_range_for_stmt): Likewise.
2526 2018-01-22  Jason Merrill  <jason@redhat.com>
2528         PR c++/83720
2529         * decl2.c (determine_visibility): Fix template_decl handling
2530         instead of blocking it.
2532         PR c++/83720 - ICE with lambda and LTO.
2533         * decl2.c (determine_visibility): Clear template_decl for
2534         function-scope decls.  Propagate anonymous linkage from containing
2535         function.
2537 2018-01-22  Marek Polacek  <polacek@redhat.com>
2539         PR c++/81933
2540         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
2541         split out anything.
2543 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2545         PR c++/83895
2546         * decl.c (grokdeclarator): Don't diagnose extra parens
2547         on typedefs.
2549 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
2551         PR c++/81167
2552         * call.c (joust): Use TREE_TYPE (source) if source is
2553         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
2555         PR c++/83919
2556         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
2557         for direct enum init.
2558         * decl.c (reshape_init): Likewise.
2560 2018-01-19  Marek Polacek  <polacek@redhat.com>
2562         * constexpr.c (fold_simple): Simplify.
2564 2018-01-18  Jason Merrill  <jason@redhat.com>
2566         PR c++/83714
2567         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
2568         * pt.c (instantiation_dependent_scope_ref_p): True if
2569         any_dependent_bases_p.
2571 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2573         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
2574         vs DECL_NONTRIVIALLY_INITIALIZED_P).
2576 2018-01-18  Jason Merrill  <jason@redhat.com>
2578         PR c++/82461 - constexpr list-initialized member
2579         * constexpr.c (potential_constant_expression_1): Check
2580         TARGET_EXPR_DIRECT_INIT_P.
2582 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2584         PR c++/81013
2585         * decl.c (xref_basetypes): Early return upon error about derived
2586         union.
2588 2018-01-18  Nathan Sidwell  <nathan@acm.org>
2590         PR c++/83160
2591         * cp-tree.h (mark_use): Declare.
2592         * expr.c (mark_use): Make extern.
2593         * call.c (direct_reference_binding): Set inner conv's
2594         rvaluedness_matches_p, if it is an identity.
2595         (convert_like_real): Mark lvalue or rvalue use for identity as
2596         rvaledness_matches_p demands.
2598 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
2600         PR c++/83824
2601         * parser.c (attr_chainon): New function.
2602         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
2603         cp_parser_namespace_definition, cp_parser_init_declarator,
2604         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
2605         cp_parser_gnu_attributes_opt): Use it.
2606         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
2607         cp_parser_objc_struct_declaration): Likewise.  Don't reset
2608         prefix_attributes if attributes is error_mark_node.
2610 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2612         PR c++/78344
2613         * decl.c (grokdeclarator): Do not append the error_mark_node
2614         due to an erroneous optional attribute-specifier-seq.
2616 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
2618         PR c++/83897
2619         * cp-gimplify.c (cp_maybe_instrument_return): Handle
2620         CLEANUP_POINT_EXPR.
2622 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2624         PR c++/81054
2625         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
2626         error_mark_node when we give an error.
2627         * decl.c (cp_finish_decl): Use the latter.
2629 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2631         PR c++/83287
2632         * init.c (build_raw_new_expr): Scan list for lookups to keep.
2634 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2636         PR c++/83814
2637         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2638         the C++ part.  If processing a template, call
2639         fold_non_dependent_expr rather than fully folding.
2641 2018-01-17  Jason Merrill  <jason@redhat.com>
2643         PR c++/81067 - redundant NULL warning.
2644         * call.c (convert_like_real): Restore null_node handling.
2646 2018-01-17  Jason Merrill  <jason@redhat.com>
2648         PR c++/81843 - ICE with variadic member template.
2649         PR c++/72801
2650         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2651         template args.
2653 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2655         PR c++/83799
2656         * pt.c (type_dependent_expression_p): Strip any location wrapper
2657         before testing tree codes.
2658         (selftest::test_type_dependent_expression_p): New function.
2659         (selftest::cp_pt_c_tests): Call it.
2661 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2663         PR c++/83739
2664         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2665         this not a final instantiation.
2667 2018-01-16  Jason Merrill  <jason@redhat.com>
2669         PR c++/83714 - ICE checking return in template.
2670         * typeck.c (check_return_expr): Call build_non_dependent_expr.
2672 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
2674         PR c++/83817
2675         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2676         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2677         instead of CALL_FROM_THUNK_P.
2679         PR c++/83825
2680         * name-lookup.c (member_vec_dedup): Return early if len is 0.
2681         (resort_type_member_vec, set_class_bindings,
2682         insert_late_enum_def_bindings): Use vec qsort method instead of
2683         calling qsort directly.
2685 2018-01-15  Martin Sebor  <msebor@redhat.com>
2687         PR c++/83588
2688         * class.c (find_flexarrays): Make a record of multiple flexible array
2689         members.
2691 2018-01-12  Jason Merrill  <jason@redhat.com>
2693         PR c++/83186 - ICE with static_cast of list-initialized temporary.
2694         * typeck.c (build_static_cast): Use build_non_dependent_expr.
2696 2018-01-12  Nathan Sidwell  <nathan@acm.org>
2698         * cp-tree.h (mark_rvalue_use): Add parm name.
2699         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2700         mark_rvalue_use.
2701         * call.c (convert_like_real): Fix formatting.
2703 2018-01-11  Jason Merrill  <jason@redhat.com>
2705         PR c++/82728 - wrong -Wunused-but-set-variable
2706         PR c++/82799
2707         PR c++/83690
2708         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2709         * decl.c (case_conversion): Likewise.
2710         * semantics.c (finish_static_assert): Call
2711         perform_implicit_conversion_flags.
2713 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2715         * method.c (enum mangling_flags): Delete long-dead enum.
2717 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2719         * parser.c (cp_parser_std_attribute_spec): When
2720         token_pair::require_open / require_close return false simply
2721         return error_mark_node, avoid duplicate cp_parser_error about
2722         expected '(' / ')', respectively.
2724 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2726         PR c++/43486
2727         * call.c (null_ptr_cst_p): Strip location wrappers when
2728         converting from '0' to a pointer type in C++11 onwards.
2729         (conversion_null_warnings): Replace comparison with null_node with
2730         call to null_node_p.
2731         (build_over_call): Likewise.
2732         * cp-gimplify.c (cp_fold): Remove the early bailout when
2733         processing_template_decl.
2734         * cp-lang.c (selftest::run_cp_tests): Call
2735         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2736         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2737         (selftest::run_cp_tests): Move decl to bottom of file.
2738         (null_node_p): New inline function.
2739         (selftest::cp_pt_c_tests): New decl.
2740         (selftest::cp_tree_c_tests): New decl.
2741         * cvt.c (build_expr_type_conversion): Replace comparison with
2742         null_node with call to null_node_p.
2743         * error.c (args_to_string): Likewise.
2744         * except.c (build_throw): Likewise.
2745         * mangle.c (write_expression): Skip location wrapper nodes.
2746         * parser.c (literal_integer_zerop): New function.
2747         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2748         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2749         param of cp_parser_parenthesized_expression_list.  When calling
2750         warn_for_memset, replace integer_zerop calls with
2751         literal_integer_zerop, eliminating the double logical negation
2752         cast to bool.  Eliminate the special-casing for CONST_DECL in
2753         favor of the fold_for_warn within warn_for_memset.
2754         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2755         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2756         maybe_add_location_wrapper on it when wrap_locations_p is true.
2757         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2758         the result for RID_ALIGNOF and RID_SIZEOF.
2759         (cp_parser_builtin_offsetof): Likewise.
2760         * pt.c: Include "selftest.h".
2761         (tsubst_copy): Handle location wrappers.
2762         (tsubst_copy_and_build): Likewise.
2763         (build_non_dependent_expr): Likewise.
2764         (selftest::test_build_non_dependent_expr): New function.
2765         (selftest::cp_pt_c_tests): New function.
2766         * tree.c: Include "selftest.h".
2767         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2768         (selftest::test_lvalue_kind): New function.
2769         (selftest::cp_tree_c_tests): New function.
2770         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2771         (cp_build_binary_op): Replace comparison with null_node with call
2772         to null_node_p.
2773         (build_address): Use location of operand when building address
2774         expression.
2776 2018-01-10  Marek Polacek  <polacek@redhat.com>
2778         PR c++/82541
2779         * call.c (build_conditional_expr_1): Check complain before warning.
2780         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2781         -Wduplicated-branches.
2783 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2785         PR c++/81327
2786         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2787         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2788         args uses and check number of operands too.  Don't strip away any
2789         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2790         Deal with src argument not having pointer type.  Check
2791         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2792         test.
2793         (build_over_call): Call maybe_warn_class_memaccess here on the
2794         original arguments.
2795         (build_cxx_call): Rather than here on converted arguments.
2797 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2799         PR c++/81055
2800         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2801         error_mark_node as second argument.
2803 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2805         PR c++/83734
2806         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2807         in STATEMENT_LIST.  Remove unneeded assert.
2809 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2810             Alan Hayward  <alan.hayward@arm.com>
2811             David Sherwood  <david.sherwood@arm.com>
2813         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2814         VECTOR_CST_NELTS.
2815         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2816         * call.c (build_conditional_expr_1): Likewise.
2817         * decl.c (cp_finish_decomp): Likewise.
2818         * mangle.c (write_type): Likewise.
2819         * typeck.c (structural_comptypes): Likewise.
2820         (cp_build_binary_op): Likewise.
2821         * typeck2.c (process_init_constructor_array): Likewise.
2823 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2825         PR c++/83555
2826         * typeck.c (build_static_cast_1): For static casts to reference types,
2827         call build_base_path with flag_delete_null_pointer_checks as nonnull
2828         instead of always false.  When -fsanitize=null, call
2829         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2830         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2831         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2833 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2835         PR c++/83667
2836         * method.c (make_alias_for): Copy DECL_CONTEXT.
2838 2018-01-03  Marek Polacek  <polacek@redhat.com>
2840         PR c++/83592
2841         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2843 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2845         PR preprocessor/83602
2846         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2847         for builtin macros.
2849         PR c++/83634
2850         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2851         error_mark_node, return error_mark_node.
2853         Update copyright years.
2855 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2857         PR c++/83556
2858         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2859         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2860         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2861         to false and return.
2862         (replace_placeholders): Pass NULL instead of &pset as last argument
2863         to cp_walk_tree.
2865 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2867         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2868         lval var.
2870 Copyright (C) 2018 Free Software Foundation, Inc.
2872 Copying and distribution of this file, with or without modification,
2873 are permitted in any medium without royalty provided the copyright
2874 notice and this notice are preserved.