[PR c++/80290] recycle tinst garbage sooner
[official-gcc.git] / gcc / cp / ChangeLog
blobff6f4121723ab26dab44b033cd6d0422cefa140f
1 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
3         PR c++/80290
4         * cp-tree.h (struct tinst_level): Split decl into tldcl and
5         targs.  Add private split_list_p, tree_list_p, and not_list_p
6         inline const predicates; to_list private member function
7         declaration; free public member function declaration; list_p,
8         get_node and maybe_get_node accessors, and refcount data
9         member.  Narrow errors to unsigned short.
10         * error.c (print_instantiation_full_context): Use new
11         accessors.
12         (print_instantiation_partial_context_line): Likewise.  Drop
13         const from tinst_level-typed parameter.
14         * mangle.c (mangle_decl_string): Likewise.
15         * pt.c (freelist): New template class.
16         (tree_list_freelist_head): New var.
17         (tree_list_freelist): New fn, along with specializations.
18         (tinst_level_freelist_head): New var.
19         (pending_template_freelist_head): Likewise.
20         (tinst_level_freelist, pending_template_freelist): New fns.
21         (tinst_level::to_list, tinst_level::free): Define.
22         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
23         (set_refcount_ptr): New template fn.
24         (add_pending_template): Adjust for refcounting, freelists and
25         new accessors.
26         (neglectable_inst_p): Take a NULL d as a non-DECL.
27         (limit_bad_template_recursion): Use new accessors.
28         (push_tinst_level): New overload to create the list.
29         (push_tinst_level_loc): Make it static, split decl into two
30         args, adjust tests and initialization to cope with split
31         lists, use freelist, adjust for refcounting.
32         (push_tinst_level_loc): New wrapper with the old interface.
33         (pop_tinst_level): Adjust for refcounting.
34         (record_last_problematic_instantiation): Likewise.
35         (reopen_tinst_level): Likewise.  Use new accessors.
36         (instantiate_alias_template): Adjust for split list.
37         (fn_type_unification): Likewise.
38         (get_partial_spec_bindings): Likewise.
39         (instantiate_pending_templates): Use new accessors.  Adjust
40         for refcount.  Release pending_template to freelist.
41         (instantiating_current_function_p): Use new accessors.
43 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
45         PR c++/85039
46         * parser.c (cp_parser_builtin_offset): Reject type definitions.
47         * mangle.c (nested_anon_class_index): Avoid crash returning -1
48         if we've seen errors.
50 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
52         PR c++/85385
53         * name-lookup.c (macro_use_before_def::maybe_make): New function,
54         checking that the use is indeed before the definition.
55         (macro_use_before_def::macro_use_before_def): Make private.
56         (macro_use_before_def::~macro_use_before_def): Make private.  Move
57         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
58         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
59         than using new directly.
61 2018-04-12  Jason Merrill  <jason@redhat.com>
63         PR c++/85356 - ICE with pointer to member function.
64         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
65         flag_noexcept_type.  Build the new spec within the function context.
66         * except.c (build_noexcept_spec): Do get constant value in templates
67         if flag_noexcept_type.
68         * decl.c (check_redeclaration_exception_specification): Don't
69         instantiate noexcept on a dependent declaration.
71 2018-04-12  Marek Polacek  <polacek@redhat.com>
73         PR c++/85258
74         * constexpr.c (reduced_constant_expression_p): Return false for null
75         trees.
77 2018-04-11  Marek Polacek  <polacek@redhat.com>
79         PR c++/85032
80         * constexpr.c (potential_constant_expression_1): Consider conversions
81         from classes to literal types potentially constant.
83 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
85         PR c++/70808
86         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
87         the type like TYPE_PTR_OR_PTRMEM_P.
89 2018-04-10  Jason Merrill  <jason@redhat.com>
91         PR debug/65821 - wrong location for main().
92         * call.c (clear_location_r, convert_default_arg): Revert.
93         * tree.c (break_out_target_exprs): Add clear_location parm.
94         (struct bot_data): New.
95         (bot_manip): Clear location if requested.
96         * init.c (get_nsdmi): Pass clear_location.
98 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
100         PR c++/85110
101         * call.c (get_fndecl_argument_location): Make non-static.
102         * cp-tree.h (get_fndecl_argument_location): New decl.
103         * typeck.c (convert_for_assignment): When complaining due to
104         conversions for an argument, show the location of the parameter
105         within the decl.
107 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
109         PR c++/85312 - P0962 cleanup
110         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
111         diagnostics.
113 2018-04-10  Jason Merrill  <jason@redhat.com>
115         PR debug/65821 - wrong location for main().
116         * call.c (clear_location_r): New.
117         (convert_default_arg): Use it.
118         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
120         PR c++/85285 - ICE with flexible array after substitution.
121         * pt.c (instantiate_class_template_1): Check for flexible array in
122         union.
124 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
126         PR c++/85227
127         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
128         issue a pedwarn and defer trying to do bindings.
130 2018-04-09  Jason Merrill  <jason@redhat.com>
132         PR c++/85279 - dump_expr doesn't understand decltype.
133         * error.c (dump_expr): Handle DECLTYPE_TYPE.
135         PR c++/85262 - ICE with redundant qualification on constructor.
136         * call.c (build_new_method_call_1): Move make_args_non_dependent
137         after A::A() handling.
139         PR c++/85277 - ICE with invalid offsetof.
140         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
141         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
143         PR c++/85264 - ICE with excess template-parameter-list.
144         * parser.c (cp_parser_check_template_parameters): Add template_id_p
145         parameter.  Don't allow an extra template header if true.
146         (cp_parser_class_head): Pass template_id_p.
147         (cp_parser_elaborated_type_specifier): Likewise.
148         (cp_parser_alias_declaration): Likewise.
149         (cp_parser_check_declarator_template_parameters): Likewise.
151 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
153         PR c++/85194
154         * parser.c (cp_parser_simple_declaration): For structured bindings,
155         if *maybe_range_for_decl is NULL after parsing it, set it to
156         error_mark_node.
158 2018-04-09  Jason Merrill  <jason@redhat.com>
160         PR c++/85256 - ICE capturing pointer to VLA.
161         * lambda.c (add_capture): Distinguish between variable-size and
162         variably-modified types.
164 2018-04-06  Jason Merrill  <jason@redhat.com>
166         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
167         * pt.c (extract_locals_r): Remember local typedefs.
169 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
171         PR c++/84269
172         * name-lookup.c (struct std_name_hint): Move out of
173         get_std_name_hint; add field "min_dialect".
174         (get_std_name_hint): Add min_dialect values to all initializers.
175         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
176         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
177         <shared_mutex>, <string_view>, <thread>, and <variant>.
178         Add fstream, ifstream, and ofstream to <fstream>.
179         Add istringstream, ostringstream, and stringstream to <sstream>.
180         Add basic_string to <string>.
181         Add tuple_element and tuple_size to <tuple>.
182         Add declval to <utility>.
183         Fix ordering of <queue> and <tuple>.
184         Return a std_name_hint, rather than a const char *.
185         (get_cxx_dialect_name): New function.
186         (maybe_suggest_missing_std_header): Detect names that aren't yet
187         available in the current dialect, and instead of suggesting a
188         missing #include, warn about the dialect.
190 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
192         PR c++/85210
193         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
194         errorcount is set if tsubst doesn't return a VAR_DECL.
196 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
198         PR c++/85021
199         * name-lookup.c (using_directives_contain_std_p): New function.
200         (has_using_namespace_std_directive_p): New function.
201         (suggest_alternatives_for): Simplify if/else logic using early
202         returns.  If no candidates were found, and there's a
203         "using namespace std;" directive, call
204         maybe_suggest_missing_std_header.
205         (maybe_suggest_missing_header): Split later part of the function
206         into..
207         (maybe_suggest_missing_std_header): New.
209 2018-04-06  Jason Merrill  <jason@redhat.com>
211         PR c++/85242 - ICE with class definition in template parm.
212         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
213         processing_template_parmlist.
215         PR c++/85240 - LTO ICE with using of undeduced auto fn.
216         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
218 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
220         PR c++/85209
221         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
222         is not prev, if prev == decl.
224         PR c++/85208
225         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
226         maybe_apply_pragma_weak here...
227         (cp_maybe_mangle_decomp): ... but call it here instead.
229 2018-04-05  Jason Merrill  <jason@redhat.com>
231         PR c++/85136 - ICE with designated init in template.
232         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
233         designated initializer.
234         (check_array_designated_initializer): Update ce->index with the
235         constant value.
237         PR c++/83808 - ICE with VLA initialization.
238         * typeck2.c (process_init_constructor_array): Don't require a VLA
239         initializer to have VLA type.
241 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
243         PR c++/80956
244         * call.c (convert_like_real): Fail gracefully for a broken
245         std::initializer_list, missing a definition.
247         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
249 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
251         PR c++/84792
252         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
253         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
255 2018-04-05  Jason Merrill  <jason@redhat.com>
257         PR c++/82152 - ICE with class deduction and inherited ctor.
258         * pt.c (do_class_deduction): Ignore inherited ctors.
260         PR c++/84665 - ICE with array of empty class.
261         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
263         PR c++/85228 - ICE with lambda in enumerator in template.
264         * pt.c (bt_instantiate_type_proc): Don't assume
265         CLASSTYPE_TEMPLATE_INFO is non-null.
267 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
269         Implement P0969
270         * decl.c (find_decomp_class_base): Check accessibility instead
271         of declared access, adjust diagnostic.
273 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
275         Implement P0961
276         * decl.c (get_tuple_decomp_init): Check the templatedness
277         of a member get.
279 2018-04-05  Jason Merrill  <jason@redhat.com>
281         PR c++/85200 - ICE with constexpr if in generic lambda.
282         * pt.c (extract_locals_r): Don't record the local specs of variables
283         declared within the pattern.
285 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
287         PR c++/84979
288         * pt.c (check_auto_in_tmpl_args): New.
289         (tsubst_qualified_id): Use it to reject template args
290         referencing auto for non-type templates.
291         * parser.c (cp_parser_template_id): Likewise.
292         * cp-tree.h (check_auto_in_tmpl_args): Declare.
293         * typeck2.c (build_functional_cast): Report correct location
294         for invalid use of auto.
296 2018-04-04  Jason Merrill  <jason@redhat.com>
298         PR c++/85215 - ICE with copy-init from conversion.
299         * call.c (merge_conversion_sequences): Fix type of direct binding
300         sequence.
302         PR c++/84938 - ICE with division by ~-1.
303         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
305         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
306         * parser.c (cp_parser_mem_initializer_list): Call
307         check_for_bare_parameter_packs.
309 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
311         PR inline-asm/85172
312         * constexpr.c (cxx_eval_builtin_function_call): For calls to
313         builtin_valid_in_constant_expr_p functions, don't call
314         cxx_eval_constant_expression if argument is not
315         potential_constant_expression.
317         PR c++/85146
318         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
319         argument.
320         * semantics.c (calculate_bases): Add complain argument.  Use
321         complete_type_or_maybe_complain instead of just complete_type and
322         return an empty vector if it fails.  Move make_tree_vector () call
323         after early return.  Formatting fixes.
324         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
325         end.
326         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
327         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
328         calculate_direct_bases callers, formatting fixes.
330 2018-04-04  Jason Merrill  <jason@redhat.com>
332         PR c++/85006 - -fconcepts ICE with A<auto...> return type
333         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
335         PR c++/85200 - ICE with constexpr if in generic lambda.
336         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
338         PR c++/84221 - bogus -Wunused with attribute and template.
339         * decl2.c (is_late_template_attribute): Handle unused and used
340         normally on non-TYPE_DECL.
342         PR c++/85135 - ICE with omitted template arguments.
343         * decl.c (grokdeclarator): Catch deduced class type in trailing
344         return type.
346         PR c++/85133 - ICE with missing concept initializer.
347         * decl.c (cp_finish_decl): If a concept initializer is missing, use
348         true.
350         PR c++/85118 - wrong error with generic lambda and std::bind.
351         * call.c (add_template_conv_candidate): Disable if there are any
352         call operators.
354         PR c++/85141 - ICE with compound assignment and static member fn.
355         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
356         compound assignment.
358         PR c++/85148 - ICE with 'this' in array NSDMI.
359         * tree.c (replace_placeholders_r): Use handled_component_p.
361 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
363         PR c++/65923
364         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
365         * parser.c (cp_parser_unqualified_id): ..not here.
367 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
369         PR c++/84943
370         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
371         used.
372         * decl2.c (mark_used): Return without effects if tf_conv.
374 2018-04-03  Jason Merrill  <jason@redhat.com>
376         PR c++/85092 - C++17 ICE with unused list constructor.
377         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
378         from a TARGET_EXPR.
380         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
381         * constexpr.c (cxx_eval_builtin_function_call): Only defer
382         __builtin_constant_p if ctx->quiet.
384 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
386         PR c++/84768
387         * pt.c (rewrite_template_parm): If the first argument is
388         error_mark_node return it immediately.
389         (build_deduction_guide): Check the return value of the
390         latter for error_mark_node.
391         (do_class_deduction): Check the return value of the latter.
393 2018-04-03  Jason Merrill  <jason@redhat.com>
395         * semantics.c (finish_if_stmt_cond): Use
396         instantiation_dependent_expression_p.
398         PR c++/85149 - generic lambda and constexpr if.
399         * pt.c (build_extra_args, add_extra_args): Split from
400         tsubst_pack_expansion.
401         (tsubst_expr) [IF_STMT]: Use them.
402         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
404         * typeck.c (merge_types): Limit matching attribute shortcut to
405         the default case.
407 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
409         PR c++/85147
410         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
412         PR c++/85140
413         * name-lookup.c (handle_namespace_attrs): Return early if attributes
414         is error_mark_node.
416         PR c++/85134
417         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
418         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
419         instead for static data members clear init and set DECL_EXTERNAL.
421 2018-04-02  Jason Merrill  <jason@redhat.com>
423         PR c++/64095 - auto... parameter pack.
424         * parser.c (cp_parser_parameter_declaration): Handle turning autos
425         into packs here.
426         (cp_parser_parameter_declaration_list): Not here.
428 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
430         PR c++/85027
431         * class.c (instantiate_type): Peel off SAVE_EXPR before
432         BASELINK.
434 2018-03-30  Jason Merrill  <jason@redhat.com>
436         * typeck2.c (process_init_constructor_record): Use
437         init_list_type_node for the CONSTRUCTOR around an anonymous union
438         designated initializer.
440 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
442         PR c++/84791
443         * semantics.c (finish_omp_reduction_clause): If
444         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
445         even if processing_template_decl.
447 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
449         PR c++/84269
450         * name-lookup.c (get_std_name_hint): Add names from <memory>,
451         <tuple>, and <utility>.
453 2018-03-29  Jason Merrill  <jason@redhat.com>
455         PR c++/85093 - too many template args with pack expansion.
456         * pt.c (coerce_template_parms): Keep pack expansion args that will
457         need to be empty.
459 2018-03-29  Jason Merrill  <jason@redhat.com>
461         * pt.c (build_non_dependent_expr): Propagate expr location.
463 2018-03-27  Jason Merrill  <jason@redhat.com>
465         PR c++/85060 - wrong-code with call to base member in template.
466         * search.c (any_dependent_bases_p): Check uses_template_parms
467         rather than processing_template_decl.
469 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
471         PR c++/85110
472         * typeck.c (convert_for_assignment): When complaining due to
473         conversions for an argument, attempt to use the location of the
474         argument.
476 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
478         PR c++/85028
479         * pt.c (tsubst_default_argument): Early return if the type of the
480         parameter is erroneous.
482 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
484         PR c++/84973
485         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
486         templates.
488         PR c++/84968
489         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
491 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
493         PR c++/85067
494         * method.c (defaulted_late_check): Partially revert r253321 changes,
495         do not early return upon error.
497 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
499         PR c++/85077
500         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
501         type call fold to generate VECTOR_CSTs when possible.
503         PR c++/85076
504         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
505         return it right away.
507 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
509         * search.c (check_final_overrider): Use inform instead of error
510         for the diagnostics of the overridden functions.  Tweak wording.
512 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
514         PR c++/85068
515         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
516         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
518 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
519             Jason Merrill  <jason@redhat.com>
521         PR c++/84632
522         * init.c (build_aggr_init): When initializing from array,
523         reject anything but CONSTRUCTORs and TARGET_EXPRs.
524         (build_vec_init): Handle separately ARRAY_TYPEs.
526 2018-03-26  Jason Merrill  <jason@redhat.com>
528         PR c++/85062 - ICE with alignas in wrong place.
529         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
530         here.
532         PR c++/85049 - ICE with __integer_pack.
533         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
534         * cp-tree.h (TEMPLATE_PARM_P): New.
536 2018-03-23  Jason Merrill  <jason@redhat.com>
538         PR c++/78489 - wrong SFINAE behavior.
540         PR c++/84489
541         * pt.c (type_unification_real): Don't defer substitution failure.
543 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
545         PR c++/85015
546         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
547         result.
549         PR c++/84942
550         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
551         cp_build_unary_op call with gcc_unreachable ().
553 2018-03-23  Marek Polacek  <polacek@redhat.com>
555         PR c++/85045
556         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
557         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
558         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
560 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
562         Implement P0962
563         * parser.c (cp_parser_perform_range_for_lookup): Change
564         the condition for deciding whether to use members.
566 2018-03-23  Marek Polacek  <polacek@redhat.com>
568         PR c++/85033
569         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
571 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
573         PR c++/71251
574         * parser.c (cp_parser_alias_declaration): Call
575         parser_check_template_parameters.
577         PR c++/84789
578         * pt.c (resolve_typename_type): Drop assert that stopped
579         simplification to template-independent types.  Add assert to
580         verify the initial scope is template dependent.
581         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
582         Reparse the id expression as a type-name, not a declarator.
584         PR c++/84729
585         * init.c (build_vec_init): Error at parenthesized array init.
587         PR c++/84610
588         PR c++/84642
589         PR c++/84942
590         * cp-tree.h (temp_override): New template class, generalizing
591         a cleanup that was only used...
592         * parser.c (cp_parser_parameter_declaration_clause):
593         ... here for auto_is_implicit_function_template_parm_p.
594         (cp_parser_gnu_attributes_opt): Use it here as well.
595         (cp_parser_std_attribute): Likewise.
597 2018-03-22  Marek Polacek  <polacek@redhat.com>
599         PR c++/84854
600         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
601         is boolean.
603 2018-03-21  Jason Merrill  <jason@redhat.com>
605         PR c++/81311 - wrong C++17 overload resolution.
606         * call.c (build_user_type_conversion_1): Remove C++17 code.
607         (conv_binds_ref_to_prvalue): New.
608         (build_over_call): Handle C++17 copy elision.
609         (build_special_member_call): Only do C++17 copy elision here if the
610         argument is already the right type.
612 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
614         PR c++/71965
615         * init.c (build_vec_init): Silence error, former sorry,
616         without tf_error.
618         PR c++/84610
619         PR c++/84642
620         * parser.c (abort_fully_implicit_template_p): New.
621         (cp_parser_skip_to_end_of_statement): Use it.
622         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
623         (finish_fully_implicit_template_p): Clear
624         implicit_template_parms and implicit_template_scope.
626 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
628         PR c++/84972
629         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
630         error_mark_node when check_array_designated_initializer fails.
632 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
634         PR c++/84961
635         * cp-tree.h (genericize_compound_lvalue): Declare.
636         * typeck.c (genericize_compound_lvalue): New function.
637         (unary_complex_lvalue, cp_build_modify_expr): Use it.
638         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
639         and PREDECREMENT_EXPR in output and "m" constrained input operands with
640         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
641         COMPOUND_EXPR operand.
643 2018-03-21  Nathan Sidwell  <nathan@acm.org>
645         PR c++/85008
646         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
647         * decl2.c (vague_linkage_p): Likewise.
649 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
651         PR c++/84994
652         * constexpr.c (constexpr_fn_retval): Make non-"static".
653         * cp-tree.h (constexpr_fn_retval): New decl.
654         * search.c (direct_accessor_p): Update leading comment.
655         (reference_accessor_p): Likewise.
656         (field_accessor_p): Replace check that function body is a
657         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
658         indentation of "field_type" decl.
660 2018-03-21  Nathan Sidwell  <nathan@acm.org>
662         PR c++/84804
663         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
664         complete classes.
666 2018-03-21  Martin Sebor  <msebor@redhat.com>
668         PR c++/84850
669         * call.c (first_non_public_field): New template and function.
670         (first_non_trivial_field): New function.
671         (maybe_warn_class_memaccess): Call them.
673 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
675         PR c++/84892
676         * search.c (field_accessor_p): Use class_of_this_parm rather than
677         type_of_this_parm, to check that "this" is a "const T *", rather
678         than a "T *const".
680 2018-03-21  Nathan Sidwell  <nathan@acm.org>
682         * class.c (finish_struct_anon_r): Refactor, deprecate anything
683         other than public non-static data members.
684         * parser.c (cp_parser_init_declarator): Deprecate attributes after
685         parenthesized initializer.
687         PR c++/84836
688         * name-lookup.c (update_binding): Correct logic for local binding
689         update.
691 2018-03-21  Marek Polacek  <polacek@redhat.com>
693         PR c++/71638, ICE with NSDMI and reference.
694         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
695         even when we replace an element.
697 2018-03-20  Marek Polacek  <polacek@redhat.com>
699         PR c++/84978, ICE with NRVO.
700         * constexpr.c (cxx_eval_constant_expression): Handle the case when
701         a RESULT_DECL isn't in the hash map.
703 2018-03-20  Jason Merrill  <jason@redhat.com>
705         PR c++/84978, ICE with NRVO.
706         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
707         (cp_get_callee_fndecl_nofold): New.
708         * cp-gimplify.c (cp_genericize_r): Use it instead.
709         * call.c (check_self_delegation): Likewise.
711 2018-03-20  Nathan Sidwell  <nathan@acm.org>
713         PR c++/84962
714         * name-lookup.c (pushdecl_class_level): Push anon-struct's
715         member_vec, if there is one.
717         PR c++/84970
718         * cp-tree.h (lookup_list_keep): Declare.
719         * tree.c (lookup_list_keep): New, broken out of ...
720         (build_min): ... here.  Call it.
721         * decl.c (cp_finish_decl): Call lookup_list_keep.
723 2018-03-19  Jason Merrill  <jason@redhat.com>
725         PR c++/84937 - ICE with class deduction and auto.
726         * pt.c (rewrite_template_parm): Fix auto handling.
728 2018-03-19  Marek Polacek  <polacek@redhat.com>
730         PR c++/84925
731         * pt.c (enclosing_instantiation_of): Check if fn is null.
733         PR c++/84927
734         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
735         as we evaluate the elements.
736         (cxx_eval_constant_expression): Verify constructor's flags
737         unconditionally.
739 2018-03-19  Jason Merrill  <jason@redhat.com>
741         PR c++/71834 - template-id with too few arguments.
742         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
744 2018-03-19  Nathan Sidwell  <nathan@acm.org>
746         PR c++/84835
747         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
748         * pt.c (build_template_decl): Propagate language linkage.
750         PR c++/84812
751         * name-lookup.c (set_local_extern_decl_linkage): Defend against
752         ambiguous lookups.
754 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
756         PR c/84910
757         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
758         diagnostics.
759         * method.c (synthesize_method): Likewise.
760         * pt.c (convert_nontype_argument): Likewise.
762 2018-03-16  Jason Merrill  <jason@redhat.com>
764         PR c++/84720 - ICE with rvalue ref non-type argument.
765         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
766         (convert_nontype_argument): Revert earlier change.
768         PR c++/80227 - SFINAE and negative array size.
769         * decl.c (compute_array_index_type): Use
770         build_converted_constant_expr and valid_constant_size_p.
772         PR c++/84906 - silent wrong code with ambiguous conversion.
773         * call.c (build_user_type_conversion_1): Set need_temporary_p on
774         ambiguous conversion.
775         (convert_like_real): Check it.
777         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
778         * call.c (build_special_member_call): Don't convert an init-list
779         argument directly to the class type.
781 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
783         PR c++/79937
784         PR c++/82410
785         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
786         (find_placeholder): Declare.
787         * tree.c (struct replace_placeholders_t): Add exp member.
788         (replace_placeholders_r): Don't walk into ctors with
789         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
790         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
791         (replace_placeholders): Initialize data.exp.
792         (find_placeholders_r, find_placeholders): New functions.
793         * typeck2.c (process_init_constructor_record,
794         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
795         if adding NSDMI on which find_placeholder returns true.
796         * call.c (build_over_call): Don't call replace_placeholders here.
797         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
798         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
799         TARGET_EXPR_INITIAL.
800         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
801         ctor.
803 2018-03-16  Jason Merrill  <jason@redhat.com>
805         PR c++/83911 - ICE with multiversioned constructor.
806         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
807         dispatchere here.
808         * call.c (build_over_call): Not here.
810 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
812         PR c++/84874
813         * decl.c (reshape_init_class): Don't assert d->cur->index == field
814         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
816 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
818         PR c++/84222
819         * cp-tree.h (cp_warn_deprecated_use): Declare.
820         * tree.c (cp_warn_deprecated_use): New function.
821         * typeck2.c (build_functional_cast): Use it.
822         * decl.c (grokparms): Likewise.
823         (grokdeclarator): Likewise.  Temporarily push nested class scope
824         around grokparms call for out of class member definitions.
826 2018-03-14  Jason Merrill  <jason@redhat.com>
828         PR c++/84820 - no error for invalid qualified-id.
829         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
830         cp_error_declarator.
832         PR c++/84801 - ICE with unexpanded pack in lambda.
833         * pt.c (check_for_bare_parameter_packs): Don't return early for a
834         lambda in non-template context.
836         PR c++/81236 - auto variable and auto function
837         * pt.c (tsubst_baselink): Update the type of the BASELINK after
838         mark_used.
840 2018-03-14  Jason Merrill  <jason@redhat.com>
842         PR c++/83916 - ICE with template template parameters.
843         * pt.c (convert_template_argument): Don't substitute into type of
844         non-type parameter if we don't have enough arg levels.
845         (unify): Likewise.
847 2018-03-14  Marek Polacek  <polacek@redhat.com>
849         PR c++/84596
850         * semantics.c (finish_static_assert): Check
851         instantiation_dependent_expression_p instead of
852         {type,value}_dependent_expression_p.
854 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
855             Jason Merrill  <jason@redhat.com>
857         PR c++/82336 - link error with list-init default argument.
858         * decl.c (check_default_argument): Unshare an initializer list.
860 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
862         PR c++/84843
863         * decl.c (duplicate_decls): For redefinition of built-in, use error
864         and return error_mark_node.  For redeclaration, return error_mark_node
865         rather than olddecl if !flag_permissive.
867 2018-03-13  Jason Merrill  <jason@redhat.com>
869         PR c++/82565 - ICE with concepts and generic lambda.
870         * pt.c (instantiate_decl): Clear fn_context for lambdas.
872 2018-03-13  Jason Merrill  <jason@redhat.com>
874         PR c++/84720 - ICE with rvalue ref non-type argument.
875         * pt.c (convert_nontype_argument): Handle rvalue references.
877         PR c++/84839 - ICE with decltype of parameter pack.
878         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
879         instantiating dummy parms.
881         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
882         parameter even without -Wpedantic.
884         PR c++/84798 - ICE with auto in abstract function declarator.
885         * parser.c (cp_parser_parameter_declaration_clause): Check
886         parser->default_arg_ok_p.
888 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
890         PR c++/84808
891         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
892         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
893         sizetype.  Formatting fixes.
895 2018-03-12  Jason Merrill  <jason@redhat.com>
897         PR c++/84355 - ICE with deduction for member class template.
898         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
899         CLASS_PLACEHOLDER_TEMPLATE.
901         PR c++/84802 - ICE capturing uninstantiated class.
902         * lambda.c (build_capture_proxy): Call complete_type.
904 2018-03-09  Jason Merrill  <jason@redhat.com>
906         PR c++/84770 - ICE with typedef and parameter pack.
907         * pt.c (verify_unstripped_args_1): Split out from
908         verify_unstripped_args.
910         PR c++/84785 - ICE with alias template and default targs.
911         * pt.c (type_unification_real): Set processing_template_decl if
912         saw_undeduced == 1.
914         PR c++/84752 - ICE with capture of constexpr array.
915         * call.c (standard_conversion): Set rvaluedness_matches_p on the
916         identity conversion under ck_lvalue.
918 2018-03-09  Jason Merrill  <jason@redhat.com>
919             Paolo Carlini  <paolo.carlini@oracle.com>
921         PR c++/71169
922         PR c++/71832
923         * pt.c (any_erroneous_template_args_p): New.
924         * cp-tree.h (any_erroneous_template_args_p): Declare it.
925         * parser.c (cp_parser_class_specifier_1): Use it.
927 2018-03-09  Jason Merrill  <jason@redhat.com>
929         PR c++/84726 - unnecessary capture of constant vars.
930         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
931         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
932         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
933         * lambda.c (is_constant_capture_proxy)
934         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
935         (prune_lambda_captures): New.
936         (finish_lambda_function): Call prune_lambda_captures.
938 2018-03-09  Jason Merrill  <jason@redhat.com>
939             Jakub Jelinek  <jakub@redhat.com>
941         PR c++/84076
942         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
943         build ADDR_EXPR with REFERENCE_TYPE.
944         (build_over_call): For purposes of check_function_arguments, if
945         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
946         its operand rather than the argument itself.
948 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
950         PR c++/84724
951         * decl.c (duplicate_decls): Don't override __* prefixed builtins
952         except for __[^b]*_chk, instead issue permerror and for -fpermissive
953         also a note and return olddecl.
955 2018-03-09  Nathan Sidwell  <nathan@acm.org>
957         PR c++/84733
958         * name-lookup.c (do_pushdecl_with_scope): Only clear
959         current_function_decl when pushing a non-class (i.e. namespace)
960         scope.
962 2018-03-08  Jason Merrill  <jason@redhat.com>
963             Jakub Jelinek  <jakub@redhat.com>
965         PR c++/80598
966         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
967         not calling mark_used for the benefit of -Wunused-function warning.
969 2018-03-06  Jason Merrill  <jason@redhat.com>
971         * lambda.c (is_capture_proxy_with_ref): Remove.
972         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
974 2018-03-06  Marek Polacek  <polacek@redhat.com>
976         PR c++/84684
977         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
978         arguments.
980 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
982         PR c++/84231
983         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
984         only while processing template decls.
985         * typeck.c (build_x_conditional_expr): Move wrapping of
986         reference type around type...
987         * call.c (build_conditional_expr_1): ... here.  Rename
988         is_lvalue to is_glvalue.
989         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
990         INDIRECT_REF of COND_EXPR too.
992         PR c++/84593
993         * init.c (build_zero_init_1): Zero-initialize references.
995         PR c++/84492
996         * semantics.c (finish_stmt_expr_expr): Reject unresolved
997         overloads used as stmt expr values.
999 2018-03-05  Jason Merrill  <jason@redhat.com>
1001         PR c++/84708 - ICE with lambda in local class NSDMI.
1002         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1003         context.
1005 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1007         PR c++/84684
1008         * constexpr.c (constexpr_call_hasher::equal): Return false if
1009         lhs->hash != rhs->hash.  Change return 1 to return true and
1010         return 0 to return false.
1012 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1014         PR c++/84702
1015         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1017 2018-03-05  Marek Polacek  <polacek@redhat.com>
1019         PR c++/84707
1020         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1021         UDLIT_OPER_P.
1023 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1025         PR c++/84694
1026         * friend.c (do_friend): Restore check for identifier_p inside
1027         TEMPLATE_ID_EXPR.
1029 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1031         PR c++/84618
1032         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1033         involving a VAR_DECL or a PARM_DECL.
1035 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1036             Jason  Merrill  <jason@redhat.com>
1037             Nathan Sidwell  <nathan@acm.org>
1039         PR c++/84497
1040         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1042 2018-03-03  Jason Merrill  <jason@redhat.com>
1044         PR c++/84686 - missing volatile loads.
1045         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1047 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1049         PR c++/71464
1050         * optimize.c (maybe_thunk_body): Bail out immediately if either
1051         fns[0] or fns[1] is null.
1053 2018-03-02  Marek Polacek  <polacek@redhat.com>
1055         PR c++/84578
1056         * constexpr.c (get_array_or_vector_nelts): New.
1057         (cxx_eval_array_reference): Use it.
1058         (cxx_eval_vec_init_1): Likewise.
1059         (cxx_eval_store_expression): Likewise.
1061 2018-03-02  Jason Merrill  <jason@redhat.com>
1063         * semantics.c (force_paren_expr): Remove redundant test.
1065 2018-03-02  Marek Polacek  <polacek@redhat.com>
1067         PR c++/84663
1068         * decl.c (cp_complete_array_type): Check error_mark_node.
1070         PR c++/84664
1071         * typeck.c (cp_perform_integral_promotions): Check the result of
1072         mark_rvalue_use.
1074 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1076         PR c++/84662
1077         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1078         RETURN instead of return.
1079         <case POINTER_PLUS_EXPR>: Likewise.
1080         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1081         it instead of wrapping it into CONVERT_EXPR.
1083 2018-03-02  Jason Merrill  <jason@redhat.com>
1085         Fix MIPS16 ICE.
1086         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1088 2018-03-02  Marek Polacek  <polacek@redhat.com>
1090         PR c++/84590
1091         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1092         wrapped in VIEW_CONVERT_EXPR.
1094 2018-03-01  Martin Sebor  <msebor@redhat.com>
1096         PR c++/84294
1097         * decl.c (check_redeclaration_no_default_args): Merge attributes
1098         specified on redeclarations of the same function template.
1099         Remove dead code.
1101 2018-03-01  Marek Polacek  <polacek@redhat.com>
1102             Jason Merrill  <jason@redhat.com>
1104         PR c++/84582
1105         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1106         a template.
1107         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1108         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1109         of instantiate_non_dependent_expr.
1110         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1112 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1114         PR c++/84434
1115         * name-lookup.c (member_vec_dedup): Remove manually peeled
1116         iteration.  Ignore dependent ctor inheritance.
1118 2018-03-01  Jason Merrill  <jason@redhat.com>
1120         PR c++/71569 - decltype of template.
1121         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1123 2018-03-01  Marek Polacek  <polacek@redhat.com>
1125         PR c++/84596
1126         * constexpr.c (require_rvalue_constant_expression): New function.
1127         * cp-tree.h: Declare it.
1128         * semantics.c (finish_static_assert): Use it instead of
1129         require_potential_rvalue_constant_expression.
1131 2018-03-01  Jason Merrill  <jason@redhat.com>
1132             Alexandre Oliva <aoliva@redhat.com>
1134         PR c++/71569 - ICE with redundant args on member variable template.
1135         * decl.c (start_decl): Handle partial specialization of member
1136         variable template.
1137         * pt.c (determine_specialization): Allow partial specialization
1138         of member variable template without specializing enclosing class.
1139         (process_partial_specialization): Improve error message.
1141 2018-02-28  Jason Merrill  <jason@redhat.com>
1143         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1144         * pt.c (determine_specialization): Check ref-qualifier.
1146 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1148         PR c++/84609
1149         * parser.c (cp_parser_attributes_opt): Formatting fix.
1150         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1151         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1152         New functions.
1153         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1154         instead of tentative parse to peek over optional attribute tokens
1155         to check for CPP_COLON after them.
1157         PR c++/83871
1158         PR c++/83503
1159         * pt.c (INCLUDE_STRING): Remove define.
1160         (warn_spec_missing_attributes): Use pretty_printer instead of
1161         std::string.  Fix up inform call so that the list of attributes
1162         is in %s argument.
1164 2018-02-28  Martin Sebor  <msebor@redhat.com>
1166         PR testsuite/84617
1167         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1168         and malloc.
1170 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1172         PR c++/84602
1173         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1174         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1175         regardless of want_type.
1176         (search_anon_aggr): Just use get_class_binding_direct.
1178 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1180         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1181         inform_n.
1183 2018-02-27  Martin Sebor  <msebor@redhat.com>
1185         * pt.c: Avoid including <string> directly.
1187 2018-02-27  Martin Sebor  <msebor@redhat.com>
1189         PR c++/83871
1190         PR c++/83503
1191         * cp-tree.h (warn_spec_missing_attributes): New function.
1192         ((check_explicit_specialization): Add an argument.  Call the above
1193         function.
1194         * decl.c (duplicate_decls): Avoid applying primary function template's
1195         attributes to its explicit specializations.
1196         cp/pt.c (warn_spec_missing_attributes): Define.
1198 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1200         PR c++/71546 - lambda init-capture with qualified-id.
1201         * parser.c (cp_parser_lambda_introducer): Clear scope after
1202         each lambda capture.
1204 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1206         PR c++/84426
1207         * name-lookup.h (get_member_slot): Rename ...
1208         (find_member_slot): ... here.
1209         (add_member_slot): New.
1210         * name-lookup.c (member_vec_linear_search): No need to check for
1211         NULL slot.
1212         (get_member_slot): Rename ...
1213         (find_member_slot): ... here.  Don't add slot for incomplete class.
1214         (add_member_slot): New.
1215         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1216         if push_class_level_binding fails.  Create slot and grok
1217         properties once we're committed to insertion.
1219 2018-02-27  Jason Merrill  <jason@redhat.com>
1221         PR c++/84489 - dependent default template argument
1222         * pt.c (type_unification_real): Handle early substitution failure.
1224 2018-02-26  Jason Merrill  <jason@redhat.com>
1226         PR c++/84560 - ICE capturing multi-dimensional VLA.
1227         * tree.c (array_of_runtime_bound_p): False if the element is
1228         variably-modified.
1230         PR c++/84441 - ICE with base initialized from ?:
1231         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1233         PR c++/84520 - ICE with generic lambda in NSDMI.
1234         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1235         'this' in a generic lambda instantiation.
1237         PR c++/84559 - ICE with constexpr VLA.
1238         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1239         for constexpr variable with VLA type.
1241 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1243         PR c++/84558
1244         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1245         a valid constant initializer.  Formatting fixes.
1247 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1249         PR c++/84540
1250         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1251         returning NULL_TREE.
1252         (apply_late_template_attributes): Likewise.
1254 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1256         PR c++/84557
1257         * parser.c (cp_parser_omp_var_list_no_open): Only call
1258         cp_parser_lookup_name_simple on names satisfying identifier_p.
1259         (cp_parser_oacc_routine): Likewise.
1261 2018-02-26  Jason Merrill  <jason@redhat.com>
1263         PR c++/84551 - ICE with concepts and -g.
1264         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1266 2018-02-26  Marek Polacek  <polacek@redhat.com>
1268         PR c++/84325
1269         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1270         non-types.
1272 2018-02-26  Jason Merrill  <jason@redhat.com>
1274         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1275         * call.c (build_over_call): Handle deleted functions in one place.
1277 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1279         PR c++/84533
1280         * decl.c (redeclaration_error_message): Don't try to use
1281         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1283 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1285         * lambda.c (build_capture_proxy): Define static.
1286         * cp-tree.h (build_capture_proxy): Remove.
1288 2018-02-26  Marek Polacek  <polacek@redhat.com>
1290         PR c++/84537
1291         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1292         if name is error node.
1294 2018-02-25  Jason Merrill  <jason@redhat.com>
1296         PR c++/84015 - ICE with class deduction and auto template parm.
1297         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
1299 2018-02-24  Marek Polacek  <polacek@redhat.com>
1301         PR c++/83692
1302         * constexpr.c (maybe_constant_init_1): New function.
1303         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
1304         (cxx_constant_init): New function.
1305         * cp-tree.h (cxx_constant_init): Declare.
1306         * typeck2.c (store_init_value): Call cxx_constant_init instead of
1307         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
1309 2018-02-22  Jason Merrill  <jason@redhat.com>
1311         PR c++/70468 - ICE with constructor delegation via typedef.
1312         * pt.c (tsubst_initializer_list): Check for other mem-initializers
1313         with constructor delegation.
1315 2018-02-22  Jason Merrill  <jason@redhat.com>
1317         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
1318         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
1319         VECTOR_TYPE.
1321 2018-02-22  Marek Polacek  <polacek@redhat.com>
1323         PR c++/84493
1324         * parser.c (cp_parser_braced_list): Use require_open instead of
1325         consume_open.
1327 2018-02-21  Jason Merrill  <jason@redhat.com>
1329         PR c++/84454 - ICE with pack expansion in signature.
1330         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
1332 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1334         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
1335         IF_STMT.
1337 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
1339         PR c++/84446
1340         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
1341         on error_mark_node.
1343 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
1345         PR c++/84445
1346         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
1347         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
1349         PR c++/84449
1350         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
1351         returns error_mark_node, return it immediately.
1352         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
1353         error_mark_node, return error_mark_node.
1355         PR c++/84455
1356         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
1357         function_depth to avoid GC during finish_lambda_function.
1359 2018-02-19  Jason Merrill  <jason@redhat.com>
1361         PR c++/84429 - ICE capturing VLA.
1362         * lambda.c (build_capture_proxy): Handle reference refs.
1364 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
1366         PR c++/84448
1367         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
1368         either operand is error_mark_node, set current.lhs to that instead of
1369         creating a binary op with error_mark_node operands.
1371         PR c++/84430
1372         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
1374 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
1376         PR c++/84348
1377         * decl.c (grokdeclarator): Early return error_mark_node upon
1378         ill-formed friend declaration.
1380 2018-02-16  Marek Polacek  <polacek@redhat.com>
1381             Jakub Jelinek  <jakub@redhat.com>
1383         PR c++/84192
1384         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
1385         set *jump_target to anything if jump_target is NULL.
1387 2018-02-16  Jason Merrill  <jason@redhat.com>
1389         PR c++/84151 - unnecessary volatile load with static member.
1390         * call.c (build_new_method_call_1): Avoid loading from a volatile
1391         lvalue used as the object argument for a static member function.
1393         PR c++/81853 - using-directive and constexpr.
1394         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
1396         PR c++/84420 - ICE with structured binding in lambda.
1397         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
1399         PR c++/83835 - C++17 error with constructor ctors.
1400         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
1402         PR c++/82664 - ICE with reference to function template parm.
1403         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
1404         NOP_EXPRs.
1406         PR c++/82764 - C++17 ICE with empty base
1407         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
1409 2018-02-16  Jason Merrill  <jason@redhat.com>
1411         PR c++/84421 - type-dependent if constexpr
1412         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
1414 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1416         Deprecate -ffriend-injection.
1417         * decl.c (cxx_init_decl_processing): Emit warning on option.
1418         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
1419         friend.
1421 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
1423         PR c++/82468
1424         * decl.c (check_special_function_return_type): Reject template
1425         template parameter in deduction guide.
1427 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1429         PR c++/84375
1430         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
1432 2018-02-15  Jason Merrill  <jason@redhat.com>
1434         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
1435         * call.c (convert_like_real): Don't use the copy-list-initialization
1436         shortcut for ck_base.
1438         PR c++/84045 - ICE with typedef and noexcept.
1439         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
1441         PR c++/84376 - ICE with omitted template arguments.
1442         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
1444         PR c++/84368 - wrong error with local variable in variadic lambda.
1445         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
1446         local_specializations.
1448 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
1450         PR c++/84330
1451         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
1452         as first argument.
1454 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1456         PR c++/84350
1457         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
1458         init, early return.
1460 2018-02-14  Nathan Sidwell  <nathan@acm.org>
1462         * decl2.c (mark_vtable_entries): Set input_location to decl's.
1463         (c_parse_final_cleanups): Restore input_location after emitting
1464         vtables.
1466 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1468         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
1469         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
1470         auto_deduction_context, tree, int): Add defaults.
1471         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
1472         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
1473         tsubst_flags_t argument.
1474         * init.c (build_new): Likewise.
1476 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1478         PR c++/84364
1479         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1480         about return other than *this in assignment operators if
1481         retval is type dependent expression.
1483 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1485         PR c++/84333
1486         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1487         save_expr for the G++ extension.
1489 2018-02-13  Jason Merrill  <jason@redhat.com>
1491         PR c++/84080 - ICE with return type deduction and specialization.
1492         * pt.c (determine_specialization): Check uses_template_parms.
1494         Fix more variadic capture issues.
1495         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1496         (check_for_bare_parameter_packs): Check current_class_type for
1497         lambda context.
1498         (extract_locals_r): Handle seeing a full instantiation of a pack.
1499         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1500         * parser.c (cp_parser_lambda_introducer): Don't
1501         check_for_bare_parameter_packs.
1503         PR c++/84338 - wrong variadic sizeof.
1504         * pt.c (argument_pack_select_arg): Like the macro, but look through
1505         a pack expansion.
1506         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1507         (extract_fnparm_pack): Do make_pack_expansion.
1508         (extract_locals_r): Do strip a pack expansion.
1509         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1511 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1513         PR c++/84341
1514         * parser.c (cp_parser_binary_expression): Use build_min instead of
1515         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1517 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1519         PR c++/84263
1520         * parser.c (cp_parser_decltype): Push and pop
1521         deferring_access_checks.  Reorganize to avoid goto.
1523 2018-02-12  Richard Biener  <rguenther@suse.de>
1525         PR c++/84281
1526         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1527         uniform constructors and delay allocating them fully.
1529 2018-02-09  Jason Merrill  <jason@redhat.com>
1531         PR c++/84036 - ICE with variadic capture.
1532         Handle variadic capture proxies more like non-variadic.
1533         * lambda.c (build_capture_proxy): Remove workaround.
1534         * pt.c (find_parameter_packs_r): The proxy is a pack.
1535         (instantiate_class_template_1): Remove dead lambda code.
1536         (extract_fnparm_pack): Don't make_pack_expansion.
1537         (extract_locals_r): Don't strip a pack expansion.
1538         (tsubst_pack_expansion): Handle proxy packs.  Use
1539         PACK_EXPANSION_EXTRA_ARGS less.
1540         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1541         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1542         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1543         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1544         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1546 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1548         PR sanitizer/83987
1549         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1551 2018-02-09  Jason Merrill  <jason@redhat.com>
1553         PR c++/81917 - ICE with void_t and partial specialization.
1554         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1555         calling most_specialized_partial_spec.
1557 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1559         PR c/84293
1560         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1561         Pass expr location to strict_aliasing_warning.
1563 2018-02-09  Jason Merrill  <jason@redhat.com>
1565         PR c++/84296 - ICE with qualified-id in template.
1566         PR c++/83714
1567         * pt.c (unknown_base_ref_p): New.
1568         (instantiation_dependent_scope_ref_p): Use it instead of
1569         any_dependent_bases_p.
1571 2018-02-09  Marek Polacek  <polacek@redhat.com>
1572             Jakub Jelinek  <jakub@redhat.com>
1574         PR c++/83659
1575         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1576         fold_indirect_ref_1, including poly_*int64.  Verify first that
1577         tree_fits_poly_int64_p (op01).  Formatting fixes.
1579 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1581         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1582         * lambda.c (build_capture_proxy): Likewise.
1583         * search.c (field_access_p): Likewise.
1584         * semantics.c (omp_clause_decl, omp_privatize_field,
1585         finish_omp_clauses): Likewise.
1587 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1589         PR c++/83806
1590         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1591         case of nullptr too.
1593 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1595         * class.c (finish_struct): Fix std:initializer_list diagnostic
1596         formatting.
1598 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1600         PR c++/83204
1601         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1603 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1605         PR c++/84082
1606         * parser.c (cp_parser_dot_deref_incomplete): New function.
1607         (cp_parser_postfix_dot_deref_expression): Use it.
1609 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1611         PR c++/81610
1612         PR c++/80567
1613         * name-lookup.c (suggest_rid_p): New function.
1614         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1615         suggest_rid_p.
1617 2018-02-07  Jason Merrill  <jason@redhat.com>
1619         PR c++/84182 - ICE with captured lambda
1620         PR c++/84181
1621         * pt.c (extract_locals_r, extract_local_specs): New.
1622         (tsubst_pack_expansion): Use them.
1624 2018-02-07  Martin Liska  <mliska@suse.cz>
1626         PR c++/84059.
1627         * class.c (add_method): Append argument value.
1628         * cp-tree.h (maybe_version_functions): Add new argument.
1629         * decl.c (decls_match): Call it if a declaration does not
1630         have DECL_FUNCTION_VERSIONED.
1631         (maybe_version_functions): record argument is added.
1633 2018-02-05  Marek Polacek  <polacek@redhat.com>
1635         * class.c: Remove unused global variables.
1636         (build_primary_vtable): Don't gather statistics.
1637         (print_class_statistics): Remove.
1638         * cp-tree.h (print_class_statistics): Remove.
1639         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1641 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1643         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1644         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1645         * decl.c (next_initializable_field, find_decomp_class_base,
1646         cp_finish_decomp): Likewise.
1647         * typeck2.c (process_init_constructor_record): Likewise.
1649 2018-02-02  Jason Merrill  <jason@redhat.com>
1651         PR c++/84181 - ICE with lambda parm in template argument.
1652         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1654 2018-02-01  Jason Merrill  <jason@redhat.com>
1656         PR c++/84160 - ICE with nested variadic capture.
1657         * lambda.c (is_capture_proxy_with_ref): New.
1658         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1659         COMPONENT_REF.
1660         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1661         * constexpr.c (potential_constant_expression_1): Likewise.
1662         * semantics.c (process_outer_var_ref): Likewise.
1664 2018-02-01  Marek Polacek  <polacek@redhat.com>
1666         PR c++/84125
1667         * typeck.c (build_address): Relax the assert when
1668         processing_template_decl.
1670 2018-02-01  Jason Merrill  <jason@redhat.com>
1672         PR c++/84126 - ICE with variadic generic lambda
1673         PR c++/84036
1674         PR c++/82249
1675         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1676         PACK_EXPANSION_EXTRA_ARGS.
1678 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1680         PR c++/83796
1681         * call.c (convert_like_real): If w're initializing from {} explicitly
1682         call abstract_virtuals_error_sfinae.
1684 2018-01-31  Jason Merrill  <jason@redhat.com>
1685             Jakub Jelinek  <jakub@redhat.com>
1687         PR c++/83993
1688         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1689         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1690         on ADDR_EXPR.
1692 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1694         PR c++/83993
1695         * constexpr.c (diag_array_subscript): Emit different diagnostics
1696         if TYPE_DOMAIN (arraytype) is NULL.
1697         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1698         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1700 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1702         PR c++/84092
1703         * semantics.c (finish_qualified_id_expr): When handling an
1704         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1706 2018-01-31  Marek Polacek  <polacek@redhat.com>
1708         PR c++/84138
1709         * cp-gimplify.c (cp_fold): Check if X is an error node before
1710         calling useless_type_conversion_p.
1712 2018-01-30  Jason Merrill  <jason@redhat.com>
1714         PR c++/84091 - ICE with local class in lambda in template.
1715         * decl2.c (determine_visibility): Look for outer containing template
1716         instantiation.
1718         PR c++/84098 - ICE with lambda in template NSDMI.
1719         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1721 2018-01-29  Jason Merrill  <jason@redhat.com>
1723         PR c++/68810 - wrong location for reinterpret_cast error.
1724         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1725         !dofold.
1727 2018-01-29  Marek Polacek  <polacek@redhat.com>
1729         PR c++/83996
1730         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1731         => fooarray[1] in offset_int.
1733 2018-01-29  Jason Merrill  <jason@redhat.com>
1735         PR c++/83942 - wrong unused warning with static_cast.
1736         * cvt.c (ocp_convert): Call mark_rvalue_use.
1738 2018-01-26  Jason Merrill  <jason@redhat.com>
1740         PR c++/83956 - wrong dtor error with anonymous union
1741         * method.c (walk_field_subobs): Variant members only affect
1742         deletedness.
1743         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1745         PR c++/84036 - ICE with variadic capture.
1746         PR c++/82249
1747         * pt.c (tsubst_pack_expansion): When optimizing a simple
1748         substitution, pull a single pack expansion out of its pack.
1750         PR c++/82514 - ICE with local class in generic lambda.
1751         * pt.c (regenerated_lambda_fn_p): Remove.
1752         (enclosing_instantiation_of): Don't use it.
1753         (tsubst_function_decl): Call enclosing_instantiation_of.
1755         * pt.c (lookup_template_class_1): Add sanity check.
1756         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1758 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1760         PR c++/84031
1761         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1762         recursive calls that return ret.
1763         (cp_finish_decomp): Ignore unnamed bitfields.
1765 2018-01-23  Jason Merrill  <jason@redhat.com>
1767         PR c++/82249 - wrong mismatched pack length error.
1768         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1769         unsubstituted function parameter pack.
1771 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1773         PR c++/83921
1774         * decl.c (check_for_uninitialized_const_var): Not static; add
1775         bool and tsubst_flags_t parameters; adjust to be used both in
1776         constexpr context and not.
1777         * constexpr.c (potential_constant_expression_1): Use the above.
1778         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1780 2018-01-23  Jason Merrill  <jason@redhat.com>
1782         PR c++/83947 - ICE with auto declarations.
1783         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1784         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1786 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1788         PR c++/83974
1789         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1790         for pointer to member function types.
1792 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1794         PR sanitizer/83987
1795         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1796         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1798 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1800         PR c++/83988
1801         * pt.c (tsubst_baselink): Remove optype assert.
1802         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1804 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1806         PR c++/83958
1807         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1808         refers to incomplete type.
1810 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1812         Deprecate ARM-era for scope handling
1813         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1814         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1815         cleared.
1816         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1817         cleanup handling.
1818         * semantics.c (begin_for_scope): Flag_new_for_scope is
1819         boolean-like.
1820         (finish_for_stmt, begin_range_for_stmt): Likewise.
1822 2018-01-22  Jason Merrill  <jason@redhat.com>
1824         PR c++/83720
1825         * decl2.c (determine_visibility): Fix template_decl handling
1826         instead of blocking it.
1828         PR c++/83720 - ICE with lambda and LTO.
1829         * decl2.c (determine_visibility): Clear template_decl for
1830         function-scope decls.  Propagate anonymous linkage from containing
1831         function.
1833 2018-01-22  Marek Polacek  <polacek@redhat.com>
1835         PR c++/81933
1836         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1837         split out anything.
1839 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1841         PR c++/83895
1842         * decl.c (grokdeclarator): Don't diagnose extra parens
1843         on typedefs.
1845 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1847         PR c++/81167
1848         * call.c (joust): Use TREE_TYPE (source) if source is
1849         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1851         PR c++/83919
1852         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1853         for direct enum init.
1854         * decl.c (reshape_init): Likewise.
1856 2018-01-19  Marek Polacek  <polacek@redhat.com>
1858         * constexpr.c (fold_simple): Simplify.
1860 2018-01-18  Jason Merrill  <jason@redhat.com>
1862         PR c++/83714
1863         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1864         * pt.c (instantiation_dependent_scope_ref_p): True if
1865         any_dependent_bases_p.
1867 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1869         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1870         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1872 2018-01-18  Jason Merrill  <jason@redhat.com>
1874         PR c++/82461 - constexpr list-initialized member
1875         * constexpr.c (potential_constant_expression_1): Check
1876         TARGET_EXPR_DIRECT_INIT_P.
1878 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1880         PR c++/81013
1881         * decl.c (xref_basetypes): Early return upon error about derived
1882         union.
1884 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1886         PR c++/83160
1887         * cp-tree.h (mark_use): Declare.
1888         * expr.c (mark_use): Make extern.
1889         * call.c (direct_reference_binding): Set inner conv's
1890         rvaluedness_matches_p, if it is an identity.
1891         (convert_like_real): Mark lvalue or rvalue use for identity as
1892         rvaledness_matches_p demands.
1894 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1896         PR c++/83824
1897         * parser.c (attr_chainon): New function.
1898         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1899         cp_parser_namespace_definition, cp_parser_init_declarator,
1900         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1901         cp_parser_gnu_attributes_opt): Use it.
1902         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1903         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1904         prefix_attributes if attributes is error_mark_node.
1906 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1908         PR c++/78344
1909         * decl.c (grokdeclarator): Do not append the error_mark_node
1910         due to an erroneous optional attribute-specifier-seq.
1912 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1914         PR c++/83897
1915         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1916         CLEANUP_POINT_EXPR.
1918 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1920         PR c++/81054
1921         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1922         error_mark_node when we give an error.
1923         * decl.c (cp_finish_decl): Use the latter.
1925 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1927         PR c++/83287
1928         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1930 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1932         PR c++/83814
1933         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1934         the C++ part.  If processing a template, call
1935         fold_non_dependent_expr rather than fully folding.
1937 2018-01-17  Jason Merrill  <jason@redhat.com>
1939         PR c++/81067 - redundant NULL warning.
1940         * call.c (convert_like_real): Restore null_node handling.
1942 2018-01-17  Jason Merrill  <jason@redhat.com>
1944         PR c++/81843 - ICE with variadic member template.
1945         PR c++/72801
1946         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1947         template args.
1949 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1951         PR c++/83799
1952         * pt.c (type_dependent_expression_p): Strip any location wrapper
1953         before testing tree codes.
1954         (selftest::test_type_dependent_expression_p): New function.
1955         (selftest::cp_pt_c_tests): Call it.
1957 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1959         PR c++/83739
1960         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1961         this not a final instantiation.
1963 2018-01-16  Jason Merrill  <jason@redhat.com>
1965         PR c++/83714 - ICE checking return in template.
1966         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1968 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1970         PR c++/83817
1971         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1972         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1973         instead of CALL_FROM_THUNK_P.
1975         PR c++/83825
1976         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1977         (resort_type_member_vec, set_class_bindings,
1978         insert_late_enum_def_bindings): Use vec qsort method instead of
1979         calling qsort directly.
1981 2018-01-15  Martin Sebor  <msebor@redhat.com>
1983         PR c++/83588
1984         * class.c (find_flexarrays): Make a record of multiple flexible array
1985         members.
1987 2018-01-12  Jason Merrill  <jason@redhat.com>
1989         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1990         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1992 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1994         * cp-tree.h (mark_rvalue_use): Add parm name.
1995         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1996         mark_rvalue_use.
1997         * call.c (convert_like_real): Fix formatting.
1999 2018-01-11  Jason Merrill  <jason@redhat.com>
2001         PR c++/82728 - wrong -Wunused-but-set-variable
2002         PR c++/82799
2003         PR c++/83690
2004         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2005         * decl.c (case_conversion): Likewise.
2006         * semantics.c (finish_static_assert): Call
2007         perform_implicit_conversion_flags.
2009 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2011         * method.c (enum mangling_flags): Delete long-dead enum.
2013 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2015         * parser.c (cp_parser_std_attribute_spec): When
2016         token_pair::require_open / require_close return false simply
2017         return error_mark_node, avoid duplicate cp_parser_error about
2018         expected '(' / ')', respectively.
2020 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2022         PR c++/43486
2023         * call.c (null_ptr_cst_p): Strip location wrappers when
2024         converting from '0' to a pointer type in C++11 onwards.
2025         (conversion_null_warnings): Replace comparison with null_node with
2026         call to null_node_p.
2027         (build_over_call): Likewise.
2028         * cp-gimplify.c (cp_fold): Remove the early bailout when
2029         processing_template_decl.
2030         * cp-lang.c (selftest::run_cp_tests): Call
2031         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2032         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2033         (selftest::run_cp_tests): Move decl to bottom of file.
2034         (null_node_p): New inline function.
2035         (selftest::cp_pt_c_tests): New decl.
2036         (selftest::cp_tree_c_tests): New decl.
2037         * cvt.c (build_expr_type_conversion): Replace comparison with
2038         null_node with call to null_node_p.
2039         * error.c (args_to_string): Likewise.
2040         * except.c (build_throw): Likewise.
2041         * mangle.c (write_expression): Skip location wrapper nodes.
2042         * parser.c (literal_integer_zerop): New function.
2043         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2044         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2045         param of cp_parser_parenthesized_expression_list.  When calling
2046         warn_for_memset, replace integer_zerop calls with
2047         literal_integer_zerop, eliminating the double logical negation
2048         cast to bool.  Eliminate the special-casing for CONST_DECL in
2049         favor of the fold_for_warn within warn_for_memset.
2050         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2051         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2052         maybe_add_location_wrapper on it when wrap_locations_p is true.
2053         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2054         the result for RID_ALIGNOF and RID_SIZEOF.
2055         (cp_parser_builtin_offsetof): Likewise.
2056         * pt.c: Include "selftest.h".
2057         (tsubst_copy): Handle location wrappers.
2058         (tsubst_copy_and_build): Likewise.
2059         (build_non_dependent_expr): Likewise.
2060         (selftest::test_build_non_dependent_expr): New function.
2061         (selftest::cp_pt_c_tests): New function.
2062         * tree.c: Include "selftest.h".
2063         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2064         (selftest::test_lvalue_kind): New function.
2065         (selftest::cp_tree_c_tests): New function.
2066         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2067         (cp_build_binary_op): Replace comparison with null_node with call
2068         to null_node_p.
2069         (build_address): Use location of operand when building address
2070         expression.
2072 2018-01-10  Marek Polacek  <polacek@redhat.com>
2074         PR c++/82541
2075         * call.c (build_conditional_expr_1): Check complain before warning.
2076         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2077         -Wduplicated-branches.
2079 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2081         PR c++/81327
2082         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2083         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2084         args uses and check number of operands too.  Don't strip away any
2085         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2086         Deal with src argument not having pointer type.  Check
2087         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2088         test.
2089         (build_over_call): Call maybe_warn_class_memaccess here on the
2090         original arguments.
2091         (build_cxx_call): Rather than here on converted arguments.
2093 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2095         PR c++/81055
2096         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2097         error_mark_node as second argument.
2099 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2101         PR c++/83734
2102         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2103         in STATEMENT_LIST.  Remove unneeded assert.
2105 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2106             Alan Hayward  <alan.hayward@arm.com>
2107             David Sherwood  <david.sherwood@arm.com>
2109         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2110         VECTOR_CST_NELTS.
2111         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2112         * call.c (build_conditional_expr_1): Likewise.
2113         * decl.c (cp_finish_decomp): Likewise.
2114         * mangle.c (write_type): Likewise.
2115         * typeck.c (structural_comptypes): Likewise.
2116         (cp_build_binary_op): Likewise.
2117         * typeck2.c (process_init_constructor_array): Likewise.
2119 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2121         PR c++/83555
2122         * typeck.c (build_static_cast_1): For static casts to reference types,
2123         call build_base_path with flag_delete_null_pointer_checks as nonnull
2124         instead of always false.  When -fsanitize=null, call
2125         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2126         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2127         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2129 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2131         PR c++/83667
2132         * method.c (make_alias_for): Copy DECL_CONTEXT.
2134 2018-01-03  Marek Polacek  <polacek@redhat.com>
2136         PR c++/83592
2137         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2139 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2141         PR preprocessor/83602
2142         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2143         for builtin macros.
2145         PR c++/83634
2146         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2147         error_mark_node, return error_mark_node.
2149         Update copyright years.
2151 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2153         PR c++/83556
2154         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2155         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2156         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2157         to false and return.
2158         (replace_placeholders): Pass NULL instead of &pset as last argument
2159         to cp_walk_tree.
2161 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2163         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2164         lval var.
2166 Copyright (C) 2018 Free Software Foundation, Inc.
2168 Copying and distribution of this file, with or without modification,
2169 are permitted in any medium without royalty provided the copyright
2170 notice and this notice are preserved.