re PR c++/84691 (internal compiler error: in poplevel_class, at cp/name-lookup.c...
[official-gcc.git] / gcc / cp / ChangeLog
blob552828fa3eaf66d9cf60adaa7d72fe2ad0b0c5e9
1 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/84691
4         * decl.c (grokdeclarator): Clear friendp upon definition in local
5         class definition error.
7 2018-04-27  Jason Merrill  <jason@redhat.com>
9         PR c++/85545 - ICE with noexcept PMF conversion.
10         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
11         build_ptrmemfunc.
12         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
13         adjustment.
14         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
16 2018-04-27  Nathan Sidwell  <nathan@acm.org>
18         * typeck.c (convert_ptrmem): Move local var decls to initialization.
20         * cp-tree.h (TEMPLATE_INFO): Fix comments.
21         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
22         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
23         (dump, print_other_binding_stacks): Remove declarations.
24         * name-lookup.c (print_other_binding_stack): Make static.
25         * pt.c (build_template_decl): Make static.
27 2018-04-26  Jason Merrill  <jason@redhat.com>
29         PR c++/85545 - ICE with noexcept PMF conversion.
30         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
32 2018-04-25  Nathan Sidwell  <nathan@acm.org>
34         PR c++/85437
35         PR c++/49171
36         * cp-tree.h (REINTERPRET_CAST_P): New.
37         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
38         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
39         for non-trivial PTRMEM_CST cases.
40         * typeck.c (build_nop_reinterpret): New.
41         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
42         NOP_EXPRs returned by cp_convert.
44 2018-04-23  Jason Merrill  <jason@redhat.com>
46         PR c++/69560 - wrong alignof(double) on x86.
47         CWG 1879 - Inadequate definition of alignment requirement.
48         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
49         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
50         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
51         (cxx_alignof_expr): Pass it.
52         * parser.c (cp_parser_unary_expression): Pass it.
53         * pt.c (tsubst_copy): Copy it.
54         (tsubst_copy_and_build): Pass it.
55         * decl.c (fold_sizeof_expr): Pass it.
57 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
58             Jason Merrill  <jason@redhat.com>
60         PR c++/85470 - wrong error with static data member.
61         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
62         * typeck2.c (store_init_value): Likewise.
64 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
66         PR c++/85462
67         * cp-tree.h (tinst_level): Remove in_system_header_p member,
68         change refcount member from unsigned char to unsigned short,
69         add refcount_infinity static data member, adjust comments.
70         * pt.c (tinst_level::refcount_infinity): Define.
71         (inc_refcount_use): Remove assert, don't increment if refcount
72         is already refcount_infinity, adjust comment.
73         (dec_refcount_use): Remove assert, don't decrement if refcount
74         is refcount_infinity, adjust comment.
75         (push_tinst_level_loc): Formatting fix.
77 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
79         PR c++/84611
80         * pt.c (lookup_template_class_1): Check pushtag return value for
81         error_mark_node.
83 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
85         PR c++/80290
86         * cp-tree.h (tinst_level::free): Fix whitespace.
88 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
90         PR c++/84630
91         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
92         for error_mark_node.
94 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
96         PR c++/84463
97         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
98         tricks from here to ...
99         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
100         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
102 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
104         PR c++/80290
105         * cp-tree.h (struct tinst_level): Split decl into tldcl and
106         targs.  Add private split_list_p, tree_list_p, and not_list_p
107         inline const predicates; to_list private member function
108         declaration; free public member function declaration; list_p,
109         get_node and maybe_get_node accessors, and refcount data
110         member.  Narrow errors to unsigned short.
111         * error.c (print_instantiation_full_context): Use new
112         accessors.
113         (print_instantiation_partial_context_line): Likewise.  Drop
114         const from tinst_level-typed parameter.
115         * mangle.c (mangle_decl_string): Likewise.
116         * pt.c (freelist): New template class.
117         (tree_list_freelist_head): New var.
118         (tree_list_freelist): New fn, along with specializations.
119         (tinst_level_freelist_head): New var.
120         (pending_template_freelist_head): Likewise.
121         (tinst_level_freelist, pending_template_freelist): New fns.
122         (tinst_level::to_list, tinst_level::free): Define.
123         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
124         (set_refcount_ptr): New template fn.
125         (add_pending_template): Adjust for refcounting, freelists and
126         new accessors.
127         (neglectable_inst_p): Take a NULL d as a non-DECL.
128         (limit_bad_template_recursion): Use new accessors.
129         (push_tinst_level): New overload to create the list.
130         (push_tinst_level_loc): Make it static, split decl into two
131         args, adjust tests and initialization to cope with split
132         lists, use freelist, adjust for refcounting.
133         (push_tinst_level_loc): New wrapper with the old interface.
134         (pop_tinst_level): Adjust for refcounting.
135         (record_last_problematic_instantiation): Likewise.
136         (reopen_tinst_level): Likewise.  Use new accessors.
137         (instantiate_alias_template): Adjust for split list.
138         (fn_type_unification): Likewise.
139         (get_partial_spec_bindings): Likewise.
140         (instantiate_pending_templates): Use new accessors.  Adjust
141         for refcount.  Release pending_template to freelist.
142         (instantiating_current_function_p): Use new accessors.
144 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
146         PR c++/85039
147         * parser.c (cp_parser_builtin_offset): Reject type definitions.
148         * mangle.c (nested_anon_class_index): Avoid crash returning -1
149         if we've seen errors.
151 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
153         PR c++/85385
154         * name-lookup.c (macro_use_before_def::maybe_make): New function,
155         checking that the use is indeed before the definition.
156         (macro_use_before_def::macro_use_before_def): Make private.
157         (macro_use_before_def::~macro_use_before_def): Make private.  Move
158         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
159         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
160         than using new directly.
162 2018-04-12  Jason Merrill  <jason@redhat.com>
164         PR c++/85356 - ICE with pointer to member function.
165         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
166         flag_noexcept_type.  Build the new spec within the function context.
167         * except.c (build_noexcept_spec): Do get constant value in templates
168         if flag_noexcept_type.
169         * decl.c (check_redeclaration_exception_specification): Don't
170         instantiate noexcept on a dependent declaration.
172 2018-04-12  Marek Polacek  <polacek@redhat.com>
174         PR c++/85258
175         * constexpr.c (reduced_constant_expression_p): Return false for null
176         trees.
178 2018-04-11  Marek Polacek  <polacek@redhat.com>
180         PR c++/85032
181         * constexpr.c (potential_constant_expression_1): Consider conversions
182         from classes to literal types potentially constant.
184 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
186         PR c++/70808
187         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
188         the type like TYPE_PTR_OR_PTRMEM_P.
190 2018-04-10  Jason Merrill  <jason@redhat.com>
192         PR debug/65821 - wrong location for main().
193         * call.c (clear_location_r, convert_default_arg): Revert.
194         * tree.c (break_out_target_exprs): Add clear_location parm.
195         (struct bot_data): New.
196         (bot_manip): Clear location if requested.
197         * init.c (get_nsdmi): Pass clear_location.
199 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
201         PR c++/85110
202         * call.c (get_fndecl_argument_location): Make non-static.
203         * cp-tree.h (get_fndecl_argument_location): New decl.
204         * typeck.c (convert_for_assignment): When complaining due to
205         conversions for an argument, show the location of the parameter
206         within the decl.
208 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
210         PR c++/85312 - P0962 cleanup
211         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
212         diagnostics.
214 2018-04-10  Jason Merrill  <jason@redhat.com>
216         PR debug/65821 - wrong location for main().
217         * call.c (clear_location_r): New.
218         (convert_default_arg): Use it.
219         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
221         PR c++/85285 - ICE with flexible array after substitution.
222         * pt.c (instantiate_class_template_1): Check for flexible array in
223         union.
225 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
227         PR c++/85227
228         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
229         issue a pedwarn and defer trying to do bindings.
231 2018-04-09  Jason Merrill  <jason@redhat.com>
233         PR c++/85279 - dump_expr doesn't understand decltype.
234         * error.c (dump_expr): Handle DECLTYPE_TYPE.
236         PR c++/85262 - ICE with redundant qualification on constructor.
237         * call.c (build_new_method_call_1): Move make_args_non_dependent
238         after A::A() handling.
240         PR c++/85277 - ICE with invalid offsetof.
241         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
242         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
244         PR c++/85264 - ICE with excess template-parameter-list.
245         * parser.c (cp_parser_check_template_parameters): Add template_id_p
246         parameter.  Don't allow an extra template header if true.
247         (cp_parser_class_head): Pass template_id_p.
248         (cp_parser_elaborated_type_specifier): Likewise.
249         (cp_parser_alias_declaration): Likewise.
250         (cp_parser_check_declarator_template_parameters): Likewise.
252 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
254         PR c++/85194
255         * parser.c (cp_parser_simple_declaration): For structured bindings,
256         if *maybe_range_for_decl is NULL after parsing it, set it to
257         error_mark_node.
259 2018-04-09  Jason Merrill  <jason@redhat.com>
261         PR c++/85256 - ICE capturing pointer to VLA.
262         * lambda.c (add_capture): Distinguish between variable-size and
263         variably-modified types.
265 2018-04-06  Jason Merrill  <jason@redhat.com>
267         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
268         * pt.c (extract_locals_r): Remember local typedefs.
270 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
272         PR c++/84269
273         * name-lookup.c (struct std_name_hint): Move out of
274         get_std_name_hint; add field "min_dialect".
275         (get_std_name_hint): Add min_dialect values to all initializers.
276         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
277         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
278         <shared_mutex>, <string_view>, <thread>, and <variant>.
279         Add fstream, ifstream, and ofstream to <fstream>.
280         Add istringstream, ostringstream, and stringstream to <sstream>.
281         Add basic_string to <string>.
282         Add tuple_element and tuple_size to <tuple>.
283         Add declval to <utility>.
284         Fix ordering of <queue> and <tuple>.
285         Return a std_name_hint, rather than a const char *.
286         (get_cxx_dialect_name): New function.
287         (maybe_suggest_missing_std_header): Detect names that aren't yet
288         available in the current dialect, and instead of suggesting a
289         missing #include, warn about the dialect.
291 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
293         PR c++/85210
294         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
295         errorcount is set if tsubst doesn't return a VAR_DECL.
297 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
299         PR c++/85021
300         * name-lookup.c (using_directives_contain_std_p): New function.
301         (has_using_namespace_std_directive_p): New function.
302         (suggest_alternatives_for): Simplify if/else logic using early
303         returns.  If no candidates were found, and there's a
304         "using namespace std;" directive, call
305         maybe_suggest_missing_std_header.
306         (maybe_suggest_missing_header): Split later part of the function
307         into..
308         (maybe_suggest_missing_std_header): New.
310 2018-04-06  Jason Merrill  <jason@redhat.com>
312         PR c++/85242 - ICE with class definition in template parm.
313         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
314         processing_template_parmlist.
316         PR c++/85240 - LTO ICE with using of undeduced auto fn.
317         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
319 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
321         PR c++/85209
322         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
323         is not prev, if prev == decl.
325         PR c++/85208
326         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
327         maybe_apply_pragma_weak here...
328         (cp_maybe_mangle_decomp): ... but call it here instead.
330 2018-04-05  Jason Merrill  <jason@redhat.com>
332         PR c++/85136 - ICE with designated init in template.
333         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
334         designated initializer.
335         (check_array_designated_initializer): Update ce->index with the
336         constant value.
338         PR c++/83808 - ICE with VLA initialization.
339         * typeck2.c (process_init_constructor_array): Don't require a VLA
340         initializer to have VLA type.
342 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
344         PR c++/80956
345         * call.c (convert_like_real): Fail gracefully for a broken
346         std::initializer_list, missing a definition.
348         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
350 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
352         PR c++/84792
353         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
354         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
356 2018-04-05  Jason Merrill  <jason@redhat.com>
358         PR c++/82152 - ICE with class deduction and inherited ctor.
359         * pt.c (do_class_deduction): Ignore inherited ctors.
361         PR c++/84665 - ICE with array of empty class.
362         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
364         PR c++/85228 - ICE with lambda in enumerator in template.
365         * pt.c (bt_instantiate_type_proc): Don't assume
366         CLASSTYPE_TEMPLATE_INFO is non-null.
368 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
370         Implement P0969
371         * decl.c (find_decomp_class_base): Check accessibility instead
372         of declared access, adjust diagnostic.
374 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
376         Implement P0961
377         * decl.c (get_tuple_decomp_init): Check the templatedness
378         of a member get.
380 2018-04-05  Jason Merrill  <jason@redhat.com>
382         PR c++/85200 - ICE with constexpr if in generic lambda.
383         * pt.c (extract_locals_r): Don't record the local specs of variables
384         declared within the pattern.
386 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
388         PR c++/84979
389         * pt.c (check_auto_in_tmpl_args): New.
390         (tsubst_qualified_id): Use it to reject template args
391         referencing auto for non-type templates.
392         * parser.c (cp_parser_template_id): Likewise.
393         * cp-tree.h (check_auto_in_tmpl_args): Declare.
394         * typeck2.c (build_functional_cast): Report correct location
395         for invalid use of auto.
397 2018-04-04  Jason Merrill  <jason@redhat.com>
399         PR c++/85215 - ICE with copy-init from conversion.
400         * call.c (merge_conversion_sequences): Fix type of direct binding
401         sequence.
403         PR c++/84938 - ICE with division by ~-1.
404         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
406         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
407         * parser.c (cp_parser_mem_initializer_list): Call
408         check_for_bare_parameter_packs.
410 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
412         PR inline-asm/85172
413         * constexpr.c (cxx_eval_builtin_function_call): For calls to
414         builtin_valid_in_constant_expr_p functions, don't call
415         cxx_eval_constant_expression if argument is not
416         potential_constant_expression.
418         PR c++/85146
419         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
420         argument.
421         * semantics.c (calculate_bases): Add complain argument.  Use
422         complete_type_or_maybe_complain instead of just complete_type and
423         return an empty vector if it fails.  Move make_tree_vector () call
424         after early return.  Formatting fixes.
425         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
426         end.
427         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
428         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
429         calculate_direct_bases callers, formatting fixes.
431 2018-04-04  Jason Merrill  <jason@redhat.com>
433         PR c++/85006 - -fconcepts ICE with A<auto...> return type
434         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
436         PR c++/85200 - ICE with constexpr if in generic lambda.
437         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
439         PR c++/84221 - bogus -Wunused with attribute and template.
440         * decl2.c (is_late_template_attribute): Handle unused and used
441         normally on non-TYPE_DECL.
443         PR c++/85135 - ICE with omitted template arguments.
444         * decl.c (grokdeclarator): Catch deduced class type in trailing
445         return type.
447         PR c++/85133 - ICE with missing concept initializer.
448         * decl.c (cp_finish_decl): If a concept initializer is missing, use
449         true.
451         PR c++/85118 - wrong error with generic lambda and std::bind.
452         * call.c (add_template_conv_candidate): Disable if there are any
453         call operators.
455         PR c++/85141 - ICE with compound assignment and static member fn.
456         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
457         compound assignment.
459         PR c++/85148 - ICE with 'this' in array NSDMI.
460         * tree.c (replace_placeholders_r): Use handled_component_p.
462 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
464         PR c++/65923
465         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
466         * parser.c (cp_parser_unqualified_id): ..not here.
468 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
470         PR c++/84943
471         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
472         used.
473         * decl2.c (mark_used): Return without effects if tf_conv.
475 2018-04-03  Jason Merrill  <jason@redhat.com>
477         PR c++/85092 - C++17 ICE with unused list constructor.
478         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
479         from a TARGET_EXPR.
481         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
482         * constexpr.c (cxx_eval_builtin_function_call): Only defer
483         __builtin_constant_p if ctx->quiet.
485 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
487         PR c++/84768
488         * pt.c (rewrite_template_parm): If the first argument is
489         error_mark_node return it immediately.
490         (build_deduction_guide): Check the return value of the
491         latter for error_mark_node.
492         (do_class_deduction): Check the return value of the latter.
494 2018-04-03  Jason Merrill  <jason@redhat.com>
496         * semantics.c (finish_if_stmt_cond): Use
497         instantiation_dependent_expression_p.
499         PR c++/85149 - generic lambda and constexpr if.
500         * pt.c (build_extra_args, add_extra_args): Split from
501         tsubst_pack_expansion.
502         (tsubst_expr) [IF_STMT]: Use them.
503         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
505         * typeck.c (merge_types): Limit matching attribute shortcut to
506         the default case.
508 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
510         PR c++/85147
511         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
513         PR c++/85140
514         * name-lookup.c (handle_namespace_attrs): Return early if attributes
515         is error_mark_node.
517         PR c++/85134
518         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
519         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
520         instead for static data members clear init and set DECL_EXTERNAL.
522 2018-04-02  Jason Merrill  <jason@redhat.com>
524         PR c++/64095 - auto... parameter pack.
525         * parser.c (cp_parser_parameter_declaration): Handle turning autos
526         into packs here.
527         (cp_parser_parameter_declaration_list): Not here.
529 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
531         PR c++/85027
532         * class.c (instantiate_type): Peel off SAVE_EXPR before
533         BASELINK.
535 2018-03-30  Jason Merrill  <jason@redhat.com>
537         * typeck2.c (process_init_constructor_record): Use
538         init_list_type_node for the CONSTRUCTOR around an anonymous union
539         designated initializer.
541 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
543         PR c++/84791
544         * semantics.c (finish_omp_reduction_clause): If
545         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
546         even if processing_template_decl.
548 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
550         PR c++/84269
551         * name-lookup.c (get_std_name_hint): Add names from <memory>,
552         <tuple>, and <utility>.
554 2018-03-29  Jason Merrill  <jason@redhat.com>
556         PR c++/85093 - too many template args with pack expansion.
557         * pt.c (coerce_template_parms): Keep pack expansion args that will
558         need to be empty.
560 2018-03-29  Jason Merrill  <jason@redhat.com>
562         * pt.c (build_non_dependent_expr): Propagate expr location.
564 2018-03-27  Jason Merrill  <jason@redhat.com>
566         PR c++/85060 - wrong-code with call to base member in template.
567         * search.c (any_dependent_bases_p): Check uses_template_parms
568         rather than processing_template_decl.
570 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
572         PR c++/85110
573         * typeck.c (convert_for_assignment): When complaining due to
574         conversions for an argument, attempt to use the location of the
575         argument.
577 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
579         PR c++/85028
580         * pt.c (tsubst_default_argument): Early return if the type of the
581         parameter is erroneous.
583 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
585         PR c++/84973
586         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
587         templates.
589         PR c++/84968
590         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
592 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
594         PR c++/85067
595         * method.c (defaulted_late_check): Partially revert r253321 changes,
596         do not early return upon error.
598 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
600         PR c++/85077
601         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
602         type call fold to generate VECTOR_CSTs when possible.
604         PR c++/85076
605         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
606         return it right away.
608 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
610         * search.c (check_final_overrider): Use inform instead of error
611         for the diagnostics of the overridden functions.  Tweak wording.
613 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
615         PR c++/85068
616         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
617         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
619 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
620             Jason Merrill  <jason@redhat.com>
622         PR c++/84632
623         * init.c (build_aggr_init): When initializing from array,
624         reject anything but CONSTRUCTORs and TARGET_EXPRs.
625         (build_vec_init): Handle separately ARRAY_TYPEs.
627 2018-03-26  Jason Merrill  <jason@redhat.com>
629         PR c++/85062 - ICE with alignas in wrong place.
630         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
631         here.
633         PR c++/85049 - ICE with __integer_pack.
634         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
635         * cp-tree.h (TEMPLATE_PARM_P): New.
637 2018-03-23  Jason Merrill  <jason@redhat.com>
639         PR c++/78489 - wrong SFINAE behavior.
641         PR c++/84489
642         * pt.c (type_unification_real): Don't defer substitution failure.
644 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
646         PR c++/85015
647         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
648         result.
650         PR c++/84942
651         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
652         cp_build_unary_op call with gcc_unreachable ().
654 2018-03-23  Marek Polacek  <polacek@redhat.com>
656         PR c++/85045
657         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
658         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
659         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
661 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
663         Implement P0962
664         * parser.c (cp_parser_perform_range_for_lookup): Change
665         the condition for deciding whether to use members.
667 2018-03-23  Marek Polacek  <polacek@redhat.com>
669         PR c++/85033
670         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
672 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
674         PR c++/71251
675         * parser.c (cp_parser_alias_declaration): Call
676         parser_check_template_parameters.
678         PR c++/84789
679         * pt.c (resolve_typename_type): Drop assert that stopped
680         simplification to template-independent types.  Add assert to
681         verify the initial scope is template dependent.
682         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
683         Reparse the id expression as a type-name, not a declarator.
685         PR c++/84729
686         * init.c (build_vec_init): Error at parenthesized array init.
688         PR c++/84610
689         PR c++/84642
690         PR c++/84942
691         * cp-tree.h (temp_override): New template class, generalizing
692         a cleanup that was only used...
693         * parser.c (cp_parser_parameter_declaration_clause):
694         ... here for auto_is_implicit_function_template_parm_p.
695         (cp_parser_gnu_attributes_opt): Use it here as well.
696         (cp_parser_std_attribute): Likewise.
698 2018-03-22  Marek Polacek  <polacek@redhat.com>
700         PR c++/84854
701         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
702         is boolean.
704 2018-03-21  Jason Merrill  <jason@redhat.com>
706         PR c++/81311 - wrong C++17 overload resolution.
707         * call.c (build_user_type_conversion_1): Remove C++17 code.
708         (conv_binds_ref_to_prvalue): New.
709         (build_over_call): Handle C++17 copy elision.
710         (build_special_member_call): Only do C++17 copy elision here if the
711         argument is already the right type.
713 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
715         PR c++/71965
716         * init.c (build_vec_init): Silence error, former sorry,
717         without tf_error.
719         PR c++/84610
720         PR c++/84642
721         * parser.c (abort_fully_implicit_template_p): New.
722         (cp_parser_skip_to_end_of_statement): Use it.
723         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
724         (finish_fully_implicit_template_p): Clear
725         implicit_template_parms and implicit_template_scope.
727 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
729         PR c++/84972
730         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
731         error_mark_node when check_array_designated_initializer fails.
733 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
735         PR c++/84961
736         * cp-tree.h (genericize_compound_lvalue): Declare.
737         * typeck.c (genericize_compound_lvalue): New function.
738         (unary_complex_lvalue, cp_build_modify_expr): Use it.
739         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
740         and PREDECREMENT_EXPR in output and "m" constrained input operands with
741         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
742         COMPOUND_EXPR operand.
744 2018-03-21  Nathan Sidwell  <nathan@acm.org>
746         PR c++/85008
747         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
748         * decl2.c (vague_linkage_p): Likewise.
750 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
752         PR c++/84994
753         * constexpr.c (constexpr_fn_retval): Make non-"static".
754         * cp-tree.h (constexpr_fn_retval): New decl.
755         * search.c (direct_accessor_p): Update leading comment.
756         (reference_accessor_p): Likewise.
757         (field_accessor_p): Replace check that function body is a
758         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
759         indentation of "field_type" decl.
761 2018-03-21  Nathan Sidwell  <nathan@acm.org>
763         PR c++/84804
764         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
765         complete classes.
767 2018-03-21  Martin Sebor  <msebor@redhat.com>
769         PR c++/84850
770         * call.c (first_non_public_field): New template and function.
771         (first_non_trivial_field): New function.
772         (maybe_warn_class_memaccess): Call them.
774 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
776         PR c++/84892
777         * search.c (field_accessor_p): Use class_of_this_parm rather than
778         type_of_this_parm, to check that "this" is a "const T *", rather
779         than a "T *const".
781 2018-03-21  Nathan Sidwell  <nathan@acm.org>
783         * class.c (finish_struct_anon_r): Refactor, deprecate anything
784         other than public non-static data members.
785         * parser.c (cp_parser_init_declarator): Deprecate attributes after
786         parenthesized initializer.
788         PR c++/84836
789         * name-lookup.c (update_binding): Correct logic for local binding
790         update.
792 2018-03-21  Marek Polacek  <polacek@redhat.com>
794         PR c++/71638, ICE with NSDMI and reference.
795         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
796         even when we replace an element.
798 2018-03-20  Marek Polacek  <polacek@redhat.com>
800         PR c++/84978, ICE with NRVO.
801         * constexpr.c (cxx_eval_constant_expression): Handle the case when
802         a RESULT_DECL isn't in the hash map.
804 2018-03-20  Jason Merrill  <jason@redhat.com>
806         PR c++/84978, ICE with NRVO.
807         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
808         (cp_get_callee_fndecl_nofold): New.
809         * cp-gimplify.c (cp_genericize_r): Use it instead.
810         * call.c (check_self_delegation): Likewise.
812 2018-03-20  Nathan Sidwell  <nathan@acm.org>
814         PR c++/84962
815         * name-lookup.c (pushdecl_class_level): Push anon-struct's
816         member_vec, if there is one.
818         PR c++/84970
819         * cp-tree.h (lookup_list_keep): Declare.
820         * tree.c (lookup_list_keep): New, broken out of ...
821         (build_min): ... here.  Call it.
822         * decl.c (cp_finish_decl): Call lookup_list_keep.
824 2018-03-19  Jason Merrill  <jason@redhat.com>
826         PR c++/84937 - ICE with class deduction and auto.
827         * pt.c (rewrite_template_parm): Fix auto handling.
829 2018-03-19  Marek Polacek  <polacek@redhat.com>
831         PR c++/84925
832         * pt.c (enclosing_instantiation_of): Check if fn is null.
834         PR c++/84927
835         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
836         as we evaluate the elements.
837         (cxx_eval_constant_expression): Verify constructor's flags
838         unconditionally.
840 2018-03-19  Jason Merrill  <jason@redhat.com>
842         PR c++/71834 - template-id with too few arguments.
843         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
845 2018-03-19  Nathan Sidwell  <nathan@acm.org>
847         PR c++/84835
848         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
849         * pt.c (build_template_decl): Propagate language linkage.
851         PR c++/84812
852         * name-lookup.c (set_local_extern_decl_linkage): Defend against
853         ambiguous lookups.
855 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
857         PR c/84910
858         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
859         diagnostics.
860         * method.c (synthesize_method): Likewise.
861         * pt.c (convert_nontype_argument): Likewise.
863 2018-03-16  Jason Merrill  <jason@redhat.com>
865         PR c++/84720 - ICE with rvalue ref non-type argument.
866         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
867         (convert_nontype_argument): Revert earlier change.
869         PR c++/80227 - SFINAE and negative array size.
870         * decl.c (compute_array_index_type): Use
871         build_converted_constant_expr and valid_constant_size_p.
873         PR c++/84906 - silent wrong code with ambiguous conversion.
874         * call.c (build_user_type_conversion_1): Set need_temporary_p on
875         ambiguous conversion.
876         (convert_like_real): Check it.
878         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
879         * call.c (build_special_member_call): Don't convert an init-list
880         argument directly to the class type.
882 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
884         PR c++/79937
885         PR c++/82410
886         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
887         (find_placeholder): Declare.
888         * tree.c (struct replace_placeholders_t): Add exp member.
889         (replace_placeholders_r): Don't walk into ctors with
890         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
891         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
892         (replace_placeholders): Initialize data.exp.
893         (find_placeholders_r, find_placeholders): New functions.
894         * typeck2.c (process_init_constructor_record,
895         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
896         if adding NSDMI on which find_placeholder returns true.
897         * call.c (build_over_call): Don't call replace_placeholders here.
898         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
899         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
900         TARGET_EXPR_INITIAL.
901         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
902         ctor.
904 2018-03-16  Jason Merrill  <jason@redhat.com>
906         PR c++/83911 - ICE with multiversioned constructor.
907         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
908         dispatchere here.
909         * call.c (build_over_call): Not here.
911 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
913         PR c++/84874
914         * decl.c (reshape_init_class): Don't assert d->cur->index == field
915         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
917 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
919         PR c++/84222
920         * cp-tree.h (cp_warn_deprecated_use): Declare.
921         * tree.c (cp_warn_deprecated_use): New function.
922         * typeck2.c (build_functional_cast): Use it.
923         * decl.c (grokparms): Likewise.
924         (grokdeclarator): Likewise.  Temporarily push nested class scope
925         around grokparms call for out of class member definitions.
927 2018-03-14  Jason Merrill  <jason@redhat.com>
929         PR c++/84820 - no error for invalid qualified-id.
930         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
931         cp_error_declarator.
933         PR c++/84801 - ICE with unexpanded pack in lambda.
934         * pt.c (check_for_bare_parameter_packs): Don't return early for a
935         lambda in non-template context.
937         PR c++/81236 - auto variable and auto function
938         * pt.c (tsubst_baselink): Update the type of the BASELINK after
939         mark_used.
941 2018-03-14  Jason Merrill  <jason@redhat.com>
943         PR c++/83916 - ICE with template template parameters.
944         * pt.c (convert_template_argument): Don't substitute into type of
945         non-type parameter if we don't have enough arg levels.
946         (unify): Likewise.
948 2018-03-14  Marek Polacek  <polacek@redhat.com>
950         PR c++/84596
951         * semantics.c (finish_static_assert): Check
952         instantiation_dependent_expression_p instead of
953         {type,value}_dependent_expression_p.
955 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
956             Jason Merrill  <jason@redhat.com>
958         PR c++/82336 - link error with list-init default argument.
959         * decl.c (check_default_argument): Unshare an initializer list.
961 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
963         PR c++/84843
964         * decl.c (duplicate_decls): For redefinition of built-in, use error
965         and return error_mark_node.  For redeclaration, return error_mark_node
966         rather than olddecl if !flag_permissive.
968 2018-03-13  Jason Merrill  <jason@redhat.com>
970         PR c++/82565 - ICE with concepts and generic lambda.
971         * pt.c (instantiate_decl): Clear fn_context for lambdas.
973 2018-03-13  Jason Merrill  <jason@redhat.com>
975         PR c++/84720 - ICE with rvalue ref non-type argument.
976         * pt.c (convert_nontype_argument): Handle rvalue references.
978         PR c++/84839 - ICE with decltype of parameter pack.
979         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
980         instantiating dummy parms.
982         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
983         parameter even without -Wpedantic.
985         PR c++/84798 - ICE with auto in abstract function declarator.
986         * parser.c (cp_parser_parameter_declaration_clause): Check
987         parser->default_arg_ok_p.
989 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
991         PR c++/84808
992         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
993         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
994         sizetype.  Formatting fixes.
996 2018-03-12  Jason Merrill  <jason@redhat.com>
998         PR c++/84355 - ICE with deduction for member class template.
999         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
1000         CLASS_PLACEHOLDER_TEMPLATE.
1002         PR c++/84802 - ICE capturing uninstantiated class.
1003         * lambda.c (build_capture_proxy): Call complete_type.
1005 2018-03-09  Jason Merrill  <jason@redhat.com>
1007         PR c++/84770 - ICE with typedef and parameter pack.
1008         * pt.c (verify_unstripped_args_1): Split out from
1009         verify_unstripped_args.
1011         PR c++/84785 - ICE with alias template and default targs.
1012         * pt.c (type_unification_real): Set processing_template_decl if
1013         saw_undeduced == 1.
1015         PR c++/84752 - ICE with capture of constexpr array.
1016         * call.c (standard_conversion): Set rvaluedness_matches_p on the
1017         identity conversion under ck_lvalue.
1019 2018-03-09  Jason Merrill  <jason@redhat.com>
1020             Paolo Carlini  <paolo.carlini@oracle.com>
1022         PR c++/71169
1023         PR c++/71832
1024         * pt.c (any_erroneous_template_args_p): New.
1025         * cp-tree.h (any_erroneous_template_args_p): Declare it.
1026         * parser.c (cp_parser_class_specifier_1): Use it.
1028 2018-03-09  Jason Merrill  <jason@redhat.com>
1030         PR c++/84726 - unnecessary capture of constant vars.
1031         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1032         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1033         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1034         * lambda.c (is_constant_capture_proxy)
1035         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1036         (prune_lambda_captures): New.
1037         (finish_lambda_function): Call prune_lambda_captures.
1039 2018-03-09  Jason Merrill  <jason@redhat.com>
1040             Jakub Jelinek  <jakub@redhat.com>
1042         PR c++/84076
1043         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1044         build ADDR_EXPR with REFERENCE_TYPE.
1045         (build_over_call): For purposes of check_function_arguments, if
1046         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1047         its operand rather than the argument itself.
1049 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
1051         PR c++/84724
1052         * decl.c (duplicate_decls): Don't override __* prefixed builtins
1053         except for __[^b]*_chk, instead issue permerror and for -fpermissive
1054         also a note and return olddecl.
1056 2018-03-09  Nathan Sidwell  <nathan@acm.org>
1058         PR c++/84733
1059         * name-lookup.c (do_pushdecl_with_scope): Only clear
1060         current_function_decl when pushing a non-class (i.e. namespace)
1061         scope.
1063 2018-03-08  Jason Merrill  <jason@redhat.com>
1064             Jakub Jelinek  <jakub@redhat.com>
1066         PR c++/80598
1067         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1068         not calling mark_used for the benefit of -Wunused-function warning.
1070 2018-03-06  Jason Merrill  <jason@redhat.com>
1072         * lambda.c (is_capture_proxy_with_ref): Remove.
1073         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1075 2018-03-06  Marek Polacek  <polacek@redhat.com>
1077         PR c++/84684
1078         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1079         arguments.
1081 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
1083         PR c++/84231
1084         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1085         only while processing template decls.
1086         * typeck.c (build_x_conditional_expr): Move wrapping of
1087         reference type around type...
1088         * call.c (build_conditional_expr_1): ... here.  Rename
1089         is_lvalue to is_glvalue.
1090         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1091         INDIRECT_REF of COND_EXPR too.
1093         PR c++/84593
1094         * init.c (build_zero_init_1): Zero-initialize references.
1096         PR c++/84492
1097         * semantics.c (finish_stmt_expr_expr): Reject unresolved
1098         overloads used as stmt expr values.
1100 2018-03-05  Jason Merrill  <jason@redhat.com>
1102         PR c++/84708 - ICE with lambda in local class NSDMI.
1103         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1104         context.
1106 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1108         PR c++/84684
1109         * constexpr.c (constexpr_call_hasher::equal): Return false if
1110         lhs->hash != rhs->hash.  Change return 1 to return true and
1111         return 0 to return false.
1113 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1115         PR c++/84702
1116         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1118 2018-03-05  Marek Polacek  <polacek@redhat.com>
1120         PR c++/84707
1121         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1122         UDLIT_OPER_P.
1124 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1126         PR c++/84694
1127         * friend.c (do_friend): Restore check for identifier_p inside
1128         TEMPLATE_ID_EXPR.
1130 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1132         PR c++/84618
1133         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1134         involving a VAR_DECL or a PARM_DECL.
1136 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1137             Jason  Merrill  <jason@redhat.com>
1138             Nathan Sidwell  <nathan@acm.org>
1140         PR c++/84497
1141         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1143 2018-03-03  Jason Merrill  <jason@redhat.com>
1145         PR c++/84686 - missing volatile loads.
1146         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1148 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1150         PR c++/71464
1151         * optimize.c (maybe_thunk_body): Bail out immediately if either
1152         fns[0] or fns[1] is null.
1154 2018-03-02  Marek Polacek  <polacek@redhat.com>
1156         PR c++/84578
1157         * constexpr.c (get_array_or_vector_nelts): New.
1158         (cxx_eval_array_reference): Use it.
1159         (cxx_eval_vec_init_1): Likewise.
1160         (cxx_eval_store_expression): Likewise.
1162 2018-03-02  Jason Merrill  <jason@redhat.com>
1164         * semantics.c (force_paren_expr): Remove redundant test.
1166 2018-03-02  Marek Polacek  <polacek@redhat.com>
1168         PR c++/84663
1169         * decl.c (cp_complete_array_type): Check error_mark_node.
1171         PR c++/84664
1172         * typeck.c (cp_perform_integral_promotions): Check the result of
1173         mark_rvalue_use.
1175 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1177         PR c++/84662
1178         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1179         RETURN instead of return.
1180         <case POINTER_PLUS_EXPR>: Likewise.
1181         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1182         it instead of wrapping it into CONVERT_EXPR.
1184 2018-03-02  Jason Merrill  <jason@redhat.com>
1186         Fix MIPS16 ICE.
1187         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1189 2018-03-02  Marek Polacek  <polacek@redhat.com>
1191         PR c++/84590
1192         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1193         wrapped in VIEW_CONVERT_EXPR.
1195 2018-03-01  Martin Sebor  <msebor@redhat.com>
1197         PR c++/84294
1198         * decl.c (check_redeclaration_no_default_args): Merge attributes
1199         specified on redeclarations of the same function template.
1200         Remove dead code.
1202 2018-03-01  Marek Polacek  <polacek@redhat.com>
1203             Jason Merrill  <jason@redhat.com>
1205         PR c++/84582
1206         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1207         a template.
1208         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1209         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1210         of instantiate_non_dependent_expr.
1211         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1213 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1215         PR c++/84434
1216         * name-lookup.c (member_vec_dedup): Remove manually peeled
1217         iteration.  Ignore dependent ctor inheritance.
1219 2018-03-01  Jason Merrill  <jason@redhat.com>
1221         PR c++/71569 - decltype of template.
1222         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1224 2018-03-01  Marek Polacek  <polacek@redhat.com>
1226         PR c++/84596
1227         * constexpr.c (require_rvalue_constant_expression): New function.
1228         * cp-tree.h: Declare it.
1229         * semantics.c (finish_static_assert): Use it instead of
1230         require_potential_rvalue_constant_expression.
1232 2018-03-01  Jason Merrill  <jason@redhat.com>
1233             Alexandre Oliva <aoliva@redhat.com>
1235         PR c++/71569 - ICE with redundant args on member variable template.
1236         * decl.c (start_decl): Handle partial specialization of member
1237         variable template.
1238         * pt.c (determine_specialization): Allow partial specialization
1239         of member variable template without specializing enclosing class.
1240         (process_partial_specialization): Improve error message.
1242 2018-02-28  Jason Merrill  <jason@redhat.com>
1244         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1245         * pt.c (determine_specialization): Check ref-qualifier.
1247 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1249         PR c++/84609
1250         * parser.c (cp_parser_attributes_opt): Formatting fix.
1251         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1252         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1253         New functions.
1254         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1255         instead of tentative parse to peek over optional attribute tokens
1256         to check for CPP_COLON after them.
1258         PR c++/83871
1259         PR c++/83503
1260         * pt.c (INCLUDE_STRING): Remove define.
1261         (warn_spec_missing_attributes): Use pretty_printer instead of
1262         std::string.  Fix up inform call so that the list of attributes
1263         is in %s argument.
1265 2018-02-28  Martin Sebor  <msebor@redhat.com>
1267         PR testsuite/84617
1268         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1269         and malloc.
1271 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1273         PR c++/84602
1274         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1275         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1276         regardless of want_type.
1277         (search_anon_aggr): Just use get_class_binding_direct.
1279 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1281         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1282         inform_n.
1284 2018-02-27  Martin Sebor  <msebor@redhat.com>
1286         * pt.c: Avoid including <string> directly.
1288 2018-02-27  Martin Sebor  <msebor@redhat.com>
1290         PR c++/83871
1291         PR c++/83503
1292         * cp-tree.h (warn_spec_missing_attributes): New function.
1293         ((check_explicit_specialization): Add an argument.  Call the above
1294         function.
1295         * decl.c (duplicate_decls): Avoid applying primary function template's
1296         attributes to its explicit specializations.
1297         cp/pt.c (warn_spec_missing_attributes): Define.
1299 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1301         PR c++/71546 - lambda init-capture with qualified-id.
1302         * parser.c (cp_parser_lambda_introducer): Clear scope after
1303         each lambda capture.
1305 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1307         PR c++/84426
1308         * name-lookup.h (get_member_slot): Rename ...
1309         (find_member_slot): ... here.
1310         (add_member_slot): New.
1311         * name-lookup.c (member_vec_linear_search): No need to check for
1312         NULL slot.
1313         (get_member_slot): Rename ...
1314         (find_member_slot): ... here.  Don't add slot for incomplete class.
1315         (add_member_slot): New.
1316         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1317         if push_class_level_binding fails.  Create slot and grok
1318         properties once we're committed to insertion.
1320 2018-02-27  Jason Merrill  <jason@redhat.com>
1322         PR c++/84489 - dependent default template argument
1323         * pt.c (type_unification_real): Handle early substitution failure.
1325 2018-02-26  Jason Merrill  <jason@redhat.com>
1327         PR c++/84560 - ICE capturing multi-dimensional VLA.
1328         * tree.c (array_of_runtime_bound_p): False if the element is
1329         variably-modified.
1331         PR c++/84441 - ICE with base initialized from ?:
1332         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1334         PR c++/84520 - ICE with generic lambda in NSDMI.
1335         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1336         'this' in a generic lambda instantiation.
1338         PR c++/84559 - ICE with constexpr VLA.
1339         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1340         for constexpr variable with VLA type.
1342 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1344         PR c++/84558
1345         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1346         a valid constant initializer.  Formatting fixes.
1348 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1350         PR c++/84540
1351         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1352         returning NULL_TREE.
1353         (apply_late_template_attributes): Likewise.
1355 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1357         PR c++/84557
1358         * parser.c (cp_parser_omp_var_list_no_open): Only call
1359         cp_parser_lookup_name_simple on names satisfying identifier_p.
1360         (cp_parser_oacc_routine): Likewise.
1362 2018-02-26  Jason Merrill  <jason@redhat.com>
1364         PR c++/84551 - ICE with concepts and -g.
1365         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1367 2018-02-26  Marek Polacek  <polacek@redhat.com>
1369         PR c++/84325
1370         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1371         non-types.
1373 2018-02-26  Jason Merrill  <jason@redhat.com>
1375         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1376         * call.c (build_over_call): Handle deleted functions in one place.
1378 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1380         PR c++/84533
1381         * decl.c (redeclaration_error_message): Don't try to use
1382         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1384 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1386         * lambda.c (build_capture_proxy): Define static.
1387         * cp-tree.h (build_capture_proxy): Remove.
1389 2018-02-26  Marek Polacek  <polacek@redhat.com>
1391         PR c++/84537
1392         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1393         if name is error node.
1395 2018-02-25  Jason Merrill  <jason@redhat.com>
1397         PR c++/84015 - ICE with class deduction and auto template parm.
1398         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
1400 2018-02-24  Marek Polacek  <polacek@redhat.com>
1402         PR c++/83692
1403         * constexpr.c (maybe_constant_init_1): New function.
1404         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
1405         (cxx_constant_init): New function.
1406         * cp-tree.h (cxx_constant_init): Declare.
1407         * typeck2.c (store_init_value): Call cxx_constant_init instead of
1408         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
1410 2018-02-22  Jason Merrill  <jason@redhat.com>
1412         PR c++/70468 - ICE with constructor delegation via typedef.
1413         * pt.c (tsubst_initializer_list): Check for other mem-initializers
1414         with constructor delegation.
1416 2018-02-22  Jason Merrill  <jason@redhat.com>
1418         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
1419         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
1420         VECTOR_TYPE.
1422 2018-02-22  Marek Polacek  <polacek@redhat.com>
1424         PR c++/84493
1425         * parser.c (cp_parser_braced_list): Use require_open instead of
1426         consume_open.
1428 2018-02-21  Jason Merrill  <jason@redhat.com>
1430         PR c++/84454 - ICE with pack expansion in signature.
1431         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
1433 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1435         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
1436         IF_STMT.
1438 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
1440         PR c++/84446
1441         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
1442         on error_mark_node.
1444 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
1446         PR c++/84445
1447         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
1448         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
1450         PR c++/84449
1451         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
1452         returns error_mark_node, return it immediately.
1453         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
1454         error_mark_node, return error_mark_node.
1456         PR c++/84455
1457         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
1458         function_depth to avoid GC during finish_lambda_function.
1460 2018-02-19  Jason Merrill  <jason@redhat.com>
1462         PR c++/84429 - ICE capturing VLA.
1463         * lambda.c (build_capture_proxy): Handle reference refs.
1465 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
1467         PR c++/84448
1468         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
1469         either operand is error_mark_node, set current.lhs to that instead of
1470         creating a binary op with error_mark_node operands.
1472         PR c++/84430
1473         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
1475 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
1477         PR c++/84348
1478         * decl.c (grokdeclarator): Early return error_mark_node upon
1479         ill-formed friend declaration.
1481 2018-02-16  Marek Polacek  <polacek@redhat.com>
1482             Jakub Jelinek  <jakub@redhat.com>
1484         PR c++/84192
1485         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
1486         set *jump_target to anything if jump_target is NULL.
1488 2018-02-16  Jason Merrill  <jason@redhat.com>
1490         PR c++/84151 - unnecessary volatile load with static member.
1491         * call.c (build_new_method_call_1): Avoid loading from a volatile
1492         lvalue used as the object argument for a static member function.
1494         PR c++/81853 - using-directive and constexpr.
1495         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
1497         PR c++/84420 - ICE with structured binding in lambda.
1498         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
1500         PR c++/83835 - C++17 error with constructor ctors.
1501         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
1503         PR c++/82664 - ICE with reference to function template parm.
1504         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
1505         NOP_EXPRs.
1507         PR c++/82764 - C++17 ICE with empty base
1508         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
1510 2018-02-16  Jason Merrill  <jason@redhat.com>
1512         PR c++/84421 - type-dependent if constexpr
1513         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
1515 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1517         Deprecate -ffriend-injection.
1518         * decl.c (cxx_init_decl_processing): Emit warning on option.
1519         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
1520         friend.
1522 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
1524         PR c++/82468
1525         * decl.c (check_special_function_return_type): Reject template
1526         template parameter in deduction guide.
1528 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1530         PR c++/84375
1531         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
1533 2018-02-15  Jason Merrill  <jason@redhat.com>
1535         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
1536         * call.c (convert_like_real): Don't use the copy-list-initialization
1537         shortcut for ck_base.
1539         PR c++/84045 - ICE with typedef and noexcept.
1540         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
1542         PR c++/84376 - ICE with omitted template arguments.
1543         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
1545         PR c++/84368 - wrong error with local variable in variadic lambda.
1546         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
1547         local_specializations.
1549 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
1551         PR c++/84330
1552         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
1553         as first argument.
1555 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1557         PR c++/84350
1558         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
1559         init, early return.
1561 2018-02-14  Nathan Sidwell  <nathan@acm.org>
1563         * decl2.c (mark_vtable_entries): Set input_location to decl's.
1564         (c_parse_final_cleanups): Restore input_location after emitting
1565         vtables.
1567 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1569         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
1570         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
1571         auto_deduction_context, tree, int): Add defaults.
1572         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
1573         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
1574         tsubst_flags_t argument.
1575         * init.c (build_new): Likewise.
1577 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1579         PR c++/84364
1580         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1581         about return other than *this in assignment operators if
1582         retval is type dependent expression.
1584 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1586         PR c++/84333
1587         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1588         save_expr for the G++ extension.
1590 2018-02-13  Jason Merrill  <jason@redhat.com>
1592         PR c++/84080 - ICE with return type deduction and specialization.
1593         * pt.c (determine_specialization): Check uses_template_parms.
1595         Fix more variadic capture issues.
1596         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1597         (check_for_bare_parameter_packs): Check current_class_type for
1598         lambda context.
1599         (extract_locals_r): Handle seeing a full instantiation of a pack.
1600         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1601         * parser.c (cp_parser_lambda_introducer): Don't
1602         check_for_bare_parameter_packs.
1604         PR c++/84338 - wrong variadic sizeof.
1605         * pt.c (argument_pack_select_arg): Like the macro, but look through
1606         a pack expansion.
1607         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1608         (extract_fnparm_pack): Do make_pack_expansion.
1609         (extract_locals_r): Do strip a pack expansion.
1610         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1612 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1614         PR c++/84341
1615         * parser.c (cp_parser_binary_expression): Use build_min instead of
1616         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1618 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1620         PR c++/84263
1621         * parser.c (cp_parser_decltype): Push and pop
1622         deferring_access_checks.  Reorganize to avoid goto.
1624 2018-02-12  Richard Biener  <rguenther@suse.de>
1626         PR c++/84281
1627         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1628         uniform constructors and delay allocating them fully.
1630 2018-02-09  Jason Merrill  <jason@redhat.com>
1632         PR c++/84036 - ICE with variadic capture.
1633         Handle variadic capture proxies more like non-variadic.
1634         * lambda.c (build_capture_proxy): Remove workaround.
1635         * pt.c (find_parameter_packs_r): The proxy is a pack.
1636         (instantiate_class_template_1): Remove dead lambda code.
1637         (extract_fnparm_pack): Don't make_pack_expansion.
1638         (extract_locals_r): Don't strip a pack expansion.
1639         (tsubst_pack_expansion): Handle proxy packs.  Use
1640         PACK_EXPANSION_EXTRA_ARGS less.
1641         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1642         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1643         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1644         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1645         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1647 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1649         PR sanitizer/83987
1650         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1652 2018-02-09  Jason Merrill  <jason@redhat.com>
1654         PR c++/81917 - ICE with void_t and partial specialization.
1655         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1656         calling most_specialized_partial_spec.
1658 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1660         PR c/84293
1661         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1662         Pass expr location to strict_aliasing_warning.
1664 2018-02-09  Jason Merrill  <jason@redhat.com>
1666         PR c++/84296 - ICE with qualified-id in template.
1667         PR c++/83714
1668         * pt.c (unknown_base_ref_p): New.
1669         (instantiation_dependent_scope_ref_p): Use it instead of
1670         any_dependent_bases_p.
1672 2018-02-09  Marek Polacek  <polacek@redhat.com>
1673             Jakub Jelinek  <jakub@redhat.com>
1675         PR c++/83659
1676         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1677         fold_indirect_ref_1, including poly_*int64.  Verify first that
1678         tree_fits_poly_int64_p (op01).  Formatting fixes.
1680 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1682         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1683         * lambda.c (build_capture_proxy): Likewise.
1684         * search.c (field_access_p): Likewise.
1685         * semantics.c (omp_clause_decl, omp_privatize_field,
1686         finish_omp_clauses): Likewise.
1688 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1690         PR c++/83806
1691         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1692         case of nullptr too.
1694 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1696         * class.c (finish_struct): Fix std:initializer_list diagnostic
1697         formatting.
1699 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1701         PR c++/83204
1702         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1704 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1706         PR c++/84082
1707         * parser.c (cp_parser_dot_deref_incomplete): New function.
1708         (cp_parser_postfix_dot_deref_expression): Use it.
1710 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1712         PR c++/81610
1713         PR c++/80567
1714         * name-lookup.c (suggest_rid_p): New function.
1715         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1716         suggest_rid_p.
1718 2018-02-07  Jason Merrill  <jason@redhat.com>
1720         PR c++/84182 - ICE with captured lambda
1721         PR c++/84181
1722         * pt.c (extract_locals_r, extract_local_specs): New.
1723         (tsubst_pack_expansion): Use them.
1725 2018-02-07  Martin Liska  <mliska@suse.cz>
1727         PR c++/84059.
1728         * class.c (add_method): Append argument value.
1729         * cp-tree.h (maybe_version_functions): Add new argument.
1730         * decl.c (decls_match): Call it if a declaration does not
1731         have DECL_FUNCTION_VERSIONED.
1732         (maybe_version_functions): record argument is added.
1734 2018-02-05  Marek Polacek  <polacek@redhat.com>
1736         * class.c: Remove unused global variables.
1737         (build_primary_vtable): Don't gather statistics.
1738         (print_class_statistics): Remove.
1739         * cp-tree.h (print_class_statistics): Remove.
1740         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1742 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1744         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1745         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1746         * decl.c (next_initializable_field, find_decomp_class_base,
1747         cp_finish_decomp): Likewise.
1748         * typeck2.c (process_init_constructor_record): Likewise.
1750 2018-02-02  Jason Merrill  <jason@redhat.com>
1752         PR c++/84181 - ICE with lambda parm in template argument.
1753         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1755 2018-02-01  Jason Merrill  <jason@redhat.com>
1757         PR c++/84160 - ICE with nested variadic capture.
1758         * lambda.c (is_capture_proxy_with_ref): New.
1759         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1760         COMPONENT_REF.
1761         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1762         * constexpr.c (potential_constant_expression_1): Likewise.
1763         * semantics.c (process_outer_var_ref): Likewise.
1765 2018-02-01  Marek Polacek  <polacek@redhat.com>
1767         PR c++/84125
1768         * typeck.c (build_address): Relax the assert when
1769         processing_template_decl.
1771 2018-02-01  Jason Merrill  <jason@redhat.com>
1773         PR c++/84126 - ICE with variadic generic lambda
1774         PR c++/84036
1775         PR c++/82249
1776         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1777         PACK_EXPANSION_EXTRA_ARGS.
1779 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1781         PR c++/83796
1782         * call.c (convert_like_real): If w're initializing from {} explicitly
1783         call abstract_virtuals_error_sfinae.
1785 2018-01-31  Jason Merrill  <jason@redhat.com>
1786             Jakub Jelinek  <jakub@redhat.com>
1788         PR c++/83993
1789         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1790         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1791         on ADDR_EXPR.
1793 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1795         PR c++/83993
1796         * constexpr.c (diag_array_subscript): Emit different diagnostics
1797         if TYPE_DOMAIN (arraytype) is NULL.
1798         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1799         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1801 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1803         PR c++/84092
1804         * semantics.c (finish_qualified_id_expr): When handling an
1805         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1807 2018-01-31  Marek Polacek  <polacek@redhat.com>
1809         PR c++/84138
1810         * cp-gimplify.c (cp_fold): Check if X is an error node before
1811         calling useless_type_conversion_p.
1813 2018-01-30  Jason Merrill  <jason@redhat.com>
1815         PR c++/84091 - ICE with local class in lambda in template.
1816         * decl2.c (determine_visibility): Look for outer containing template
1817         instantiation.
1819         PR c++/84098 - ICE with lambda in template NSDMI.
1820         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1822 2018-01-29  Jason Merrill  <jason@redhat.com>
1824         PR c++/68810 - wrong location for reinterpret_cast error.
1825         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1826         !dofold.
1828 2018-01-29  Marek Polacek  <polacek@redhat.com>
1830         PR c++/83996
1831         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1832         => fooarray[1] in offset_int.
1834 2018-01-29  Jason Merrill  <jason@redhat.com>
1836         PR c++/83942 - wrong unused warning with static_cast.
1837         * cvt.c (ocp_convert): Call mark_rvalue_use.
1839 2018-01-26  Jason Merrill  <jason@redhat.com>
1841         PR c++/83956 - wrong dtor error with anonymous union
1842         * method.c (walk_field_subobs): Variant members only affect
1843         deletedness.
1844         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1846         PR c++/84036 - ICE with variadic capture.
1847         PR c++/82249
1848         * pt.c (tsubst_pack_expansion): When optimizing a simple
1849         substitution, pull a single pack expansion out of its pack.
1851         PR c++/82514 - ICE with local class in generic lambda.
1852         * pt.c (regenerated_lambda_fn_p): Remove.
1853         (enclosing_instantiation_of): Don't use it.
1854         (tsubst_function_decl): Call enclosing_instantiation_of.
1856         * pt.c (lookup_template_class_1): Add sanity check.
1857         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1859 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1861         PR c++/84031
1862         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1863         recursive calls that return ret.
1864         (cp_finish_decomp): Ignore unnamed bitfields.
1866 2018-01-23  Jason Merrill  <jason@redhat.com>
1868         PR c++/82249 - wrong mismatched pack length error.
1869         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1870         unsubstituted function parameter pack.
1872 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1874         PR c++/83921
1875         * decl.c (check_for_uninitialized_const_var): Not static; add
1876         bool and tsubst_flags_t parameters; adjust to be used both in
1877         constexpr context and not.
1878         * constexpr.c (potential_constant_expression_1): Use the above.
1879         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1881 2018-01-23  Jason Merrill  <jason@redhat.com>
1883         PR c++/83947 - ICE with auto declarations.
1884         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1885         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1887 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1889         PR c++/83974
1890         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1891         for pointer to member function types.
1893 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1895         PR sanitizer/83987
1896         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1897         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1899 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1901         PR c++/83988
1902         * pt.c (tsubst_baselink): Remove optype assert.
1903         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1905 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1907         PR c++/83958
1908         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1909         refers to incomplete type.
1911 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1913         Deprecate ARM-era for scope handling
1914         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1915         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1916         cleared.
1917         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1918         cleanup handling.
1919         * semantics.c (begin_for_scope): Flag_new_for_scope is
1920         boolean-like.
1921         (finish_for_stmt, begin_range_for_stmt): Likewise.
1923 2018-01-22  Jason Merrill  <jason@redhat.com>
1925         PR c++/83720
1926         * decl2.c (determine_visibility): Fix template_decl handling
1927         instead of blocking it.
1929         PR c++/83720 - ICE with lambda and LTO.
1930         * decl2.c (determine_visibility): Clear template_decl for
1931         function-scope decls.  Propagate anonymous linkage from containing
1932         function.
1934 2018-01-22  Marek Polacek  <polacek@redhat.com>
1936         PR c++/81933
1937         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1938         split out anything.
1940 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1942         PR c++/83895
1943         * decl.c (grokdeclarator): Don't diagnose extra parens
1944         on typedefs.
1946 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1948         PR c++/81167
1949         * call.c (joust): Use TREE_TYPE (source) if source is
1950         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1952         PR c++/83919
1953         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1954         for direct enum init.
1955         * decl.c (reshape_init): Likewise.
1957 2018-01-19  Marek Polacek  <polacek@redhat.com>
1959         * constexpr.c (fold_simple): Simplify.
1961 2018-01-18  Jason Merrill  <jason@redhat.com>
1963         PR c++/83714
1964         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1965         * pt.c (instantiation_dependent_scope_ref_p): True if
1966         any_dependent_bases_p.
1968 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1970         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1971         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1973 2018-01-18  Jason Merrill  <jason@redhat.com>
1975         PR c++/82461 - constexpr list-initialized member
1976         * constexpr.c (potential_constant_expression_1): Check
1977         TARGET_EXPR_DIRECT_INIT_P.
1979 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1981         PR c++/81013
1982         * decl.c (xref_basetypes): Early return upon error about derived
1983         union.
1985 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1987         PR c++/83160
1988         * cp-tree.h (mark_use): Declare.
1989         * expr.c (mark_use): Make extern.
1990         * call.c (direct_reference_binding): Set inner conv's
1991         rvaluedness_matches_p, if it is an identity.
1992         (convert_like_real): Mark lvalue or rvalue use for identity as
1993         rvaledness_matches_p demands.
1995 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1997         PR c++/83824
1998         * parser.c (attr_chainon): New function.
1999         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
2000         cp_parser_namespace_definition, cp_parser_init_declarator,
2001         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
2002         cp_parser_gnu_attributes_opt): Use it.
2003         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
2004         cp_parser_objc_struct_declaration): Likewise.  Don't reset
2005         prefix_attributes if attributes is error_mark_node.
2007 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2009         PR c++/78344
2010         * decl.c (grokdeclarator): Do not append the error_mark_node
2011         due to an erroneous optional attribute-specifier-seq.
2013 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
2015         PR c++/83897
2016         * cp-gimplify.c (cp_maybe_instrument_return): Handle
2017         CLEANUP_POINT_EXPR.
2019 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
2021         PR c++/81054
2022         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
2023         error_mark_node when we give an error.
2024         * decl.c (cp_finish_decl): Use the latter.
2026 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2028         PR c++/83287
2029         * init.c (build_raw_new_expr): Scan list for lookups to keep.
2031 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2033         PR c++/83814
2034         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2035         the C++ part.  If processing a template, call
2036         fold_non_dependent_expr rather than fully folding.
2038 2018-01-17  Jason Merrill  <jason@redhat.com>
2040         PR c++/81067 - redundant NULL warning.
2041         * call.c (convert_like_real): Restore null_node handling.
2043 2018-01-17  Jason Merrill  <jason@redhat.com>
2045         PR c++/81843 - ICE with variadic member template.
2046         PR c++/72801
2047         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2048         template args.
2050 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2052         PR c++/83799
2053         * pt.c (type_dependent_expression_p): Strip any location wrapper
2054         before testing tree codes.
2055         (selftest::test_type_dependent_expression_p): New function.
2056         (selftest::cp_pt_c_tests): Call it.
2058 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2060         PR c++/83739
2061         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2062         this not a final instantiation.
2064 2018-01-16  Jason Merrill  <jason@redhat.com>
2066         PR c++/83714 - ICE checking return in template.
2067         * typeck.c (check_return_expr): Call build_non_dependent_expr.
2069 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
2071         PR c++/83817
2072         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2073         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2074         instead of CALL_FROM_THUNK_P.
2076         PR c++/83825
2077         * name-lookup.c (member_vec_dedup): Return early if len is 0.
2078         (resort_type_member_vec, set_class_bindings,
2079         insert_late_enum_def_bindings): Use vec qsort method instead of
2080         calling qsort directly.
2082 2018-01-15  Martin Sebor  <msebor@redhat.com>
2084         PR c++/83588
2085         * class.c (find_flexarrays): Make a record of multiple flexible array
2086         members.
2088 2018-01-12  Jason Merrill  <jason@redhat.com>
2090         PR c++/83186 - ICE with static_cast of list-initialized temporary.
2091         * typeck.c (build_static_cast): Use build_non_dependent_expr.
2093 2018-01-12  Nathan Sidwell  <nathan@acm.org>
2095         * cp-tree.h (mark_rvalue_use): Add parm name.
2096         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2097         mark_rvalue_use.
2098         * call.c (convert_like_real): Fix formatting.
2100 2018-01-11  Jason Merrill  <jason@redhat.com>
2102         PR c++/82728 - wrong -Wunused-but-set-variable
2103         PR c++/82799
2104         PR c++/83690
2105         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2106         * decl.c (case_conversion): Likewise.
2107         * semantics.c (finish_static_assert): Call
2108         perform_implicit_conversion_flags.
2110 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2112         * method.c (enum mangling_flags): Delete long-dead enum.
2114 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2116         * parser.c (cp_parser_std_attribute_spec): When
2117         token_pair::require_open / require_close return false simply
2118         return error_mark_node, avoid duplicate cp_parser_error about
2119         expected '(' / ')', respectively.
2121 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2123         PR c++/43486
2124         * call.c (null_ptr_cst_p): Strip location wrappers when
2125         converting from '0' to a pointer type in C++11 onwards.
2126         (conversion_null_warnings): Replace comparison with null_node with
2127         call to null_node_p.
2128         (build_over_call): Likewise.
2129         * cp-gimplify.c (cp_fold): Remove the early bailout when
2130         processing_template_decl.
2131         * cp-lang.c (selftest::run_cp_tests): Call
2132         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2133         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2134         (selftest::run_cp_tests): Move decl to bottom of file.
2135         (null_node_p): New inline function.
2136         (selftest::cp_pt_c_tests): New decl.
2137         (selftest::cp_tree_c_tests): New decl.
2138         * cvt.c (build_expr_type_conversion): Replace comparison with
2139         null_node with call to null_node_p.
2140         * error.c (args_to_string): Likewise.
2141         * except.c (build_throw): Likewise.
2142         * mangle.c (write_expression): Skip location wrapper nodes.
2143         * parser.c (literal_integer_zerop): New function.
2144         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2145         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2146         param of cp_parser_parenthesized_expression_list.  When calling
2147         warn_for_memset, replace integer_zerop calls with
2148         literal_integer_zerop, eliminating the double logical negation
2149         cast to bool.  Eliminate the special-casing for CONST_DECL in
2150         favor of the fold_for_warn within warn_for_memset.
2151         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2152         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2153         maybe_add_location_wrapper on it when wrap_locations_p is true.
2154         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2155         the result for RID_ALIGNOF and RID_SIZEOF.
2156         (cp_parser_builtin_offsetof): Likewise.
2157         * pt.c: Include "selftest.h".
2158         (tsubst_copy): Handle location wrappers.
2159         (tsubst_copy_and_build): Likewise.
2160         (build_non_dependent_expr): Likewise.
2161         (selftest::test_build_non_dependent_expr): New function.
2162         (selftest::cp_pt_c_tests): New function.
2163         * tree.c: Include "selftest.h".
2164         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2165         (selftest::test_lvalue_kind): New function.
2166         (selftest::cp_tree_c_tests): New function.
2167         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2168         (cp_build_binary_op): Replace comparison with null_node with call
2169         to null_node_p.
2170         (build_address): Use location of operand when building address
2171         expression.
2173 2018-01-10  Marek Polacek  <polacek@redhat.com>
2175         PR c++/82541
2176         * call.c (build_conditional_expr_1): Check complain before warning.
2177         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2178         -Wduplicated-branches.
2180 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2182         PR c++/81327
2183         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2184         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2185         args uses and check number of operands too.  Don't strip away any
2186         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2187         Deal with src argument not having pointer type.  Check
2188         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2189         test.
2190         (build_over_call): Call maybe_warn_class_memaccess here on the
2191         original arguments.
2192         (build_cxx_call): Rather than here on converted arguments.
2194 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2196         PR c++/81055
2197         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2198         error_mark_node as second argument.
2200 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2202         PR c++/83734
2203         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2204         in STATEMENT_LIST.  Remove unneeded assert.
2206 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2207             Alan Hayward  <alan.hayward@arm.com>
2208             David Sherwood  <david.sherwood@arm.com>
2210         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2211         VECTOR_CST_NELTS.
2212         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2213         * call.c (build_conditional_expr_1): Likewise.
2214         * decl.c (cp_finish_decomp): Likewise.
2215         * mangle.c (write_type): Likewise.
2216         * typeck.c (structural_comptypes): Likewise.
2217         (cp_build_binary_op): Likewise.
2218         * typeck2.c (process_init_constructor_array): Likewise.
2220 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2222         PR c++/83555
2223         * typeck.c (build_static_cast_1): For static casts to reference types,
2224         call build_base_path with flag_delete_null_pointer_checks as nonnull
2225         instead of always false.  When -fsanitize=null, call
2226         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2227         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2228         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2230 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2232         PR c++/83667
2233         * method.c (make_alias_for): Copy DECL_CONTEXT.
2235 2018-01-03  Marek Polacek  <polacek@redhat.com>
2237         PR c++/83592
2238         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2240 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2242         PR preprocessor/83602
2243         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2244         for builtin macros.
2246         PR c++/83634
2247         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2248         error_mark_node, return error_mark_node.
2250         Update copyright years.
2252 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2254         PR c++/83556
2255         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2256         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2257         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2258         to false and return.
2259         (replace_placeholders): Pass NULL instead of &pset as last argument
2260         to cp_walk_tree.
2262 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2264         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2265         lval var.
2267 Copyright (C) 2018 Free Software Foundation, Inc.
2269 Copying and distribution of this file, with or without modification,
2270 are permitted in any medium without royalty provided the copyright
2271 notice and this notice are preserved.