[PR c++/84729] reject parenthesized array init
[official-gcc.git] / gcc / cp / ChangeLog
blob33add697a8648b8756006971f3f5499e1981ab73
1 2018-03-22  Alexandre Oliva <aoliva@redhat.com>
3         PR c++/84729
4         * init.c (build_vec_init): Error at parenthesized array init.
6         PR c++/84610
7         PR c++/84642
8         PR c++/84942
9         * cp-tree.h (temp_override): New template class, generalizing
10         a cleanup that was only used...
11         * parser.c (cp_parser_parameter_declaration_clause):
12         ... here for auto_is_implicit_function_template_parm_p.
13         (cp_parser_gnu_attributes_opt): Use it here as well.
14         (cp_parser_std_attribute): Likewise.
16 2018-03-22  Marek Polacek  <polacek@redhat.com>
18         PR c++/84854
19         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
20         is boolean.
22 2018-03-21  Jason Merrill  <jason@redhat.com>
24         PR c++/81311 - wrong C++17 overload resolution.
25         * call.c (build_user_type_conversion_1): Remove C++17 code.
26         (conv_binds_ref_to_prvalue): New.
27         (build_over_call): Handle C++17 copy elision.
28         (build_special_member_call): Only do C++17 copy elision here if the
29         argument is already the right type.
31 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
33         PR c++/71965
34         * init.c (build_vec_init): Silence error, former sorry,
35         without tf_error.
37         PR c++/84610
38         PR c++/84642
39         * parser.c (abort_fully_implicit_template_p): New.
40         (cp_parser_skip_to_end_of_statement): Use it.
41         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
42         (finish_fully_implicit_template_p): Clear
43         implicit_template_parms and implicit_template_scope.
45 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
47         PR c++/84972
48         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
49         error_mark_node when check_array_designated_initializer fails.
51 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
53         PR c++/84961
54         * cp-tree.h (genericize_compound_lvalue): Declare.
55         * typeck.c (genericize_compound_lvalue): New function.
56         (unary_complex_lvalue, cp_build_modify_expr): Use it.
57         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
58         and PREDECREMENT_EXPR in output and "m" constrained input operands with
59         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
60         COMPOUND_EXPR operand.
62 2018-03-21  Nathan Sidwell  <nathan@acm.org>
64         PR c++/85008
65         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
66         * decl2.c (vague_linkage_p): Likewise.
68 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
70         PR c++/84994
71         * constexpr.c (constexpr_fn_retval): Make non-"static".
72         * cp-tree.h (constexpr_fn_retval): New decl.
73         * search.c (direct_accessor_p): Update leading comment.
74         (reference_accessor_p): Likewise.
75         (field_accessor_p): Replace check that function body is a
76         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
77         indentation of "field_type" decl.
79 2018-03-21  Nathan Sidwell  <nathan@acm.org>
81         PR c++/84804
82         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
83         complete classes.
85 2018-03-21  Martin Sebor  <msebor@redhat.com>
87         PR c++/84850
88         * call.c (first_non_public_field): New template and function.
89         (first_non_trivial_field): New function.
90         (maybe_warn_class_memaccess): Call them.
92 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
94         PR c++/84892
95         * search.c (field_accessor_p): Use class_of_this_parm rather than
96         type_of_this_parm, to check that "this" is a "const T *", rather
97         than a "T *const".
99 2018-03-21  Nathan Sidwell  <nathan@acm.org>
101         * class.c (finish_struct_anon_r): Refactor, deprecate anything
102         other than public non-static data members.
103         * parser.c (cp_parser_init_declarator): Deprecate attributes after
104         parenthesized initializer.
106         PR c++/84836
107         * name-lookup.c (update_binding): Correct logic for local binding
108         update.
110 2018-03-21  Marek Polacek  <polacek@redhat.com>
112         PR c++/71638, ICE with NSDMI and reference.
113         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
114         even when we replace an element.
116 2018-03-20  Marek Polacek  <polacek@redhat.com>
118         PR c++/84978, ICE with NRVO.
119         * constexpr.c (cxx_eval_constant_expression): Handle the case when
120         a RESULT_DECL isn't in the hash map.
122 2018-03-20  Jason Merrill  <jason@redhat.com>
124         PR c++/84978, ICE with NRVO.
125         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
126         (cp_get_callee_fndecl_nofold): New.
127         * cp-gimplify.c (cp_genericize_r): Use it instead.
128         * call.c (check_self_delegation): Likewise.
130 2018-03-20  Nathan Sidwell  <nathan@acm.org>
132         PR c++/84962
133         * name-lookup.c (pushdecl_class_level): Push anon-struct's
134         member_vec, if there is one.
136         PR c++/84970
137         * cp-tree.h (lookup_list_keep): Declare.
138         * tree.c (lookup_list_keep): New, broken out of ...
139         (build_min): ... here.  Call it.
140         * decl.c (cp_finish_decl): Call lookup_list_keep.
142 2018-03-19  Jason Merrill  <jason@redhat.com>
144         PR c++/84937 - ICE with class deduction and auto.
145         * pt.c (rewrite_template_parm): Fix auto handling.
147 2018-03-19  Marek Polacek  <polacek@redhat.com>
149         PR c++/84925
150         * pt.c (enclosing_instantiation_of): Check if fn is null.
152         PR c++/84927
153         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
154         as we evaluate the elements.
155         (cxx_eval_constant_expression): Verify constructor's flags
156         unconditionally.
158 2018-03-19  Jason Merrill  <jason@redhat.com>
160         PR c++/71834 - template-id with too few arguments.
161         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
163 2018-03-19  Nathan Sidwell  <nathan@acm.org>
165         PR c++/84835
166         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
167         * pt.c (build_template_decl): Propagate language linkage.
169         PR c++/84812
170         * name-lookup.c (set_local_extern_decl_linkage): Defend against
171         ambiguous lookups.
173 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
175         PR c/84910
176         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
177         diagnostics.
178         * method.c (synthesize_method): Likewise.
179         * pt.c (convert_nontype_argument): Likewise.
181 2018-03-16  Jason Merrill  <jason@redhat.com>
183         PR c++/84720 - ICE with rvalue ref non-type argument.
184         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
185         (convert_nontype_argument): Revert earlier change.
187         PR c++/80227 - SFINAE and negative array size.
188         * decl.c (compute_array_index_type): Use
189         build_converted_constant_expr and valid_constant_size_p.
191         PR c++/84906 - silent wrong code with ambiguous conversion.
192         * call.c (build_user_type_conversion_1): Set need_temporary_p on
193         ambiguous conversion.
194         (convert_like_real): Check it.
196         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
197         * call.c (build_special_member_call): Don't convert an init-list
198         argument directly to the class type.
200 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
202         PR c++/79937
203         PR c++/82410
204         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
205         (find_placeholder): Declare.
206         * tree.c (struct replace_placeholders_t): Add exp member.
207         (replace_placeholders_r): Don't walk into ctors with
208         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
209         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
210         (replace_placeholders): Initialize data.exp.
211         (find_placeholders_r, find_placeholders): New functions.
212         * typeck2.c (process_init_constructor_record,
213         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
214         if adding NSDMI on which find_placeholder returns true.
215         * call.c (build_over_call): Don't call replace_placeholders here.
216         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
217         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
218         TARGET_EXPR_INITIAL.
219         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
220         ctor.
222 2018-03-16  Jason Merrill  <jason@redhat.com>
224         PR c++/83911 - ICE with multiversioned constructor.
225         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
226         dispatchere here.
227         * call.c (build_over_call): Not here.
229 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
231         PR c++/84874
232         * decl.c (reshape_init_class): Don't assert d->cur->index == field
233         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
235 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
237         PR c++/84222
238         * cp-tree.h (cp_warn_deprecated_use): Declare.
239         * tree.c (cp_warn_deprecated_use): New function.
240         * typeck2.c (build_functional_cast): Use it.
241         * decl.c (grokparms): Likewise.
242         (grokdeclarator): Likewise.  Temporarily push nested class scope
243         around grokparms call for out of class member definitions.
245 2018-03-14  Jason Merrill  <jason@redhat.com>
247         PR c++/84820 - no error for invalid qualified-id.
248         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
249         cp_error_declarator.
251         PR c++/84801 - ICE with unexpanded pack in lambda.
252         * pt.c (check_for_bare_parameter_packs): Don't return early for a
253         lambda in non-template context.
255         PR c++/81236 - auto variable and auto function
256         * pt.c (tsubst_baselink): Update the type of the BASELINK after
257         mark_used.
259 2018-03-14  Jason Merrill  <jason@redhat.com>
261         PR c++/83916 - ICE with template template parameters.
262         * pt.c (convert_template_argument): Don't substitute into type of
263         non-type parameter if we don't have enough arg levels.
264         (unify): Likewise.
266 2018-03-14  Marek Polacek  <polacek@redhat.com>
268         PR c++/84596
269         * semantics.c (finish_static_assert): Check
270         instantiation_dependent_expression_p instead of
271         {type,value}_dependent_expression_p.
273 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
274             Jason Merrill  <jason@redhat.com>
276         PR c++/82336 - link error with list-init default argument.
277         * decl.c (check_default_argument): Unshare an initializer list.
279 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
281         PR c++/84843
282         * decl.c (duplicate_decls): For redefinition of built-in, use error
283         and return error_mark_node.  For redeclaration, return error_mark_node
284         rather than olddecl if !flag_permissive.
286 2018-03-13  Jason Merrill  <jason@redhat.com>
288         PR c++/82565 - ICE with concepts and generic lambda.
289         * pt.c (instantiate_decl): Clear fn_context for lambdas.
291 2018-03-13  Jason Merrill  <jason@redhat.com>
293         PR c++/84720 - ICE with rvalue ref non-type argument.
294         * pt.c (convert_nontype_argument): Handle rvalue references.
296         PR c++/84839 - ICE with decltype of parameter pack.
297         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
298         instantiating dummy parms.
300         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
301         parameter even without -Wpedantic.
303         PR c++/84798 - ICE with auto in abstract function declarator.
304         * parser.c (cp_parser_parameter_declaration_clause): Check
305         parser->default_arg_ok_p.
307 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
309         PR c++/84808
310         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
311         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
312         sizetype.  Formatting fixes.
314 2018-03-12  Jason Merrill  <jason@redhat.com>
316         PR c++/84355 - ICE with deduction for member class template.
317         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
318         CLASS_PLACEHOLDER_TEMPLATE.
320         PR c++/84802 - ICE capturing uninstantiated class.
321         * lambda.c (build_capture_proxy): Call complete_type.
323 2018-03-09  Jason Merrill  <jason@redhat.com>
325         PR c++/84770 - ICE with typedef and parameter pack.
326         * pt.c (verify_unstripped_args_1): Split out from
327         verify_unstripped_args.
329         PR c++/84785 - ICE with alias template and default targs.
330         * pt.c (type_unification_real): Set processing_template_decl if
331         saw_undeduced == 1.
333         PR c++/84752 - ICE with capture of constexpr array.
334         * call.c (standard_conversion): Set rvaluedness_matches_p on the
335         identity conversion under ck_lvalue.
337 2018-03-09  Jason Merrill  <jason@redhat.com>
338             Paolo Carlini  <paolo.carlini@oracle.com>
340         PR c++/71169
341         PR c++/71832
342         * pt.c (any_erroneous_template_args_p): New.
343         * cp-tree.h (any_erroneous_template_args_p): Declare it.
344         * parser.c (cp_parser_class_specifier_1): Use it.
346 2018-03-09  Jason Merrill  <jason@redhat.com>
348         PR c++/84726 - unnecessary capture of constant vars.
349         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
350         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
351         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
352         * lambda.c (is_constant_capture_proxy)
353         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
354         (prune_lambda_captures): New.
355         (finish_lambda_function): Call prune_lambda_captures.
357 2018-03-09  Jason Merrill  <jason@redhat.com>
358             Jakub Jelinek  <jakub@redhat.com>
360         PR c++/84076
361         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
362         build ADDR_EXPR with REFERENCE_TYPE.
363         (build_over_call): For purposes of check_function_arguments, if
364         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
365         its operand rather than the argument itself.
367 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
369         PR c++/84724
370         * decl.c (duplicate_decls): Don't override __* prefixed builtins
371         except for __[^b]*_chk, instead issue permerror and for -fpermissive
372         also a note and return olddecl.
374 2018-03-09  Nathan Sidwell  <nathan@acm.org>
376         PR c++/84733
377         * name-lookup.c (do_pushdecl_with_scope): Only clear
378         current_function_decl when pushing a non-class (i.e. namespace)
379         scope.
381 2018-03-08  Jason Merrill  <jason@redhat.com>
382             Jakub Jelinek  <jakub@redhat.com>
384         PR c++/80598
385         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
386         not calling mark_used for the benefit of -Wunused-function warning.
388 2018-03-06  Jason Merrill  <jason@redhat.com>
390         * lambda.c (is_capture_proxy_with_ref): Remove.
391         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
393 2018-03-06  Marek Polacek  <polacek@redhat.com>
395         PR c++/84684
396         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
397         arguments.
399 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
401         PR c++/84231
402         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
403         only while processing template decls.
404         * typeck.c (build_x_conditional_expr): Move wrapping of
405         reference type around type...
406         * call.c (build_conditional_expr_1): ... here.  Rename
407         is_lvalue to is_glvalue.
408         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
409         INDIRECT_REF of COND_EXPR too.
411         PR c++/84593
412         * init.c (build_zero_init_1): Zero-initialize references.
414         PR c++/84492
415         * semantics.c (finish_stmt_expr_expr): Reject unresolved
416         overloads used as stmt expr values.
418 2018-03-05  Jason Merrill  <jason@redhat.com>
420         PR c++/84708 - ICE with lambda in local class NSDMI.
421         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
422         context.
424 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
426         PR c++/84684
427         * constexpr.c (constexpr_call_hasher::equal): Return false if
428         lhs->hash != rhs->hash.  Change return 1 to return true and
429         return 0 to return false.
431 2018-03-05  Nathan Sidwell  <nathan@acm.org>
433         PR c++/84702
434         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
436 2018-03-05  Marek Polacek  <polacek@redhat.com>
438         PR c++/84707
439         * decl.c (duplicate_decls): Check DECL_NAME before accessing
440         UDLIT_OPER_P.
442 2018-03-05  Nathan Sidwell  <nathan@acm.org>
444         PR c++/84694
445         * friend.c (do_friend): Restore check for identifier_p inside
446         TEMPLATE_ID_EXPR.
448 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
450         PR c++/84618
451         * parser.c (cp_parser_lambda_introducer): Reject any capture not
452         involving a VAR_DECL or a PARM_DECL.
454 2018-03-05  Pádraig Brady  <P@draigBrady.com>
455             Jason  Merrill  <jason@redhat.com>
456             Nathan Sidwell  <nathan@acm.org>
458         PR c++/84497
459         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
461 2018-03-03  Jason Merrill  <jason@redhat.com>
463         PR c++/84686 - missing volatile loads.
464         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
466 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
468         PR c++/71464
469         * optimize.c (maybe_thunk_body): Bail out immediately if either
470         fns[0] or fns[1] is null.
472 2018-03-02  Marek Polacek  <polacek@redhat.com>
474         PR c++/84578
475         * constexpr.c (get_array_or_vector_nelts): New.
476         (cxx_eval_array_reference): Use it.
477         (cxx_eval_vec_init_1): Likewise.
478         (cxx_eval_store_expression): Likewise.
480 2018-03-02  Jason Merrill  <jason@redhat.com>
482         * semantics.c (force_paren_expr): Remove redundant test.
484 2018-03-02  Marek Polacek  <polacek@redhat.com>
486         PR c++/84663
487         * decl.c (cp_complete_array_type): Check error_mark_node.
489         PR c++/84664
490         * typeck.c (cp_perform_integral_promotions): Check the result of
491         mark_rvalue_use.
493 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
495         PR c++/84662
496         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
497         RETURN instead of return.
498         <case POINTER_PLUS_EXPR>: Likewise.
499         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
500         it instead of wrapping it into CONVERT_EXPR.
502 2018-03-02  Jason Merrill  <jason@redhat.com>
504         Fix MIPS16 ICE.
505         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
507 2018-03-02  Marek Polacek  <polacek@redhat.com>
509         PR c++/84590
510         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
511         wrapped in VIEW_CONVERT_EXPR.
513 2018-03-01  Martin Sebor  <msebor@redhat.com>
515         PR c++/84294
516         * decl.c (check_redeclaration_no_default_args): Merge attributes
517         specified on redeclarations of the same function template.
518         Remove dead code.
520 2018-03-01  Marek Polacek  <polacek@redhat.com>
521             Jason Merrill  <jason@redhat.com>
523         PR c++/84582
524         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
525         a template.
526         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
527         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
528         of instantiate_non_dependent_expr.
529         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
531 2018-03-01  Nathan Sidwell  <nathan@acm.org>
533         PR c++/84434
534         * name-lookup.c (member_vec_dedup): Remove manually peeled
535         iteration.  Ignore dependent ctor inheritance.
537 2018-03-01  Jason Merrill  <jason@redhat.com>
539         PR c++/71569 - decltype of template.
540         * parser.c (cp_parser_decltype_expr): Handle missing template args.
542 2018-03-01  Marek Polacek  <polacek@redhat.com>
544         PR c++/84596
545         * constexpr.c (require_rvalue_constant_expression): New function.
546         * cp-tree.h: Declare it.
547         * semantics.c (finish_static_assert): Use it instead of
548         require_potential_rvalue_constant_expression.
550 2018-03-01  Jason Merrill  <jason@redhat.com>
551             Alexandre Oliva <aoliva@redhat.com>
553         PR c++/71569 - ICE with redundant args on member variable template.
554         * decl.c (start_decl): Handle partial specialization of member
555         variable template.
556         * pt.c (determine_specialization): Allow partial specialization
557         of member variable template without specializing enclosing class.
558         (process_partial_specialization): Improve error message.
560 2018-02-28  Jason Merrill  <jason@redhat.com>
562         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
563         * pt.c (determine_specialization): Check ref-qualifier.
565 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
567         PR c++/84609
568         * parser.c (cp_parser_attributes_opt): Formatting fix.
569         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
570         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
571         New functions.
572         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
573         instead of tentative parse to peek over optional attribute tokens
574         to check for CPP_COLON after them.
576         PR c++/83871
577         PR c++/83503
578         * pt.c (INCLUDE_STRING): Remove define.
579         (warn_spec_missing_attributes): Use pretty_printer instead of
580         std::string.  Fix up inform call so that the list of attributes
581         is in %s argument.
583 2018-02-28  Martin Sebor  <msebor@redhat.com>
585         PR testsuite/84617
586         * decl.c (duplicate_decls): Fully merge attributes const, pure,
587         and malloc.
589 2018-02-28  Nathan Sidwell  <nathan@acm.org>
591         PR c++/84602
592         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
593         * name-lookup.c (fields_linear_search): Look in an anon-aggr
594         regardless of want_type.
595         (search_anon_aggr): Just use get_class_binding_direct.
597 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
599         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
600         inform_n.
602 2018-02-27  Martin Sebor  <msebor@redhat.com>
604         * pt.c: Avoid including <string> directly.
606 2018-02-27  Martin Sebor  <msebor@redhat.com>
608         PR c++/83871
609         PR c++/83503
610         * cp-tree.h (warn_spec_missing_attributes): New function.
611         ((check_explicit_specialization): Add an argument.  Call the above
612         function.
613         * decl.c (duplicate_decls): Avoid applying primary function template's
614         attributes to its explicit specializations.
615         cp/pt.c (warn_spec_missing_attributes): Define.
617 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
619         PR c++/71546 - lambda init-capture with qualified-id.
620         * parser.c (cp_parser_lambda_introducer): Clear scope after
621         each lambda capture.
623 2018-02-27  Nathan Sidwell  <nathan@acm.org>
625         PR c++/84426
626         * name-lookup.h (get_member_slot): Rename ...
627         (find_member_slot): ... here.
628         (add_member_slot): New.
629         * name-lookup.c (member_vec_linear_search): No need to check for
630         NULL slot.
631         (get_member_slot): Rename ...
632         (find_member_slot): ... here.  Don't add slot for incomplete class.
633         (add_member_slot): New.
634         * class.c (add_method): Adjust get_member_slot rename.  Bail out
635         if push_class_level_binding fails.  Create slot and grok
636         properties once we're committed to insertion.
638 2018-02-27  Jason Merrill  <jason@redhat.com>
640         PR c++/84489 - dependent default template argument
641         * pt.c (type_unification_real): Handle early substitution failure.
643 2018-02-26  Jason Merrill  <jason@redhat.com>
645         PR c++/84560 - ICE capturing multi-dimensional VLA.
646         * tree.c (array_of_runtime_bound_p): False if the element is
647         variably-modified.
649         PR c++/84441 - ICE with base initialized from ?:
650         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
652         PR c++/84520 - ICE with generic lambda in NSDMI.
653         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
654         'this' in a generic lambda instantiation.
656         PR c++/84559 - ICE with constexpr VLA.
657         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
658         for constexpr variable with VLA type.
660 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
662         PR c++/84558
663         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
664         a valid constant initializer.  Formatting fixes.
666 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
668         PR c++/84540
669         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
670         returning NULL_TREE.
671         (apply_late_template_attributes): Likewise.
673 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
675         PR c++/84557
676         * parser.c (cp_parser_omp_var_list_no_open): Only call
677         cp_parser_lookup_name_simple on names satisfying identifier_p.
678         (cp_parser_oacc_routine): Likewise.
680 2018-02-26  Jason Merrill  <jason@redhat.com>
682         PR c++/84551 - ICE with concepts and -g.
683         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
685 2018-02-26  Marek Polacek  <polacek@redhat.com>
687         PR c++/84325
688         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
689         non-types.
691 2018-02-26  Jason Merrill  <jason@redhat.com>
693         PR c++/84447 - ICE with deleted inherited ctor with default arg.
694         * call.c (build_over_call): Handle deleted functions in one place.
696 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
698         PR c++/84533
699         * decl.c (redeclaration_error_message): Don't try to use
700         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
702 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
704         * lambda.c (build_capture_proxy): Define static.
705         * cp-tree.h (build_capture_proxy): Remove.
707 2018-02-26  Marek Polacek  <polacek@redhat.com>
709         PR c++/84537
710         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
711         if name is error node.
713 2018-02-25  Jason Merrill  <jason@redhat.com>
715         PR c++/84015 - ICE with class deduction and auto template parm.
716         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
718 2018-02-24  Marek Polacek  <polacek@redhat.com>
720         PR c++/83692
721         * constexpr.c (maybe_constant_init_1): New function.
722         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
723         (cxx_constant_init): New function.
724         * cp-tree.h (cxx_constant_init): Declare.
725         * typeck2.c (store_init_value): Call cxx_constant_init instead of
726         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
728 2018-02-22  Jason Merrill  <jason@redhat.com>
730         PR c++/70468 - ICE with constructor delegation via typedef.
731         * pt.c (tsubst_initializer_list): Check for other mem-initializers
732         with constructor delegation.
734 2018-02-22  Jason Merrill  <jason@redhat.com>
736         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
737         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
738         VECTOR_TYPE.
740 2018-02-22  Marek Polacek  <polacek@redhat.com>
742         PR c++/84493
743         * parser.c (cp_parser_braced_list): Use require_open instead of
744         consume_open.
746 2018-02-21  Jason Merrill  <jason@redhat.com>
748         PR c++/84454 - ICE with pack expansion in signature.
749         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
751 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
753         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
754         IF_STMT.
756 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
758         PR c++/84446
759         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
760         on error_mark_node.
762 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
764         PR c++/84445
765         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
766         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
768         PR c++/84449
769         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
770         returns error_mark_node, return it immediately.
771         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
772         error_mark_node, return error_mark_node.
774         PR c++/84455
775         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
776         function_depth to avoid GC during finish_lambda_function.
778 2018-02-19  Jason Merrill  <jason@redhat.com>
780         PR c++/84429 - ICE capturing VLA.
781         * lambda.c (build_capture_proxy): Handle reference refs.
783 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
785         PR c++/84448
786         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
787         either operand is error_mark_node, set current.lhs to that instead of
788         creating a binary op with error_mark_node operands.
790         PR c++/84430
791         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
793 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
795         PR c++/84348
796         * decl.c (grokdeclarator): Early return error_mark_node upon
797         ill-formed friend declaration.
799 2018-02-16  Marek Polacek  <polacek@redhat.com>
800             Jakub Jelinek  <jakub@redhat.com>
802         PR c++/84192
803         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
804         set *jump_target to anything if jump_target is NULL.
806 2018-02-16  Jason Merrill  <jason@redhat.com>
808         PR c++/84151 - unnecessary volatile load with static member.
809         * call.c (build_new_method_call_1): Avoid loading from a volatile
810         lvalue used as the object argument for a static member function.
812         PR c++/81853 - using-directive and constexpr.
813         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
815         PR c++/84420 - ICE with structured binding in lambda.
816         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
818         PR c++/83835 - C++17 error with constructor ctors.
819         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
821         PR c++/82664 - ICE with reference to function template parm.
822         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
823         NOP_EXPRs.
825         PR c++/82764 - C++17 ICE with empty base
826         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
828 2018-02-16  Jason Merrill  <jason@redhat.com>
830         PR c++/84421 - type-dependent if constexpr
831         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
833 2018-02-16  Nathan Sidwell  <nathan@acm.org>
835         Deprecate -ffriend-injection.
836         * decl.c (cxx_init_decl_processing): Emit warning on option.
837         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
838         friend.
840 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
842         PR c++/82468
843         * decl.c (check_special_function_return_type): Reject template
844         template parameter in deduction guide.
846 2018-02-16  Nathan Sidwell  <nathan@acm.org>
848         PR c++/84375
849         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
851 2018-02-15  Jason Merrill  <jason@redhat.com>
853         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
854         * call.c (convert_like_real): Don't use the copy-list-initialization
855         shortcut for ck_base.
857         PR c++/84045 - ICE with typedef and noexcept.
858         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
860         PR c++/84376 - ICE with omitted template arguments.
861         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
863         PR c++/84368 - wrong error with local variable in variadic lambda.
864         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
865         local_specializations.
867 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
869         PR c++/84330
870         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
871         as first argument.
873 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
875         PR c++/84350
876         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
877         init, early return.
879 2018-02-14  Nathan Sidwell  <nathan@acm.org>
881         * decl2.c (mark_vtable_entries): Set input_location to decl's.
882         (c_parse_final_cleanups): Restore input_location after emitting
883         vtables.
885 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
887         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
888         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
889         auto_deduction_context, tree, int): Add defaults.
890         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
891         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
892         tsubst_flags_t argument.
893         * init.c (build_new): Likewise.
895 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
897         PR c++/84364
898         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
899         about return other than *this in assignment operators if
900         retval is type dependent expression.
902 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
904         PR c++/84333
905         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
906         save_expr for the G++ extension.
908 2018-02-13  Jason Merrill  <jason@redhat.com>
910         PR c++/84080 - ICE with return type deduction and specialization.
911         * pt.c (determine_specialization): Check uses_template_parms.
913         Fix more variadic capture issues.
914         * pt.c (find_parameter_packs_r): Also look at explicit captures.
915         (check_for_bare_parameter_packs): Check current_class_type for
916         lambda context.
917         (extract_locals_r): Handle seeing a full instantiation of a pack.
918         (tsubst_pack_expansion): Likewise.  Force lambda capture.
919         * parser.c (cp_parser_lambda_introducer): Don't
920         check_for_bare_parameter_packs.
922         PR c++/84338 - wrong variadic sizeof.
923         * pt.c (argument_pack_select_arg): Like the macro, but look through
924         a pack expansion.
925         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
926         (extract_fnparm_pack): Do make_pack_expansion.
927         (extract_locals_r): Do strip a pack expansion.
928         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
930 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
932         PR c++/84341
933         * parser.c (cp_parser_binary_expression): Use build_min instead of
934         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
936 2018-02-12  Nathan Sidwell  <nathan@acm.org>
938         PR c++/84263
939         * parser.c (cp_parser_decltype): Push and pop
940         deferring_access_checks.  Reorganize to avoid goto.
942 2018-02-12  Richard Biener  <rguenther@suse.de>
944         PR c++/84281
945         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
946         uniform constructors and delay allocating them fully.
948 2018-02-09  Jason Merrill  <jason@redhat.com>
950         PR c++/84036 - ICE with variadic capture.
951         Handle variadic capture proxies more like non-variadic.
952         * lambda.c (build_capture_proxy): Remove workaround.
953         * pt.c (find_parameter_packs_r): The proxy is a pack.
954         (instantiate_class_template_1): Remove dead lambda code.
955         (extract_fnparm_pack): Don't make_pack_expansion.
956         (extract_locals_r): Don't strip a pack expansion.
957         (tsubst_pack_expansion): Handle proxy packs.  Use
958         PACK_EXPANSION_EXTRA_ARGS less.
959         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
960         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
961         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
962         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
963         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
965 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
967         PR sanitizer/83987
968         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
970 2018-02-09  Jason Merrill  <jason@redhat.com>
972         PR c++/81917 - ICE with void_t and partial specialization.
973         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
974         calling most_specialized_partial_spec.
976 2018-02-09  Nathan Sidwell  <nathan@acm.org>
978         PR c/84293
979         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
980         Pass expr location to strict_aliasing_warning.
982 2018-02-09  Jason Merrill  <jason@redhat.com>
984         PR c++/84296 - ICE with qualified-id in template.
985         PR c++/83714
986         * pt.c (unknown_base_ref_p): New.
987         (instantiation_dependent_scope_ref_p): Use it instead of
988         any_dependent_bases_p.
990 2018-02-09  Marek Polacek  <polacek@redhat.com>
991             Jakub Jelinek  <jakub@redhat.com>
993         PR c++/83659
994         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
995         fold_indirect_ref_1, including poly_*int64.  Verify first that
996         tree_fits_poly_int64_p (op01).  Formatting fixes.
998 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1000         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1001         * lambda.c (build_capture_proxy): Likewise.
1002         * search.c (field_access_p): Likewise.
1003         * semantics.c (omp_clause_decl, omp_privatize_field,
1004         finish_omp_clauses): Likewise.
1006 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1008         PR c++/83806
1009         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1010         case of nullptr too.
1012 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1014         * class.c (finish_struct): Fix std:initializer_list diagnostic
1015         formatting.
1017 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1019         PR c++/83204
1020         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1022 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1024         PR c++/84082
1025         * parser.c (cp_parser_dot_deref_incomplete): New function.
1026         (cp_parser_postfix_dot_deref_expression): Use it.
1028 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1030         PR c++/81610
1031         PR c++/80567
1032         * name-lookup.c (suggest_rid_p): New function.
1033         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1034         suggest_rid_p.
1036 2018-02-07  Jason Merrill  <jason@redhat.com>
1038         PR c++/84182 - ICE with captured lambda
1039         PR c++/84181
1040         * pt.c (extract_locals_r, extract_local_specs): New.
1041         (tsubst_pack_expansion): Use them.
1043 2018-02-07  Martin Liska  <mliska@suse.cz>
1045         PR c++/84059.
1046         * class.c (add_method): Append argument value.
1047         * cp-tree.h (maybe_version_functions): Add new argument.
1048         * decl.c (decls_match): Call it if a declaration does not
1049         have DECL_FUNCTION_VERSIONED.
1050         (maybe_version_functions): record argument is added.
1052 2018-02-05  Marek Polacek  <polacek@redhat.com>
1054         * class.c: Remove unused global variables.
1055         (build_primary_vtable): Don't gather statistics.
1056         (print_class_statistics): Remove.
1057         * cp-tree.h (print_class_statistics): Remove.
1058         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1060 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1062         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1063         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1064         * decl.c (next_initializable_field, find_decomp_class_base,
1065         cp_finish_decomp): Likewise.
1066         * typeck2.c (process_init_constructor_record): Likewise.
1068 2018-02-02  Jason Merrill  <jason@redhat.com>
1070         PR c++/84181 - ICE with lambda parm in template argument.
1071         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1073 2018-02-01  Jason Merrill  <jason@redhat.com>
1075         PR c++/84160 - ICE with nested variadic capture.
1076         * lambda.c (is_capture_proxy_with_ref): New.
1077         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1078         COMPONENT_REF.
1079         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1080         * constexpr.c (potential_constant_expression_1): Likewise.
1081         * semantics.c (process_outer_var_ref): Likewise.
1083 2018-02-01  Marek Polacek  <polacek@redhat.com>
1085         PR c++/84125
1086         * typeck.c (build_address): Relax the assert when
1087         processing_template_decl.
1089 2018-02-01  Jason Merrill  <jason@redhat.com>
1091         PR c++/84126 - ICE with variadic generic lambda
1092         PR c++/84036
1093         PR c++/82249
1094         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1095         PACK_EXPANSION_EXTRA_ARGS.
1097 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1099         PR c++/83796
1100         * call.c (convert_like_real): If w're initializing from {} explicitly
1101         call abstract_virtuals_error_sfinae.
1103 2018-01-31  Jason Merrill  <jason@redhat.com>
1104             Jakub Jelinek  <jakub@redhat.com>
1106         PR c++/83993
1107         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1108         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1109         on ADDR_EXPR.
1111 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1113         PR c++/83993
1114         * constexpr.c (diag_array_subscript): Emit different diagnostics
1115         if TYPE_DOMAIN (arraytype) is NULL.
1116         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1117         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1119 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1121         PR c++/84092
1122         * semantics.c (finish_qualified_id_expr): When handling an
1123         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1125 2018-01-31  Marek Polacek  <polacek@redhat.com>
1127         PR c++/84138
1128         * cp-gimplify.c (cp_fold): Check if X is an error node before
1129         calling useless_type_conversion_p.
1131 2018-01-30  Jason Merrill  <jason@redhat.com>
1133         PR c++/84091 - ICE with local class in lambda in template.
1134         * decl2.c (determine_visibility): Look for outer containing template
1135         instantiation.
1137         PR c++/84098 - ICE with lambda in template NSDMI.
1138         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1140 2018-01-29  Jason Merrill  <jason@redhat.com>
1142         PR c++/68810 - wrong location for reinterpret_cast error.
1143         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1144         !dofold.
1146 2018-01-29  Marek Polacek  <polacek@redhat.com>
1148         PR c++/83996
1149         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1150         => fooarray[1] in offset_int.
1152 2018-01-29  Jason Merrill  <jason@redhat.com>
1154         PR c++/83942 - wrong unused warning with static_cast.
1155         * cvt.c (ocp_convert): Call mark_rvalue_use.
1157 2018-01-26  Jason Merrill  <jason@redhat.com>
1159         PR c++/83956 - wrong dtor error with anonymous union
1160         * method.c (walk_field_subobs): Variant members only affect
1161         deletedness.
1162         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1164         PR c++/84036 - ICE with variadic capture.
1165         PR c++/82249
1166         * pt.c (tsubst_pack_expansion): When optimizing a simple
1167         substitution, pull a single pack expansion out of its pack.
1169         PR c++/82514 - ICE with local class in generic lambda.
1170         * pt.c (regenerated_lambda_fn_p): Remove.
1171         (enclosing_instantiation_of): Don't use it.
1172         (tsubst_function_decl): Call enclosing_instantiation_of.
1174         * pt.c (lookup_template_class_1): Add sanity check.
1175         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1177 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1179         PR c++/84031
1180         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1181         recursive calls that return ret.
1182         (cp_finish_decomp): Ignore unnamed bitfields.
1184 2018-01-23  Jason Merrill  <jason@redhat.com>
1186         PR c++/82249 - wrong mismatched pack length error.
1187         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1188         unsubstituted function parameter pack.
1190 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1192         PR c++/83921
1193         * decl.c (check_for_uninitialized_const_var): Not static; add
1194         bool and tsubst_flags_t parameters; adjust to be used both in
1195         constexpr context and not.
1196         * constexpr.c (potential_constant_expression_1): Use the above.
1197         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1199 2018-01-23  Jason Merrill  <jason@redhat.com>
1201         PR c++/83947 - ICE with auto declarations.
1202         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1203         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1205 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1207         PR c++/83974
1208         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1209         for pointer to member function types.
1211 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1213         PR sanitizer/83987
1214         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1215         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1217 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1219         PR c++/83988
1220         * pt.c (tsubst_baselink): Remove optype assert.
1221         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1223 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1225         PR c++/83958
1226         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1227         refers to incomplete type.
1229 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1231         Deprecate ARM-era for scope handling
1232         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1233         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1234         cleared.
1235         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1236         cleanup handling.
1237         * semantics.c (begin_for_scope): Flag_new_for_scope is
1238         boolean-like.
1239         (finish_for_stmt, begin_range_for_stmt): Likewise.
1241 2018-01-22  Jason Merrill  <jason@redhat.com>
1243         PR c++/83720
1244         * decl2.c (determine_visibility): Fix template_decl handling
1245         instead of blocking it.
1247         PR c++/83720 - ICE with lambda and LTO.
1248         * decl2.c (determine_visibility): Clear template_decl for
1249         function-scope decls.  Propagate anonymous linkage from containing
1250         function.
1252 2018-01-22  Marek Polacek  <polacek@redhat.com>
1254         PR c++/81933
1255         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1256         split out anything.
1258 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1260         PR c++/83895
1261         * decl.c (grokdeclarator): Don't diagnose extra parens
1262         on typedefs.
1264 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1266         PR c++/81167
1267         * call.c (joust): Use TREE_TYPE (source) if source is
1268         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1270         PR c++/83919
1271         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1272         for direct enum init.
1273         * decl.c (reshape_init): Likewise.
1275 2018-01-19  Marek Polacek  <polacek@redhat.com>
1277         * constexpr.c (fold_simple): Simplify.
1279 2018-01-18  Jason Merrill  <jason@redhat.com>
1281         PR c++/83714
1282         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1283         * pt.c (instantiation_dependent_scope_ref_p): True if
1284         any_dependent_bases_p.
1286 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1288         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1289         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1291 2018-01-18  Jason Merrill  <jason@redhat.com>
1293         PR c++/82461 - constexpr list-initialized member
1294         * constexpr.c (potential_constant_expression_1): Check
1295         TARGET_EXPR_DIRECT_INIT_P.
1297 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1299         PR c++/81013
1300         * decl.c (xref_basetypes): Early return upon error about derived
1301         union.
1303 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1305         PR c++/83160
1306         * cp-tree.h (mark_use): Declare.
1307         * expr.c (mark_use): Make extern.
1308         * call.c (direct_reference_binding): Set inner conv's
1309         rvaluedness_matches_p, if it is an identity.
1310         (convert_like_real): Mark lvalue or rvalue use for identity as
1311         rvaledness_matches_p demands.
1313 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1315         PR c++/83824
1316         * parser.c (attr_chainon): New function.
1317         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1318         cp_parser_namespace_definition, cp_parser_init_declarator,
1319         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1320         cp_parser_gnu_attributes_opt): Use it.
1321         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1322         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1323         prefix_attributes if attributes is error_mark_node.
1325 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1327         PR c++/78344
1328         * decl.c (grokdeclarator): Do not append the error_mark_node
1329         due to an erroneous optional attribute-specifier-seq.
1331 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1333         PR c++/83897
1334         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1335         CLEANUP_POINT_EXPR.
1337 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1339         PR c++/81054
1340         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1341         error_mark_node when we give an error.
1342         * decl.c (cp_finish_decl): Use the latter.
1344 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1346         PR c++/83287
1347         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1349 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1351         PR c++/83814
1352         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1353         the C++ part.  If processing a template, call
1354         fold_non_dependent_expr rather than fully folding.
1356 2018-01-17  Jason Merrill  <jason@redhat.com>
1358         PR c++/81067 - redundant NULL warning.
1359         * call.c (convert_like_real): Restore null_node handling.
1361 2018-01-17  Jason Merrill  <jason@redhat.com>
1363         PR c++/81843 - ICE with variadic member template.
1364         PR c++/72801
1365         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1366         template args.
1368 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1370         PR c++/83799
1371         * pt.c (type_dependent_expression_p): Strip any location wrapper
1372         before testing tree codes.
1373         (selftest::test_type_dependent_expression_p): New function.
1374         (selftest::cp_pt_c_tests): Call it.
1376 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1378         PR c++/83739
1379         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1380         this not a final instantiation.
1382 2018-01-16  Jason Merrill  <jason@redhat.com>
1384         PR c++/83714 - ICE checking return in template.
1385         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1387 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1389         PR c++/83817
1390         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1391         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1392         instead of CALL_FROM_THUNK_P.
1394         PR c++/83825
1395         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1396         (resort_type_member_vec, set_class_bindings,
1397         insert_late_enum_def_bindings): Use vec qsort method instead of
1398         calling qsort directly.
1400 2018-01-15  Martin Sebor  <msebor@redhat.com>
1402         PR c++/83588
1403         * class.c (find_flexarrays): Make a record of multiple flexible array
1404         members.
1406 2018-01-12  Jason Merrill  <jason@redhat.com>
1408         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1409         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1411 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1413         * cp-tree.h (mark_rvalue_use): Add parm name.
1414         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1415         mark_rvalue_use.
1416         * call.c (convert_like_real): Fix formatting.
1418 2018-01-11  Jason Merrill  <jason@redhat.com>
1420         PR c++/82728 - wrong -Wunused-but-set-variable
1421         PR c++/82799
1422         PR c++/83690
1423         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1424         * decl.c (case_conversion): Likewise.
1425         * semantics.c (finish_static_assert): Call
1426         perform_implicit_conversion_flags.
1428 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1430         * method.c (enum mangling_flags): Delete long-dead enum.
1432 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1434         * parser.c (cp_parser_std_attribute_spec): When
1435         token_pair::require_open / require_close return false simply
1436         return error_mark_node, avoid duplicate cp_parser_error about
1437         expected '(' / ')', respectively.
1439 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1441         PR c++/43486
1442         * call.c (null_ptr_cst_p): Strip location wrappers when
1443         converting from '0' to a pointer type in C++11 onwards.
1444         (conversion_null_warnings): Replace comparison with null_node with
1445         call to null_node_p.
1446         (build_over_call): Likewise.
1447         * cp-gimplify.c (cp_fold): Remove the early bailout when
1448         processing_template_decl.
1449         * cp-lang.c (selftest::run_cp_tests): Call
1450         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1451         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1452         (selftest::run_cp_tests): Move decl to bottom of file.
1453         (null_node_p): New inline function.
1454         (selftest::cp_pt_c_tests): New decl.
1455         (selftest::cp_tree_c_tests): New decl.
1456         * cvt.c (build_expr_type_conversion): Replace comparison with
1457         null_node with call to null_node_p.
1458         * error.c (args_to_string): Likewise.
1459         * except.c (build_throw): Likewise.
1460         * mangle.c (write_expression): Skip location wrapper nodes.
1461         * parser.c (literal_integer_zerop): New function.
1462         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1463         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1464         param of cp_parser_parenthesized_expression_list.  When calling
1465         warn_for_memset, replace integer_zerop calls with
1466         literal_integer_zerop, eliminating the double logical negation
1467         cast to bool.  Eliminate the special-casing for CONST_DECL in
1468         favor of the fold_for_warn within warn_for_memset.
1469         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1470         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1471         maybe_add_location_wrapper on it when wrap_locations_p is true.
1472         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1473         the result for RID_ALIGNOF and RID_SIZEOF.
1474         (cp_parser_builtin_offsetof): Likewise.
1475         * pt.c: Include "selftest.h".
1476         (tsubst_copy): Handle location wrappers.
1477         (tsubst_copy_and_build): Likewise.
1478         (build_non_dependent_expr): Likewise.
1479         (selftest::test_build_non_dependent_expr): New function.
1480         (selftest::cp_pt_c_tests): New function.
1481         * tree.c: Include "selftest.h".
1482         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1483         (selftest::test_lvalue_kind): New function.
1484         (selftest::cp_tree_c_tests): New function.
1485         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1486         (cp_build_binary_op): Replace comparison with null_node with call
1487         to null_node_p.
1488         (build_address): Use location of operand when building address
1489         expression.
1491 2018-01-10  Marek Polacek  <polacek@redhat.com>
1493         PR c++/82541
1494         * call.c (build_conditional_expr_1): Check complain before warning.
1495         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1496         -Wduplicated-branches.
1498 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1500         PR c++/81327
1501         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1502         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1503         args uses and check number of operands too.  Don't strip away any
1504         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1505         Deal with src argument not having pointer type.  Check
1506         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1507         test.
1508         (build_over_call): Call maybe_warn_class_memaccess here on the
1509         original arguments.
1510         (build_cxx_call): Rather than here on converted arguments.
1512 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1514         PR c++/81055
1515         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1516         error_mark_node as second argument.
1518 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1520         PR c++/83734
1521         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1522         in STATEMENT_LIST.  Remove unneeded assert.
1524 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1525             Alan Hayward  <alan.hayward@arm.com>
1526             David Sherwood  <david.sherwood@arm.com>
1528         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1529         VECTOR_CST_NELTS.
1530         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1531         * call.c (build_conditional_expr_1): Likewise.
1532         * decl.c (cp_finish_decomp): Likewise.
1533         * mangle.c (write_type): Likewise.
1534         * typeck.c (structural_comptypes): Likewise.
1535         (cp_build_binary_op): Likewise.
1536         * typeck2.c (process_init_constructor_array): Likewise.
1538 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1540         PR c++/83555
1541         * typeck.c (build_static_cast_1): For static casts to reference types,
1542         call build_base_path with flag_delete_null_pointer_checks as nonnull
1543         instead of always false.  When -fsanitize=null, call
1544         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1545         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1546         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1548 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1550         PR c++/83667
1551         * method.c (make_alias_for): Copy DECL_CONTEXT.
1553 2018-01-03  Marek Polacek  <polacek@redhat.com>
1555         PR c++/83592
1556         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1558 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1560         PR preprocessor/83602
1561         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1562         for builtin macros.
1564         PR c++/83634
1565         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1566         error_mark_node, return error_mark_node.
1568         Update copyright years.
1570 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1572         PR c++/83556
1573         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1574         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1575         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1576         to false and return.
1577         (replace_placeholders): Pass NULL instead of &pset as last argument
1578         to cp_walk_tree.
1580 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1582         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1583         lval var.
1585 Copyright (C) 2018 Free Software Foundation, Inc.
1587 Copying and distribution of this file, with or without modification,
1588 are permitted in any medium without royalty provided the copyright
1589 notice and this notice are preserved.