C++: show private field accessor hints for const accesses (PR c++/84892)
[official-gcc.git] / gcc / cp / ChangeLog
blob74bc9867c1d91c716c9010e2c82567fd1610d5cd
1 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
3         PR c++/84892
4         * search.c (field_accessor_p): Use class_of_this_parm rather than
5         type_of_this_parm, to check that "this" is a "const T *", rather
6         than a "T *const".
8 2018-03-21  Nathan Sidwell  <nathan@acm.org>
10         * class.c (finish_struct_anon_r): Refactor, deprecate anything
11         other than public non-static data members.
12         * parser.c (cp_parser_init_declarator): Deprecate attributes after
13         parenthesized initializer.
15         PR c++/84836
16         * name-lookup.c (update_binding): Correct logic for local binding
17         update.
19 2018-03-21  Marek Polacek  <polacek@redhat.com>
21         PR c++/71638, ICE with NSDMI and reference.
22         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
23         even when we replace an element.
25 2018-03-20  Marek Polacek  <polacek@redhat.com>
27         PR c++/84978, ICE with NRVO.
28         * constexpr.c (cxx_eval_constant_expression): Handle the case when
29         a RESULT_DECL isn't in the hash map.
31 2018-03-20  Jason Merrill  <jason@redhat.com>
33         PR c++/84978, ICE with NRVO.
34         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
35         (cp_get_callee_fndecl_nofold): New.
36         * cp-gimplify.c (cp_genericize_r): Use it instead.
37         * call.c (check_self_delegation): Likewise.
39 2018-03-20  Nathan Sidwell  <nathan@acm.org>
41         PR c++/84962
42         * name-lookup.c (pushdecl_class_level): Push anon-struct's
43         member_vec, if there is one.
45         PR c++/84970
46         * cp-tree.h (lookup_list_keep): Declare.
47         * tree.c (lookup_list_keep): New, broken out of ...
48         (build_min): ... here.  Call it.
49         * decl.c (cp_finish_decl): Call lookup_list_keep.
51 2018-03-19  Jason Merrill  <jason@redhat.com>
53         PR c++/84937 - ICE with class deduction and auto.
54         * pt.c (rewrite_template_parm): Fix auto handling.
56 2018-03-19  Marek Polacek  <polacek@redhat.com>
58         PR c++/84925
59         * pt.c (enclosing_instantiation_of): Check if fn is null.
61         PR c++/84927
62         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
63         as we evaluate the elements.
64         (cxx_eval_constant_expression): Verify constructor's flags
65         unconditionally.
67 2018-03-19  Jason Merrill  <jason@redhat.com>
69         PR c++/71834 - template-id with too few arguments.
70         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
72 2018-03-19  Nathan Sidwell  <nathan@acm.org>
74         PR c++/84835
75         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
76         * pt.c (build_template_decl): Propagate language linkage.
78         PR c++/84812
79         * name-lookup.c (set_local_extern_decl_linkage): Defend against
80         ambiguous lookups.
82 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
84         PR c/84910
85         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
86         diagnostics.
87         * method.c (synthesize_method): Likewise.
88         * pt.c (convert_nontype_argument): Likewise.
90 2018-03-16  Jason Merrill  <jason@redhat.com>
92         PR c++/84720 - ICE with rvalue ref non-type argument.
93         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
94         (convert_nontype_argument): Revert earlier change.
96         PR c++/80227 - SFINAE and negative array size.
97         * decl.c (compute_array_index_type): Use
98         build_converted_constant_expr and valid_constant_size_p.
100         PR c++/84906 - silent wrong code with ambiguous conversion.
101         * call.c (build_user_type_conversion_1): Set need_temporary_p on
102         ambiguous conversion.
103         (convert_like_real): Check it.
105         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
106         * call.c (build_special_member_call): Don't convert an init-list
107         argument directly to the class type.
109 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
111         PR c++/79937
112         PR c++/82410
113         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
114         (find_placeholder): Declare.
115         * tree.c (struct replace_placeholders_t): Add exp member.
116         (replace_placeholders_r): Don't walk into ctors with
117         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
118         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
119         (replace_placeholders): Initialize data.exp.
120         (find_placeholders_r, find_placeholders): New functions.
121         * typeck2.c (process_init_constructor_record,
122         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
123         if adding NSDMI on which find_placeholder returns true.
124         * call.c (build_over_call): Don't call replace_placeholders here.
125         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
126         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
127         TARGET_EXPR_INITIAL.
128         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
129         ctor.
131 2018-03-16  Jason Merrill  <jason@redhat.com>
133         PR c++/83911 - ICE with multiversioned constructor.
134         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
135         dispatchere here.
136         * call.c (build_over_call): Not here.
138 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
140         PR c++/84874
141         * decl.c (reshape_init_class): Don't assert d->cur->index == field
142         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
144 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
146         PR c++/84222
147         * cp-tree.h (cp_warn_deprecated_use): Declare.
148         * tree.c (cp_warn_deprecated_use): New function.
149         * typeck2.c (build_functional_cast): Use it.
150         * decl.c (grokparms): Likewise.
151         (grokdeclarator): Likewise.  Temporarily push nested class scope
152         around grokparms call for out of class member definitions.
154 2018-03-14  Jason Merrill  <jason@redhat.com>
156         PR c++/84820 - no error for invalid qualified-id.
157         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
158         cp_error_declarator.
160         PR c++/84801 - ICE with unexpanded pack in lambda.
161         * pt.c (check_for_bare_parameter_packs): Don't return early for a
162         lambda in non-template context.
164         PR c++/81236 - auto variable and auto function
165         * pt.c (tsubst_baselink): Update the type of the BASELINK after
166         mark_used.
168 2018-03-14  Jason Merrill  <jason@redhat.com>
170         PR c++/83916 - ICE with template template parameters.
171         * pt.c (convert_template_argument): Don't substitute into type of
172         non-type parameter if we don't have enough arg levels.
173         (unify): Likewise.
175 2018-03-14  Marek Polacek  <polacek@redhat.com>
177         PR c++/84596
178         * semantics.c (finish_static_assert): Check
179         instantiation_dependent_expression_p instead of
180         {type,value}_dependent_expression_p.
182 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
183             Jason Merrill  <jason@redhat.com>
185         PR c++/82336 - link error with list-init default argument.
186         * decl.c (check_default_argument): Unshare an initializer list.
188 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
190         PR c++/84843
191         * decl.c (duplicate_decls): For redefinition of built-in, use error
192         and return error_mark_node.  For redeclaration, return error_mark_node
193         rather than olddecl if !flag_permissive.
195 2018-03-13  Jason Merrill  <jason@redhat.com>
197         PR c++/82565 - ICE with concepts and generic lambda.
198         * pt.c (instantiate_decl): Clear fn_context for lambdas.
200 2018-03-13  Jason Merrill  <jason@redhat.com>
202         PR c++/84720 - ICE with rvalue ref non-type argument.
203         * pt.c (convert_nontype_argument): Handle rvalue references.
205         PR c++/84839 - ICE with decltype of parameter pack.
206         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
207         instantiating dummy parms.
209         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
210         parameter even without -Wpedantic.
212         PR c++/84798 - ICE with auto in abstract function declarator.
213         * parser.c (cp_parser_parameter_declaration_clause): Check
214         parser->default_arg_ok_p.
216 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
218         PR c++/84808
219         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
220         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
221         sizetype.  Formatting fixes.
223 2018-03-12  Jason Merrill  <jason@redhat.com>
225         PR c++/84355 - ICE with deduction for member class template.
226         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
227         CLASS_PLACEHOLDER_TEMPLATE.
229         PR c++/84802 - ICE capturing uninstantiated class.
230         * lambda.c (build_capture_proxy): Call complete_type.
232 2018-03-09  Jason Merrill  <jason@redhat.com>
234         PR c++/84770 - ICE with typedef and parameter pack.
235         * pt.c (verify_unstripped_args_1): Split out from
236         verify_unstripped_args.
238         PR c++/84785 - ICE with alias template and default targs.
239         * pt.c (type_unification_real): Set processing_template_decl if
240         saw_undeduced == 1.
242         PR c++/84752 - ICE with capture of constexpr array.
243         * call.c (standard_conversion): Set rvaluedness_matches_p on the
244         identity conversion under ck_lvalue.
246 2018-03-09  Jason Merrill  <jason@redhat.com>
247             Paolo Carlini  <paolo.carlini@oracle.com>
249         PR c++/71169
250         PR c++/71832
251         * pt.c (any_erroneous_template_args_p): New.
252         * cp-tree.h (any_erroneous_template_args_p): Declare it.
253         * parser.c (cp_parser_class_specifier_1): Use it.
255 2018-03-09  Jason Merrill  <jason@redhat.com>
257         PR c++/84726 - unnecessary capture of constant vars.
258         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
259         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
260         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
261         * lambda.c (is_constant_capture_proxy)
262         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
263         (prune_lambda_captures): New.
264         (finish_lambda_function): Call prune_lambda_captures.
266 2018-03-09  Jason Merrill  <jason@redhat.com>
267             Jakub Jelinek  <jakub@redhat.com>
269         PR c++/84076
270         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
271         build ADDR_EXPR with REFERENCE_TYPE.
272         (build_over_call): For purposes of check_function_arguments, if
273         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
274         its operand rather than the argument itself.
276 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
278         PR c++/84724
279         * decl.c (duplicate_decls): Don't override __* prefixed builtins
280         except for __[^b]*_chk, instead issue permerror and for -fpermissive
281         also a note and return olddecl.
283 2018-03-09  Nathan Sidwell  <nathan@acm.org>
285         PR c++/84733
286         * name-lookup.c (do_pushdecl_with_scope): Only clear
287         current_function_decl when pushing a non-class (i.e. namespace)
288         scope.
290 2018-03-08  Jason Merrill  <jason@redhat.com>
291             Jakub Jelinek  <jakub@redhat.com>
293         PR c++/80598
294         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
295         not calling mark_used for the benefit of -Wunused-function warning.
297 2018-03-06  Jason Merrill  <jason@redhat.com>
299         * lambda.c (is_capture_proxy_with_ref): Remove.
300         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
302 2018-03-06  Marek Polacek  <polacek@redhat.com>
304         PR c++/84684
305         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
306         arguments.
308 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
310         PR c++/84231
311         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
312         only while processing template decls.
313         * typeck.c (build_x_conditional_expr): Move wrapping of
314         reference type around type...
315         * call.c (build_conditional_expr_1): ... here.  Rename
316         is_lvalue to is_glvalue.
317         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
318         INDIRECT_REF of COND_EXPR too.
320         PR c++/84593
321         * init.c (build_zero_init_1): Zero-initialize references.
323         PR c++/84492
324         * semantics.c (finish_stmt_expr_expr): Reject unresolved
325         overloads used as stmt expr values.
327 2018-03-05  Jason Merrill  <jason@redhat.com>
329         PR c++/84708 - ICE with lambda in local class NSDMI.
330         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
331         context.
333 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
335         PR c++/84684
336         * constexpr.c (constexpr_call_hasher::equal): Return false if
337         lhs->hash != rhs->hash.  Change return 1 to return true and
338         return 0 to return false.
340 2018-03-05  Nathan Sidwell  <nathan@acm.org>
342         PR c++/84702
343         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
345 2018-03-05  Marek Polacek  <polacek@redhat.com>
347         PR c++/84707
348         * decl.c (duplicate_decls): Check DECL_NAME before accessing
349         UDLIT_OPER_P.
351 2018-03-05  Nathan Sidwell  <nathan@acm.org>
353         PR c++/84694
354         * friend.c (do_friend): Restore check for identifier_p inside
355         TEMPLATE_ID_EXPR.
357 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
359         PR c++/84618
360         * parser.c (cp_parser_lambda_introducer): Reject any capture not
361         involving a VAR_DECL or a PARM_DECL.
363 2018-03-05  Pádraig Brady  <P@draigBrady.com>
364             Jason  Merrill  <jason@redhat.com>
365             Nathan Sidwell  <nathan@acm.org>
367         PR c++/84497
368         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
370 2018-03-03  Jason Merrill  <jason@redhat.com>
372         PR c++/84686 - missing volatile loads.
373         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
375 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
377         PR c++/71464
378         * optimize.c (maybe_thunk_body): Bail out immediately if either
379         fns[0] or fns[1] is null.
381 2018-03-02  Marek Polacek  <polacek@redhat.com>
383         PR c++/84578
384         * constexpr.c (get_array_or_vector_nelts): New.
385         (cxx_eval_array_reference): Use it.
386         (cxx_eval_vec_init_1): Likewise.
387         (cxx_eval_store_expression): Likewise.
389 2018-03-02  Jason Merrill  <jason@redhat.com>
391         * semantics.c (force_paren_expr): Remove redundant test.
393 2018-03-02  Marek Polacek  <polacek@redhat.com>
395         PR c++/84663
396         * decl.c (cp_complete_array_type): Check error_mark_node.
398         PR c++/84664
399         * typeck.c (cp_perform_integral_promotions): Check the result of
400         mark_rvalue_use.
402 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
404         PR c++/84662
405         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
406         RETURN instead of return.
407         <case POINTER_PLUS_EXPR>: Likewise.
408         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
409         it instead of wrapping it into CONVERT_EXPR.
411 2018-03-02  Jason Merrill  <jason@redhat.com>
413         Fix MIPS16 ICE.
414         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
416 2018-03-02  Marek Polacek  <polacek@redhat.com>
418         PR c++/84590
419         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
420         wrapped in VIEW_CONVERT_EXPR.
422 2018-03-01  Martin Sebor  <msebor@redhat.com>
424         PR c++/84294
425         * decl.c (check_redeclaration_no_default_args): Merge attributes
426         specified on redeclarations of the same function template.
427         Remove dead code.
429 2018-03-01  Marek Polacek  <polacek@redhat.com>
430             Jason Merrill  <jason@redhat.com>
432         PR c++/84582
433         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
434         a template.
435         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
436         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
437         of instantiate_non_dependent_expr.
438         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
440 2018-03-01  Nathan Sidwell  <nathan@acm.org>
442         PR c++/84434
443         * name-lookup.c (member_vec_dedup): Remove manually peeled
444         iteration.  Ignore dependent ctor inheritance.
446 2018-03-01  Jason Merrill  <jason@redhat.com>
448         PR c++/71569 - decltype of template.
449         * parser.c (cp_parser_decltype_expr): Handle missing template args.
451 2018-03-01  Marek Polacek  <polacek@redhat.com>
453         PR c++/84596
454         * constexpr.c (require_rvalue_constant_expression): New function.
455         * cp-tree.h: Declare it.
456         * semantics.c (finish_static_assert): Use it instead of
457         require_potential_rvalue_constant_expression.
459 2018-03-01  Jason Merrill  <jason@redhat.com>
460             Alexandre Oliva <aoliva@redhat.com>
462         PR c++/71569 - ICE with redundant args on member variable template.
463         * decl.c (start_decl): Handle partial specialization of member
464         variable template.
465         * pt.c (determine_specialization): Allow partial specialization
466         of member variable template without specializing enclosing class.
467         (process_partial_specialization): Improve error message.
469 2018-02-28  Jason Merrill  <jason@redhat.com>
471         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
472         * pt.c (determine_specialization): Check ref-qualifier.
474 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
476         PR c++/84609
477         * parser.c (cp_parser_attributes_opt): Formatting fix.
478         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
479         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
480         New functions.
481         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
482         instead of tentative parse to peek over optional attribute tokens
483         to check for CPP_COLON after them.
485         PR c++/83871
486         PR c++/83503
487         * pt.c (INCLUDE_STRING): Remove define.
488         (warn_spec_missing_attributes): Use pretty_printer instead of
489         std::string.  Fix up inform call so that the list of attributes
490         is in %s argument.
492 2018-02-28  Martin Sebor  <msebor@redhat.com>
494         PR testsuite/84617
495         * decl.c (duplicate_decls): Fully merge attributes const, pure,
496         and malloc.
498 2018-02-28  Nathan Sidwell  <nathan@acm.org>
500         PR c++/84602
501         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
502         * name-lookup.c (fields_linear_search): Look in an anon-aggr
503         regardless of want_type.
504         (search_anon_aggr): Just use get_class_binding_direct.
506 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
508         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
509         inform_n.
511 2018-02-27  Martin Sebor  <msebor@redhat.com>
513         * pt.c: Avoid including <string> directly.
515 2018-02-27  Martin Sebor  <msebor@redhat.com>
517         PR c++/83871
518         PR c++/83503
519         * cp-tree.h (warn_spec_missing_attributes): New function.
520         ((check_explicit_specialization): Add an argument.  Call the above
521         function.
522         * decl.c (duplicate_decls): Avoid applying primary function template's
523         attributes to its explicit specializations.
524         cp/pt.c (warn_spec_missing_attributes): Define.
526 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
528         PR c++/71546 - lambda init-capture with qualified-id.
529         * parser.c (cp_parser_lambda_introducer): Clear scope after
530         each lambda capture.
532 2018-02-27  Nathan Sidwell  <nathan@acm.org>
534         PR c++/84426
535         * name-lookup.h (get_member_slot): Rename ...
536         (find_member_slot): ... here.
537         (add_member_slot): New.
538         * name-lookup.c (member_vec_linear_search): No need to check for
539         NULL slot.
540         (get_member_slot): Rename ...
541         (find_member_slot): ... here.  Don't add slot for incomplete class.
542         (add_member_slot): New.
543         * class.c (add_method): Adjust get_member_slot rename.  Bail out
544         if push_class_level_binding fails.  Create slot and grok
545         properties once we're committed to insertion.
547 2018-02-27  Jason Merrill  <jason@redhat.com>
549         PR c++/84489 - dependent default template argument
550         * pt.c (type_unification_real): Handle early substitution failure.
552 2018-02-26  Jason Merrill  <jason@redhat.com>
554         PR c++/84560 - ICE capturing multi-dimensional VLA.
555         * tree.c (array_of_runtime_bound_p): False if the element is
556         variably-modified.
558         PR c++/84441 - ICE with base initialized from ?:
559         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
561         PR c++/84520 - ICE with generic lambda in NSDMI.
562         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
563         'this' in a generic lambda instantiation.
565         PR c++/84559 - ICE with constexpr VLA.
566         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
567         for constexpr variable with VLA type.
569 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
571         PR c++/84558
572         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
573         a valid constant initializer.  Formatting fixes.
575 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
577         PR c++/84540
578         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
579         returning NULL_TREE.
580         (apply_late_template_attributes): Likewise.
582 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
584         PR c++/84557
585         * parser.c (cp_parser_omp_var_list_no_open): Only call
586         cp_parser_lookup_name_simple on names satisfying identifier_p.
587         (cp_parser_oacc_routine): Likewise.
589 2018-02-26  Jason Merrill  <jason@redhat.com>
591         PR c++/84551 - ICE with concepts and -g.
592         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
594 2018-02-26  Marek Polacek  <polacek@redhat.com>
596         PR c++/84325
597         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
598         non-types.
600 2018-02-26  Jason Merrill  <jason@redhat.com>
602         PR c++/84447 - ICE with deleted inherited ctor with default arg.
603         * call.c (build_over_call): Handle deleted functions in one place.
605 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
607         PR c++/84533
608         * decl.c (redeclaration_error_message): Don't try to use
609         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
611 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
613         * lambda.c (build_capture_proxy): Define static.
614         * cp-tree.h (build_capture_proxy): Remove.
616 2018-02-26  Marek Polacek  <polacek@redhat.com>
618         PR c++/84537
619         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
620         if name is error node.
622 2018-02-25  Jason Merrill  <jason@redhat.com>
624         PR c++/84015 - ICE with class deduction and auto template parm.
625         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
627 2018-02-24  Marek Polacek  <polacek@redhat.com>
629         PR c++/83692
630         * constexpr.c (maybe_constant_init_1): New function.
631         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
632         (cxx_constant_init): New function.
633         * cp-tree.h (cxx_constant_init): Declare.
634         * typeck2.c (store_init_value): Call cxx_constant_init instead of
635         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
637 2018-02-22  Jason Merrill  <jason@redhat.com>
639         PR c++/70468 - ICE with constructor delegation via typedef.
640         * pt.c (tsubst_initializer_list): Check for other mem-initializers
641         with constructor delegation.
643 2018-02-22  Jason Merrill  <jason@redhat.com>
645         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
646         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
647         VECTOR_TYPE.
649 2018-02-22  Marek Polacek  <polacek@redhat.com>
651         PR c++/84493
652         * parser.c (cp_parser_braced_list): Use require_open instead of
653         consume_open.
655 2018-02-21  Jason Merrill  <jason@redhat.com>
657         PR c++/84454 - ICE with pack expansion in signature.
658         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
660 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
662         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
663         IF_STMT.
665 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
667         PR c++/84446
668         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
669         on error_mark_node.
671 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
673         PR c++/84445
674         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
675         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
677         PR c++/84449
678         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
679         returns error_mark_node, return it immediately.
680         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
681         error_mark_node, return error_mark_node.
683         PR c++/84455
684         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
685         function_depth to avoid GC during finish_lambda_function.
687 2018-02-19  Jason Merrill  <jason@redhat.com>
689         PR c++/84429 - ICE capturing VLA.
690         * lambda.c (build_capture_proxy): Handle reference refs.
692 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
694         PR c++/84448
695         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
696         either operand is error_mark_node, set current.lhs to that instead of
697         creating a binary op with error_mark_node operands.
699         PR c++/84430
700         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
702 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
704         PR c++/84348
705         * decl.c (grokdeclarator): Early return error_mark_node upon
706         ill-formed friend declaration.
708 2018-02-16  Marek Polacek  <polacek@redhat.com>
709             Jakub Jelinek  <jakub@redhat.com>
711         PR c++/84192
712         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
713         set *jump_target to anything if jump_target is NULL.
715 2018-02-16  Jason Merrill  <jason@redhat.com>
717         PR c++/84151 - unnecessary volatile load with static member.
718         * call.c (build_new_method_call_1): Avoid loading from a volatile
719         lvalue used as the object argument for a static member function.
721         PR c++/81853 - using-directive and constexpr.
722         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
724         PR c++/84420 - ICE with structured binding in lambda.
725         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
727         PR c++/83835 - C++17 error with constructor ctors.
728         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
730         PR c++/82664 - ICE with reference to function template parm.
731         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
732         NOP_EXPRs.
734         PR c++/82764 - C++17 ICE with empty base
735         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
737 2018-02-16  Jason Merrill  <jason@redhat.com>
739         PR c++/84421 - type-dependent if constexpr
740         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
742 2018-02-16  Nathan Sidwell  <nathan@acm.org>
744         Deprecate -ffriend-injection.
745         * decl.c (cxx_init_decl_processing): Emit warning on option.
746         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
747         friend.
749 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
751         PR c++/82468
752         * decl.c (check_special_function_return_type): Reject template
753         template parameter in deduction guide.
755 2018-02-16  Nathan Sidwell  <nathan@acm.org>
757         PR c++/84375
758         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
760 2018-02-15  Jason Merrill  <jason@redhat.com>
762         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
763         * call.c (convert_like_real): Don't use the copy-list-initialization
764         shortcut for ck_base.
766         PR c++/84045 - ICE with typedef and noexcept.
767         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
769         PR c++/84376 - ICE with omitted template arguments.
770         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
772         PR c++/84368 - wrong error with local variable in variadic lambda.
773         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
774         local_specializations.
776 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
778         PR c++/84330
779         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
780         as first argument.
782 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
784         PR c++/84350
785         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
786         init, early return.
788 2018-02-14  Nathan Sidwell  <nathan@acm.org>
790         * decl2.c (mark_vtable_entries): Set input_location to decl's.
791         (c_parse_final_cleanups): Restore input_location after emitting
792         vtables.
794 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
796         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
797         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
798         auto_deduction_context, tree, int): Add defaults.
799         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
800         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
801         tsubst_flags_t argument.
802         * init.c (build_new): Likewise.
804 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
806         PR c++/84364
807         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
808         about return other than *this in assignment operators if
809         retval is type dependent expression.
811 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
813         PR c++/84333
814         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
815         save_expr for the G++ extension.
817 2018-02-13  Jason Merrill  <jason@redhat.com>
819         PR c++/84080 - ICE with return type deduction and specialization.
820         * pt.c (determine_specialization): Check uses_template_parms.
822         Fix more variadic capture issues.
823         * pt.c (find_parameter_packs_r): Also look at explicit captures.
824         (check_for_bare_parameter_packs): Check current_class_type for
825         lambda context.
826         (extract_locals_r): Handle seeing a full instantiation of a pack.
827         (tsubst_pack_expansion): Likewise.  Force lambda capture.
828         * parser.c (cp_parser_lambda_introducer): Don't
829         check_for_bare_parameter_packs.
831         PR c++/84338 - wrong variadic sizeof.
832         * pt.c (argument_pack_select_arg): Like the macro, but look through
833         a pack expansion.
834         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
835         (extract_fnparm_pack): Do make_pack_expansion.
836         (extract_locals_r): Do strip a pack expansion.
837         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
839 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
841         PR c++/84341
842         * parser.c (cp_parser_binary_expression): Use build_min instead of
843         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
845 2018-02-12  Nathan Sidwell  <nathan@acm.org>
847         PR c++/84263
848         * parser.c (cp_parser_decltype): Push and pop
849         deferring_access_checks.  Reorganize to avoid goto.
851 2018-02-12  Richard Biener  <rguenther@suse.de>
853         PR c++/84281
854         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
855         uniform constructors and delay allocating them fully.
857 2018-02-09  Jason Merrill  <jason@redhat.com>
859         PR c++/84036 - ICE with variadic capture.
860         Handle variadic capture proxies more like non-variadic.
861         * lambda.c (build_capture_proxy): Remove workaround.
862         * pt.c (find_parameter_packs_r): The proxy is a pack.
863         (instantiate_class_template_1): Remove dead lambda code.
864         (extract_fnparm_pack): Don't make_pack_expansion.
865         (extract_locals_r): Don't strip a pack expansion.
866         (tsubst_pack_expansion): Handle proxy packs.  Use
867         PACK_EXPANSION_EXTRA_ARGS less.
868         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
869         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
870         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
871         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
872         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
874 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
876         PR sanitizer/83987
877         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
879 2018-02-09  Jason Merrill  <jason@redhat.com>
881         PR c++/81917 - ICE with void_t and partial specialization.
882         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
883         calling most_specialized_partial_spec.
885 2018-02-09  Nathan Sidwell  <nathan@acm.org>
887         PR c/84293
888         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
889         Pass expr location to strict_aliasing_warning.
891 2018-02-09  Jason Merrill  <jason@redhat.com>
893         PR c++/84296 - ICE with qualified-id in template.
894         PR c++/83714
895         * pt.c (unknown_base_ref_p): New.
896         (instantiation_dependent_scope_ref_p): Use it instead of
897         any_dependent_bases_p.
899 2018-02-09  Marek Polacek  <polacek@redhat.com>
900             Jakub Jelinek  <jakub@redhat.com>
902         PR c++/83659
903         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
904         fold_indirect_ref_1, including poly_*int64.  Verify first that
905         tree_fits_poly_int64_p (op01).  Formatting fixes.
907 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
909         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
910         * lambda.c (build_capture_proxy): Likewise.
911         * search.c (field_access_p): Likewise.
912         * semantics.c (omp_clause_decl, omp_privatize_field,
913         finish_omp_clauses): Likewise.
915 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
917         PR c++/83806
918         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
919         case of nullptr too.
921 2018-02-08  Nathan Sidwell  <nathan@acm.org>
923         * class.c (finish_struct): Fix std:initializer_list diagnostic
924         formatting.
926 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
928         PR c++/83204
929         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
931 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
933         PR c++/84082
934         * parser.c (cp_parser_dot_deref_incomplete): New function.
935         (cp_parser_postfix_dot_deref_expression): Use it.
937 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
939         PR c++/81610
940         PR c++/80567
941         * name-lookup.c (suggest_rid_p): New function.
942         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
943         suggest_rid_p.
945 2018-02-07  Jason Merrill  <jason@redhat.com>
947         PR c++/84182 - ICE with captured lambda
948         PR c++/84181
949         * pt.c (extract_locals_r, extract_local_specs): New.
950         (tsubst_pack_expansion): Use them.
952 2018-02-07  Martin Liska  <mliska@suse.cz>
954         PR c++/84059.
955         * class.c (add_method): Append argument value.
956         * cp-tree.h (maybe_version_functions): Add new argument.
957         * decl.c (decls_match): Call it if a declaration does not
958         have DECL_FUNCTION_VERSIONED.
959         (maybe_version_functions): record argument is added.
961 2018-02-05  Marek Polacek  <polacek@redhat.com>
963         * class.c: Remove unused global variables.
964         (build_primary_vtable): Don't gather statistics.
965         (print_class_statistics): Remove.
966         * cp-tree.h (print_class_statistics): Remove.
967         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
969 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
971         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
972         * constexpr.c (cx_check_missing_mem_inits): Likewise.
973         * decl.c (next_initializable_field, find_decomp_class_base,
974         cp_finish_decomp): Likewise.
975         * typeck2.c (process_init_constructor_record): Likewise.
977 2018-02-02  Jason Merrill  <jason@redhat.com>
979         PR c++/84181 - ICE with lambda parm in template argument.
980         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
982 2018-02-01  Jason Merrill  <jason@redhat.com>
984         PR c++/84160 - ICE with nested variadic capture.
985         * lambda.c (is_capture_proxy_with_ref): New.
986         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
987         COMPONENT_REF.
988         * expr.c (mark_use): Use is_capture_proxy_with_ref.
989         * constexpr.c (potential_constant_expression_1): Likewise.
990         * semantics.c (process_outer_var_ref): Likewise.
992 2018-02-01  Marek Polacek  <polacek@redhat.com>
994         PR c++/84125
995         * typeck.c (build_address): Relax the assert when
996         processing_template_decl.
998 2018-02-01  Jason Merrill  <jason@redhat.com>
1000         PR c++/84126 - ICE with variadic generic lambda
1001         PR c++/84036
1002         PR c++/82249
1003         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1004         PACK_EXPANSION_EXTRA_ARGS.
1006 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1008         PR c++/83796
1009         * call.c (convert_like_real): If w're initializing from {} explicitly
1010         call abstract_virtuals_error_sfinae.
1012 2018-01-31  Jason Merrill  <jason@redhat.com>
1013             Jakub Jelinek  <jakub@redhat.com>
1015         PR c++/83993
1016         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1017         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1018         on ADDR_EXPR.
1020 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1022         PR c++/83993
1023         * constexpr.c (diag_array_subscript): Emit different diagnostics
1024         if TYPE_DOMAIN (arraytype) is NULL.
1025         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1026         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1028 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1030         PR c++/84092
1031         * semantics.c (finish_qualified_id_expr): When handling an
1032         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1034 2018-01-31  Marek Polacek  <polacek@redhat.com>
1036         PR c++/84138
1037         * cp-gimplify.c (cp_fold): Check if X is an error node before
1038         calling useless_type_conversion_p.
1040 2018-01-30  Jason Merrill  <jason@redhat.com>
1042         PR c++/84091 - ICE with local class in lambda in template.
1043         * decl2.c (determine_visibility): Look for outer containing template
1044         instantiation.
1046         PR c++/84098 - ICE with lambda in template NSDMI.
1047         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1049 2018-01-29  Jason Merrill  <jason@redhat.com>
1051         PR c++/68810 - wrong location for reinterpret_cast error.
1052         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1053         !dofold.
1055 2018-01-29  Marek Polacek  <polacek@redhat.com>
1057         PR c++/83996
1058         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1059         => fooarray[1] in offset_int.
1061 2018-01-29  Jason Merrill  <jason@redhat.com>
1063         PR c++/83942 - wrong unused warning with static_cast.
1064         * cvt.c (ocp_convert): Call mark_rvalue_use.
1066 2018-01-26  Jason Merrill  <jason@redhat.com>
1068         PR c++/83956 - wrong dtor error with anonymous union
1069         * method.c (walk_field_subobs): Variant members only affect
1070         deletedness.
1071         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1073         PR c++/84036 - ICE with variadic capture.
1074         PR c++/82249
1075         * pt.c (tsubst_pack_expansion): When optimizing a simple
1076         substitution, pull a single pack expansion out of its pack.
1078         PR c++/82514 - ICE with local class in generic lambda.
1079         * pt.c (regenerated_lambda_fn_p): Remove.
1080         (enclosing_instantiation_of): Don't use it.
1081         (tsubst_function_decl): Call enclosing_instantiation_of.
1083         * pt.c (lookup_template_class_1): Add sanity check.
1084         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1086 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1088         PR c++/84031
1089         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1090         recursive calls that return ret.
1091         (cp_finish_decomp): Ignore unnamed bitfields.
1093 2018-01-23  Jason Merrill  <jason@redhat.com>
1095         PR c++/82249 - wrong mismatched pack length error.
1096         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1097         unsubstituted function parameter pack.
1099 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1101         PR c++/83921
1102         * decl.c (check_for_uninitialized_const_var): Not static; add
1103         bool and tsubst_flags_t parameters; adjust to be used both in
1104         constexpr context and not.
1105         * constexpr.c (potential_constant_expression_1): Use the above.
1106         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1108 2018-01-23  Jason Merrill  <jason@redhat.com>
1110         PR c++/83947 - ICE with auto declarations.
1111         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1112         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1114 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1116         PR c++/83974
1117         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1118         for pointer to member function types.
1120 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1122         PR sanitizer/83987
1123         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1124         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1126 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1128         PR c++/83988
1129         * pt.c (tsubst_baselink): Remove optype assert.
1130         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1132 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1134         PR c++/83958
1135         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1136         refers to incomplete type.
1138 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1140         Deprecate ARM-era for scope handling
1141         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1142         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1143         cleared.
1144         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1145         cleanup handling.
1146         * semantics.c (begin_for_scope): Flag_new_for_scope is
1147         boolean-like.
1148         (finish_for_stmt, begin_range_for_stmt): Likewise.
1150 2018-01-22  Jason Merrill  <jason@redhat.com>
1152         PR c++/83720
1153         * decl2.c (determine_visibility): Fix template_decl handling
1154         instead of blocking it.
1156         PR c++/83720 - ICE with lambda and LTO.
1157         * decl2.c (determine_visibility): Clear template_decl for
1158         function-scope decls.  Propagate anonymous linkage from containing
1159         function.
1161 2018-01-22  Marek Polacek  <polacek@redhat.com>
1163         PR c++/81933
1164         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1165         split out anything.
1167 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1169         PR c++/83895
1170         * decl.c (grokdeclarator): Don't diagnose extra parens
1171         on typedefs.
1173 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1175         PR c++/81167
1176         * call.c (joust): Use TREE_TYPE (source) if source is
1177         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1179         PR c++/83919
1180         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1181         for direct enum init.
1182         * decl.c (reshape_init): Likewise.
1184 2018-01-19  Marek Polacek  <polacek@redhat.com>
1186         * constexpr.c (fold_simple): Simplify.
1188 2018-01-18  Jason Merrill  <jason@redhat.com>
1190         PR c++/83714
1191         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1192         * pt.c (instantiation_dependent_scope_ref_p): True if
1193         any_dependent_bases_p.
1195 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1197         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1198         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1200 2018-01-18  Jason Merrill  <jason@redhat.com>
1202         PR c++/82461 - constexpr list-initialized member
1203         * constexpr.c (potential_constant_expression_1): Check
1204         TARGET_EXPR_DIRECT_INIT_P.
1206 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1208         PR c++/81013
1209         * decl.c (xref_basetypes): Early return upon error about derived
1210         union.
1212 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1214         PR c++/83160
1215         * cp-tree.h (mark_use): Declare.
1216         * expr.c (mark_use): Make extern.
1217         * call.c (direct_reference_binding): Set inner conv's
1218         rvaluedness_matches_p, if it is an identity.
1219         (convert_like_real): Mark lvalue or rvalue use for identity as
1220         rvaledness_matches_p demands.
1222 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1224         PR c++/83824
1225         * parser.c (attr_chainon): New function.
1226         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1227         cp_parser_namespace_definition, cp_parser_init_declarator,
1228         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1229         cp_parser_gnu_attributes_opt): Use it.
1230         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1231         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1232         prefix_attributes if attributes is error_mark_node.
1234 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1236         PR c++/78344
1237         * decl.c (grokdeclarator): Do not append the error_mark_node
1238         due to an erroneous optional attribute-specifier-seq.
1240 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1242         PR c++/83897
1243         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1244         CLEANUP_POINT_EXPR.
1246 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1248         PR c++/81054
1249         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1250         error_mark_node when we give an error.
1251         * decl.c (cp_finish_decl): Use the latter.
1253 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1255         PR c++/83287
1256         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1258 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1260         PR c++/83814
1261         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1262         the C++ part.  If processing a template, call
1263         fold_non_dependent_expr rather than fully folding.
1265 2018-01-17  Jason Merrill  <jason@redhat.com>
1267         PR c++/81067 - redundant NULL warning.
1268         * call.c (convert_like_real): Restore null_node handling.
1270 2018-01-17  Jason Merrill  <jason@redhat.com>
1272         PR c++/81843 - ICE with variadic member template.
1273         PR c++/72801
1274         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1275         template args.
1277 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1279         PR c++/83799
1280         * pt.c (type_dependent_expression_p): Strip any location wrapper
1281         before testing tree codes.
1282         (selftest::test_type_dependent_expression_p): New function.
1283         (selftest::cp_pt_c_tests): Call it.
1285 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1287         PR c++/83739
1288         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1289         this not a final instantiation.
1291 2018-01-16  Jason Merrill  <jason@redhat.com>
1293         PR c++/83714 - ICE checking return in template.
1294         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1296 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1298         PR c++/83817
1299         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1300         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1301         instead of CALL_FROM_THUNK_P.
1303         PR c++/83825
1304         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1305         (resort_type_member_vec, set_class_bindings,
1306         insert_late_enum_def_bindings): Use vec qsort method instead of
1307         calling qsort directly.
1309 2018-01-15  Martin Sebor  <msebor@redhat.com>
1311         PR c++/83588
1312         * class.c (find_flexarrays): Make a record of multiple flexible array
1313         members.
1315 2018-01-12  Jason Merrill  <jason@redhat.com>
1317         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1318         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1320 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1322         * cp-tree.h (mark_rvalue_use): Add parm name.
1323         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1324         mark_rvalue_use.
1325         * call.c (convert_like_real): Fix formatting.
1327 2018-01-11  Jason Merrill  <jason@redhat.com>
1329         PR c++/82728 - wrong -Wunused-but-set-variable
1330         PR c++/82799
1331         PR c++/83690
1332         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1333         * decl.c (case_conversion): Likewise.
1334         * semantics.c (finish_static_assert): Call
1335         perform_implicit_conversion_flags.
1337 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1339         * method.c (enum mangling_flags): Delete long-dead enum.
1341 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1343         * parser.c (cp_parser_std_attribute_spec): When
1344         token_pair::require_open / require_close return false simply
1345         return error_mark_node, avoid duplicate cp_parser_error about
1346         expected '(' / ')', respectively.
1348 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1350         PR c++/43486
1351         * call.c (null_ptr_cst_p): Strip location wrappers when
1352         converting from '0' to a pointer type in C++11 onwards.
1353         (conversion_null_warnings): Replace comparison with null_node with
1354         call to null_node_p.
1355         (build_over_call): Likewise.
1356         * cp-gimplify.c (cp_fold): Remove the early bailout when
1357         processing_template_decl.
1358         * cp-lang.c (selftest::run_cp_tests): Call
1359         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1360         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1361         (selftest::run_cp_tests): Move decl to bottom of file.
1362         (null_node_p): New inline function.
1363         (selftest::cp_pt_c_tests): New decl.
1364         (selftest::cp_tree_c_tests): New decl.
1365         * cvt.c (build_expr_type_conversion): Replace comparison with
1366         null_node with call to null_node_p.
1367         * error.c (args_to_string): Likewise.
1368         * except.c (build_throw): Likewise.
1369         * mangle.c (write_expression): Skip location wrapper nodes.
1370         * parser.c (literal_integer_zerop): New function.
1371         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1372         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1373         param of cp_parser_parenthesized_expression_list.  When calling
1374         warn_for_memset, replace integer_zerop calls with
1375         literal_integer_zerop, eliminating the double logical negation
1376         cast to bool.  Eliminate the special-casing for CONST_DECL in
1377         favor of the fold_for_warn within warn_for_memset.
1378         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1379         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1380         maybe_add_location_wrapper on it when wrap_locations_p is true.
1381         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1382         the result for RID_ALIGNOF and RID_SIZEOF.
1383         (cp_parser_builtin_offsetof): Likewise.
1384         * pt.c: Include "selftest.h".
1385         (tsubst_copy): Handle location wrappers.
1386         (tsubst_copy_and_build): Likewise.
1387         (build_non_dependent_expr): Likewise.
1388         (selftest::test_build_non_dependent_expr): New function.
1389         (selftest::cp_pt_c_tests): New function.
1390         * tree.c: Include "selftest.h".
1391         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1392         (selftest::test_lvalue_kind): New function.
1393         (selftest::cp_tree_c_tests): New function.
1394         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1395         (cp_build_binary_op): Replace comparison with null_node with call
1396         to null_node_p.
1397         (build_address): Use location of operand when building address
1398         expression.
1400 2018-01-10  Marek Polacek  <polacek@redhat.com>
1402         PR c++/82541
1403         * call.c (build_conditional_expr_1): Check complain before warning.
1404         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1405         -Wduplicated-branches.
1407 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1409         PR c++/81327
1410         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1411         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1412         args uses and check number of operands too.  Don't strip away any
1413         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1414         Deal with src argument not having pointer type.  Check
1415         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1416         test.
1417         (build_over_call): Call maybe_warn_class_memaccess here on the
1418         original arguments.
1419         (build_cxx_call): Rather than here on converted arguments.
1421 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1423         PR c++/81055
1424         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1425         error_mark_node as second argument.
1427 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1429         PR c++/83734
1430         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1431         in STATEMENT_LIST.  Remove unneeded assert.
1433 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1434             Alan Hayward  <alan.hayward@arm.com>
1435             David Sherwood  <david.sherwood@arm.com>
1437         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1438         VECTOR_CST_NELTS.
1439         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1440         * call.c (build_conditional_expr_1): Likewise.
1441         * decl.c (cp_finish_decomp): Likewise.
1442         * mangle.c (write_type): Likewise.
1443         * typeck.c (structural_comptypes): Likewise.
1444         (cp_build_binary_op): Likewise.
1445         * typeck2.c (process_init_constructor_array): Likewise.
1447 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1449         PR c++/83555
1450         * typeck.c (build_static_cast_1): For static casts to reference types,
1451         call build_base_path with flag_delete_null_pointer_checks as nonnull
1452         instead of always false.  When -fsanitize=null, call
1453         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1454         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1455         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1457 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1459         PR c++/83667
1460         * method.c (make_alias_for): Copy DECL_CONTEXT.
1462 2018-01-03  Marek Polacek  <polacek@redhat.com>
1464         PR c++/83592
1465         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1467 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1469         PR preprocessor/83602
1470         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1471         for builtin macros.
1473         PR c++/83634
1474         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1475         error_mark_node, return error_mark_node.
1477         Update copyright years.
1479 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1481         PR c++/83556
1482         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1483         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1484         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1485         to false and return.
1486         (replace_placeholders): Pass NULL instead of &pset as last argument
1487         to cp_walk_tree.
1489 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1491         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1492         lval var.
1494 Copyright (C) 2018 Free Software Foundation, Inc.
1496 Copying and distribution of this file, with or without modification,
1497 are permitted in any medium without royalty provided the copyright
1498 notice and this notice are preserved.