PR c++/85015
[official-gcc.git] / gcc / cp / ChangeLog
blob52af546409097d9cd2e1f1a8b190e1239f6c0d9f
1 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/85015
4         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
5         result.
7         PR c++/84942
8         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
9         cp_build_unary_op call with gcc_unreachable ().
11 2018-03-23  Marek Polacek  <polacek@redhat.com>
13         PR c++/85045
14         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
15         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
16         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
18 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
20         Implement P0962
21         * parser.c (cp_parser_perform_range_for_lookup): Change
22         the condition for deciding whether to use members.
24 2018-03-23  Marek Polacek  <polacek@redhat.com>
26         PR c++/85033
27         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
29 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
31         PR c++/71251
32         * parser.c (cp_parser_alias_declaration): Call
33         parser_check_template_parameters.
35         PR c++/84789
36         * pt.c (resolve_typename_type): Drop assert that stopped
37         simplification to template-independent types.  Add assert to
38         verify the initial scope is template dependent.
39         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
40         Reparse the id expression as a type-name, not a declarator.
42         PR c++/84729
43         * init.c (build_vec_init): Error at parenthesized array init.
45         PR c++/84610
46         PR c++/84642
47         PR c++/84942
48         * cp-tree.h (temp_override): New template class, generalizing
49         a cleanup that was only used...
50         * parser.c (cp_parser_parameter_declaration_clause):
51         ... here for auto_is_implicit_function_template_parm_p.
52         (cp_parser_gnu_attributes_opt): Use it here as well.
53         (cp_parser_std_attribute): Likewise.
55 2018-03-22  Marek Polacek  <polacek@redhat.com>
57         PR c++/84854
58         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
59         is boolean.
61 2018-03-21  Jason Merrill  <jason@redhat.com>
63         PR c++/81311 - wrong C++17 overload resolution.
64         * call.c (build_user_type_conversion_1): Remove C++17 code.
65         (conv_binds_ref_to_prvalue): New.
66         (build_over_call): Handle C++17 copy elision.
67         (build_special_member_call): Only do C++17 copy elision here if the
68         argument is already the right type.
70 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
72         PR c++/71965
73         * init.c (build_vec_init): Silence error, former sorry,
74         without tf_error.
76         PR c++/84610
77         PR c++/84642
78         * parser.c (abort_fully_implicit_template_p): New.
79         (cp_parser_skip_to_end_of_statement): Use it.
80         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
81         (finish_fully_implicit_template_p): Clear
82         implicit_template_parms and implicit_template_scope.
84 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
86         PR c++/84972
87         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
88         error_mark_node when check_array_designated_initializer fails.
90 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
92         PR c++/84961
93         * cp-tree.h (genericize_compound_lvalue): Declare.
94         * typeck.c (genericize_compound_lvalue): New function.
95         (unary_complex_lvalue, cp_build_modify_expr): Use it.
96         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
97         and PREDECREMENT_EXPR in output and "m" constrained input operands with
98         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
99         COMPOUND_EXPR operand.
101 2018-03-21  Nathan Sidwell  <nathan@acm.org>
103         PR c++/85008
104         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
105         * decl2.c (vague_linkage_p): Likewise.
107 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
109         PR c++/84994
110         * constexpr.c (constexpr_fn_retval): Make non-"static".
111         * cp-tree.h (constexpr_fn_retval): New decl.
112         * search.c (direct_accessor_p): Update leading comment.
113         (reference_accessor_p): Likewise.
114         (field_accessor_p): Replace check that function body is a
115         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
116         indentation of "field_type" decl.
118 2018-03-21  Nathan Sidwell  <nathan@acm.org>
120         PR c++/84804
121         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
122         complete classes.
124 2018-03-21  Martin Sebor  <msebor@redhat.com>
126         PR c++/84850
127         * call.c (first_non_public_field): New template and function.
128         (first_non_trivial_field): New function.
129         (maybe_warn_class_memaccess): Call them.
131 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
133         PR c++/84892
134         * search.c (field_accessor_p): Use class_of_this_parm rather than
135         type_of_this_parm, to check that "this" is a "const T *", rather
136         than a "T *const".
138 2018-03-21  Nathan Sidwell  <nathan@acm.org>
140         * class.c (finish_struct_anon_r): Refactor, deprecate anything
141         other than public non-static data members.
142         * parser.c (cp_parser_init_declarator): Deprecate attributes after
143         parenthesized initializer.
145         PR c++/84836
146         * name-lookup.c (update_binding): Correct logic for local binding
147         update.
149 2018-03-21  Marek Polacek  <polacek@redhat.com>
151         PR c++/71638, ICE with NSDMI and reference.
152         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
153         even when we replace an element.
155 2018-03-20  Marek Polacek  <polacek@redhat.com>
157         PR c++/84978, ICE with NRVO.
158         * constexpr.c (cxx_eval_constant_expression): Handle the case when
159         a RESULT_DECL isn't in the hash map.
161 2018-03-20  Jason Merrill  <jason@redhat.com>
163         PR c++/84978, ICE with NRVO.
164         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
165         (cp_get_callee_fndecl_nofold): New.
166         * cp-gimplify.c (cp_genericize_r): Use it instead.
167         * call.c (check_self_delegation): Likewise.
169 2018-03-20  Nathan Sidwell  <nathan@acm.org>
171         PR c++/84962
172         * name-lookup.c (pushdecl_class_level): Push anon-struct's
173         member_vec, if there is one.
175         PR c++/84970
176         * cp-tree.h (lookup_list_keep): Declare.
177         * tree.c (lookup_list_keep): New, broken out of ...
178         (build_min): ... here.  Call it.
179         * decl.c (cp_finish_decl): Call lookup_list_keep.
181 2018-03-19  Jason Merrill  <jason@redhat.com>
183         PR c++/84937 - ICE with class deduction and auto.
184         * pt.c (rewrite_template_parm): Fix auto handling.
186 2018-03-19  Marek Polacek  <polacek@redhat.com>
188         PR c++/84925
189         * pt.c (enclosing_instantiation_of): Check if fn is null.
191         PR c++/84927
192         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
193         as we evaluate the elements.
194         (cxx_eval_constant_expression): Verify constructor's flags
195         unconditionally.
197 2018-03-19  Jason Merrill  <jason@redhat.com>
199         PR c++/71834 - template-id with too few arguments.
200         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
202 2018-03-19  Nathan Sidwell  <nathan@acm.org>
204         PR c++/84835
205         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
206         * pt.c (build_template_decl): Propagate language linkage.
208         PR c++/84812
209         * name-lookup.c (set_local_extern_decl_linkage): Defend against
210         ambiguous lookups.
212 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
214         PR c/84910
215         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
216         diagnostics.
217         * method.c (synthesize_method): Likewise.
218         * pt.c (convert_nontype_argument): Likewise.
220 2018-03-16  Jason Merrill  <jason@redhat.com>
222         PR c++/84720 - ICE with rvalue ref non-type argument.
223         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
224         (convert_nontype_argument): Revert earlier change.
226         PR c++/80227 - SFINAE and negative array size.
227         * decl.c (compute_array_index_type): Use
228         build_converted_constant_expr and valid_constant_size_p.
230         PR c++/84906 - silent wrong code with ambiguous conversion.
231         * call.c (build_user_type_conversion_1): Set need_temporary_p on
232         ambiguous conversion.
233         (convert_like_real): Check it.
235         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
236         * call.c (build_special_member_call): Don't convert an init-list
237         argument directly to the class type.
239 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
241         PR c++/79937
242         PR c++/82410
243         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
244         (find_placeholder): Declare.
245         * tree.c (struct replace_placeholders_t): Add exp member.
246         (replace_placeholders_r): Don't walk into ctors with
247         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
248         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
249         (replace_placeholders): Initialize data.exp.
250         (find_placeholders_r, find_placeholders): New functions.
251         * typeck2.c (process_init_constructor_record,
252         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
253         if adding NSDMI on which find_placeholder returns true.
254         * call.c (build_over_call): Don't call replace_placeholders here.
255         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
256         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
257         TARGET_EXPR_INITIAL.
258         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
259         ctor.
261 2018-03-16  Jason Merrill  <jason@redhat.com>
263         PR c++/83911 - ICE with multiversioned constructor.
264         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
265         dispatchere here.
266         * call.c (build_over_call): Not here.
268 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
270         PR c++/84874
271         * decl.c (reshape_init_class): Don't assert d->cur->index == field
272         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
274 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
276         PR c++/84222
277         * cp-tree.h (cp_warn_deprecated_use): Declare.
278         * tree.c (cp_warn_deprecated_use): New function.
279         * typeck2.c (build_functional_cast): Use it.
280         * decl.c (grokparms): Likewise.
281         (grokdeclarator): Likewise.  Temporarily push nested class scope
282         around grokparms call for out of class member definitions.
284 2018-03-14  Jason Merrill  <jason@redhat.com>
286         PR c++/84820 - no error for invalid qualified-id.
287         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
288         cp_error_declarator.
290         PR c++/84801 - ICE with unexpanded pack in lambda.
291         * pt.c (check_for_bare_parameter_packs): Don't return early for a
292         lambda in non-template context.
294         PR c++/81236 - auto variable and auto function
295         * pt.c (tsubst_baselink): Update the type of the BASELINK after
296         mark_used.
298 2018-03-14  Jason Merrill  <jason@redhat.com>
300         PR c++/83916 - ICE with template template parameters.
301         * pt.c (convert_template_argument): Don't substitute into type of
302         non-type parameter if we don't have enough arg levels.
303         (unify): Likewise.
305 2018-03-14  Marek Polacek  <polacek@redhat.com>
307         PR c++/84596
308         * semantics.c (finish_static_assert): Check
309         instantiation_dependent_expression_p instead of
310         {type,value}_dependent_expression_p.
312 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
313             Jason Merrill  <jason@redhat.com>
315         PR c++/82336 - link error with list-init default argument.
316         * decl.c (check_default_argument): Unshare an initializer list.
318 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
320         PR c++/84843
321         * decl.c (duplicate_decls): For redefinition of built-in, use error
322         and return error_mark_node.  For redeclaration, return error_mark_node
323         rather than olddecl if !flag_permissive.
325 2018-03-13  Jason Merrill  <jason@redhat.com>
327         PR c++/82565 - ICE with concepts and generic lambda.
328         * pt.c (instantiate_decl): Clear fn_context for lambdas.
330 2018-03-13  Jason Merrill  <jason@redhat.com>
332         PR c++/84720 - ICE with rvalue ref non-type argument.
333         * pt.c (convert_nontype_argument): Handle rvalue references.
335         PR c++/84839 - ICE with decltype of parameter pack.
336         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
337         instantiating dummy parms.
339         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
340         parameter even without -Wpedantic.
342         PR c++/84798 - ICE with auto in abstract function declarator.
343         * parser.c (cp_parser_parameter_declaration_clause): Check
344         parser->default_arg_ok_p.
346 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
348         PR c++/84808
349         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
350         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
351         sizetype.  Formatting fixes.
353 2018-03-12  Jason Merrill  <jason@redhat.com>
355         PR c++/84355 - ICE with deduction for member class template.
356         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
357         CLASS_PLACEHOLDER_TEMPLATE.
359         PR c++/84802 - ICE capturing uninstantiated class.
360         * lambda.c (build_capture_proxy): Call complete_type.
362 2018-03-09  Jason Merrill  <jason@redhat.com>
364         PR c++/84770 - ICE with typedef and parameter pack.
365         * pt.c (verify_unstripped_args_1): Split out from
366         verify_unstripped_args.
368         PR c++/84785 - ICE with alias template and default targs.
369         * pt.c (type_unification_real): Set processing_template_decl if
370         saw_undeduced == 1.
372         PR c++/84752 - ICE with capture of constexpr array.
373         * call.c (standard_conversion): Set rvaluedness_matches_p on the
374         identity conversion under ck_lvalue.
376 2018-03-09  Jason Merrill  <jason@redhat.com>
377             Paolo Carlini  <paolo.carlini@oracle.com>
379         PR c++/71169
380         PR c++/71832
381         * pt.c (any_erroneous_template_args_p): New.
382         * cp-tree.h (any_erroneous_template_args_p): Declare it.
383         * parser.c (cp_parser_class_specifier_1): Use it.
385 2018-03-09  Jason Merrill  <jason@redhat.com>
387         PR c++/84726 - unnecessary capture of constant vars.
388         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
389         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
390         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
391         * lambda.c (is_constant_capture_proxy)
392         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
393         (prune_lambda_captures): New.
394         (finish_lambda_function): Call prune_lambda_captures.
396 2018-03-09  Jason Merrill  <jason@redhat.com>
397             Jakub Jelinek  <jakub@redhat.com>
399         PR c++/84076
400         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
401         build ADDR_EXPR with REFERENCE_TYPE.
402         (build_over_call): For purposes of check_function_arguments, if
403         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
404         its operand rather than the argument itself.
406 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
408         PR c++/84724
409         * decl.c (duplicate_decls): Don't override __* prefixed builtins
410         except for __[^b]*_chk, instead issue permerror and for -fpermissive
411         also a note and return olddecl.
413 2018-03-09  Nathan Sidwell  <nathan@acm.org>
415         PR c++/84733
416         * name-lookup.c (do_pushdecl_with_scope): Only clear
417         current_function_decl when pushing a non-class (i.e. namespace)
418         scope.
420 2018-03-08  Jason Merrill  <jason@redhat.com>
421             Jakub Jelinek  <jakub@redhat.com>
423         PR c++/80598
424         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
425         not calling mark_used for the benefit of -Wunused-function warning.
427 2018-03-06  Jason Merrill  <jason@redhat.com>
429         * lambda.c (is_capture_proxy_with_ref): Remove.
430         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
432 2018-03-06  Marek Polacek  <polacek@redhat.com>
434         PR c++/84684
435         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
436         arguments.
438 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
440         PR c++/84231
441         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
442         only while processing template decls.
443         * typeck.c (build_x_conditional_expr): Move wrapping of
444         reference type around type...
445         * call.c (build_conditional_expr_1): ... here.  Rename
446         is_lvalue to is_glvalue.
447         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
448         INDIRECT_REF of COND_EXPR too.
450         PR c++/84593
451         * init.c (build_zero_init_1): Zero-initialize references.
453         PR c++/84492
454         * semantics.c (finish_stmt_expr_expr): Reject unresolved
455         overloads used as stmt expr values.
457 2018-03-05  Jason Merrill  <jason@redhat.com>
459         PR c++/84708 - ICE with lambda in local class NSDMI.
460         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
461         context.
463 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
465         PR c++/84684
466         * constexpr.c (constexpr_call_hasher::equal): Return false if
467         lhs->hash != rhs->hash.  Change return 1 to return true and
468         return 0 to return false.
470 2018-03-05  Nathan Sidwell  <nathan@acm.org>
472         PR c++/84702
473         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
475 2018-03-05  Marek Polacek  <polacek@redhat.com>
477         PR c++/84707
478         * decl.c (duplicate_decls): Check DECL_NAME before accessing
479         UDLIT_OPER_P.
481 2018-03-05  Nathan Sidwell  <nathan@acm.org>
483         PR c++/84694
484         * friend.c (do_friend): Restore check for identifier_p inside
485         TEMPLATE_ID_EXPR.
487 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
489         PR c++/84618
490         * parser.c (cp_parser_lambda_introducer): Reject any capture not
491         involving a VAR_DECL or a PARM_DECL.
493 2018-03-05  Pádraig Brady  <P@draigBrady.com>
494             Jason  Merrill  <jason@redhat.com>
495             Nathan Sidwell  <nathan@acm.org>
497         PR c++/84497
498         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
500 2018-03-03  Jason Merrill  <jason@redhat.com>
502         PR c++/84686 - missing volatile loads.
503         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
505 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
507         PR c++/71464
508         * optimize.c (maybe_thunk_body): Bail out immediately if either
509         fns[0] or fns[1] is null.
511 2018-03-02  Marek Polacek  <polacek@redhat.com>
513         PR c++/84578
514         * constexpr.c (get_array_or_vector_nelts): New.
515         (cxx_eval_array_reference): Use it.
516         (cxx_eval_vec_init_1): Likewise.
517         (cxx_eval_store_expression): Likewise.
519 2018-03-02  Jason Merrill  <jason@redhat.com>
521         * semantics.c (force_paren_expr): Remove redundant test.
523 2018-03-02  Marek Polacek  <polacek@redhat.com>
525         PR c++/84663
526         * decl.c (cp_complete_array_type): Check error_mark_node.
528         PR c++/84664
529         * typeck.c (cp_perform_integral_promotions): Check the result of
530         mark_rvalue_use.
532 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
534         PR c++/84662
535         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
536         RETURN instead of return.
537         <case POINTER_PLUS_EXPR>: Likewise.
538         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
539         it instead of wrapping it into CONVERT_EXPR.
541 2018-03-02  Jason Merrill  <jason@redhat.com>
543         Fix MIPS16 ICE.
544         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
546 2018-03-02  Marek Polacek  <polacek@redhat.com>
548         PR c++/84590
549         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
550         wrapped in VIEW_CONVERT_EXPR.
552 2018-03-01  Martin Sebor  <msebor@redhat.com>
554         PR c++/84294
555         * decl.c (check_redeclaration_no_default_args): Merge attributes
556         specified on redeclarations of the same function template.
557         Remove dead code.
559 2018-03-01  Marek Polacek  <polacek@redhat.com>
560             Jason Merrill  <jason@redhat.com>
562         PR c++/84582
563         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
564         a template.
565         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
566         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
567         of instantiate_non_dependent_expr.
568         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
570 2018-03-01  Nathan Sidwell  <nathan@acm.org>
572         PR c++/84434
573         * name-lookup.c (member_vec_dedup): Remove manually peeled
574         iteration.  Ignore dependent ctor inheritance.
576 2018-03-01  Jason Merrill  <jason@redhat.com>
578         PR c++/71569 - decltype of template.
579         * parser.c (cp_parser_decltype_expr): Handle missing template args.
581 2018-03-01  Marek Polacek  <polacek@redhat.com>
583         PR c++/84596
584         * constexpr.c (require_rvalue_constant_expression): New function.
585         * cp-tree.h: Declare it.
586         * semantics.c (finish_static_assert): Use it instead of
587         require_potential_rvalue_constant_expression.
589 2018-03-01  Jason Merrill  <jason@redhat.com>
590             Alexandre Oliva <aoliva@redhat.com>
592         PR c++/71569 - ICE with redundant args on member variable template.
593         * decl.c (start_decl): Handle partial specialization of member
594         variable template.
595         * pt.c (determine_specialization): Allow partial specialization
596         of member variable template without specializing enclosing class.
597         (process_partial_specialization): Improve error message.
599 2018-02-28  Jason Merrill  <jason@redhat.com>
601         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
602         * pt.c (determine_specialization): Check ref-qualifier.
604 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
606         PR c++/84609
607         * parser.c (cp_parser_attributes_opt): Formatting fix.
608         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
609         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
610         New functions.
611         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
612         instead of tentative parse to peek over optional attribute tokens
613         to check for CPP_COLON after them.
615         PR c++/83871
616         PR c++/83503
617         * pt.c (INCLUDE_STRING): Remove define.
618         (warn_spec_missing_attributes): Use pretty_printer instead of
619         std::string.  Fix up inform call so that the list of attributes
620         is in %s argument.
622 2018-02-28  Martin Sebor  <msebor@redhat.com>
624         PR testsuite/84617
625         * decl.c (duplicate_decls): Fully merge attributes const, pure,
626         and malloc.
628 2018-02-28  Nathan Sidwell  <nathan@acm.org>
630         PR c++/84602
631         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
632         * name-lookup.c (fields_linear_search): Look in an anon-aggr
633         regardless of want_type.
634         (search_anon_aggr): Just use get_class_binding_direct.
636 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
638         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
639         inform_n.
641 2018-02-27  Martin Sebor  <msebor@redhat.com>
643         * pt.c: Avoid including <string> directly.
645 2018-02-27  Martin Sebor  <msebor@redhat.com>
647         PR c++/83871
648         PR c++/83503
649         * cp-tree.h (warn_spec_missing_attributes): New function.
650         ((check_explicit_specialization): Add an argument.  Call the above
651         function.
652         * decl.c (duplicate_decls): Avoid applying primary function template's
653         attributes to its explicit specializations.
654         cp/pt.c (warn_spec_missing_attributes): Define.
656 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
658         PR c++/71546 - lambda init-capture with qualified-id.
659         * parser.c (cp_parser_lambda_introducer): Clear scope after
660         each lambda capture.
662 2018-02-27  Nathan Sidwell  <nathan@acm.org>
664         PR c++/84426
665         * name-lookup.h (get_member_slot): Rename ...
666         (find_member_slot): ... here.
667         (add_member_slot): New.
668         * name-lookup.c (member_vec_linear_search): No need to check for
669         NULL slot.
670         (get_member_slot): Rename ...
671         (find_member_slot): ... here.  Don't add slot for incomplete class.
672         (add_member_slot): New.
673         * class.c (add_method): Adjust get_member_slot rename.  Bail out
674         if push_class_level_binding fails.  Create slot and grok
675         properties once we're committed to insertion.
677 2018-02-27  Jason Merrill  <jason@redhat.com>
679         PR c++/84489 - dependent default template argument
680         * pt.c (type_unification_real): Handle early substitution failure.
682 2018-02-26  Jason Merrill  <jason@redhat.com>
684         PR c++/84560 - ICE capturing multi-dimensional VLA.
685         * tree.c (array_of_runtime_bound_p): False if the element is
686         variably-modified.
688         PR c++/84441 - ICE with base initialized from ?:
689         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
691         PR c++/84520 - ICE with generic lambda in NSDMI.
692         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
693         'this' in a generic lambda instantiation.
695         PR c++/84559 - ICE with constexpr VLA.
696         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
697         for constexpr variable with VLA type.
699 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
701         PR c++/84558
702         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
703         a valid constant initializer.  Formatting fixes.
705 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
707         PR c++/84540
708         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
709         returning NULL_TREE.
710         (apply_late_template_attributes): Likewise.
712 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
714         PR c++/84557
715         * parser.c (cp_parser_omp_var_list_no_open): Only call
716         cp_parser_lookup_name_simple on names satisfying identifier_p.
717         (cp_parser_oacc_routine): Likewise.
719 2018-02-26  Jason Merrill  <jason@redhat.com>
721         PR c++/84551 - ICE with concepts and -g.
722         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
724 2018-02-26  Marek Polacek  <polacek@redhat.com>
726         PR c++/84325
727         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
728         non-types.
730 2018-02-26  Jason Merrill  <jason@redhat.com>
732         PR c++/84447 - ICE with deleted inherited ctor with default arg.
733         * call.c (build_over_call): Handle deleted functions in one place.
735 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
737         PR c++/84533
738         * decl.c (redeclaration_error_message): Don't try to use
739         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
741 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
743         * lambda.c (build_capture_proxy): Define static.
744         * cp-tree.h (build_capture_proxy): Remove.
746 2018-02-26  Marek Polacek  <polacek@redhat.com>
748         PR c++/84537
749         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
750         if name is error node.
752 2018-02-25  Jason Merrill  <jason@redhat.com>
754         PR c++/84015 - ICE with class deduction and auto template parm.
755         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
757 2018-02-24  Marek Polacek  <polacek@redhat.com>
759         PR c++/83692
760         * constexpr.c (maybe_constant_init_1): New function.
761         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
762         (cxx_constant_init): New function.
763         * cp-tree.h (cxx_constant_init): Declare.
764         * typeck2.c (store_init_value): Call cxx_constant_init instead of
765         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
767 2018-02-22  Jason Merrill  <jason@redhat.com>
769         PR c++/70468 - ICE with constructor delegation via typedef.
770         * pt.c (tsubst_initializer_list): Check for other mem-initializers
771         with constructor delegation.
773 2018-02-22  Jason Merrill  <jason@redhat.com>
775         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
776         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
777         VECTOR_TYPE.
779 2018-02-22  Marek Polacek  <polacek@redhat.com>
781         PR c++/84493
782         * parser.c (cp_parser_braced_list): Use require_open instead of
783         consume_open.
785 2018-02-21  Jason Merrill  <jason@redhat.com>
787         PR c++/84454 - ICE with pack expansion in signature.
788         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
790 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
792         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
793         IF_STMT.
795 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
797         PR c++/84446
798         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
799         on error_mark_node.
801 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
803         PR c++/84445
804         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
805         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
807         PR c++/84449
808         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
809         returns error_mark_node, return it immediately.
810         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
811         error_mark_node, return error_mark_node.
813         PR c++/84455
814         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
815         function_depth to avoid GC during finish_lambda_function.
817 2018-02-19  Jason Merrill  <jason@redhat.com>
819         PR c++/84429 - ICE capturing VLA.
820         * lambda.c (build_capture_proxy): Handle reference refs.
822 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
824         PR c++/84448
825         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
826         either operand is error_mark_node, set current.lhs to that instead of
827         creating a binary op with error_mark_node operands.
829         PR c++/84430
830         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
832 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
834         PR c++/84348
835         * decl.c (grokdeclarator): Early return error_mark_node upon
836         ill-formed friend declaration.
838 2018-02-16  Marek Polacek  <polacek@redhat.com>
839             Jakub Jelinek  <jakub@redhat.com>
841         PR c++/84192
842         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
843         set *jump_target to anything if jump_target is NULL.
845 2018-02-16  Jason Merrill  <jason@redhat.com>
847         PR c++/84151 - unnecessary volatile load with static member.
848         * call.c (build_new_method_call_1): Avoid loading from a volatile
849         lvalue used as the object argument for a static member function.
851         PR c++/81853 - using-directive and constexpr.
852         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
854         PR c++/84420 - ICE with structured binding in lambda.
855         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
857         PR c++/83835 - C++17 error with constructor ctors.
858         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
860         PR c++/82664 - ICE with reference to function template parm.
861         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
862         NOP_EXPRs.
864         PR c++/82764 - C++17 ICE with empty base
865         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
867 2018-02-16  Jason Merrill  <jason@redhat.com>
869         PR c++/84421 - type-dependent if constexpr
870         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
872 2018-02-16  Nathan Sidwell  <nathan@acm.org>
874         Deprecate -ffriend-injection.
875         * decl.c (cxx_init_decl_processing): Emit warning on option.
876         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
877         friend.
879 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
881         PR c++/82468
882         * decl.c (check_special_function_return_type): Reject template
883         template parameter in deduction guide.
885 2018-02-16  Nathan Sidwell  <nathan@acm.org>
887         PR c++/84375
888         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
890 2018-02-15  Jason Merrill  <jason@redhat.com>
892         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
893         * call.c (convert_like_real): Don't use the copy-list-initialization
894         shortcut for ck_base.
896         PR c++/84045 - ICE with typedef and noexcept.
897         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
899         PR c++/84376 - ICE with omitted template arguments.
900         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
902         PR c++/84368 - wrong error with local variable in variadic lambda.
903         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
904         local_specializations.
906 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
908         PR c++/84330
909         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
910         as first argument.
912 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
914         PR c++/84350
915         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
916         init, early return.
918 2018-02-14  Nathan Sidwell  <nathan@acm.org>
920         * decl2.c (mark_vtable_entries): Set input_location to decl's.
921         (c_parse_final_cleanups): Restore input_location after emitting
922         vtables.
924 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
926         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
927         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
928         auto_deduction_context, tree, int): Add defaults.
929         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
930         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
931         tsubst_flags_t argument.
932         * init.c (build_new): Likewise.
934 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
936         PR c++/84364
937         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
938         about return other than *this in assignment operators if
939         retval is type dependent expression.
941 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
943         PR c++/84333
944         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
945         save_expr for the G++ extension.
947 2018-02-13  Jason Merrill  <jason@redhat.com>
949         PR c++/84080 - ICE with return type deduction and specialization.
950         * pt.c (determine_specialization): Check uses_template_parms.
952         Fix more variadic capture issues.
953         * pt.c (find_parameter_packs_r): Also look at explicit captures.
954         (check_for_bare_parameter_packs): Check current_class_type for
955         lambda context.
956         (extract_locals_r): Handle seeing a full instantiation of a pack.
957         (tsubst_pack_expansion): Likewise.  Force lambda capture.
958         * parser.c (cp_parser_lambda_introducer): Don't
959         check_for_bare_parameter_packs.
961         PR c++/84338 - wrong variadic sizeof.
962         * pt.c (argument_pack_select_arg): Like the macro, but look through
963         a pack expansion.
964         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
965         (extract_fnparm_pack): Do make_pack_expansion.
966         (extract_locals_r): Do strip a pack expansion.
967         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
969 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
971         PR c++/84341
972         * parser.c (cp_parser_binary_expression): Use build_min instead of
973         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
975 2018-02-12  Nathan Sidwell  <nathan@acm.org>
977         PR c++/84263
978         * parser.c (cp_parser_decltype): Push and pop
979         deferring_access_checks.  Reorganize to avoid goto.
981 2018-02-12  Richard Biener  <rguenther@suse.de>
983         PR c++/84281
984         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
985         uniform constructors and delay allocating them fully.
987 2018-02-09  Jason Merrill  <jason@redhat.com>
989         PR c++/84036 - ICE with variadic capture.
990         Handle variadic capture proxies more like non-variadic.
991         * lambda.c (build_capture_proxy): Remove workaround.
992         * pt.c (find_parameter_packs_r): The proxy is a pack.
993         (instantiate_class_template_1): Remove dead lambda code.
994         (extract_fnparm_pack): Don't make_pack_expansion.
995         (extract_locals_r): Don't strip a pack expansion.
996         (tsubst_pack_expansion): Handle proxy packs.  Use
997         PACK_EXPANSION_EXTRA_ARGS less.
998         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
999         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1000         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1001         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1002         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1004 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1006         PR sanitizer/83987
1007         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1009 2018-02-09  Jason Merrill  <jason@redhat.com>
1011         PR c++/81917 - ICE with void_t and partial specialization.
1012         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1013         calling most_specialized_partial_spec.
1015 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1017         PR c/84293
1018         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1019         Pass expr location to strict_aliasing_warning.
1021 2018-02-09  Jason Merrill  <jason@redhat.com>
1023         PR c++/84296 - ICE with qualified-id in template.
1024         PR c++/83714
1025         * pt.c (unknown_base_ref_p): New.
1026         (instantiation_dependent_scope_ref_p): Use it instead of
1027         any_dependent_bases_p.
1029 2018-02-09  Marek Polacek  <polacek@redhat.com>
1030             Jakub Jelinek  <jakub@redhat.com>
1032         PR c++/83659
1033         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1034         fold_indirect_ref_1, including poly_*int64.  Verify first that
1035         tree_fits_poly_int64_p (op01).  Formatting fixes.
1037 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1039         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1040         * lambda.c (build_capture_proxy): Likewise.
1041         * search.c (field_access_p): Likewise.
1042         * semantics.c (omp_clause_decl, omp_privatize_field,
1043         finish_omp_clauses): Likewise.
1045 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1047         PR c++/83806
1048         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1049         case of nullptr too.
1051 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1053         * class.c (finish_struct): Fix std:initializer_list diagnostic
1054         formatting.
1056 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1058         PR c++/83204
1059         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1061 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1063         PR c++/84082
1064         * parser.c (cp_parser_dot_deref_incomplete): New function.
1065         (cp_parser_postfix_dot_deref_expression): Use it.
1067 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1069         PR c++/81610
1070         PR c++/80567
1071         * name-lookup.c (suggest_rid_p): New function.
1072         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1073         suggest_rid_p.
1075 2018-02-07  Jason Merrill  <jason@redhat.com>
1077         PR c++/84182 - ICE with captured lambda
1078         PR c++/84181
1079         * pt.c (extract_locals_r, extract_local_specs): New.
1080         (tsubst_pack_expansion): Use them.
1082 2018-02-07  Martin Liska  <mliska@suse.cz>
1084         PR c++/84059.
1085         * class.c (add_method): Append argument value.
1086         * cp-tree.h (maybe_version_functions): Add new argument.
1087         * decl.c (decls_match): Call it if a declaration does not
1088         have DECL_FUNCTION_VERSIONED.
1089         (maybe_version_functions): record argument is added.
1091 2018-02-05  Marek Polacek  <polacek@redhat.com>
1093         * class.c: Remove unused global variables.
1094         (build_primary_vtable): Don't gather statistics.
1095         (print_class_statistics): Remove.
1096         * cp-tree.h (print_class_statistics): Remove.
1097         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1099 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1101         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1102         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1103         * decl.c (next_initializable_field, find_decomp_class_base,
1104         cp_finish_decomp): Likewise.
1105         * typeck2.c (process_init_constructor_record): Likewise.
1107 2018-02-02  Jason Merrill  <jason@redhat.com>
1109         PR c++/84181 - ICE with lambda parm in template argument.
1110         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1112 2018-02-01  Jason Merrill  <jason@redhat.com>
1114         PR c++/84160 - ICE with nested variadic capture.
1115         * lambda.c (is_capture_proxy_with_ref): New.
1116         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1117         COMPONENT_REF.
1118         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1119         * constexpr.c (potential_constant_expression_1): Likewise.
1120         * semantics.c (process_outer_var_ref): Likewise.
1122 2018-02-01  Marek Polacek  <polacek@redhat.com>
1124         PR c++/84125
1125         * typeck.c (build_address): Relax the assert when
1126         processing_template_decl.
1128 2018-02-01  Jason Merrill  <jason@redhat.com>
1130         PR c++/84126 - ICE with variadic generic lambda
1131         PR c++/84036
1132         PR c++/82249
1133         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1134         PACK_EXPANSION_EXTRA_ARGS.
1136 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1138         PR c++/83796
1139         * call.c (convert_like_real): If w're initializing from {} explicitly
1140         call abstract_virtuals_error_sfinae.
1142 2018-01-31  Jason Merrill  <jason@redhat.com>
1143             Jakub Jelinek  <jakub@redhat.com>
1145         PR c++/83993
1146         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1147         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1148         on ADDR_EXPR.
1150 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1152         PR c++/83993
1153         * constexpr.c (diag_array_subscript): Emit different diagnostics
1154         if TYPE_DOMAIN (arraytype) is NULL.
1155         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1156         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1158 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1160         PR c++/84092
1161         * semantics.c (finish_qualified_id_expr): When handling an
1162         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1164 2018-01-31  Marek Polacek  <polacek@redhat.com>
1166         PR c++/84138
1167         * cp-gimplify.c (cp_fold): Check if X is an error node before
1168         calling useless_type_conversion_p.
1170 2018-01-30  Jason Merrill  <jason@redhat.com>
1172         PR c++/84091 - ICE with local class in lambda in template.
1173         * decl2.c (determine_visibility): Look for outer containing template
1174         instantiation.
1176         PR c++/84098 - ICE with lambda in template NSDMI.
1177         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1179 2018-01-29  Jason Merrill  <jason@redhat.com>
1181         PR c++/68810 - wrong location for reinterpret_cast error.
1182         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1183         !dofold.
1185 2018-01-29  Marek Polacek  <polacek@redhat.com>
1187         PR c++/83996
1188         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1189         => fooarray[1] in offset_int.
1191 2018-01-29  Jason Merrill  <jason@redhat.com>
1193         PR c++/83942 - wrong unused warning with static_cast.
1194         * cvt.c (ocp_convert): Call mark_rvalue_use.
1196 2018-01-26  Jason Merrill  <jason@redhat.com>
1198         PR c++/83956 - wrong dtor error with anonymous union
1199         * method.c (walk_field_subobs): Variant members only affect
1200         deletedness.
1201         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1203         PR c++/84036 - ICE with variadic capture.
1204         PR c++/82249
1205         * pt.c (tsubst_pack_expansion): When optimizing a simple
1206         substitution, pull a single pack expansion out of its pack.
1208         PR c++/82514 - ICE with local class in generic lambda.
1209         * pt.c (regenerated_lambda_fn_p): Remove.
1210         (enclosing_instantiation_of): Don't use it.
1211         (tsubst_function_decl): Call enclosing_instantiation_of.
1213         * pt.c (lookup_template_class_1): Add sanity check.
1214         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1216 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1218         PR c++/84031
1219         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1220         recursive calls that return ret.
1221         (cp_finish_decomp): Ignore unnamed bitfields.
1223 2018-01-23  Jason Merrill  <jason@redhat.com>
1225         PR c++/82249 - wrong mismatched pack length error.
1226         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1227         unsubstituted function parameter pack.
1229 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1231         PR c++/83921
1232         * decl.c (check_for_uninitialized_const_var): Not static; add
1233         bool and tsubst_flags_t parameters; adjust to be used both in
1234         constexpr context and not.
1235         * constexpr.c (potential_constant_expression_1): Use the above.
1236         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1238 2018-01-23  Jason Merrill  <jason@redhat.com>
1240         PR c++/83947 - ICE with auto declarations.
1241         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1242         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1244 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1246         PR c++/83974
1247         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1248         for pointer to member function types.
1250 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1252         PR sanitizer/83987
1253         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1254         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1256 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1258         PR c++/83988
1259         * pt.c (tsubst_baselink): Remove optype assert.
1260         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1262 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1264         PR c++/83958
1265         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1266         refers to incomplete type.
1268 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1270         Deprecate ARM-era for scope handling
1271         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1272         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1273         cleared.
1274         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1275         cleanup handling.
1276         * semantics.c (begin_for_scope): Flag_new_for_scope is
1277         boolean-like.
1278         (finish_for_stmt, begin_range_for_stmt): Likewise.
1280 2018-01-22  Jason Merrill  <jason@redhat.com>
1282         PR c++/83720
1283         * decl2.c (determine_visibility): Fix template_decl handling
1284         instead of blocking it.
1286         PR c++/83720 - ICE with lambda and LTO.
1287         * decl2.c (determine_visibility): Clear template_decl for
1288         function-scope decls.  Propagate anonymous linkage from containing
1289         function.
1291 2018-01-22  Marek Polacek  <polacek@redhat.com>
1293         PR c++/81933
1294         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1295         split out anything.
1297 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1299         PR c++/83895
1300         * decl.c (grokdeclarator): Don't diagnose extra parens
1301         on typedefs.
1303 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1305         PR c++/81167
1306         * call.c (joust): Use TREE_TYPE (source) if source is
1307         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1309         PR c++/83919
1310         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1311         for direct enum init.
1312         * decl.c (reshape_init): Likewise.
1314 2018-01-19  Marek Polacek  <polacek@redhat.com>
1316         * constexpr.c (fold_simple): Simplify.
1318 2018-01-18  Jason Merrill  <jason@redhat.com>
1320         PR c++/83714
1321         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1322         * pt.c (instantiation_dependent_scope_ref_p): True if
1323         any_dependent_bases_p.
1325 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1327         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1328         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1330 2018-01-18  Jason Merrill  <jason@redhat.com>
1332         PR c++/82461 - constexpr list-initialized member
1333         * constexpr.c (potential_constant_expression_1): Check
1334         TARGET_EXPR_DIRECT_INIT_P.
1336 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1338         PR c++/81013
1339         * decl.c (xref_basetypes): Early return upon error about derived
1340         union.
1342 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1344         PR c++/83160
1345         * cp-tree.h (mark_use): Declare.
1346         * expr.c (mark_use): Make extern.
1347         * call.c (direct_reference_binding): Set inner conv's
1348         rvaluedness_matches_p, if it is an identity.
1349         (convert_like_real): Mark lvalue or rvalue use for identity as
1350         rvaledness_matches_p demands.
1352 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1354         PR c++/83824
1355         * parser.c (attr_chainon): New function.
1356         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1357         cp_parser_namespace_definition, cp_parser_init_declarator,
1358         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1359         cp_parser_gnu_attributes_opt): Use it.
1360         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1361         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1362         prefix_attributes if attributes is error_mark_node.
1364 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1366         PR c++/78344
1367         * decl.c (grokdeclarator): Do not append the error_mark_node
1368         due to an erroneous optional attribute-specifier-seq.
1370 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1372         PR c++/83897
1373         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1374         CLEANUP_POINT_EXPR.
1376 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1378         PR c++/81054
1379         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1380         error_mark_node when we give an error.
1381         * decl.c (cp_finish_decl): Use the latter.
1383 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1385         PR c++/83287
1386         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1388 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1390         PR c++/83814
1391         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1392         the C++ part.  If processing a template, call
1393         fold_non_dependent_expr rather than fully folding.
1395 2018-01-17  Jason Merrill  <jason@redhat.com>
1397         PR c++/81067 - redundant NULL warning.
1398         * call.c (convert_like_real): Restore null_node handling.
1400 2018-01-17  Jason Merrill  <jason@redhat.com>
1402         PR c++/81843 - ICE with variadic member template.
1403         PR c++/72801
1404         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1405         template args.
1407 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1409         PR c++/83799
1410         * pt.c (type_dependent_expression_p): Strip any location wrapper
1411         before testing tree codes.
1412         (selftest::test_type_dependent_expression_p): New function.
1413         (selftest::cp_pt_c_tests): Call it.
1415 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1417         PR c++/83739
1418         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1419         this not a final instantiation.
1421 2018-01-16  Jason Merrill  <jason@redhat.com>
1423         PR c++/83714 - ICE checking return in template.
1424         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1426 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1428         PR c++/83817
1429         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1430         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1431         instead of CALL_FROM_THUNK_P.
1433         PR c++/83825
1434         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1435         (resort_type_member_vec, set_class_bindings,
1436         insert_late_enum_def_bindings): Use vec qsort method instead of
1437         calling qsort directly.
1439 2018-01-15  Martin Sebor  <msebor@redhat.com>
1441         PR c++/83588
1442         * class.c (find_flexarrays): Make a record of multiple flexible array
1443         members.
1445 2018-01-12  Jason Merrill  <jason@redhat.com>
1447         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1448         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1450 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1452         * cp-tree.h (mark_rvalue_use): Add parm name.
1453         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1454         mark_rvalue_use.
1455         * call.c (convert_like_real): Fix formatting.
1457 2018-01-11  Jason Merrill  <jason@redhat.com>
1459         PR c++/82728 - wrong -Wunused-but-set-variable
1460         PR c++/82799
1461         PR c++/83690
1462         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1463         * decl.c (case_conversion): Likewise.
1464         * semantics.c (finish_static_assert): Call
1465         perform_implicit_conversion_flags.
1467 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1469         * method.c (enum mangling_flags): Delete long-dead enum.
1471 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1473         * parser.c (cp_parser_std_attribute_spec): When
1474         token_pair::require_open / require_close return false simply
1475         return error_mark_node, avoid duplicate cp_parser_error about
1476         expected '(' / ')', respectively.
1478 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1480         PR c++/43486
1481         * call.c (null_ptr_cst_p): Strip location wrappers when
1482         converting from '0' to a pointer type in C++11 onwards.
1483         (conversion_null_warnings): Replace comparison with null_node with
1484         call to null_node_p.
1485         (build_over_call): Likewise.
1486         * cp-gimplify.c (cp_fold): Remove the early bailout when
1487         processing_template_decl.
1488         * cp-lang.c (selftest::run_cp_tests): Call
1489         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1490         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1491         (selftest::run_cp_tests): Move decl to bottom of file.
1492         (null_node_p): New inline function.
1493         (selftest::cp_pt_c_tests): New decl.
1494         (selftest::cp_tree_c_tests): New decl.
1495         * cvt.c (build_expr_type_conversion): Replace comparison with
1496         null_node with call to null_node_p.
1497         * error.c (args_to_string): Likewise.
1498         * except.c (build_throw): Likewise.
1499         * mangle.c (write_expression): Skip location wrapper nodes.
1500         * parser.c (literal_integer_zerop): New function.
1501         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1502         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1503         param of cp_parser_parenthesized_expression_list.  When calling
1504         warn_for_memset, replace integer_zerop calls with
1505         literal_integer_zerop, eliminating the double logical negation
1506         cast to bool.  Eliminate the special-casing for CONST_DECL in
1507         favor of the fold_for_warn within warn_for_memset.
1508         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1509         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1510         maybe_add_location_wrapper on it when wrap_locations_p is true.
1511         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1512         the result for RID_ALIGNOF and RID_SIZEOF.
1513         (cp_parser_builtin_offsetof): Likewise.
1514         * pt.c: Include "selftest.h".
1515         (tsubst_copy): Handle location wrappers.
1516         (tsubst_copy_and_build): Likewise.
1517         (build_non_dependent_expr): Likewise.
1518         (selftest::test_build_non_dependent_expr): New function.
1519         (selftest::cp_pt_c_tests): New function.
1520         * tree.c: Include "selftest.h".
1521         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1522         (selftest::test_lvalue_kind): New function.
1523         (selftest::cp_tree_c_tests): New function.
1524         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1525         (cp_build_binary_op): Replace comparison with null_node with call
1526         to null_node_p.
1527         (build_address): Use location of operand when building address
1528         expression.
1530 2018-01-10  Marek Polacek  <polacek@redhat.com>
1532         PR c++/82541
1533         * call.c (build_conditional_expr_1): Check complain before warning.
1534         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1535         -Wduplicated-branches.
1537 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1539         PR c++/81327
1540         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1541         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1542         args uses and check number of operands too.  Don't strip away any
1543         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1544         Deal with src argument not having pointer type.  Check
1545         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1546         test.
1547         (build_over_call): Call maybe_warn_class_memaccess here on the
1548         original arguments.
1549         (build_cxx_call): Rather than here on converted arguments.
1551 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1553         PR c++/81055
1554         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1555         error_mark_node as second argument.
1557 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1559         PR c++/83734
1560         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1561         in STATEMENT_LIST.  Remove unneeded assert.
1563 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1564             Alan Hayward  <alan.hayward@arm.com>
1565             David Sherwood  <david.sherwood@arm.com>
1567         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1568         VECTOR_CST_NELTS.
1569         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1570         * call.c (build_conditional_expr_1): Likewise.
1571         * decl.c (cp_finish_decomp): Likewise.
1572         * mangle.c (write_type): Likewise.
1573         * typeck.c (structural_comptypes): Likewise.
1574         (cp_build_binary_op): Likewise.
1575         * typeck2.c (process_init_constructor_array): Likewise.
1577 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1579         PR c++/83555
1580         * typeck.c (build_static_cast_1): For static casts to reference types,
1581         call build_base_path with flag_delete_null_pointer_checks as nonnull
1582         instead of always false.  When -fsanitize=null, call
1583         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1584         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1585         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1587 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1589         PR c++/83667
1590         * method.c (make_alias_for): Copy DECL_CONTEXT.
1592 2018-01-03  Marek Polacek  <polacek@redhat.com>
1594         PR c++/83592
1595         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1597 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1599         PR preprocessor/83602
1600         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1601         for builtin macros.
1603         PR c++/83634
1604         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1605         error_mark_node, return error_mark_node.
1607         Update copyright years.
1609 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1611         PR c++/83556
1612         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1613         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1614         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1615         to false and return.
1616         (replace_placeholders): Pass NULL instead of &pset as last argument
1617         to cp_walk_tree.
1619 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1621         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1622         lval var.
1624 Copyright (C) 2018 Free Software Foundation, Inc.
1626 Copying and distribution of this file, with or without modification,
1627 are permitted in any medium without royalty provided the copyright
1628 notice and this notice are preserved.