/cp
[official-gcc.git] / gcc / cp / ChangeLog
blobaa8ba26959b9195811bd0cf473403a5759b3b51c
1 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/84972
4         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
5         error_mark_node when check_array_designated_initializer fails.
7 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
9         PR c++/84961
10         * cp-tree.h (genericize_compound_lvalue): Declare.
11         * typeck.c (genericize_compound_lvalue): New function.
12         (unary_complex_lvalue, cp_build_modify_expr): Use it.
13         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
14         and PREDECREMENT_EXPR in output and "m" constrained input operands with
15         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
16         COMPOUND_EXPR operand.
18 2018-03-21  Nathan Sidwell  <nathan@acm.org>
20         PR c++/85008
21         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
22         * decl2.c (vague_linkage_p): Likewise.
24 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
26         PR c++/84994
27         * constexpr.c (constexpr_fn_retval): Make non-"static".
28         * cp-tree.h (constexpr_fn_retval): New decl.
29         * search.c (direct_accessor_p): Update leading comment.
30         (reference_accessor_p): Likewise.
31         (field_accessor_p): Replace check that function body is a
32         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
33         indentation of "field_type" decl.
35 2018-03-21  Nathan Sidwell  <nathan@acm.org>
37         PR c++/84804
38         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
39         complete classes.
41 2018-03-21  Martin Sebor  <msebor@redhat.com>
43         PR c++/84850
44         * call.c (first_non_public_field): New template and function.
45         (first_non_trivial_field): New function.
46         (maybe_warn_class_memaccess): Call them.
48 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
50         PR c++/84892
51         * search.c (field_accessor_p): Use class_of_this_parm rather than
52         type_of_this_parm, to check that "this" is a "const T *", rather
53         than a "T *const".
55 2018-03-21  Nathan Sidwell  <nathan@acm.org>
57         * class.c (finish_struct_anon_r): Refactor, deprecate anything
58         other than public non-static data members.
59         * parser.c (cp_parser_init_declarator): Deprecate attributes after
60         parenthesized initializer.
62         PR c++/84836
63         * name-lookup.c (update_binding): Correct logic for local binding
64         update.
66 2018-03-21  Marek Polacek  <polacek@redhat.com>
68         PR c++/71638, ICE with NSDMI and reference.
69         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
70         even when we replace an element.
72 2018-03-20  Marek Polacek  <polacek@redhat.com>
74         PR c++/84978, ICE with NRVO.
75         * constexpr.c (cxx_eval_constant_expression): Handle the case when
76         a RESULT_DECL isn't in the hash map.
78 2018-03-20  Jason Merrill  <jason@redhat.com>
80         PR c++/84978, ICE with NRVO.
81         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
82         (cp_get_callee_fndecl_nofold): New.
83         * cp-gimplify.c (cp_genericize_r): Use it instead.
84         * call.c (check_self_delegation): Likewise.
86 2018-03-20  Nathan Sidwell  <nathan@acm.org>
88         PR c++/84962
89         * name-lookup.c (pushdecl_class_level): Push anon-struct's
90         member_vec, if there is one.
92         PR c++/84970
93         * cp-tree.h (lookup_list_keep): Declare.
94         * tree.c (lookup_list_keep): New, broken out of ...
95         (build_min): ... here.  Call it.
96         * decl.c (cp_finish_decl): Call lookup_list_keep.
98 2018-03-19  Jason Merrill  <jason@redhat.com>
100         PR c++/84937 - ICE with class deduction and auto.
101         * pt.c (rewrite_template_parm): Fix auto handling.
103 2018-03-19  Marek Polacek  <polacek@redhat.com>
105         PR c++/84925
106         * pt.c (enclosing_instantiation_of): Check if fn is null.
108         PR c++/84927
109         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
110         as we evaluate the elements.
111         (cxx_eval_constant_expression): Verify constructor's flags
112         unconditionally.
114 2018-03-19  Jason Merrill  <jason@redhat.com>
116         PR c++/71834 - template-id with too few arguments.
117         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
119 2018-03-19  Nathan Sidwell  <nathan@acm.org>
121         PR c++/84835
122         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
123         * pt.c (build_template_decl): Propagate language linkage.
125         PR c++/84812
126         * name-lookup.c (set_local_extern_decl_linkage): Defend against
127         ambiguous lookups.
129 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
131         PR c/84910
132         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
133         diagnostics.
134         * method.c (synthesize_method): Likewise.
135         * pt.c (convert_nontype_argument): Likewise.
137 2018-03-16  Jason Merrill  <jason@redhat.com>
139         PR c++/84720 - ICE with rvalue ref non-type argument.
140         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
141         (convert_nontype_argument): Revert earlier change.
143         PR c++/80227 - SFINAE and negative array size.
144         * decl.c (compute_array_index_type): Use
145         build_converted_constant_expr and valid_constant_size_p.
147         PR c++/84906 - silent wrong code with ambiguous conversion.
148         * call.c (build_user_type_conversion_1): Set need_temporary_p on
149         ambiguous conversion.
150         (convert_like_real): Check it.
152         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
153         * call.c (build_special_member_call): Don't convert an init-list
154         argument directly to the class type.
156 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
158         PR c++/79937
159         PR c++/82410
160         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
161         (find_placeholder): Declare.
162         * tree.c (struct replace_placeholders_t): Add exp member.
163         (replace_placeholders_r): Don't walk into ctors with
164         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
165         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
166         (replace_placeholders): Initialize data.exp.
167         (find_placeholders_r, find_placeholders): New functions.
168         * typeck2.c (process_init_constructor_record,
169         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
170         if adding NSDMI on which find_placeholder returns true.
171         * call.c (build_over_call): Don't call replace_placeholders here.
172         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
173         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
174         TARGET_EXPR_INITIAL.
175         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
176         ctor.
178 2018-03-16  Jason Merrill  <jason@redhat.com>
180         PR c++/83911 - ICE with multiversioned constructor.
181         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
182         dispatchere here.
183         * call.c (build_over_call): Not here.
185 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
187         PR c++/84874
188         * decl.c (reshape_init_class): Don't assert d->cur->index == field
189         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
191 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
193         PR c++/84222
194         * cp-tree.h (cp_warn_deprecated_use): Declare.
195         * tree.c (cp_warn_deprecated_use): New function.
196         * typeck2.c (build_functional_cast): Use it.
197         * decl.c (grokparms): Likewise.
198         (grokdeclarator): Likewise.  Temporarily push nested class scope
199         around grokparms call for out of class member definitions.
201 2018-03-14  Jason Merrill  <jason@redhat.com>
203         PR c++/84820 - no error for invalid qualified-id.
204         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
205         cp_error_declarator.
207         PR c++/84801 - ICE with unexpanded pack in lambda.
208         * pt.c (check_for_bare_parameter_packs): Don't return early for a
209         lambda in non-template context.
211         PR c++/81236 - auto variable and auto function
212         * pt.c (tsubst_baselink): Update the type of the BASELINK after
213         mark_used.
215 2018-03-14  Jason Merrill  <jason@redhat.com>
217         PR c++/83916 - ICE with template template parameters.
218         * pt.c (convert_template_argument): Don't substitute into type of
219         non-type parameter if we don't have enough arg levels.
220         (unify): Likewise.
222 2018-03-14  Marek Polacek  <polacek@redhat.com>
224         PR c++/84596
225         * semantics.c (finish_static_assert): Check
226         instantiation_dependent_expression_p instead of
227         {type,value}_dependent_expression_p.
229 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
230             Jason Merrill  <jason@redhat.com>
232         PR c++/82336 - link error with list-init default argument.
233         * decl.c (check_default_argument): Unshare an initializer list.
235 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
237         PR c++/84843
238         * decl.c (duplicate_decls): For redefinition of built-in, use error
239         and return error_mark_node.  For redeclaration, return error_mark_node
240         rather than olddecl if !flag_permissive.
242 2018-03-13  Jason Merrill  <jason@redhat.com>
244         PR c++/82565 - ICE with concepts and generic lambda.
245         * pt.c (instantiate_decl): Clear fn_context for lambdas.
247 2018-03-13  Jason Merrill  <jason@redhat.com>
249         PR c++/84720 - ICE with rvalue ref non-type argument.
250         * pt.c (convert_nontype_argument): Handle rvalue references.
252         PR c++/84839 - ICE with decltype of parameter pack.
253         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
254         instantiating dummy parms.
256         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
257         parameter even without -Wpedantic.
259         PR c++/84798 - ICE with auto in abstract function declarator.
260         * parser.c (cp_parser_parameter_declaration_clause): Check
261         parser->default_arg_ok_p.
263 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
265         PR c++/84808
266         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
267         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
268         sizetype.  Formatting fixes.
270 2018-03-12  Jason Merrill  <jason@redhat.com>
272         PR c++/84355 - ICE with deduction for member class template.
273         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
274         CLASS_PLACEHOLDER_TEMPLATE.
276         PR c++/84802 - ICE capturing uninstantiated class.
277         * lambda.c (build_capture_proxy): Call complete_type.
279 2018-03-09  Jason Merrill  <jason@redhat.com>
281         PR c++/84770 - ICE with typedef and parameter pack.
282         * pt.c (verify_unstripped_args_1): Split out from
283         verify_unstripped_args.
285         PR c++/84785 - ICE with alias template and default targs.
286         * pt.c (type_unification_real): Set processing_template_decl if
287         saw_undeduced == 1.
289         PR c++/84752 - ICE with capture of constexpr array.
290         * call.c (standard_conversion): Set rvaluedness_matches_p on the
291         identity conversion under ck_lvalue.
293 2018-03-09  Jason Merrill  <jason@redhat.com>
294             Paolo Carlini  <paolo.carlini@oracle.com>
296         PR c++/71169
297         PR c++/71832
298         * pt.c (any_erroneous_template_args_p): New.
299         * cp-tree.h (any_erroneous_template_args_p): Declare it.
300         * parser.c (cp_parser_class_specifier_1): Use it.
302 2018-03-09  Jason Merrill  <jason@redhat.com>
304         PR c++/84726 - unnecessary capture of constant vars.
305         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
306         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
307         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
308         * lambda.c (is_constant_capture_proxy)
309         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
310         (prune_lambda_captures): New.
311         (finish_lambda_function): Call prune_lambda_captures.
313 2018-03-09  Jason Merrill  <jason@redhat.com>
314             Jakub Jelinek  <jakub@redhat.com>
316         PR c++/84076
317         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
318         build ADDR_EXPR with REFERENCE_TYPE.
319         (build_over_call): For purposes of check_function_arguments, if
320         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
321         its operand rather than the argument itself.
323 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
325         PR c++/84724
326         * decl.c (duplicate_decls): Don't override __* prefixed builtins
327         except for __[^b]*_chk, instead issue permerror and for -fpermissive
328         also a note and return olddecl.
330 2018-03-09  Nathan Sidwell  <nathan@acm.org>
332         PR c++/84733
333         * name-lookup.c (do_pushdecl_with_scope): Only clear
334         current_function_decl when pushing a non-class (i.e. namespace)
335         scope.
337 2018-03-08  Jason Merrill  <jason@redhat.com>
338             Jakub Jelinek  <jakub@redhat.com>
340         PR c++/80598
341         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
342         not calling mark_used for the benefit of -Wunused-function warning.
344 2018-03-06  Jason Merrill  <jason@redhat.com>
346         * lambda.c (is_capture_proxy_with_ref): Remove.
347         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
349 2018-03-06  Marek Polacek  <polacek@redhat.com>
351         PR c++/84684
352         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
353         arguments.
355 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
357         PR c++/84231
358         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
359         only while processing template decls.
360         * typeck.c (build_x_conditional_expr): Move wrapping of
361         reference type around type...
362         * call.c (build_conditional_expr_1): ... here.  Rename
363         is_lvalue to is_glvalue.
364         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
365         INDIRECT_REF of COND_EXPR too.
367         PR c++/84593
368         * init.c (build_zero_init_1): Zero-initialize references.
370         PR c++/84492
371         * semantics.c (finish_stmt_expr_expr): Reject unresolved
372         overloads used as stmt expr values.
374 2018-03-05  Jason Merrill  <jason@redhat.com>
376         PR c++/84708 - ICE with lambda in local class NSDMI.
377         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
378         context.
380 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
382         PR c++/84684
383         * constexpr.c (constexpr_call_hasher::equal): Return false if
384         lhs->hash != rhs->hash.  Change return 1 to return true and
385         return 0 to return false.
387 2018-03-05  Nathan Sidwell  <nathan@acm.org>
389         PR c++/84702
390         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
392 2018-03-05  Marek Polacek  <polacek@redhat.com>
394         PR c++/84707
395         * decl.c (duplicate_decls): Check DECL_NAME before accessing
396         UDLIT_OPER_P.
398 2018-03-05  Nathan Sidwell  <nathan@acm.org>
400         PR c++/84694
401         * friend.c (do_friend): Restore check for identifier_p inside
402         TEMPLATE_ID_EXPR.
404 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
406         PR c++/84618
407         * parser.c (cp_parser_lambda_introducer): Reject any capture not
408         involving a VAR_DECL or a PARM_DECL.
410 2018-03-05  Pádraig Brady  <P@draigBrady.com>
411             Jason  Merrill  <jason@redhat.com>
412             Nathan Sidwell  <nathan@acm.org>
414         PR c++/84497
415         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
417 2018-03-03  Jason Merrill  <jason@redhat.com>
419         PR c++/84686 - missing volatile loads.
420         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
422 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
424         PR c++/71464
425         * optimize.c (maybe_thunk_body): Bail out immediately if either
426         fns[0] or fns[1] is null.
428 2018-03-02  Marek Polacek  <polacek@redhat.com>
430         PR c++/84578
431         * constexpr.c (get_array_or_vector_nelts): New.
432         (cxx_eval_array_reference): Use it.
433         (cxx_eval_vec_init_1): Likewise.
434         (cxx_eval_store_expression): Likewise.
436 2018-03-02  Jason Merrill  <jason@redhat.com>
438         * semantics.c (force_paren_expr): Remove redundant test.
440 2018-03-02  Marek Polacek  <polacek@redhat.com>
442         PR c++/84663
443         * decl.c (cp_complete_array_type): Check error_mark_node.
445         PR c++/84664
446         * typeck.c (cp_perform_integral_promotions): Check the result of
447         mark_rvalue_use.
449 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
451         PR c++/84662
452         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
453         RETURN instead of return.
454         <case POINTER_PLUS_EXPR>: Likewise.
455         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
456         it instead of wrapping it into CONVERT_EXPR.
458 2018-03-02  Jason Merrill  <jason@redhat.com>
460         Fix MIPS16 ICE.
461         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
463 2018-03-02  Marek Polacek  <polacek@redhat.com>
465         PR c++/84590
466         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
467         wrapped in VIEW_CONVERT_EXPR.
469 2018-03-01  Martin Sebor  <msebor@redhat.com>
471         PR c++/84294
472         * decl.c (check_redeclaration_no_default_args): Merge attributes
473         specified on redeclarations of the same function template.
474         Remove dead code.
476 2018-03-01  Marek Polacek  <polacek@redhat.com>
477             Jason Merrill  <jason@redhat.com>
479         PR c++/84582
480         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
481         a template.
482         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
483         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
484         of instantiate_non_dependent_expr.
485         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
487 2018-03-01  Nathan Sidwell  <nathan@acm.org>
489         PR c++/84434
490         * name-lookup.c (member_vec_dedup): Remove manually peeled
491         iteration.  Ignore dependent ctor inheritance.
493 2018-03-01  Jason Merrill  <jason@redhat.com>
495         PR c++/71569 - decltype of template.
496         * parser.c (cp_parser_decltype_expr): Handle missing template args.
498 2018-03-01  Marek Polacek  <polacek@redhat.com>
500         PR c++/84596
501         * constexpr.c (require_rvalue_constant_expression): New function.
502         * cp-tree.h: Declare it.
503         * semantics.c (finish_static_assert): Use it instead of
504         require_potential_rvalue_constant_expression.
506 2018-03-01  Jason Merrill  <jason@redhat.com>
507             Alexandre Oliva <aoliva@redhat.com>
509         PR c++/71569 - ICE with redundant args on member variable template.
510         * decl.c (start_decl): Handle partial specialization of member
511         variable template.
512         * pt.c (determine_specialization): Allow partial specialization
513         of member variable template without specializing enclosing class.
514         (process_partial_specialization): Improve error message.
516 2018-02-28  Jason Merrill  <jason@redhat.com>
518         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
519         * pt.c (determine_specialization): Check ref-qualifier.
521 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
523         PR c++/84609
524         * parser.c (cp_parser_attributes_opt): Formatting fix.
525         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
526         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
527         New functions.
528         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
529         instead of tentative parse to peek over optional attribute tokens
530         to check for CPP_COLON after them.
532         PR c++/83871
533         PR c++/83503
534         * pt.c (INCLUDE_STRING): Remove define.
535         (warn_spec_missing_attributes): Use pretty_printer instead of
536         std::string.  Fix up inform call so that the list of attributes
537         is in %s argument.
539 2018-02-28  Martin Sebor  <msebor@redhat.com>
541         PR testsuite/84617
542         * decl.c (duplicate_decls): Fully merge attributes const, pure,
543         and malloc.
545 2018-02-28  Nathan Sidwell  <nathan@acm.org>
547         PR c++/84602
548         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
549         * name-lookup.c (fields_linear_search): Look in an anon-aggr
550         regardless of want_type.
551         (search_anon_aggr): Just use get_class_binding_direct.
553 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
555         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
556         inform_n.
558 2018-02-27  Martin Sebor  <msebor@redhat.com>
560         * pt.c: Avoid including <string> directly.
562 2018-02-27  Martin Sebor  <msebor@redhat.com>
564         PR c++/83871
565         PR c++/83503
566         * cp-tree.h (warn_spec_missing_attributes): New function.
567         ((check_explicit_specialization): Add an argument.  Call the above
568         function.
569         * decl.c (duplicate_decls): Avoid applying primary function template's
570         attributes to its explicit specializations.
571         cp/pt.c (warn_spec_missing_attributes): Define.
573 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
575         PR c++/71546 - lambda init-capture with qualified-id.
576         * parser.c (cp_parser_lambda_introducer): Clear scope after
577         each lambda capture.
579 2018-02-27  Nathan Sidwell  <nathan@acm.org>
581         PR c++/84426
582         * name-lookup.h (get_member_slot): Rename ...
583         (find_member_slot): ... here.
584         (add_member_slot): New.
585         * name-lookup.c (member_vec_linear_search): No need to check for
586         NULL slot.
587         (get_member_slot): Rename ...
588         (find_member_slot): ... here.  Don't add slot for incomplete class.
589         (add_member_slot): New.
590         * class.c (add_method): Adjust get_member_slot rename.  Bail out
591         if push_class_level_binding fails.  Create slot and grok
592         properties once we're committed to insertion.
594 2018-02-27  Jason Merrill  <jason@redhat.com>
596         PR c++/84489 - dependent default template argument
597         * pt.c (type_unification_real): Handle early substitution failure.
599 2018-02-26  Jason Merrill  <jason@redhat.com>
601         PR c++/84560 - ICE capturing multi-dimensional VLA.
602         * tree.c (array_of_runtime_bound_p): False if the element is
603         variably-modified.
605         PR c++/84441 - ICE with base initialized from ?:
606         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
608         PR c++/84520 - ICE with generic lambda in NSDMI.
609         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
610         'this' in a generic lambda instantiation.
612         PR c++/84559 - ICE with constexpr VLA.
613         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
614         for constexpr variable with VLA type.
616 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
618         PR c++/84558
619         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
620         a valid constant initializer.  Formatting fixes.
622 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
624         PR c++/84540
625         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
626         returning NULL_TREE.
627         (apply_late_template_attributes): Likewise.
629 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
631         PR c++/84557
632         * parser.c (cp_parser_omp_var_list_no_open): Only call
633         cp_parser_lookup_name_simple on names satisfying identifier_p.
634         (cp_parser_oacc_routine): Likewise.
636 2018-02-26  Jason Merrill  <jason@redhat.com>
638         PR c++/84551 - ICE with concepts and -g.
639         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
641 2018-02-26  Marek Polacek  <polacek@redhat.com>
643         PR c++/84325
644         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
645         non-types.
647 2018-02-26  Jason Merrill  <jason@redhat.com>
649         PR c++/84447 - ICE with deleted inherited ctor with default arg.
650         * call.c (build_over_call): Handle deleted functions in one place.
652 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
654         PR c++/84533
655         * decl.c (redeclaration_error_message): Don't try to use
656         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
658 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
660         * lambda.c (build_capture_proxy): Define static.
661         * cp-tree.h (build_capture_proxy): Remove.
663 2018-02-26  Marek Polacek  <polacek@redhat.com>
665         PR c++/84537
666         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
667         if name is error node.
669 2018-02-25  Jason Merrill  <jason@redhat.com>
671         PR c++/84015 - ICE with class deduction and auto template parm.
672         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
674 2018-02-24  Marek Polacek  <polacek@redhat.com>
676         PR c++/83692
677         * constexpr.c (maybe_constant_init_1): New function.
678         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
679         (cxx_constant_init): New function.
680         * cp-tree.h (cxx_constant_init): Declare.
681         * typeck2.c (store_init_value): Call cxx_constant_init instead of
682         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
684 2018-02-22  Jason Merrill  <jason@redhat.com>
686         PR c++/70468 - ICE with constructor delegation via typedef.
687         * pt.c (tsubst_initializer_list): Check for other mem-initializers
688         with constructor delegation.
690 2018-02-22  Jason Merrill  <jason@redhat.com>
692         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
693         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
694         VECTOR_TYPE.
696 2018-02-22  Marek Polacek  <polacek@redhat.com>
698         PR c++/84493
699         * parser.c (cp_parser_braced_list): Use require_open instead of
700         consume_open.
702 2018-02-21  Jason Merrill  <jason@redhat.com>
704         PR c++/84454 - ICE with pack expansion in signature.
705         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
707 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
709         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
710         IF_STMT.
712 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
714         PR c++/84446
715         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
716         on error_mark_node.
718 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
720         PR c++/84445
721         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
722         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
724         PR c++/84449
725         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
726         returns error_mark_node, return it immediately.
727         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
728         error_mark_node, return error_mark_node.
730         PR c++/84455
731         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
732         function_depth to avoid GC during finish_lambda_function.
734 2018-02-19  Jason Merrill  <jason@redhat.com>
736         PR c++/84429 - ICE capturing VLA.
737         * lambda.c (build_capture_proxy): Handle reference refs.
739 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
741         PR c++/84448
742         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
743         either operand is error_mark_node, set current.lhs to that instead of
744         creating a binary op with error_mark_node operands.
746         PR c++/84430
747         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
749 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
751         PR c++/84348
752         * decl.c (grokdeclarator): Early return error_mark_node upon
753         ill-formed friend declaration.
755 2018-02-16  Marek Polacek  <polacek@redhat.com>
756             Jakub Jelinek  <jakub@redhat.com>
758         PR c++/84192
759         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
760         set *jump_target to anything if jump_target is NULL.
762 2018-02-16  Jason Merrill  <jason@redhat.com>
764         PR c++/84151 - unnecessary volatile load with static member.
765         * call.c (build_new_method_call_1): Avoid loading from a volatile
766         lvalue used as the object argument for a static member function.
768         PR c++/81853 - using-directive and constexpr.
769         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
771         PR c++/84420 - ICE with structured binding in lambda.
772         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
774         PR c++/83835 - C++17 error with constructor ctors.
775         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
777         PR c++/82664 - ICE with reference to function template parm.
778         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
779         NOP_EXPRs.
781         PR c++/82764 - C++17 ICE with empty base
782         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
784 2018-02-16  Jason Merrill  <jason@redhat.com>
786         PR c++/84421 - type-dependent if constexpr
787         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
789 2018-02-16  Nathan Sidwell  <nathan@acm.org>
791         Deprecate -ffriend-injection.
792         * decl.c (cxx_init_decl_processing): Emit warning on option.
793         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
794         friend.
796 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
798         PR c++/82468
799         * decl.c (check_special_function_return_type): Reject template
800         template parameter in deduction guide.
802 2018-02-16  Nathan Sidwell  <nathan@acm.org>
804         PR c++/84375
805         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
807 2018-02-15  Jason Merrill  <jason@redhat.com>
809         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
810         * call.c (convert_like_real): Don't use the copy-list-initialization
811         shortcut for ck_base.
813         PR c++/84045 - ICE with typedef and noexcept.
814         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
816         PR c++/84376 - ICE with omitted template arguments.
817         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
819         PR c++/84368 - wrong error with local variable in variadic lambda.
820         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
821         local_specializations.
823 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
825         PR c++/84330
826         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
827         as first argument.
829 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
831         PR c++/84350
832         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
833         init, early return.
835 2018-02-14  Nathan Sidwell  <nathan@acm.org>
837         * decl2.c (mark_vtable_entries): Set input_location to decl's.
838         (c_parse_final_cleanups): Restore input_location after emitting
839         vtables.
841 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
843         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
844         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
845         auto_deduction_context, tree, int): Add defaults.
846         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
847         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
848         tsubst_flags_t argument.
849         * init.c (build_new): Likewise.
851 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
853         PR c++/84364
854         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
855         about return other than *this in assignment operators if
856         retval is type dependent expression.
858 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
860         PR c++/84333
861         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
862         save_expr for the G++ extension.
864 2018-02-13  Jason Merrill  <jason@redhat.com>
866         PR c++/84080 - ICE with return type deduction and specialization.
867         * pt.c (determine_specialization): Check uses_template_parms.
869         Fix more variadic capture issues.
870         * pt.c (find_parameter_packs_r): Also look at explicit captures.
871         (check_for_bare_parameter_packs): Check current_class_type for
872         lambda context.
873         (extract_locals_r): Handle seeing a full instantiation of a pack.
874         (tsubst_pack_expansion): Likewise.  Force lambda capture.
875         * parser.c (cp_parser_lambda_introducer): Don't
876         check_for_bare_parameter_packs.
878         PR c++/84338 - wrong variadic sizeof.
879         * pt.c (argument_pack_select_arg): Like the macro, but look through
880         a pack expansion.
881         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
882         (extract_fnparm_pack): Do make_pack_expansion.
883         (extract_locals_r): Do strip a pack expansion.
884         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
886 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
888         PR c++/84341
889         * parser.c (cp_parser_binary_expression): Use build_min instead of
890         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
892 2018-02-12  Nathan Sidwell  <nathan@acm.org>
894         PR c++/84263
895         * parser.c (cp_parser_decltype): Push and pop
896         deferring_access_checks.  Reorganize to avoid goto.
898 2018-02-12  Richard Biener  <rguenther@suse.de>
900         PR c++/84281
901         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
902         uniform constructors and delay allocating them fully.
904 2018-02-09  Jason Merrill  <jason@redhat.com>
906         PR c++/84036 - ICE with variadic capture.
907         Handle variadic capture proxies more like non-variadic.
908         * lambda.c (build_capture_proxy): Remove workaround.
909         * pt.c (find_parameter_packs_r): The proxy is a pack.
910         (instantiate_class_template_1): Remove dead lambda code.
911         (extract_fnparm_pack): Don't make_pack_expansion.
912         (extract_locals_r): Don't strip a pack expansion.
913         (tsubst_pack_expansion): Handle proxy packs.  Use
914         PACK_EXPANSION_EXTRA_ARGS less.
915         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
916         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
917         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
918         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
919         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
921 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
923         PR sanitizer/83987
924         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
926 2018-02-09  Jason Merrill  <jason@redhat.com>
928         PR c++/81917 - ICE with void_t and partial specialization.
929         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
930         calling most_specialized_partial_spec.
932 2018-02-09  Nathan Sidwell  <nathan@acm.org>
934         PR c/84293
935         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
936         Pass expr location to strict_aliasing_warning.
938 2018-02-09  Jason Merrill  <jason@redhat.com>
940         PR c++/84296 - ICE with qualified-id in template.
941         PR c++/83714
942         * pt.c (unknown_base_ref_p): New.
943         (instantiation_dependent_scope_ref_p): Use it instead of
944         any_dependent_bases_p.
946 2018-02-09  Marek Polacek  <polacek@redhat.com>
947             Jakub Jelinek  <jakub@redhat.com>
949         PR c++/83659
950         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
951         fold_indirect_ref_1, including poly_*int64.  Verify first that
952         tree_fits_poly_int64_p (op01).  Formatting fixes.
954 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
956         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
957         * lambda.c (build_capture_proxy): Likewise.
958         * search.c (field_access_p): Likewise.
959         * semantics.c (omp_clause_decl, omp_privatize_field,
960         finish_omp_clauses): Likewise.
962 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
964         PR c++/83806
965         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
966         case of nullptr too.
968 2018-02-08  Nathan Sidwell  <nathan@acm.org>
970         * class.c (finish_struct): Fix std:initializer_list diagnostic
971         formatting.
973 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
975         PR c++/83204
976         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
978 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
980         PR c++/84082
981         * parser.c (cp_parser_dot_deref_incomplete): New function.
982         (cp_parser_postfix_dot_deref_expression): Use it.
984 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
986         PR c++/81610
987         PR c++/80567
988         * name-lookup.c (suggest_rid_p): New function.
989         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
990         suggest_rid_p.
992 2018-02-07  Jason Merrill  <jason@redhat.com>
994         PR c++/84182 - ICE with captured lambda
995         PR c++/84181
996         * pt.c (extract_locals_r, extract_local_specs): New.
997         (tsubst_pack_expansion): Use them.
999 2018-02-07  Martin Liska  <mliska@suse.cz>
1001         PR c++/84059.
1002         * class.c (add_method): Append argument value.
1003         * cp-tree.h (maybe_version_functions): Add new argument.
1004         * decl.c (decls_match): Call it if a declaration does not
1005         have DECL_FUNCTION_VERSIONED.
1006         (maybe_version_functions): record argument is added.
1008 2018-02-05  Marek Polacek  <polacek@redhat.com>
1010         * class.c: Remove unused global variables.
1011         (build_primary_vtable): Don't gather statistics.
1012         (print_class_statistics): Remove.
1013         * cp-tree.h (print_class_statistics): Remove.
1014         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1016 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1018         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1019         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1020         * decl.c (next_initializable_field, find_decomp_class_base,
1021         cp_finish_decomp): Likewise.
1022         * typeck2.c (process_init_constructor_record): Likewise.
1024 2018-02-02  Jason Merrill  <jason@redhat.com>
1026         PR c++/84181 - ICE with lambda parm in template argument.
1027         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1029 2018-02-01  Jason Merrill  <jason@redhat.com>
1031         PR c++/84160 - ICE with nested variadic capture.
1032         * lambda.c (is_capture_proxy_with_ref): New.
1033         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1034         COMPONENT_REF.
1035         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1036         * constexpr.c (potential_constant_expression_1): Likewise.
1037         * semantics.c (process_outer_var_ref): Likewise.
1039 2018-02-01  Marek Polacek  <polacek@redhat.com>
1041         PR c++/84125
1042         * typeck.c (build_address): Relax the assert when
1043         processing_template_decl.
1045 2018-02-01  Jason Merrill  <jason@redhat.com>
1047         PR c++/84126 - ICE with variadic generic lambda
1048         PR c++/84036
1049         PR c++/82249
1050         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1051         PACK_EXPANSION_EXTRA_ARGS.
1053 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1055         PR c++/83796
1056         * call.c (convert_like_real): If w're initializing from {} explicitly
1057         call abstract_virtuals_error_sfinae.
1059 2018-01-31  Jason Merrill  <jason@redhat.com>
1060             Jakub Jelinek  <jakub@redhat.com>
1062         PR c++/83993
1063         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1064         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1065         on ADDR_EXPR.
1067 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1069         PR c++/83993
1070         * constexpr.c (diag_array_subscript): Emit different diagnostics
1071         if TYPE_DOMAIN (arraytype) is NULL.
1072         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1073         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1075 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1077         PR c++/84092
1078         * semantics.c (finish_qualified_id_expr): When handling an
1079         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1081 2018-01-31  Marek Polacek  <polacek@redhat.com>
1083         PR c++/84138
1084         * cp-gimplify.c (cp_fold): Check if X is an error node before
1085         calling useless_type_conversion_p.
1087 2018-01-30  Jason Merrill  <jason@redhat.com>
1089         PR c++/84091 - ICE with local class in lambda in template.
1090         * decl2.c (determine_visibility): Look for outer containing template
1091         instantiation.
1093         PR c++/84098 - ICE with lambda in template NSDMI.
1094         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1096 2018-01-29  Jason Merrill  <jason@redhat.com>
1098         PR c++/68810 - wrong location for reinterpret_cast error.
1099         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1100         !dofold.
1102 2018-01-29  Marek Polacek  <polacek@redhat.com>
1104         PR c++/83996
1105         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1106         => fooarray[1] in offset_int.
1108 2018-01-29  Jason Merrill  <jason@redhat.com>
1110         PR c++/83942 - wrong unused warning with static_cast.
1111         * cvt.c (ocp_convert): Call mark_rvalue_use.
1113 2018-01-26  Jason Merrill  <jason@redhat.com>
1115         PR c++/83956 - wrong dtor error with anonymous union
1116         * method.c (walk_field_subobs): Variant members only affect
1117         deletedness.
1118         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1120         PR c++/84036 - ICE with variadic capture.
1121         PR c++/82249
1122         * pt.c (tsubst_pack_expansion): When optimizing a simple
1123         substitution, pull a single pack expansion out of its pack.
1125         PR c++/82514 - ICE with local class in generic lambda.
1126         * pt.c (regenerated_lambda_fn_p): Remove.
1127         (enclosing_instantiation_of): Don't use it.
1128         (tsubst_function_decl): Call enclosing_instantiation_of.
1130         * pt.c (lookup_template_class_1): Add sanity check.
1131         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1133 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1135         PR c++/84031
1136         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1137         recursive calls that return ret.
1138         (cp_finish_decomp): Ignore unnamed bitfields.
1140 2018-01-23  Jason Merrill  <jason@redhat.com>
1142         PR c++/82249 - wrong mismatched pack length error.
1143         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1144         unsubstituted function parameter pack.
1146 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1148         PR c++/83921
1149         * decl.c (check_for_uninitialized_const_var): Not static; add
1150         bool and tsubst_flags_t parameters; adjust to be used both in
1151         constexpr context and not.
1152         * constexpr.c (potential_constant_expression_1): Use the above.
1153         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1155 2018-01-23  Jason Merrill  <jason@redhat.com>
1157         PR c++/83947 - ICE with auto declarations.
1158         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1159         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1161 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1163         PR c++/83974
1164         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1165         for pointer to member function types.
1167 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1169         PR sanitizer/83987
1170         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1171         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1173 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1175         PR c++/83988
1176         * pt.c (tsubst_baselink): Remove optype assert.
1177         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1179 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1181         PR c++/83958
1182         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1183         refers to incomplete type.
1185 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1187         Deprecate ARM-era for scope handling
1188         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1189         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1190         cleared.
1191         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1192         cleanup handling.
1193         * semantics.c (begin_for_scope): Flag_new_for_scope is
1194         boolean-like.
1195         (finish_for_stmt, begin_range_for_stmt): Likewise.
1197 2018-01-22  Jason Merrill  <jason@redhat.com>
1199         PR c++/83720
1200         * decl2.c (determine_visibility): Fix template_decl handling
1201         instead of blocking it.
1203         PR c++/83720 - ICE with lambda and LTO.
1204         * decl2.c (determine_visibility): Clear template_decl for
1205         function-scope decls.  Propagate anonymous linkage from containing
1206         function.
1208 2018-01-22  Marek Polacek  <polacek@redhat.com>
1210         PR c++/81933
1211         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1212         split out anything.
1214 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1216         PR c++/83895
1217         * decl.c (grokdeclarator): Don't diagnose extra parens
1218         on typedefs.
1220 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1222         PR c++/81167
1223         * call.c (joust): Use TREE_TYPE (source) if source is
1224         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1226         PR c++/83919
1227         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1228         for direct enum init.
1229         * decl.c (reshape_init): Likewise.
1231 2018-01-19  Marek Polacek  <polacek@redhat.com>
1233         * constexpr.c (fold_simple): Simplify.
1235 2018-01-18  Jason Merrill  <jason@redhat.com>
1237         PR c++/83714
1238         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1239         * pt.c (instantiation_dependent_scope_ref_p): True if
1240         any_dependent_bases_p.
1242 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1244         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1245         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1247 2018-01-18  Jason Merrill  <jason@redhat.com>
1249         PR c++/82461 - constexpr list-initialized member
1250         * constexpr.c (potential_constant_expression_1): Check
1251         TARGET_EXPR_DIRECT_INIT_P.
1253 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1255         PR c++/81013
1256         * decl.c (xref_basetypes): Early return upon error about derived
1257         union.
1259 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1261         PR c++/83160
1262         * cp-tree.h (mark_use): Declare.
1263         * expr.c (mark_use): Make extern.
1264         * call.c (direct_reference_binding): Set inner conv's
1265         rvaluedness_matches_p, if it is an identity.
1266         (convert_like_real): Mark lvalue or rvalue use for identity as
1267         rvaledness_matches_p demands.
1269 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1271         PR c++/83824
1272         * parser.c (attr_chainon): New function.
1273         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1274         cp_parser_namespace_definition, cp_parser_init_declarator,
1275         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1276         cp_parser_gnu_attributes_opt): Use it.
1277         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1278         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1279         prefix_attributes if attributes is error_mark_node.
1281 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1283         PR c++/78344
1284         * decl.c (grokdeclarator): Do not append the error_mark_node
1285         due to an erroneous optional attribute-specifier-seq.
1287 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1289         PR c++/83897
1290         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1291         CLEANUP_POINT_EXPR.
1293 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1295         PR c++/81054
1296         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1297         error_mark_node when we give an error.
1298         * decl.c (cp_finish_decl): Use the latter.
1300 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1302         PR c++/83287
1303         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1305 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1307         PR c++/83814
1308         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1309         the C++ part.  If processing a template, call
1310         fold_non_dependent_expr rather than fully folding.
1312 2018-01-17  Jason Merrill  <jason@redhat.com>
1314         PR c++/81067 - redundant NULL warning.
1315         * call.c (convert_like_real): Restore null_node handling.
1317 2018-01-17  Jason Merrill  <jason@redhat.com>
1319         PR c++/81843 - ICE with variadic member template.
1320         PR c++/72801
1321         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1322         template args.
1324 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1326         PR c++/83799
1327         * pt.c (type_dependent_expression_p): Strip any location wrapper
1328         before testing tree codes.
1329         (selftest::test_type_dependent_expression_p): New function.
1330         (selftest::cp_pt_c_tests): Call it.
1332 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1334         PR c++/83739
1335         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1336         this not a final instantiation.
1338 2018-01-16  Jason Merrill  <jason@redhat.com>
1340         PR c++/83714 - ICE checking return in template.
1341         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1343 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1345         PR c++/83817
1346         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1347         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1348         instead of CALL_FROM_THUNK_P.
1350         PR c++/83825
1351         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1352         (resort_type_member_vec, set_class_bindings,
1353         insert_late_enum_def_bindings): Use vec qsort method instead of
1354         calling qsort directly.
1356 2018-01-15  Martin Sebor  <msebor@redhat.com>
1358         PR c++/83588
1359         * class.c (find_flexarrays): Make a record of multiple flexible array
1360         members.
1362 2018-01-12  Jason Merrill  <jason@redhat.com>
1364         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1365         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1367 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1369         * cp-tree.h (mark_rvalue_use): Add parm name.
1370         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1371         mark_rvalue_use.
1372         * call.c (convert_like_real): Fix formatting.
1374 2018-01-11  Jason Merrill  <jason@redhat.com>
1376         PR c++/82728 - wrong -Wunused-but-set-variable
1377         PR c++/82799
1378         PR c++/83690
1379         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1380         * decl.c (case_conversion): Likewise.
1381         * semantics.c (finish_static_assert): Call
1382         perform_implicit_conversion_flags.
1384 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1386         * method.c (enum mangling_flags): Delete long-dead enum.
1388 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1390         * parser.c (cp_parser_std_attribute_spec): When
1391         token_pair::require_open / require_close return false simply
1392         return error_mark_node, avoid duplicate cp_parser_error about
1393         expected '(' / ')', respectively.
1395 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1397         PR c++/43486
1398         * call.c (null_ptr_cst_p): Strip location wrappers when
1399         converting from '0' to a pointer type in C++11 onwards.
1400         (conversion_null_warnings): Replace comparison with null_node with
1401         call to null_node_p.
1402         (build_over_call): Likewise.
1403         * cp-gimplify.c (cp_fold): Remove the early bailout when
1404         processing_template_decl.
1405         * cp-lang.c (selftest::run_cp_tests): Call
1406         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1407         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1408         (selftest::run_cp_tests): Move decl to bottom of file.
1409         (null_node_p): New inline function.
1410         (selftest::cp_pt_c_tests): New decl.
1411         (selftest::cp_tree_c_tests): New decl.
1412         * cvt.c (build_expr_type_conversion): Replace comparison with
1413         null_node with call to null_node_p.
1414         * error.c (args_to_string): Likewise.
1415         * except.c (build_throw): Likewise.
1416         * mangle.c (write_expression): Skip location wrapper nodes.
1417         * parser.c (literal_integer_zerop): New function.
1418         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1419         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1420         param of cp_parser_parenthesized_expression_list.  When calling
1421         warn_for_memset, replace integer_zerop calls with
1422         literal_integer_zerop, eliminating the double logical negation
1423         cast to bool.  Eliminate the special-casing for CONST_DECL in
1424         favor of the fold_for_warn within warn_for_memset.
1425         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1426         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1427         maybe_add_location_wrapper on it when wrap_locations_p is true.
1428         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1429         the result for RID_ALIGNOF and RID_SIZEOF.
1430         (cp_parser_builtin_offsetof): Likewise.
1431         * pt.c: Include "selftest.h".
1432         (tsubst_copy): Handle location wrappers.
1433         (tsubst_copy_and_build): Likewise.
1434         (build_non_dependent_expr): Likewise.
1435         (selftest::test_build_non_dependent_expr): New function.
1436         (selftest::cp_pt_c_tests): New function.
1437         * tree.c: Include "selftest.h".
1438         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1439         (selftest::test_lvalue_kind): New function.
1440         (selftest::cp_tree_c_tests): New function.
1441         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1442         (cp_build_binary_op): Replace comparison with null_node with call
1443         to null_node_p.
1444         (build_address): Use location of operand when building address
1445         expression.
1447 2018-01-10  Marek Polacek  <polacek@redhat.com>
1449         PR c++/82541
1450         * call.c (build_conditional_expr_1): Check complain before warning.
1451         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1452         -Wduplicated-branches.
1454 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1456         PR c++/81327
1457         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1458         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1459         args uses and check number of operands too.  Don't strip away any
1460         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1461         Deal with src argument not having pointer type.  Check
1462         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1463         test.
1464         (build_over_call): Call maybe_warn_class_memaccess here on the
1465         original arguments.
1466         (build_cxx_call): Rather than here on converted arguments.
1468 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1470         PR c++/81055
1471         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1472         error_mark_node as second argument.
1474 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1476         PR c++/83734
1477         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1478         in STATEMENT_LIST.  Remove unneeded assert.
1480 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1481             Alan Hayward  <alan.hayward@arm.com>
1482             David Sherwood  <david.sherwood@arm.com>
1484         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1485         VECTOR_CST_NELTS.
1486         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1487         * call.c (build_conditional_expr_1): Likewise.
1488         * decl.c (cp_finish_decomp): Likewise.
1489         * mangle.c (write_type): Likewise.
1490         * typeck.c (structural_comptypes): Likewise.
1491         (cp_build_binary_op): Likewise.
1492         * typeck2.c (process_init_constructor_array): Likewise.
1494 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1496         PR c++/83555
1497         * typeck.c (build_static_cast_1): For static casts to reference types,
1498         call build_base_path with flag_delete_null_pointer_checks as nonnull
1499         instead of always false.  When -fsanitize=null, call
1500         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1501         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1502         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1504 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1506         PR c++/83667
1507         * method.c (make_alias_for): Copy DECL_CONTEXT.
1509 2018-01-03  Marek Polacek  <polacek@redhat.com>
1511         PR c++/83592
1512         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1514 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1516         PR preprocessor/83602
1517         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1518         for builtin macros.
1520         PR c++/83634
1521         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1522         error_mark_node, return error_mark_node.
1524         Update copyright years.
1526 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1528         PR c++/83556
1529         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1530         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1531         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1532         to false and return.
1533         (replace_placeholders): Pass NULL instead of &pset as last argument
1534         to cp_walk_tree.
1536 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1538         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1539         lval var.
1541 Copyright (C) 2018 Free Software Foundation, Inc.
1543 Copying and distribution of this file, with or without modification,
1544 are permitted in any medium without royalty provided the copyright
1545 notice and this notice are preserved.