PR c++/85646 - lambda visibility.
[official-gcc.git] / gcc / cp / ChangeLog
blob65991150ef0aa775466ea99365cad733d6649987
1 2018-05-07  Jason Merrill  <jason@redhat.com>
3         PR c++/85646 - lambda visibility.
4         * decl2.c (determine_visibility): Don't mess with template arguments
5         from the containing scope.
6         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
7         thunk.
9 2018-05-07  Nathan Sidwell  <nathan@acm.org>
11         Remove fno-for-scope
12         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
13         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
14         (SET_DECL_SHADOWED_FOR_VAR): Delete.
15         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
16         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
17         Don't declare.
18         * name-lookup.h (struct cp_binding_level): Remove
19         dead_vars_from_for field.
20         * cp-lang.c (cp_init_ts): Delete.
21         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
22         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
23         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
24         (init_shadowed_var_for_decl): Delete.
25         * decl.c (poplevel): Remove shadowed for var handling.
26         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
27         * name-lookup.c (find_local_binding): Remove shadowed for var
28         handling.
29         (check_local_shadow): Likewise.
30         (check_for_out_of_scope_variable): Delete.
31         * parser.c (cp_parser_primary_expression): Remove shadowed for var
32         handling.
33         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
34         * semantics.c (begin_for_scope): Always have a scope.
35         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
36         (begin_range_for_stmt, finish_id_expression): Likewise.
38 2018-05-07  Jason Merrill  <jason@redhat.com>
40         PR c++/85618 - ICE with initialized VLA.
41         * tree.c (vla_type_p): New.
42         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
43         rather than array_of_runtime_bound_p.
45 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
47         * cvt.c (ocp_convert): Early handle the special case of a
48         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
50 2018-05-03  Jason Merrill  <jason@redhat.com>
52         PR c++/85600 - virtual delete failure.
53         * init.c (build_delete): Always save_expr when deleting.
55 2018-05-03  Nathan Sidwell  <nathan@acm.org>
57         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
58         * name-lookup.c (do_pushdecl): Likewise.
60 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
61             Jason Merrill  <jason@redhat.com>
63         PR c++/68374
64         * name-lookup.c (check_local_shadow): Don't handle static old
65         declarations in the block handling locals shadowing locals.
67 2018-05-01  Jason Merrill  <jason@redhat.com>
69         PR c++/85587 - error with scoped enum in template.
70         * semantics.c (finish_qualified_id_expr): Don't return an
71         unqualified IDENTIFIER_NODE.
73 2018-04-30  Jason Merrill  <jason@redhat.com>
75         PR c++/85580 - extern "C" and local variables
76         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
78         PR c++/84701 - unsigned typeof.
79         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
80         of long/short/signed/unsigned.
82         PR c++/85305 - pack in lambda init-capture.
83         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
84         check_for_bare_parameter_packs in a subexpression.
85         (cp_parser_lambda_introducer): Use it.
87         PR c++/61982 - dead stores to destroyed objects.
88         * call.c (build_trivial_dtor_call): New, assigns a clobber.
89         (build_over_call, build_special_member_call): Use it.
90         * cp-tree.h: Declare it.
91         * init.c (build_delete): Remove trivial path.
93         * init.c (build_dtor_call): Use build_special_member_call.
94         (build_delete): Remove redundant uses of save_addr.
96         * decl.c (build_clobber_this): Use build_clobber.
98 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
100         PR c++/85553
101         * init.c (build_zero_init_1): For zero initialization of
102         NULLPTR_TYPE_P type use build_int_cst directly.
104 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
106         PR c++/85515
107         * name-lookup.c (consider_binding_level): Skip compiler-generated
108         variables.
109         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
110         nested if statements into a series of rejection tests.  Reject
111         lambda-ignored entities as suggestions.
113 2018-04-27  Jason Merrill  <jason@redhat.com>
115         * cvt.c (cp_fold_convert): Use convert_ptrmem.
116         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
118 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
120         PR c++/84691
121         * decl.c (grokdeclarator): Clear friendp upon definition in local
122         class definition error.
124 2018-04-27  Jason Merrill  <jason@redhat.com>
126         PR c++/85545 - ICE with noexcept PMF conversion.
127         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
128         build_ptrmemfunc.
129         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
130         adjustment.
131         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
133 2018-04-27  Nathan Sidwell  <nathan@acm.org>
135         * typeck.c (convert_ptrmem): Move local var decls to initialization.
137         * cp-tree.h (TEMPLATE_INFO): Fix comments.
138         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
139         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
140         (dump, print_other_binding_stacks): Remove declarations.
141         * name-lookup.c (print_other_binding_stack): Make static.
142         * pt.c (build_template_decl): Make static.
144 2018-04-26  Jason Merrill  <jason@redhat.com>
146         PR c++/85545 - ICE with noexcept PMF conversion.
147         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
149 2018-04-25  Nathan Sidwell  <nathan@acm.org>
151         PR c++/85437
152         PR c++/49171
153         * cp-tree.h (REINTERPRET_CAST_P): New.
154         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
155         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
156         for non-trivial PTRMEM_CST cases.
157         * typeck.c (build_nop_reinterpret): New.
158         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
159         NOP_EXPRs returned by cp_convert.
161 2018-04-23  Jason Merrill  <jason@redhat.com>
163         PR c++/69560 - wrong alignof(double) on x86.
164         CWG 1879 - Inadequate definition of alignment requirement.
165         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
166         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
167         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
168         (cxx_alignof_expr): Pass it.
169         * parser.c (cp_parser_unary_expression): Pass it.
170         * pt.c (tsubst_copy): Copy it.
171         (tsubst_copy_and_build): Pass it.
172         * decl.c (fold_sizeof_expr): Pass it.
174 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
175             Jason Merrill  <jason@redhat.com>
177         PR c++/85470 - wrong error with static data member.
178         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
179         * typeck2.c (store_init_value): Likewise.
181 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
183         PR c++/85462
184         * cp-tree.h (tinst_level): Remove in_system_header_p member,
185         change refcount member from unsigned char to unsigned short,
186         add refcount_infinity static data member, adjust comments.
187         * pt.c (tinst_level::refcount_infinity): Define.
188         (inc_refcount_use): Remove assert, don't increment if refcount
189         is already refcount_infinity, adjust comment.
190         (dec_refcount_use): Remove assert, don't decrement if refcount
191         is refcount_infinity, adjust comment.
192         (push_tinst_level_loc): Formatting fix.
194 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
196         PR c++/84611
197         * pt.c (lookup_template_class_1): Check pushtag return value for
198         error_mark_node.
200 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
202         PR c++/80290
203         * cp-tree.h (tinst_level::free): Fix whitespace.
205 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
207         PR c++/84630
208         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
209         for error_mark_node.
211 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
213         PR c++/84463
214         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
215         tricks from here to ...
216         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
217         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
219 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
221         PR c++/80290
222         * cp-tree.h (struct tinst_level): Split decl into tldcl and
223         targs.  Add private split_list_p, tree_list_p, and not_list_p
224         inline const predicates; to_list private member function
225         declaration; free public member function declaration; list_p,
226         get_node and maybe_get_node accessors, and refcount data
227         member.  Narrow errors to unsigned short.
228         * error.c (print_instantiation_full_context): Use new
229         accessors.
230         (print_instantiation_partial_context_line): Likewise.  Drop
231         const from tinst_level-typed parameter.
232         * mangle.c (mangle_decl_string): Likewise.
233         * pt.c (freelist): New template class.
234         (tree_list_freelist_head): New var.
235         (tree_list_freelist): New fn, along with specializations.
236         (tinst_level_freelist_head): New var.
237         (pending_template_freelist_head): Likewise.
238         (tinst_level_freelist, pending_template_freelist): New fns.
239         (tinst_level::to_list, tinst_level::free): Define.
240         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
241         (set_refcount_ptr): New template fn.
242         (add_pending_template): Adjust for refcounting, freelists and
243         new accessors.
244         (neglectable_inst_p): Take a NULL d as a non-DECL.
245         (limit_bad_template_recursion): Use new accessors.
246         (push_tinst_level): New overload to create the list.
247         (push_tinst_level_loc): Make it static, split decl into two
248         args, adjust tests and initialization to cope with split
249         lists, use freelist, adjust for refcounting.
250         (push_tinst_level_loc): New wrapper with the old interface.
251         (pop_tinst_level): Adjust for refcounting.
252         (record_last_problematic_instantiation): Likewise.
253         (reopen_tinst_level): Likewise.  Use new accessors.
254         (instantiate_alias_template): Adjust for split list.
255         (fn_type_unification): Likewise.
256         (get_partial_spec_bindings): Likewise.
257         (instantiate_pending_templates): Use new accessors.  Adjust
258         for refcount.  Release pending_template to freelist.
259         (instantiating_current_function_p): Use new accessors.
261 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
263         PR c++/85039
264         * parser.c (cp_parser_builtin_offset): Reject type definitions.
265         * mangle.c (nested_anon_class_index): Avoid crash returning -1
266         if we've seen errors.
268 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
270         PR c++/85385
271         * name-lookup.c (macro_use_before_def::maybe_make): New function,
272         checking that the use is indeed before the definition.
273         (macro_use_before_def::macro_use_before_def): Make private.
274         (macro_use_before_def::~macro_use_before_def): Make private.  Move
275         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
276         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
277         than using new directly.
279 2018-04-12  Jason Merrill  <jason@redhat.com>
281         PR c++/85356 - ICE with pointer to member function.
282         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
283         flag_noexcept_type.  Build the new spec within the function context.
284         * except.c (build_noexcept_spec): Do get constant value in templates
285         if flag_noexcept_type.
286         * decl.c (check_redeclaration_exception_specification): Don't
287         instantiate noexcept on a dependent declaration.
289 2018-04-12  Marek Polacek  <polacek@redhat.com>
291         PR c++/85258
292         * constexpr.c (reduced_constant_expression_p): Return false for null
293         trees.
295 2018-04-11  Marek Polacek  <polacek@redhat.com>
297         PR c++/85032
298         * constexpr.c (potential_constant_expression_1): Consider conversions
299         from classes to literal types potentially constant.
301 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
303         PR c++/70808
304         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
305         the type like TYPE_PTR_OR_PTRMEM_P.
307 2018-04-10  Jason Merrill  <jason@redhat.com>
309         PR debug/65821 - wrong location for main().
310         * call.c (clear_location_r, convert_default_arg): Revert.
311         * tree.c (break_out_target_exprs): Add clear_location parm.
312         (struct bot_data): New.
313         (bot_manip): Clear location if requested.
314         * init.c (get_nsdmi): Pass clear_location.
316 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
318         PR c++/85110
319         * call.c (get_fndecl_argument_location): Make non-static.
320         * cp-tree.h (get_fndecl_argument_location): New decl.
321         * typeck.c (convert_for_assignment): When complaining due to
322         conversions for an argument, show the location of the parameter
323         within the decl.
325 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
327         PR c++/85312 - P0962 cleanup
328         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
329         diagnostics.
331 2018-04-10  Jason Merrill  <jason@redhat.com>
333         PR debug/65821 - wrong location for main().
334         * call.c (clear_location_r): New.
335         (convert_default_arg): Use it.
336         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
338         PR c++/85285 - ICE with flexible array after substitution.
339         * pt.c (instantiate_class_template_1): Check for flexible array in
340         union.
342 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
344         PR c++/85227
345         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
346         issue a pedwarn and defer trying to do bindings.
348 2018-04-09  Jason Merrill  <jason@redhat.com>
350         PR c++/85279 - dump_expr doesn't understand decltype.
351         * error.c (dump_expr): Handle DECLTYPE_TYPE.
353         PR c++/85262 - ICE with redundant qualification on constructor.
354         * call.c (build_new_method_call_1): Move make_args_non_dependent
355         after A::A() handling.
357         PR c++/85277 - ICE with invalid offsetof.
358         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
359         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
361         PR c++/85264 - ICE with excess template-parameter-list.
362         * parser.c (cp_parser_check_template_parameters): Add template_id_p
363         parameter.  Don't allow an extra template header if true.
364         (cp_parser_class_head): Pass template_id_p.
365         (cp_parser_elaborated_type_specifier): Likewise.
366         (cp_parser_alias_declaration): Likewise.
367         (cp_parser_check_declarator_template_parameters): Likewise.
369 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
371         PR c++/85194
372         * parser.c (cp_parser_simple_declaration): For structured bindings,
373         if *maybe_range_for_decl is NULL after parsing it, set it to
374         error_mark_node.
376 2018-04-09  Jason Merrill  <jason@redhat.com>
378         PR c++/85256 - ICE capturing pointer to VLA.
379         * lambda.c (add_capture): Distinguish between variable-size and
380         variably-modified types.
382 2018-04-06  Jason Merrill  <jason@redhat.com>
384         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
385         * pt.c (extract_locals_r): Remember local typedefs.
387 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
389         PR c++/84269
390         * name-lookup.c (struct std_name_hint): Move out of
391         get_std_name_hint; add field "min_dialect".
392         (get_std_name_hint): Add min_dialect values to all initializers.
393         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
394         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
395         <shared_mutex>, <string_view>, <thread>, and <variant>.
396         Add fstream, ifstream, and ofstream to <fstream>.
397         Add istringstream, ostringstream, and stringstream to <sstream>.
398         Add basic_string to <string>.
399         Add tuple_element and tuple_size to <tuple>.
400         Add declval to <utility>.
401         Fix ordering of <queue> and <tuple>.
402         Return a std_name_hint, rather than a const char *.
403         (get_cxx_dialect_name): New function.
404         (maybe_suggest_missing_std_header): Detect names that aren't yet
405         available in the current dialect, and instead of suggesting a
406         missing #include, warn about the dialect.
408 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
410         PR c++/85210
411         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
412         errorcount is set if tsubst doesn't return a VAR_DECL.
414 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
416         PR c++/85021
417         * name-lookup.c (using_directives_contain_std_p): New function.
418         (has_using_namespace_std_directive_p): New function.
419         (suggest_alternatives_for): Simplify if/else logic using early
420         returns.  If no candidates were found, and there's a
421         "using namespace std;" directive, call
422         maybe_suggest_missing_std_header.
423         (maybe_suggest_missing_header): Split later part of the function
424         into..
425         (maybe_suggest_missing_std_header): New.
427 2018-04-06  Jason Merrill  <jason@redhat.com>
429         PR c++/85242 - ICE with class definition in template parm.
430         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
431         processing_template_parmlist.
433         PR c++/85240 - LTO ICE with using of undeduced auto fn.
434         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
436 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
438         PR c++/85209
439         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
440         is not prev, if prev == decl.
442         PR c++/85208
443         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
444         maybe_apply_pragma_weak here...
445         (cp_maybe_mangle_decomp): ... but call it here instead.
447 2018-04-05  Jason Merrill  <jason@redhat.com>
449         PR c++/85136 - ICE with designated init in template.
450         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
451         designated initializer.
452         (check_array_designated_initializer): Update ce->index with the
453         constant value.
455         PR c++/83808 - ICE with VLA initialization.
456         * typeck2.c (process_init_constructor_array): Don't require a VLA
457         initializer to have VLA type.
459 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
461         PR c++/80956
462         * call.c (convert_like_real): Fail gracefully for a broken
463         std::initializer_list, missing a definition.
465         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
467 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
469         PR c++/84792
470         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
471         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
473 2018-04-05  Jason Merrill  <jason@redhat.com>
475         PR c++/82152 - ICE with class deduction and inherited ctor.
476         * pt.c (do_class_deduction): Ignore inherited ctors.
478         PR c++/84665 - ICE with array of empty class.
479         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
481         PR c++/85228 - ICE with lambda in enumerator in template.
482         * pt.c (bt_instantiate_type_proc): Don't assume
483         CLASSTYPE_TEMPLATE_INFO is non-null.
485 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
487         Implement P0969
488         * decl.c (find_decomp_class_base): Check accessibility instead
489         of declared access, adjust diagnostic.
491 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
493         Implement P0961
494         * decl.c (get_tuple_decomp_init): Check the templatedness
495         of a member get.
497 2018-04-05  Jason Merrill  <jason@redhat.com>
499         PR c++/85200 - ICE with constexpr if in generic lambda.
500         * pt.c (extract_locals_r): Don't record the local specs of variables
501         declared within the pattern.
503 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
505         PR c++/84979
506         * pt.c (check_auto_in_tmpl_args): New.
507         (tsubst_qualified_id): Use it to reject template args
508         referencing auto for non-type templates.
509         * parser.c (cp_parser_template_id): Likewise.
510         * cp-tree.h (check_auto_in_tmpl_args): Declare.
511         * typeck2.c (build_functional_cast): Report correct location
512         for invalid use of auto.
514 2018-04-04  Jason Merrill  <jason@redhat.com>
516         PR c++/85215 - ICE with copy-init from conversion.
517         * call.c (merge_conversion_sequences): Fix type of direct binding
518         sequence.
520         PR c++/84938 - ICE with division by ~-1.
521         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
523         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
524         * parser.c (cp_parser_mem_initializer_list): Call
525         check_for_bare_parameter_packs.
527 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
529         PR inline-asm/85172
530         * constexpr.c (cxx_eval_builtin_function_call): For calls to
531         builtin_valid_in_constant_expr_p functions, don't call
532         cxx_eval_constant_expression if argument is not
533         potential_constant_expression.
535         PR c++/85146
536         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
537         argument.
538         * semantics.c (calculate_bases): Add complain argument.  Use
539         complete_type_or_maybe_complain instead of just complete_type and
540         return an empty vector if it fails.  Move make_tree_vector () call
541         after early return.  Formatting fixes.
542         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
543         end.
544         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
545         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
546         calculate_direct_bases callers, formatting fixes.
548 2018-04-04  Jason Merrill  <jason@redhat.com>
550         PR c++/85006 - -fconcepts ICE with A<auto...> return type
551         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
553         PR c++/85200 - ICE with constexpr if in generic lambda.
554         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
556         PR c++/84221 - bogus -Wunused with attribute and template.
557         * decl2.c (is_late_template_attribute): Handle unused and used
558         normally on non-TYPE_DECL.
560         PR c++/85135 - ICE with omitted template arguments.
561         * decl.c (grokdeclarator): Catch deduced class type in trailing
562         return type.
564         PR c++/85133 - ICE with missing concept initializer.
565         * decl.c (cp_finish_decl): If a concept initializer is missing, use
566         true.
568         PR c++/85118 - wrong error with generic lambda and std::bind.
569         * call.c (add_template_conv_candidate): Disable if there are any
570         call operators.
572         PR c++/85141 - ICE with compound assignment and static member fn.
573         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
574         compound assignment.
576         PR c++/85148 - ICE with 'this' in array NSDMI.
577         * tree.c (replace_placeholders_r): Use handled_component_p.
579 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
581         PR c++/65923
582         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
583         * parser.c (cp_parser_unqualified_id): ..not here.
585 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
587         PR c++/84943
588         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
589         used.
590         * decl2.c (mark_used): Return without effects if tf_conv.
592 2018-04-03  Jason Merrill  <jason@redhat.com>
594         PR c++/85092 - C++17 ICE with unused list constructor.
595         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
596         from a TARGET_EXPR.
598         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
599         * constexpr.c (cxx_eval_builtin_function_call): Only defer
600         __builtin_constant_p if ctx->quiet.
602 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
604         PR c++/84768
605         * pt.c (rewrite_template_parm): If the first argument is
606         error_mark_node return it immediately.
607         (build_deduction_guide): Check the return value of the
608         latter for error_mark_node.
609         (do_class_deduction): Check the return value of the latter.
611 2018-04-03  Jason Merrill  <jason@redhat.com>
613         * semantics.c (finish_if_stmt_cond): Use
614         instantiation_dependent_expression_p.
616         PR c++/85149 - generic lambda and constexpr if.
617         * pt.c (build_extra_args, add_extra_args): Split from
618         tsubst_pack_expansion.
619         (tsubst_expr) [IF_STMT]: Use them.
620         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
622         * typeck.c (merge_types): Limit matching attribute shortcut to
623         the default case.
625 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
627         PR c++/85147
628         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
630         PR c++/85140
631         * name-lookup.c (handle_namespace_attrs): Return early if attributes
632         is error_mark_node.
634         PR c++/85134
635         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
636         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
637         instead for static data members clear init and set DECL_EXTERNAL.
639 2018-04-02  Jason Merrill  <jason@redhat.com>
641         PR c++/64095 - auto... parameter pack.
642         * parser.c (cp_parser_parameter_declaration): Handle turning autos
643         into packs here.
644         (cp_parser_parameter_declaration_list): Not here.
646 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
648         PR c++/85027
649         * class.c (instantiate_type): Peel off SAVE_EXPR before
650         BASELINK.
652 2018-03-30  Jason Merrill  <jason@redhat.com>
654         * typeck2.c (process_init_constructor_record): Use
655         init_list_type_node for the CONSTRUCTOR around an anonymous union
656         designated initializer.
658 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
660         PR c++/84791
661         * semantics.c (finish_omp_reduction_clause): If
662         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
663         even if processing_template_decl.
665 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
667         PR c++/84269
668         * name-lookup.c (get_std_name_hint): Add names from <memory>,
669         <tuple>, and <utility>.
671 2018-03-29  Jason Merrill  <jason@redhat.com>
673         PR c++/85093 - too many template args with pack expansion.
674         * pt.c (coerce_template_parms): Keep pack expansion args that will
675         need to be empty.
677 2018-03-29  Jason Merrill  <jason@redhat.com>
679         * pt.c (build_non_dependent_expr): Propagate expr location.
681 2018-03-27  Jason Merrill  <jason@redhat.com>
683         PR c++/85060 - wrong-code with call to base member in template.
684         * search.c (any_dependent_bases_p): Check uses_template_parms
685         rather than processing_template_decl.
687 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
689         PR c++/85110
690         * typeck.c (convert_for_assignment): When complaining due to
691         conversions for an argument, attempt to use the location of the
692         argument.
694 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
696         PR c++/85028
697         * pt.c (tsubst_default_argument): Early return if the type of the
698         parameter is erroneous.
700 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
702         PR c++/84973
703         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
704         templates.
706         PR c++/84968
707         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
709 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
711         PR c++/85067
712         * method.c (defaulted_late_check): Partially revert r253321 changes,
713         do not early return upon error.
715 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
717         PR c++/85077
718         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
719         type call fold to generate VECTOR_CSTs when possible.
721         PR c++/85076
722         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
723         return it right away.
725 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
727         * search.c (check_final_overrider): Use inform instead of error
728         for the diagnostics of the overridden functions.  Tweak wording.
730 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
732         PR c++/85068
733         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
734         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
736 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
737             Jason Merrill  <jason@redhat.com>
739         PR c++/84632
740         * init.c (build_aggr_init): When initializing from array,
741         reject anything but CONSTRUCTORs and TARGET_EXPRs.
742         (build_vec_init): Handle separately ARRAY_TYPEs.
744 2018-03-26  Jason Merrill  <jason@redhat.com>
746         PR c++/85062 - ICE with alignas in wrong place.
747         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
748         here.
750         PR c++/85049 - ICE with __integer_pack.
751         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
752         * cp-tree.h (TEMPLATE_PARM_P): New.
754 2018-03-23  Jason Merrill  <jason@redhat.com>
756         PR c++/78489 - wrong SFINAE behavior.
758         PR c++/84489
759         * pt.c (type_unification_real): Don't defer substitution failure.
761 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
763         PR c++/85015
764         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
765         result.
767         PR c++/84942
768         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
769         cp_build_unary_op call with gcc_unreachable ().
771 2018-03-23  Marek Polacek  <polacek@redhat.com>
773         PR c++/85045
774         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
775         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
776         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
778 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
780         Implement P0962
781         * parser.c (cp_parser_perform_range_for_lookup): Change
782         the condition for deciding whether to use members.
784 2018-03-23  Marek Polacek  <polacek@redhat.com>
786         PR c++/85033
787         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
789 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
791         PR c++/71251
792         * parser.c (cp_parser_alias_declaration): Call
793         parser_check_template_parameters.
795         PR c++/84789
796         * pt.c (resolve_typename_type): Drop assert that stopped
797         simplification to template-independent types.  Add assert to
798         verify the initial scope is template dependent.
799         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
800         Reparse the id expression as a type-name, not a declarator.
802         PR c++/84729
803         * init.c (build_vec_init): Error at parenthesized array init.
805         PR c++/84610
806         PR c++/84642
807         PR c++/84942
808         * cp-tree.h (temp_override): New template class, generalizing
809         a cleanup that was only used...
810         * parser.c (cp_parser_parameter_declaration_clause):
811         ... here for auto_is_implicit_function_template_parm_p.
812         (cp_parser_gnu_attributes_opt): Use it here as well.
813         (cp_parser_std_attribute): Likewise.
815 2018-03-22  Marek Polacek  <polacek@redhat.com>
817         PR c++/84854
818         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
819         is boolean.
821 2018-03-21  Jason Merrill  <jason@redhat.com>
823         PR c++/81311 - wrong C++17 overload resolution.
824         * call.c (build_user_type_conversion_1): Remove C++17 code.
825         (conv_binds_ref_to_prvalue): New.
826         (build_over_call): Handle C++17 copy elision.
827         (build_special_member_call): Only do C++17 copy elision here if the
828         argument is already the right type.
830 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
832         PR c++/71965
833         * init.c (build_vec_init): Silence error, former sorry,
834         without tf_error.
836         PR c++/84610
837         PR c++/84642
838         * parser.c (abort_fully_implicit_template_p): New.
839         (cp_parser_skip_to_end_of_statement): Use it.
840         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
841         (finish_fully_implicit_template_p): Clear
842         implicit_template_parms and implicit_template_scope.
844 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
846         PR c++/84972
847         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
848         error_mark_node when check_array_designated_initializer fails.
850 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
852         PR c++/84961
853         * cp-tree.h (genericize_compound_lvalue): Declare.
854         * typeck.c (genericize_compound_lvalue): New function.
855         (unary_complex_lvalue, cp_build_modify_expr): Use it.
856         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
857         and PREDECREMENT_EXPR in output and "m" constrained input operands with
858         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
859         COMPOUND_EXPR operand.
861 2018-03-21  Nathan Sidwell  <nathan@acm.org>
863         PR c++/85008
864         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
865         * decl2.c (vague_linkage_p): Likewise.
867 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
869         PR c++/84994
870         * constexpr.c (constexpr_fn_retval): Make non-"static".
871         * cp-tree.h (constexpr_fn_retval): New decl.
872         * search.c (direct_accessor_p): Update leading comment.
873         (reference_accessor_p): Likewise.
874         (field_accessor_p): Replace check that function body is a
875         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
876         indentation of "field_type" decl.
878 2018-03-21  Nathan Sidwell  <nathan@acm.org>
880         PR c++/84804
881         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
882         complete classes.
884 2018-03-21  Martin Sebor  <msebor@redhat.com>
886         PR c++/84850
887         * call.c (first_non_public_field): New template and function.
888         (first_non_trivial_field): New function.
889         (maybe_warn_class_memaccess): Call them.
891 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
893         PR c++/84892
894         * search.c (field_accessor_p): Use class_of_this_parm rather than
895         type_of_this_parm, to check that "this" is a "const T *", rather
896         than a "T *const".
898 2018-03-21  Nathan Sidwell  <nathan@acm.org>
900         * class.c (finish_struct_anon_r): Refactor, deprecate anything
901         other than public non-static data members.
902         * parser.c (cp_parser_init_declarator): Deprecate attributes after
903         parenthesized initializer.
905         PR c++/84836
906         * name-lookup.c (update_binding): Correct logic for local binding
907         update.
909 2018-03-21  Marek Polacek  <polacek@redhat.com>
911         PR c++/71638, ICE with NSDMI and reference.
912         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
913         even when we replace an element.
915 2018-03-20  Marek Polacek  <polacek@redhat.com>
917         PR c++/84978, ICE with NRVO.
918         * constexpr.c (cxx_eval_constant_expression): Handle the case when
919         a RESULT_DECL isn't in the hash map.
921 2018-03-20  Jason Merrill  <jason@redhat.com>
923         PR c++/84978, ICE with NRVO.
924         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
925         (cp_get_callee_fndecl_nofold): New.
926         * cp-gimplify.c (cp_genericize_r): Use it instead.
927         * call.c (check_self_delegation): Likewise.
929 2018-03-20  Nathan Sidwell  <nathan@acm.org>
931         PR c++/84962
932         * name-lookup.c (pushdecl_class_level): Push anon-struct's
933         member_vec, if there is one.
935         PR c++/84970
936         * cp-tree.h (lookup_list_keep): Declare.
937         * tree.c (lookup_list_keep): New, broken out of ...
938         (build_min): ... here.  Call it.
939         * decl.c (cp_finish_decl): Call lookup_list_keep.
941 2018-03-19  Jason Merrill  <jason@redhat.com>
943         PR c++/84937 - ICE with class deduction and auto.
944         * pt.c (rewrite_template_parm): Fix auto handling.
946 2018-03-19  Marek Polacek  <polacek@redhat.com>
948         PR c++/84925
949         * pt.c (enclosing_instantiation_of): Check if fn is null.
951         PR c++/84927
952         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
953         as we evaluate the elements.
954         (cxx_eval_constant_expression): Verify constructor's flags
955         unconditionally.
957 2018-03-19  Jason Merrill  <jason@redhat.com>
959         PR c++/71834 - template-id with too few arguments.
960         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
962 2018-03-19  Nathan Sidwell  <nathan@acm.org>
964         PR c++/84835
965         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
966         * pt.c (build_template_decl): Propagate language linkage.
968         PR c++/84812
969         * name-lookup.c (set_local_extern_decl_linkage): Defend against
970         ambiguous lookups.
972 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
974         PR c/84910
975         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
976         diagnostics.
977         * method.c (synthesize_method): Likewise.
978         * pt.c (convert_nontype_argument): Likewise.
980 2018-03-16  Jason Merrill  <jason@redhat.com>
982         PR c++/84720 - ICE with rvalue ref non-type argument.
983         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
984         (convert_nontype_argument): Revert earlier change.
986         PR c++/80227 - SFINAE and negative array size.
987         * decl.c (compute_array_index_type): Use
988         build_converted_constant_expr and valid_constant_size_p.
990         PR c++/84906 - silent wrong code with ambiguous conversion.
991         * call.c (build_user_type_conversion_1): Set need_temporary_p on
992         ambiguous conversion.
993         (convert_like_real): Check it.
995         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
996         * call.c (build_special_member_call): Don't convert an init-list
997         argument directly to the class type.
999 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1001         PR c++/79937
1002         PR c++/82410
1003         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
1004         (find_placeholder): Declare.
1005         * tree.c (struct replace_placeholders_t): Add exp member.
1006         (replace_placeholders_r): Don't walk into ctors with
1007         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
1008         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
1009         (replace_placeholders): Initialize data.exp.
1010         (find_placeholders_r, find_placeholders): New functions.
1011         * typeck2.c (process_init_constructor_record,
1012         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
1013         if adding NSDMI on which find_placeholder returns true.
1014         * call.c (build_over_call): Don't call replace_placeholders here.
1015         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
1016         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
1017         TARGET_EXPR_INITIAL.
1018         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
1019         ctor.
1021 2018-03-16  Jason Merrill  <jason@redhat.com>
1023         PR c++/83911 - ICE with multiversioned constructor.
1024         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
1025         dispatchere here.
1026         * call.c (build_over_call): Not here.
1028 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
1030         PR c++/84874
1031         * decl.c (reshape_init_class): Don't assert d->cur->index == field
1032         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
1034 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
1036         PR c++/84222
1037         * cp-tree.h (cp_warn_deprecated_use): Declare.
1038         * tree.c (cp_warn_deprecated_use): New function.
1039         * typeck2.c (build_functional_cast): Use it.
1040         * decl.c (grokparms): Likewise.
1041         (grokdeclarator): Likewise.  Temporarily push nested class scope
1042         around grokparms call for out of class member definitions.
1044 2018-03-14  Jason Merrill  <jason@redhat.com>
1046         PR c++/84820 - no error for invalid qualified-id.
1047         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
1048         cp_error_declarator.
1050         PR c++/84801 - ICE with unexpanded pack in lambda.
1051         * pt.c (check_for_bare_parameter_packs): Don't return early for a
1052         lambda in non-template context.
1054         PR c++/81236 - auto variable and auto function
1055         * pt.c (tsubst_baselink): Update the type of the BASELINK after
1056         mark_used.
1058 2018-03-14  Jason Merrill  <jason@redhat.com>
1060         PR c++/83916 - ICE with template template parameters.
1061         * pt.c (convert_template_argument): Don't substitute into type of
1062         non-type parameter if we don't have enough arg levels.
1063         (unify): Likewise.
1065 2018-03-14  Marek Polacek  <polacek@redhat.com>
1067         PR c++/84596
1068         * semantics.c (finish_static_assert): Check
1069         instantiation_dependent_expression_p instead of
1070         {type,value}_dependent_expression_p.
1072 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
1073             Jason Merrill  <jason@redhat.com>
1075         PR c++/82336 - link error with list-init default argument.
1076         * decl.c (check_default_argument): Unshare an initializer list.
1078 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1080         PR c++/84843
1081         * decl.c (duplicate_decls): For redefinition of built-in, use error
1082         and return error_mark_node.  For redeclaration, return error_mark_node
1083         rather than olddecl if !flag_permissive.
1085 2018-03-13  Jason Merrill  <jason@redhat.com>
1087         PR c++/82565 - ICE with concepts and generic lambda.
1088         * pt.c (instantiate_decl): Clear fn_context for lambdas.
1090 2018-03-13  Jason Merrill  <jason@redhat.com>
1092         PR c++/84720 - ICE with rvalue ref non-type argument.
1093         * pt.c (convert_nontype_argument): Handle rvalue references.
1095         PR c++/84839 - ICE with decltype of parameter pack.
1096         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
1097         instantiating dummy parms.
1099         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
1100         parameter even without -Wpedantic.
1102         PR c++/84798 - ICE with auto in abstract function declarator.
1103         * parser.c (cp_parser_parameter_declaration_clause): Check
1104         parser->default_arg_ok_p.
1106 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
1108         PR c++/84808
1109         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
1110         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
1111         sizetype.  Formatting fixes.
1113 2018-03-12  Jason Merrill  <jason@redhat.com>
1115         PR c++/84355 - ICE with deduction for member class template.
1116         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
1117         CLASS_PLACEHOLDER_TEMPLATE.
1119         PR c++/84802 - ICE capturing uninstantiated class.
1120         * lambda.c (build_capture_proxy): Call complete_type.
1122 2018-03-09  Jason Merrill  <jason@redhat.com>
1124         PR c++/84770 - ICE with typedef and parameter pack.
1125         * pt.c (verify_unstripped_args_1): Split out from
1126         verify_unstripped_args.
1128         PR c++/84785 - ICE with alias template and default targs.
1129         * pt.c (type_unification_real): Set processing_template_decl if
1130         saw_undeduced == 1.
1132         PR c++/84752 - ICE with capture of constexpr array.
1133         * call.c (standard_conversion): Set rvaluedness_matches_p on the
1134         identity conversion under ck_lvalue.
1136 2018-03-09  Jason Merrill  <jason@redhat.com>
1137             Paolo Carlini  <paolo.carlini@oracle.com>
1139         PR c++/71169
1140         PR c++/71832
1141         * pt.c (any_erroneous_template_args_p): New.
1142         * cp-tree.h (any_erroneous_template_args_p): Declare it.
1143         * parser.c (cp_parser_class_specifier_1): Use it.
1145 2018-03-09  Jason Merrill  <jason@redhat.com>
1147         PR c++/84726 - unnecessary capture of constant vars.
1148         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1149         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1150         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1151         * lambda.c (is_constant_capture_proxy)
1152         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1153         (prune_lambda_captures): New.
1154         (finish_lambda_function): Call prune_lambda_captures.
1156 2018-03-09  Jason Merrill  <jason@redhat.com>
1157             Jakub Jelinek  <jakub@redhat.com>
1159         PR c++/84076
1160         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1161         build ADDR_EXPR with REFERENCE_TYPE.
1162         (build_over_call): For purposes of check_function_arguments, if
1163         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1164         its operand rather than the argument itself.
1166 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
1168         PR c++/84724
1169         * decl.c (duplicate_decls): Don't override __* prefixed builtins
1170         except for __[^b]*_chk, instead issue permerror and for -fpermissive
1171         also a note and return olddecl.
1173 2018-03-09  Nathan Sidwell  <nathan@acm.org>
1175         PR c++/84733
1176         * name-lookup.c (do_pushdecl_with_scope): Only clear
1177         current_function_decl when pushing a non-class (i.e. namespace)
1178         scope.
1180 2018-03-08  Jason Merrill  <jason@redhat.com>
1181             Jakub Jelinek  <jakub@redhat.com>
1183         PR c++/80598
1184         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1185         not calling mark_used for the benefit of -Wunused-function warning.
1187 2018-03-06  Jason Merrill  <jason@redhat.com>
1189         * lambda.c (is_capture_proxy_with_ref): Remove.
1190         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1192 2018-03-06  Marek Polacek  <polacek@redhat.com>
1194         PR c++/84684
1195         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1196         arguments.
1198 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
1200         PR c++/84231
1201         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1202         only while processing template decls.
1203         * typeck.c (build_x_conditional_expr): Move wrapping of
1204         reference type around type...
1205         * call.c (build_conditional_expr_1): ... here.  Rename
1206         is_lvalue to is_glvalue.
1207         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1208         INDIRECT_REF of COND_EXPR too.
1210         PR c++/84593
1211         * init.c (build_zero_init_1): Zero-initialize references.
1213         PR c++/84492
1214         * semantics.c (finish_stmt_expr_expr): Reject unresolved
1215         overloads used as stmt expr values.
1217 2018-03-05  Jason Merrill  <jason@redhat.com>
1219         PR c++/84708 - ICE with lambda in local class NSDMI.
1220         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1221         context.
1223 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1225         PR c++/84684
1226         * constexpr.c (constexpr_call_hasher::equal): Return false if
1227         lhs->hash != rhs->hash.  Change return 1 to return true and
1228         return 0 to return false.
1230 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1232         PR c++/84702
1233         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1235 2018-03-05  Marek Polacek  <polacek@redhat.com>
1237         PR c++/84707
1238         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1239         UDLIT_OPER_P.
1241 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1243         PR c++/84694
1244         * friend.c (do_friend): Restore check for identifier_p inside
1245         TEMPLATE_ID_EXPR.
1247 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1249         PR c++/84618
1250         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1251         involving a VAR_DECL or a PARM_DECL.
1253 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1254             Jason  Merrill  <jason@redhat.com>
1255             Nathan Sidwell  <nathan@acm.org>
1257         PR c++/84497
1258         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1260 2018-03-03  Jason Merrill  <jason@redhat.com>
1262         PR c++/84686 - missing volatile loads.
1263         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1265 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1267         PR c++/71464
1268         * optimize.c (maybe_thunk_body): Bail out immediately if either
1269         fns[0] or fns[1] is null.
1271 2018-03-02  Marek Polacek  <polacek@redhat.com>
1273         PR c++/84578
1274         * constexpr.c (get_array_or_vector_nelts): New.
1275         (cxx_eval_array_reference): Use it.
1276         (cxx_eval_vec_init_1): Likewise.
1277         (cxx_eval_store_expression): Likewise.
1279 2018-03-02  Jason Merrill  <jason@redhat.com>
1281         * semantics.c (force_paren_expr): Remove redundant test.
1283 2018-03-02  Marek Polacek  <polacek@redhat.com>
1285         PR c++/84663
1286         * decl.c (cp_complete_array_type): Check error_mark_node.
1288         PR c++/84664
1289         * typeck.c (cp_perform_integral_promotions): Check the result of
1290         mark_rvalue_use.
1292 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1294         PR c++/84662
1295         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1296         RETURN instead of return.
1297         <case POINTER_PLUS_EXPR>: Likewise.
1298         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1299         it instead of wrapping it into CONVERT_EXPR.
1301 2018-03-02  Jason Merrill  <jason@redhat.com>
1303         Fix MIPS16 ICE.
1304         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1306 2018-03-02  Marek Polacek  <polacek@redhat.com>
1308         PR c++/84590
1309         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1310         wrapped in VIEW_CONVERT_EXPR.
1312 2018-03-01  Martin Sebor  <msebor@redhat.com>
1314         PR c++/84294
1315         * decl.c (check_redeclaration_no_default_args): Merge attributes
1316         specified on redeclarations of the same function template.
1317         Remove dead code.
1319 2018-03-01  Marek Polacek  <polacek@redhat.com>
1320             Jason Merrill  <jason@redhat.com>
1322         PR c++/84582
1323         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1324         a template.
1325         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1326         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1327         of instantiate_non_dependent_expr.
1328         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1330 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1332         PR c++/84434
1333         * name-lookup.c (member_vec_dedup): Remove manually peeled
1334         iteration.  Ignore dependent ctor inheritance.
1336 2018-03-01  Jason Merrill  <jason@redhat.com>
1338         PR c++/71569 - decltype of template.
1339         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1341 2018-03-01  Marek Polacek  <polacek@redhat.com>
1343         PR c++/84596
1344         * constexpr.c (require_rvalue_constant_expression): New function.
1345         * cp-tree.h: Declare it.
1346         * semantics.c (finish_static_assert): Use it instead of
1347         require_potential_rvalue_constant_expression.
1349 2018-03-01  Jason Merrill  <jason@redhat.com>
1350             Alexandre Oliva <aoliva@redhat.com>
1352         PR c++/71569 - ICE with redundant args on member variable template.
1353         * decl.c (start_decl): Handle partial specialization of member
1354         variable template.
1355         * pt.c (determine_specialization): Allow partial specialization
1356         of member variable template without specializing enclosing class.
1357         (process_partial_specialization): Improve error message.
1359 2018-02-28  Jason Merrill  <jason@redhat.com>
1361         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1362         * pt.c (determine_specialization): Check ref-qualifier.
1364 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1366         PR c++/84609
1367         * parser.c (cp_parser_attributes_opt): Formatting fix.
1368         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1369         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1370         New functions.
1371         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1372         instead of tentative parse to peek over optional attribute tokens
1373         to check for CPP_COLON after them.
1375         PR c++/83871
1376         PR c++/83503
1377         * pt.c (INCLUDE_STRING): Remove define.
1378         (warn_spec_missing_attributes): Use pretty_printer instead of
1379         std::string.  Fix up inform call so that the list of attributes
1380         is in %s argument.
1382 2018-02-28  Martin Sebor  <msebor@redhat.com>
1384         PR testsuite/84617
1385         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1386         and malloc.
1388 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1390         PR c++/84602
1391         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1392         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1393         regardless of want_type.
1394         (search_anon_aggr): Just use get_class_binding_direct.
1396 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1398         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1399         inform_n.
1401 2018-02-27  Martin Sebor  <msebor@redhat.com>
1403         * pt.c: Avoid including <string> directly.
1405 2018-02-27  Martin Sebor  <msebor@redhat.com>
1407         PR c++/83871
1408         PR c++/83503
1409         * cp-tree.h (warn_spec_missing_attributes): New function.
1410         ((check_explicit_specialization): Add an argument.  Call the above
1411         function.
1412         * decl.c (duplicate_decls): Avoid applying primary function template's
1413         attributes to its explicit specializations.
1414         cp/pt.c (warn_spec_missing_attributes): Define.
1416 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1418         PR c++/71546 - lambda init-capture with qualified-id.
1419         * parser.c (cp_parser_lambda_introducer): Clear scope after
1420         each lambda capture.
1422 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1424         PR c++/84426
1425         * name-lookup.h (get_member_slot): Rename ...
1426         (find_member_slot): ... here.
1427         (add_member_slot): New.
1428         * name-lookup.c (member_vec_linear_search): No need to check for
1429         NULL slot.
1430         (get_member_slot): Rename ...
1431         (find_member_slot): ... here.  Don't add slot for incomplete class.
1432         (add_member_slot): New.
1433         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1434         if push_class_level_binding fails.  Create slot and grok
1435         properties once we're committed to insertion.
1437 2018-02-27  Jason Merrill  <jason@redhat.com>
1439         PR c++/84489 - dependent default template argument
1440         * pt.c (type_unification_real): Handle early substitution failure.
1442 2018-02-26  Jason Merrill  <jason@redhat.com>
1444         PR c++/84560 - ICE capturing multi-dimensional VLA.
1445         * tree.c (array_of_runtime_bound_p): False if the element is
1446         variably-modified.
1448         PR c++/84441 - ICE with base initialized from ?:
1449         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1451         PR c++/84520 - ICE with generic lambda in NSDMI.
1452         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1453         'this' in a generic lambda instantiation.
1455         PR c++/84559 - ICE with constexpr VLA.
1456         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1457         for constexpr variable with VLA type.
1459 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1461         PR c++/84558
1462         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1463         a valid constant initializer.  Formatting fixes.
1465 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1467         PR c++/84540
1468         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1469         returning NULL_TREE.
1470         (apply_late_template_attributes): Likewise.
1472 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1474         PR c++/84557
1475         * parser.c (cp_parser_omp_var_list_no_open): Only call
1476         cp_parser_lookup_name_simple on names satisfying identifier_p.
1477         (cp_parser_oacc_routine): Likewise.
1479 2018-02-26  Jason Merrill  <jason@redhat.com>
1481         PR c++/84551 - ICE with concepts and -g.
1482         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1484 2018-02-26  Marek Polacek  <polacek@redhat.com>
1486         PR c++/84325
1487         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1488         non-types.
1490 2018-02-26  Jason Merrill  <jason@redhat.com>
1492         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1493         * call.c (build_over_call): Handle deleted functions in one place.
1495 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1497         PR c++/84533
1498         * decl.c (redeclaration_error_message): Don't try to use
1499         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1501 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1503         * lambda.c (build_capture_proxy): Define static.
1504         * cp-tree.h (build_capture_proxy): Remove.
1506 2018-02-26  Marek Polacek  <polacek@redhat.com>
1508         PR c++/84537
1509         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1510         if name is error node.
1512 2018-02-25  Jason Merrill  <jason@redhat.com>
1514         PR c++/84015 - ICE with class deduction and auto template parm.
1515         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
1517 2018-02-24  Marek Polacek  <polacek@redhat.com>
1519         PR c++/83692
1520         * constexpr.c (maybe_constant_init_1): New function.
1521         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
1522         (cxx_constant_init): New function.
1523         * cp-tree.h (cxx_constant_init): Declare.
1524         * typeck2.c (store_init_value): Call cxx_constant_init instead of
1525         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
1527 2018-02-22  Jason Merrill  <jason@redhat.com>
1529         PR c++/70468 - ICE with constructor delegation via typedef.
1530         * pt.c (tsubst_initializer_list): Check for other mem-initializers
1531         with constructor delegation.
1533 2018-02-22  Jason Merrill  <jason@redhat.com>
1535         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
1536         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
1537         VECTOR_TYPE.
1539 2018-02-22  Marek Polacek  <polacek@redhat.com>
1541         PR c++/84493
1542         * parser.c (cp_parser_braced_list): Use require_open instead of
1543         consume_open.
1545 2018-02-21  Jason Merrill  <jason@redhat.com>
1547         PR c++/84454 - ICE with pack expansion in signature.
1548         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
1550 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1552         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
1553         IF_STMT.
1555 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
1557         PR c++/84446
1558         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
1559         on error_mark_node.
1561 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
1563         PR c++/84445
1564         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
1565         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
1567         PR c++/84449
1568         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
1569         returns error_mark_node, return it immediately.
1570         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
1571         error_mark_node, return error_mark_node.
1573         PR c++/84455
1574         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
1575         function_depth to avoid GC during finish_lambda_function.
1577 2018-02-19  Jason Merrill  <jason@redhat.com>
1579         PR c++/84429 - ICE capturing VLA.
1580         * lambda.c (build_capture_proxy): Handle reference refs.
1582 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
1584         PR c++/84448
1585         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
1586         either operand is error_mark_node, set current.lhs to that instead of
1587         creating a binary op with error_mark_node operands.
1589         PR c++/84430
1590         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
1592 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
1594         PR c++/84348
1595         * decl.c (grokdeclarator): Early return error_mark_node upon
1596         ill-formed friend declaration.
1598 2018-02-16  Marek Polacek  <polacek@redhat.com>
1599             Jakub Jelinek  <jakub@redhat.com>
1601         PR c++/84192
1602         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
1603         set *jump_target to anything if jump_target is NULL.
1605 2018-02-16  Jason Merrill  <jason@redhat.com>
1607         PR c++/84151 - unnecessary volatile load with static member.
1608         * call.c (build_new_method_call_1): Avoid loading from a volatile
1609         lvalue used as the object argument for a static member function.
1611         PR c++/81853 - using-directive and constexpr.
1612         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
1614         PR c++/84420 - ICE with structured binding in lambda.
1615         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
1617         PR c++/83835 - C++17 error with constructor ctors.
1618         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
1620         PR c++/82664 - ICE with reference to function template parm.
1621         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
1622         NOP_EXPRs.
1624         PR c++/82764 - C++17 ICE with empty base
1625         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
1627 2018-02-16  Jason Merrill  <jason@redhat.com>
1629         PR c++/84421 - type-dependent if constexpr
1630         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
1632 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1634         Deprecate -ffriend-injection.
1635         * decl.c (cxx_init_decl_processing): Emit warning on option.
1636         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
1637         friend.
1639 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
1641         PR c++/82468
1642         * decl.c (check_special_function_return_type): Reject template
1643         template parameter in deduction guide.
1645 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1647         PR c++/84375
1648         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
1650 2018-02-15  Jason Merrill  <jason@redhat.com>
1652         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
1653         * call.c (convert_like_real): Don't use the copy-list-initialization
1654         shortcut for ck_base.
1656         PR c++/84045 - ICE with typedef and noexcept.
1657         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
1659         PR c++/84376 - ICE with omitted template arguments.
1660         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
1662         PR c++/84368 - wrong error with local variable in variadic lambda.
1663         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
1664         local_specializations.
1666 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
1668         PR c++/84330
1669         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
1670         as first argument.
1672 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1674         PR c++/84350
1675         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
1676         init, early return.
1678 2018-02-14  Nathan Sidwell  <nathan@acm.org>
1680         * decl2.c (mark_vtable_entries): Set input_location to decl's.
1681         (c_parse_final_cleanups): Restore input_location after emitting
1682         vtables.
1684 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1686         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
1687         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
1688         auto_deduction_context, tree, int): Add defaults.
1689         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
1690         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
1691         tsubst_flags_t argument.
1692         * init.c (build_new): Likewise.
1694 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1696         PR c++/84364
1697         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1698         about return other than *this in assignment operators if
1699         retval is type dependent expression.
1701 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1703         PR c++/84333
1704         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1705         save_expr for the G++ extension.
1707 2018-02-13  Jason Merrill  <jason@redhat.com>
1709         PR c++/84080 - ICE with return type deduction and specialization.
1710         * pt.c (determine_specialization): Check uses_template_parms.
1712         Fix more variadic capture issues.
1713         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1714         (check_for_bare_parameter_packs): Check current_class_type for
1715         lambda context.
1716         (extract_locals_r): Handle seeing a full instantiation of a pack.
1717         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1718         * parser.c (cp_parser_lambda_introducer): Don't
1719         check_for_bare_parameter_packs.
1721         PR c++/84338 - wrong variadic sizeof.
1722         * pt.c (argument_pack_select_arg): Like the macro, but look through
1723         a pack expansion.
1724         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1725         (extract_fnparm_pack): Do make_pack_expansion.
1726         (extract_locals_r): Do strip a pack expansion.
1727         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1729 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1731         PR c++/84341
1732         * parser.c (cp_parser_binary_expression): Use build_min instead of
1733         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1735 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1737         PR c++/84263
1738         * parser.c (cp_parser_decltype): Push and pop
1739         deferring_access_checks.  Reorganize to avoid goto.
1741 2018-02-12  Richard Biener  <rguenther@suse.de>
1743         PR c++/84281
1744         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1745         uniform constructors and delay allocating them fully.
1747 2018-02-09  Jason Merrill  <jason@redhat.com>
1749         PR c++/84036 - ICE with variadic capture.
1750         Handle variadic capture proxies more like non-variadic.
1751         * lambda.c (build_capture_proxy): Remove workaround.
1752         * pt.c (find_parameter_packs_r): The proxy is a pack.
1753         (instantiate_class_template_1): Remove dead lambda code.
1754         (extract_fnparm_pack): Don't make_pack_expansion.
1755         (extract_locals_r): Don't strip a pack expansion.
1756         (tsubst_pack_expansion): Handle proxy packs.  Use
1757         PACK_EXPANSION_EXTRA_ARGS less.
1758         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1759         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1760         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1761         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1762         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1764 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1766         PR sanitizer/83987
1767         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1769 2018-02-09  Jason Merrill  <jason@redhat.com>
1771         PR c++/81917 - ICE with void_t and partial specialization.
1772         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1773         calling most_specialized_partial_spec.
1775 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1777         PR c/84293
1778         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1779         Pass expr location to strict_aliasing_warning.
1781 2018-02-09  Jason Merrill  <jason@redhat.com>
1783         PR c++/84296 - ICE with qualified-id in template.
1784         PR c++/83714
1785         * pt.c (unknown_base_ref_p): New.
1786         (instantiation_dependent_scope_ref_p): Use it instead of
1787         any_dependent_bases_p.
1789 2018-02-09  Marek Polacek  <polacek@redhat.com>
1790             Jakub Jelinek  <jakub@redhat.com>
1792         PR c++/83659
1793         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1794         fold_indirect_ref_1, including poly_*int64.  Verify first that
1795         tree_fits_poly_int64_p (op01).  Formatting fixes.
1797 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1799         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1800         * lambda.c (build_capture_proxy): Likewise.
1801         * search.c (field_access_p): Likewise.
1802         * semantics.c (omp_clause_decl, omp_privatize_field,
1803         finish_omp_clauses): Likewise.
1805 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1807         PR c++/83806
1808         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1809         case of nullptr too.
1811 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1813         * class.c (finish_struct): Fix std:initializer_list diagnostic
1814         formatting.
1816 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1818         PR c++/83204
1819         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1821 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1823         PR c++/84082
1824         * parser.c (cp_parser_dot_deref_incomplete): New function.
1825         (cp_parser_postfix_dot_deref_expression): Use it.
1827 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1829         PR c++/81610
1830         PR c++/80567
1831         * name-lookup.c (suggest_rid_p): New function.
1832         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1833         suggest_rid_p.
1835 2018-02-07  Jason Merrill  <jason@redhat.com>
1837         PR c++/84182 - ICE with captured lambda
1838         PR c++/84181
1839         * pt.c (extract_locals_r, extract_local_specs): New.
1840         (tsubst_pack_expansion): Use them.
1842 2018-02-07  Martin Liska  <mliska@suse.cz>
1844         PR c++/84059.
1845         * class.c (add_method): Append argument value.
1846         * cp-tree.h (maybe_version_functions): Add new argument.
1847         * decl.c (decls_match): Call it if a declaration does not
1848         have DECL_FUNCTION_VERSIONED.
1849         (maybe_version_functions): record argument is added.
1851 2018-02-05  Marek Polacek  <polacek@redhat.com>
1853         * class.c: Remove unused global variables.
1854         (build_primary_vtable): Don't gather statistics.
1855         (print_class_statistics): Remove.
1856         * cp-tree.h (print_class_statistics): Remove.
1857         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1859 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1861         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1862         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1863         * decl.c (next_initializable_field, find_decomp_class_base,
1864         cp_finish_decomp): Likewise.
1865         * typeck2.c (process_init_constructor_record): Likewise.
1867 2018-02-02  Jason Merrill  <jason@redhat.com>
1869         PR c++/84181 - ICE with lambda parm in template argument.
1870         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1872 2018-02-01  Jason Merrill  <jason@redhat.com>
1874         PR c++/84160 - ICE with nested variadic capture.
1875         * lambda.c (is_capture_proxy_with_ref): New.
1876         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1877         COMPONENT_REF.
1878         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1879         * constexpr.c (potential_constant_expression_1): Likewise.
1880         * semantics.c (process_outer_var_ref): Likewise.
1882 2018-02-01  Marek Polacek  <polacek@redhat.com>
1884         PR c++/84125
1885         * typeck.c (build_address): Relax the assert when
1886         processing_template_decl.
1888 2018-02-01  Jason Merrill  <jason@redhat.com>
1890         PR c++/84126 - ICE with variadic generic lambda
1891         PR c++/84036
1892         PR c++/82249
1893         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1894         PACK_EXPANSION_EXTRA_ARGS.
1896 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1898         PR c++/83796
1899         * call.c (convert_like_real): If w're initializing from {} explicitly
1900         call abstract_virtuals_error_sfinae.
1902 2018-01-31  Jason Merrill  <jason@redhat.com>
1903             Jakub Jelinek  <jakub@redhat.com>
1905         PR c++/83993
1906         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1907         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1908         on ADDR_EXPR.
1910 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1912         PR c++/83993
1913         * constexpr.c (diag_array_subscript): Emit different diagnostics
1914         if TYPE_DOMAIN (arraytype) is NULL.
1915         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1916         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1918 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1920         PR c++/84092
1921         * semantics.c (finish_qualified_id_expr): When handling an
1922         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1924 2018-01-31  Marek Polacek  <polacek@redhat.com>
1926         PR c++/84138
1927         * cp-gimplify.c (cp_fold): Check if X is an error node before
1928         calling useless_type_conversion_p.
1930 2018-01-30  Jason Merrill  <jason@redhat.com>
1932         PR c++/84091 - ICE with local class in lambda in template.
1933         * decl2.c (determine_visibility): Look for outer containing template
1934         instantiation.
1936         PR c++/84098 - ICE with lambda in template NSDMI.
1937         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1939 2018-01-29  Jason Merrill  <jason@redhat.com>
1941         PR c++/68810 - wrong location for reinterpret_cast error.
1942         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1943         !dofold.
1945 2018-01-29  Marek Polacek  <polacek@redhat.com>
1947         PR c++/83996
1948         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1949         => fooarray[1] in offset_int.
1951 2018-01-29  Jason Merrill  <jason@redhat.com>
1953         PR c++/83942 - wrong unused warning with static_cast.
1954         * cvt.c (ocp_convert): Call mark_rvalue_use.
1956 2018-01-26  Jason Merrill  <jason@redhat.com>
1958         PR c++/83956 - wrong dtor error with anonymous union
1959         * method.c (walk_field_subobs): Variant members only affect
1960         deletedness.
1961         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1963         PR c++/84036 - ICE with variadic capture.
1964         PR c++/82249
1965         * pt.c (tsubst_pack_expansion): When optimizing a simple
1966         substitution, pull a single pack expansion out of its pack.
1968         PR c++/82514 - ICE with local class in generic lambda.
1969         * pt.c (regenerated_lambda_fn_p): Remove.
1970         (enclosing_instantiation_of): Don't use it.
1971         (tsubst_function_decl): Call enclosing_instantiation_of.
1973         * pt.c (lookup_template_class_1): Add sanity check.
1974         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1976 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1978         PR c++/84031
1979         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1980         recursive calls that return ret.
1981         (cp_finish_decomp): Ignore unnamed bitfields.
1983 2018-01-23  Jason Merrill  <jason@redhat.com>
1985         PR c++/82249 - wrong mismatched pack length error.
1986         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1987         unsubstituted function parameter pack.
1989 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1991         PR c++/83921
1992         * decl.c (check_for_uninitialized_const_var): Not static; add
1993         bool and tsubst_flags_t parameters; adjust to be used both in
1994         constexpr context and not.
1995         * constexpr.c (potential_constant_expression_1): Use the above.
1996         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1998 2018-01-23  Jason Merrill  <jason@redhat.com>
2000         PR c++/83947 - ICE with auto declarations.
2001         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
2002         * decl.c (undeduced_auto_decl): Limit to vars and fns.
2004 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
2006         PR c++/83974
2007         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
2008         for pointer to member function types.
2010 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2012         PR sanitizer/83987
2013         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
2014         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
2016 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2018         PR c++/83988
2019         * pt.c (tsubst_baselink): Remove optype assert.
2020         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
2022 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
2024         PR c++/83958
2025         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
2026         refers to incomplete type.
2028 2018-01-23  Nathan Sidwell  <nathan@acm.org>
2030         Deprecate ARM-era for scope handling
2031         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
2032         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
2033         cleared.
2034         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
2035         cleanup handling.
2036         * semantics.c (begin_for_scope): Flag_new_for_scope is
2037         boolean-like.
2038         (finish_for_stmt, begin_range_for_stmt): Likewise.
2040 2018-01-22  Jason Merrill  <jason@redhat.com>
2042         PR c++/83720
2043         * decl2.c (determine_visibility): Fix template_decl handling
2044         instead of blocking it.
2046         PR c++/83720 - ICE with lambda and LTO.
2047         * decl2.c (determine_visibility): Clear template_decl for
2048         function-scope decls.  Propagate anonymous linkage from containing
2049         function.
2051 2018-01-22  Marek Polacek  <polacek@redhat.com>
2053         PR c++/81933
2054         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
2055         split out anything.
2057 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
2059         PR c++/83895
2060         * decl.c (grokdeclarator): Don't diagnose extra parens
2061         on typedefs.
2063 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
2065         PR c++/81167
2066         * call.c (joust): Use TREE_TYPE (source) if source is
2067         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
2069         PR c++/83919
2070         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
2071         for direct enum init.
2072         * decl.c (reshape_init): Likewise.
2074 2018-01-19  Marek Polacek  <polacek@redhat.com>
2076         * constexpr.c (fold_simple): Simplify.
2078 2018-01-18  Jason Merrill  <jason@redhat.com>
2080         PR c++/83714
2081         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
2082         * pt.c (instantiation_dependent_scope_ref_p): True if
2083         any_dependent_bases_p.
2085 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2087         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
2088         vs DECL_NONTRIVIALLY_INITIALIZED_P).
2090 2018-01-18  Jason Merrill  <jason@redhat.com>
2092         PR c++/82461 - constexpr list-initialized member
2093         * constexpr.c (potential_constant_expression_1): Check
2094         TARGET_EXPR_DIRECT_INIT_P.
2096 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
2098         PR c++/81013
2099         * decl.c (xref_basetypes): Early return upon error about derived
2100         union.
2102 2018-01-18  Nathan Sidwell  <nathan@acm.org>
2104         PR c++/83160
2105         * cp-tree.h (mark_use): Declare.
2106         * expr.c (mark_use): Make extern.
2107         * call.c (direct_reference_binding): Set inner conv's
2108         rvaluedness_matches_p, if it is an identity.
2109         (convert_like_real): Mark lvalue or rvalue use for identity as
2110         rvaledness_matches_p demands.
2112 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
2114         PR c++/83824
2115         * parser.c (attr_chainon): New function.
2116         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
2117         cp_parser_namespace_definition, cp_parser_init_declarator,
2118         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
2119         cp_parser_gnu_attributes_opt): Use it.
2120         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
2121         cp_parser_objc_struct_declaration): Likewise.  Don't reset
2122         prefix_attributes if attributes is error_mark_node.
2124 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2126         PR c++/78344
2127         * decl.c (grokdeclarator): Do not append the error_mark_node
2128         due to an erroneous optional attribute-specifier-seq.
2130 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
2132         PR c++/83897
2133         * cp-gimplify.c (cp_maybe_instrument_return): Handle
2134         CLEANUP_POINT_EXPR.
2136 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2138         PR c++/81054
2139         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
2140         error_mark_node when we give an error.
2141         * decl.c (cp_finish_decl): Use the latter.
2143 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2145         PR c++/83287
2146         * init.c (build_raw_new_expr): Scan list for lookups to keep.
2148 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2150         PR c++/83814
2151         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2152         the C++ part.  If processing a template, call
2153         fold_non_dependent_expr rather than fully folding.
2155 2018-01-17  Jason Merrill  <jason@redhat.com>
2157         PR c++/81067 - redundant NULL warning.
2158         * call.c (convert_like_real): Restore null_node handling.
2160 2018-01-17  Jason Merrill  <jason@redhat.com>
2162         PR c++/81843 - ICE with variadic member template.
2163         PR c++/72801
2164         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2165         template args.
2167 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2169         PR c++/83799
2170         * pt.c (type_dependent_expression_p): Strip any location wrapper
2171         before testing tree codes.
2172         (selftest::test_type_dependent_expression_p): New function.
2173         (selftest::cp_pt_c_tests): Call it.
2175 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2177         PR c++/83739
2178         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2179         this not a final instantiation.
2181 2018-01-16  Jason Merrill  <jason@redhat.com>
2183         PR c++/83714 - ICE checking return in template.
2184         * typeck.c (check_return_expr): Call build_non_dependent_expr.
2186 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
2188         PR c++/83817
2189         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2190         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2191         instead of CALL_FROM_THUNK_P.
2193         PR c++/83825
2194         * name-lookup.c (member_vec_dedup): Return early if len is 0.
2195         (resort_type_member_vec, set_class_bindings,
2196         insert_late_enum_def_bindings): Use vec qsort method instead of
2197         calling qsort directly.
2199 2018-01-15  Martin Sebor  <msebor@redhat.com>
2201         PR c++/83588
2202         * class.c (find_flexarrays): Make a record of multiple flexible array
2203         members.
2205 2018-01-12  Jason Merrill  <jason@redhat.com>
2207         PR c++/83186 - ICE with static_cast of list-initialized temporary.
2208         * typeck.c (build_static_cast): Use build_non_dependent_expr.
2210 2018-01-12  Nathan Sidwell  <nathan@acm.org>
2212         * cp-tree.h (mark_rvalue_use): Add parm name.
2213         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2214         mark_rvalue_use.
2215         * call.c (convert_like_real): Fix formatting.
2217 2018-01-11  Jason Merrill  <jason@redhat.com>
2219         PR c++/82728 - wrong -Wunused-but-set-variable
2220         PR c++/82799
2221         PR c++/83690
2222         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2223         * decl.c (case_conversion): Likewise.
2224         * semantics.c (finish_static_assert): Call
2225         perform_implicit_conversion_flags.
2227 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2229         * method.c (enum mangling_flags): Delete long-dead enum.
2231 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2233         * parser.c (cp_parser_std_attribute_spec): When
2234         token_pair::require_open / require_close return false simply
2235         return error_mark_node, avoid duplicate cp_parser_error about
2236         expected '(' / ')', respectively.
2238 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2240         PR c++/43486
2241         * call.c (null_ptr_cst_p): Strip location wrappers when
2242         converting from '0' to a pointer type in C++11 onwards.
2243         (conversion_null_warnings): Replace comparison with null_node with
2244         call to null_node_p.
2245         (build_over_call): Likewise.
2246         * cp-gimplify.c (cp_fold): Remove the early bailout when
2247         processing_template_decl.
2248         * cp-lang.c (selftest::run_cp_tests): Call
2249         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2250         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2251         (selftest::run_cp_tests): Move decl to bottom of file.
2252         (null_node_p): New inline function.
2253         (selftest::cp_pt_c_tests): New decl.
2254         (selftest::cp_tree_c_tests): New decl.
2255         * cvt.c (build_expr_type_conversion): Replace comparison with
2256         null_node with call to null_node_p.
2257         * error.c (args_to_string): Likewise.
2258         * except.c (build_throw): Likewise.
2259         * mangle.c (write_expression): Skip location wrapper nodes.
2260         * parser.c (literal_integer_zerop): New function.
2261         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2262         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2263         param of cp_parser_parenthesized_expression_list.  When calling
2264         warn_for_memset, replace integer_zerop calls with
2265         literal_integer_zerop, eliminating the double logical negation
2266         cast to bool.  Eliminate the special-casing for CONST_DECL in
2267         favor of the fold_for_warn within warn_for_memset.
2268         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2269         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2270         maybe_add_location_wrapper on it when wrap_locations_p is true.
2271         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2272         the result for RID_ALIGNOF and RID_SIZEOF.
2273         (cp_parser_builtin_offsetof): Likewise.
2274         * pt.c: Include "selftest.h".
2275         (tsubst_copy): Handle location wrappers.
2276         (tsubst_copy_and_build): Likewise.
2277         (build_non_dependent_expr): Likewise.
2278         (selftest::test_build_non_dependent_expr): New function.
2279         (selftest::cp_pt_c_tests): New function.
2280         * tree.c: Include "selftest.h".
2281         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2282         (selftest::test_lvalue_kind): New function.
2283         (selftest::cp_tree_c_tests): New function.
2284         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2285         (cp_build_binary_op): Replace comparison with null_node with call
2286         to null_node_p.
2287         (build_address): Use location of operand when building address
2288         expression.
2290 2018-01-10  Marek Polacek  <polacek@redhat.com>
2292         PR c++/82541
2293         * call.c (build_conditional_expr_1): Check complain before warning.
2294         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2295         -Wduplicated-branches.
2297 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2299         PR c++/81327
2300         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2301         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2302         args uses and check number of operands too.  Don't strip away any
2303         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2304         Deal with src argument not having pointer type.  Check
2305         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2306         test.
2307         (build_over_call): Call maybe_warn_class_memaccess here on the
2308         original arguments.
2309         (build_cxx_call): Rather than here on converted arguments.
2311 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2313         PR c++/81055
2314         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2315         error_mark_node as second argument.
2317 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2319         PR c++/83734
2320         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2321         in STATEMENT_LIST.  Remove unneeded assert.
2323 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2324             Alan Hayward  <alan.hayward@arm.com>
2325             David Sherwood  <david.sherwood@arm.com>
2327         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2328         VECTOR_CST_NELTS.
2329         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2330         * call.c (build_conditional_expr_1): Likewise.
2331         * decl.c (cp_finish_decomp): Likewise.
2332         * mangle.c (write_type): Likewise.
2333         * typeck.c (structural_comptypes): Likewise.
2334         (cp_build_binary_op): Likewise.
2335         * typeck2.c (process_init_constructor_array): Likewise.
2337 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2339         PR c++/83555
2340         * typeck.c (build_static_cast_1): For static casts to reference types,
2341         call build_base_path with flag_delete_null_pointer_checks as nonnull
2342         instead of always false.  When -fsanitize=null, call
2343         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2344         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2345         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2347 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2349         PR c++/83667
2350         * method.c (make_alias_for): Copy DECL_CONTEXT.
2352 2018-01-03  Marek Polacek  <polacek@redhat.com>
2354         PR c++/83592
2355         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2357 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2359         PR preprocessor/83602
2360         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2361         for builtin macros.
2363         PR c++/83634
2364         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2365         error_mark_node, return error_mark_node.
2367         Update copyright years.
2369 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2371         PR c++/83556
2372         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2373         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2374         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2375         to false and return.
2376         (replace_placeholders): Pass NULL instead of &pset as last argument
2377         to cp_walk_tree.
2379 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2381         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2382         lval var.
2384 Copyright (C) 2018 Free Software Foundation, Inc.
2386 Copying and distribution of this file, with or without modification,
2387 are permitted in any medium without royalty provided the copyright
2388 notice and this notice are preserved.