PR c++/85076
[official-gcc.git] / gcc / cp / ChangeLog
blobb410f3d003e4473c248aec1ea86919db1699e281
1 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/85076
4         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
5         return it right away.
7 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
9         * search.c (check_final_overrider): Use inform instead of error
10         for the diagnostics of the overridden functions.  Tweak wording.
12 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
14         PR c++/85068
15         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
16         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
18 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
19             Jason Merrill  <jason@redhat.com>
21         PR c++/84632
22         * init.c (build_aggr_init): When initializing from array,
23         reject anything but CONSTRUCTORs and TARGET_EXPRs.
24         (build_vec_init): Handle separately ARRAY_TYPEs.
26 2018-03-26  Jason Merrill  <jason@redhat.com>
28         PR c++/85062 - ICE with alignas in wrong place.
29         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
30         here.
32         PR c++/85049 - ICE with __integer_pack.
33         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
34         * cp-tree.h (TEMPLATE_PARM_P): New.
36 2018-03-23  Jason Merrill  <jason@redhat.com>
38         PR c++/78489 - wrong SFINAE behavior.
40         PR c++/84489
41         * pt.c (type_unification_real): Don't defer substitution failure.
43 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
45         PR c++/85015
46         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
47         result.
49         PR c++/84942
50         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
51         cp_build_unary_op call with gcc_unreachable ().
53 2018-03-23  Marek Polacek  <polacek@redhat.com>
55         PR c++/85045
56         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
57         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
58         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
60 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
62         Implement P0962
63         * parser.c (cp_parser_perform_range_for_lookup): Change
64         the condition for deciding whether to use members.
66 2018-03-23  Marek Polacek  <polacek@redhat.com>
68         PR c++/85033
69         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
71 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
73         PR c++/71251
74         * parser.c (cp_parser_alias_declaration): Call
75         parser_check_template_parameters.
77         PR c++/84789
78         * pt.c (resolve_typename_type): Drop assert that stopped
79         simplification to template-independent types.  Add assert to
80         verify the initial scope is template dependent.
81         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
82         Reparse the id expression as a type-name, not a declarator.
84         PR c++/84729
85         * init.c (build_vec_init): Error at parenthesized array init.
87         PR c++/84610
88         PR c++/84642
89         PR c++/84942
90         * cp-tree.h (temp_override): New template class, generalizing
91         a cleanup that was only used...
92         * parser.c (cp_parser_parameter_declaration_clause):
93         ... here for auto_is_implicit_function_template_parm_p.
94         (cp_parser_gnu_attributes_opt): Use it here as well.
95         (cp_parser_std_attribute): Likewise.
97 2018-03-22  Marek Polacek  <polacek@redhat.com>
99         PR c++/84854
100         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
101         is boolean.
103 2018-03-21  Jason Merrill  <jason@redhat.com>
105         PR c++/81311 - wrong C++17 overload resolution.
106         * call.c (build_user_type_conversion_1): Remove C++17 code.
107         (conv_binds_ref_to_prvalue): New.
108         (build_over_call): Handle C++17 copy elision.
109         (build_special_member_call): Only do C++17 copy elision here if the
110         argument is already the right type.
112 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
114         PR c++/71965
115         * init.c (build_vec_init): Silence error, former sorry,
116         without tf_error.
118         PR c++/84610
119         PR c++/84642
120         * parser.c (abort_fully_implicit_template_p): New.
121         (cp_parser_skip_to_end_of_statement): Use it.
122         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
123         (finish_fully_implicit_template_p): Clear
124         implicit_template_parms and implicit_template_scope.
126 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
128         PR c++/84972
129         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
130         error_mark_node when check_array_designated_initializer fails.
132 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
134         PR c++/84961
135         * cp-tree.h (genericize_compound_lvalue): Declare.
136         * typeck.c (genericize_compound_lvalue): New function.
137         (unary_complex_lvalue, cp_build_modify_expr): Use it.
138         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
139         and PREDECREMENT_EXPR in output and "m" constrained input operands with
140         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
141         COMPOUND_EXPR operand.
143 2018-03-21  Nathan Sidwell  <nathan@acm.org>
145         PR c++/85008
146         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
147         * decl2.c (vague_linkage_p): Likewise.
149 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
151         PR c++/84994
152         * constexpr.c (constexpr_fn_retval): Make non-"static".
153         * cp-tree.h (constexpr_fn_retval): New decl.
154         * search.c (direct_accessor_p): Update leading comment.
155         (reference_accessor_p): Likewise.
156         (field_accessor_p): Replace check that function body is a
157         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
158         indentation of "field_type" decl.
160 2018-03-21  Nathan Sidwell  <nathan@acm.org>
162         PR c++/84804
163         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
164         complete classes.
166 2018-03-21  Martin Sebor  <msebor@redhat.com>
168         PR c++/84850
169         * call.c (first_non_public_field): New template and function.
170         (first_non_trivial_field): New function.
171         (maybe_warn_class_memaccess): Call them.
173 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
175         PR c++/84892
176         * search.c (field_accessor_p): Use class_of_this_parm rather than
177         type_of_this_parm, to check that "this" is a "const T *", rather
178         than a "T *const".
180 2018-03-21  Nathan Sidwell  <nathan@acm.org>
182         * class.c (finish_struct_anon_r): Refactor, deprecate anything
183         other than public non-static data members.
184         * parser.c (cp_parser_init_declarator): Deprecate attributes after
185         parenthesized initializer.
187         PR c++/84836
188         * name-lookup.c (update_binding): Correct logic for local binding
189         update.
191 2018-03-21  Marek Polacek  <polacek@redhat.com>
193         PR c++/71638, ICE with NSDMI and reference.
194         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
195         even when we replace an element.
197 2018-03-20  Marek Polacek  <polacek@redhat.com>
199         PR c++/84978, ICE with NRVO.
200         * constexpr.c (cxx_eval_constant_expression): Handle the case when
201         a RESULT_DECL isn't in the hash map.
203 2018-03-20  Jason Merrill  <jason@redhat.com>
205         PR c++/84978, ICE with NRVO.
206         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
207         (cp_get_callee_fndecl_nofold): New.
208         * cp-gimplify.c (cp_genericize_r): Use it instead.
209         * call.c (check_self_delegation): Likewise.
211 2018-03-20  Nathan Sidwell  <nathan@acm.org>
213         PR c++/84962
214         * name-lookup.c (pushdecl_class_level): Push anon-struct's
215         member_vec, if there is one.
217         PR c++/84970
218         * cp-tree.h (lookup_list_keep): Declare.
219         * tree.c (lookup_list_keep): New, broken out of ...
220         (build_min): ... here.  Call it.
221         * decl.c (cp_finish_decl): Call lookup_list_keep.
223 2018-03-19  Jason Merrill  <jason@redhat.com>
225         PR c++/84937 - ICE with class deduction and auto.
226         * pt.c (rewrite_template_parm): Fix auto handling.
228 2018-03-19  Marek Polacek  <polacek@redhat.com>
230         PR c++/84925
231         * pt.c (enclosing_instantiation_of): Check if fn is null.
233         PR c++/84927
234         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
235         as we evaluate the elements.
236         (cxx_eval_constant_expression): Verify constructor's flags
237         unconditionally.
239 2018-03-19  Jason Merrill  <jason@redhat.com>
241         PR c++/71834 - template-id with too few arguments.
242         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
244 2018-03-19  Nathan Sidwell  <nathan@acm.org>
246         PR c++/84835
247         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
248         * pt.c (build_template_decl): Propagate language linkage.
250         PR c++/84812
251         * name-lookup.c (set_local_extern_decl_linkage): Defend against
252         ambiguous lookups.
254 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
256         PR c/84910
257         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
258         diagnostics.
259         * method.c (synthesize_method): Likewise.
260         * pt.c (convert_nontype_argument): Likewise.
262 2018-03-16  Jason Merrill  <jason@redhat.com>
264         PR c++/84720 - ICE with rvalue ref non-type argument.
265         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
266         (convert_nontype_argument): Revert earlier change.
268         PR c++/80227 - SFINAE and negative array size.
269         * decl.c (compute_array_index_type): Use
270         build_converted_constant_expr and valid_constant_size_p.
272         PR c++/84906 - silent wrong code with ambiguous conversion.
273         * call.c (build_user_type_conversion_1): Set need_temporary_p on
274         ambiguous conversion.
275         (convert_like_real): Check it.
277         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
278         * call.c (build_special_member_call): Don't convert an init-list
279         argument directly to the class type.
281 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
283         PR c++/79937
284         PR c++/82410
285         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
286         (find_placeholder): Declare.
287         * tree.c (struct replace_placeholders_t): Add exp member.
288         (replace_placeholders_r): Don't walk into ctors with
289         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
290         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
291         (replace_placeholders): Initialize data.exp.
292         (find_placeholders_r, find_placeholders): New functions.
293         * typeck2.c (process_init_constructor_record,
294         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
295         if adding NSDMI on which find_placeholder returns true.
296         * call.c (build_over_call): Don't call replace_placeholders here.
297         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
298         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
299         TARGET_EXPR_INITIAL.
300         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
301         ctor.
303 2018-03-16  Jason Merrill  <jason@redhat.com>
305         PR c++/83911 - ICE with multiversioned constructor.
306         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
307         dispatchere here.
308         * call.c (build_over_call): Not here.
310 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
312         PR c++/84874
313         * decl.c (reshape_init_class): Don't assert d->cur->index == field
314         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
316 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
318         PR c++/84222
319         * cp-tree.h (cp_warn_deprecated_use): Declare.
320         * tree.c (cp_warn_deprecated_use): New function.
321         * typeck2.c (build_functional_cast): Use it.
322         * decl.c (grokparms): Likewise.
323         (grokdeclarator): Likewise.  Temporarily push nested class scope
324         around grokparms call for out of class member definitions.
326 2018-03-14  Jason Merrill  <jason@redhat.com>
328         PR c++/84820 - no error for invalid qualified-id.
329         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
330         cp_error_declarator.
332         PR c++/84801 - ICE with unexpanded pack in lambda.
333         * pt.c (check_for_bare_parameter_packs): Don't return early for a
334         lambda in non-template context.
336         PR c++/81236 - auto variable and auto function
337         * pt.c (tsubst_baselink): Update the type of the BASELINK after
338         mark_used.
340 2018-03-14  Jason Merrill  <jason@redhat.com>
342         PR c++/83916 - ICE with template template parameters.
343         * pt.c (convert_template_argument): Don't substitute into type of
344         non-type parameter if we don't have enough arg levels.
345         (unify): Likewise.
347 2018-03-14  Marek Polacek  <polacek@redhat.com>
349         PR c++/84596
350         * semantics.c (finish_static_assert): Check
351         instantiation_dependent_expression_p instead of
352         {type,value}_dependent_expression_p.
354 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
355             Jason Merrill  <jason@redhat.com>
357         PR c++/82336 - link error with list-init default argument.
358         * decl.c (check_default_argument): Unshare an initializer list.
360 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
362         PR c++/84843
363         * decl.c (duplicate_decls): For redefinition of built-in, use error
364         and return error_mark_node.  For redeclaration, return error_mark_node
365         rather than olddecl if !flag_permissive.
367 2018-03-13  Jason Merrill  <jason@redhat.com>
369         PR c++/82565 - ICE with concepts and generic lambda.
370         * pt.c (instantiate_decl): Clear fn_context for lambdas.
372 2018-03-13  Jason Merrill  <jason@redhat.com>
374         PR c++/84720 - ICE with rvalue ref non-type argument.
375         * pt.c (convert_nontype_argument): Handle rvalue references.
377         PR c++/84839 - ICE with decltype of parameter pack.
378         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
379         instantiating dummy parms.
381         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
382         parameter even without -Wpedantic.
384         PR c++/84798 - ICE with auto in abstract function declarator.
385         * parser.c (cp_parser_parameter_declaration_clause): Check
386         parser->default_arg_ok_p.
388 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
390         PR c++/84808
391         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
392         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
393         sizetype.  Formatting fixes.
395 2018-03-12  Jason Merrill  <jason@redhat.com>
397         PR c++/84355 - ICE with deduction for member class template.
398         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
399         CLASS_PLACEHOLDER_TEMPLATE.
401         PR c++/84802 - ICE capturing uninstantiated class.
402         * lambda.c (build_capture_proxy): Call complete_type.
404 2018-03-09  Jason Merrill  <jason@redhat.com>
406         PR c++/84770 - ICE with typedef and parameter pack.
407         * pt.c (verify_unstripped_args_1): Split out from
408         verify_unstripped_args.
410         PR c++/84785 - ICE with alias template and default targs.
411         * pt.c (type_unification_real): Set processing_template_decl if
412         saw_undeduced == 1.
414         PR c++/84752 - ICE with capture of constexpr array.
415         * call.c (standard_conversion): Set rvaluedness_matches_p on the
416         identity conversion under ck_lvalue.
418 2018-03-09  Jason Merrill  <jason@redhat.com>
419             Paolo Carlini  <paolo.carlini@oracle.com>
421         PR c++/71169
422         PR c++/71832
423         * pt.c (any_erroneous_template_args_p): New.
424         * cp-tree.h (any_erroneous_template_args_p): Declare it.
425         * parser.c (cp_parser_class_specifier_1): Use it.
427 2018-03-09  Jason Merrill  <jason@redhat.com>
429         PR c++/84726 - unnecessary capture of constant vars.
430         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
431         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
432         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
433         * lambda.c (is_constant_capture_proxy)
434         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
435         (prune_lambda_captures): New.
436         (finish_lambda_function): Call prune_lambda_captures.
438 2018-03-09  Jason Merrill  <jason@redhat.com>
439             Jakub Jelinek  <jakub@redhat.com>
441         PR c++/84076
442         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
443         build ADDR_EXPR with REFERENCE_TYPE.
444         (build_over_call): For purposes of check_function_arguments, if
445         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
446         its operand rather than the argument itself.
448 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
450         PR c++/84724
451         * decl.c (duplicate_decls): Don't override __* prefixed builtins
452         except for __[^b]*_chk, instead issue permerror and for -fpermissive
453         also a note and return olddecl.
455 2018-03-09  Nathan Sidwell  <nathan@acm.org>
457         PR c++/84733
458         * name-lookup.c (do_pushdecl_with_scope): Only clear
459         current_function_decl when pushing a non-class (i.e. namespace)
460         scope.
462 2018-03-08  Jason Merrill  <jason@redhat.com>
463             Jakub Jelinek  <jakub@redhat.com>
465         PR c++/80598
466         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
467         not calling mark_used for the benefit of -Wunused-function warning.
469 2018-03-06  Jason Merrill  <jason@redhat.com>
471         * lambda.c (is_capture_proxy_with_ref): Remove.
472         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
474 2018-03-06  Marek Polacek  <polacek@redhat.com>
476         PR c++/84684
477         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
478         arguments.
480 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
482         PR c++/84231
483         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
484         only while processing template decls.
485         * typeck.c (build_x_conditional_expr): Move wrapping of
486         reference type around type...
487         * call.c (build_conditional_expr_1): ... here.  Rename
488         is_lvalue to is_glvalue.
489         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
490         INDIRECT_REF of COND_EXPR too.
492         PR c++/84593
493         * init.c (build_zero_init_1): Zero-initialize references.
495         PR c++/84492
496         * semantics.c (finish_stmt_expr_expr): Reject unresolved
497         overloads used as stmt expr values.
499 2018-03-05  Jason Merrill  <jason@redhat.com>
501         PR c++/84708 - ICE with lambda in local class NSDMI.
502         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
503         context.
505 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
507         PR c++/84684
508         * constexpr.c (constexpr_call_hasher::equal): Return false if
509         lhs->hash != rhs->hash.  Change return 1 to return true and
510         return 0 to return false.
512 2018-03-05  Nathan Sidwell  <nathan@acm.org>
514         PR c++/84702
515         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
517 2018-03-05  Marek Polacek  <polacek@redhat.com>
519         PR c++/84707
520         * decl.c (duplicate_decls): Check DECL_NAME before accessing
521         UDLIT_OPER_P.
523 2018-03-05  Nathan Sidwell  <nathan@acm.org>
525         PR c++/84694
526         * friend.c (do_friend): Restore check for identifier_p inside
527         TEMPLATE_ID_EXPR.
529 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
531         PR c++/84618
532         * parser.c (cp_parser_lambda_introducer): Reject any capture not
533         involving a VAR_DECL or a PARM_DECL.
535 2018-03-05  Pádraig Brady  <P@draigBrady.com>
536             Jason  Merrill  <jason@redhat.com>
537             Nathan Sidwell  <nathan@acm.org>
539         PR c++/84497
540         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
542 2018-03-03  Jason Merrill  <jason@redhat.com>
544         PR c++/84686 - missing volatile loads.
545         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
547 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
549         PR c++/71464
550         * optimize.c (maybe_thunk_body): Bail out immediately if either
551         fns[0] or fns[1] is null.
553 2018-03-02  Marek Polacek  <polacek@redhat.com>
555         PR c++/84578
556         * constexpr.c (get_array_or_vector_nelts): New.
557         (cxx_eval_array_reference): Use it.
558         (cxx_eval_vec_init_1): Likewise.
559         (cxx_eval_store_expression): Likewise.
561 2018-03-02  Jason Merrill  <jason@redhat.com>
563         * semantics.c (force_paren_expr): Remove redundant test.
565 2018-03-02  Marek Polacek  <polacek@redhat.com>
567         PR c++/84663
568         * decl.c (cp_complete_array_type): Check error_mark_node.
570         PR c++/84664
571         * typeck.c (cp_perform_integral_promotions): Check the result of
572         mark_rvalue_use.
574 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
576         PR c++/84662
577         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
578         RETURN instead of return.
579         <case POINTER_PLUS_EXPR>: Likewise.
580         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
581         it instead of wrapping it into CONVERT_EXPR.
583 2018-03-02  Jason Merrill  <jason@redhat.com>
585         Fix MIPS16 ICE.
586         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
588 2018-03-02  Marek Polacek  <polacek@redhat.com>
590         PR c++/84590
591         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
592         wrapped in VIEW_CONVERT_EXPR.
594 2018-03-01  Martin Sebor  <msebor@redhat.com>
596         PR c++/84294
597         * decl.c (check_redeclaration_no_default_args): Merge attributes
598         specified on redeclarations of the same function template.
599         Remove dead code.
601 2018-03-01  Marek Polacek  <polacek@redhat.com>
602             Jason Merrill  <jason@redhat.com>
604         PR c++/84582
605         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
606         a template.
607         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
608         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
609         of instantiate_non_dependent_expr.
610         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
612 2018-03-01  Nathan Sidwell  <nathan@acm.org>
614         PR c++/84434
615         * name-lookup.c (member_vec_dedup): Remove manually peeled
616         iteration.  Ignore dependent ctor inheritance.
618 2018-03-01  Jason Merrill  <jason@redhat.com>
620         PR c++/71569 - decltype of template.
621         * parser.c (cp_parser_decltype_expr): Handle missing template args.
623 2018-03-01  Marek Polacek  <polacek@redhat.com>
625         PR c++/84596
626         * constexpr.c (require_rvalue_constant_expression): New function.
627         * cp-tree.h: Declare it.
628         * semantics.c (finish_static_assert): Use it instead of
629         require_potential_rvalue_constant_expression.
631 2018-03-01  Jason Merrill  <jason@redhat.com>
632             Alexandre Oliva <aoliva@redhat.com>
634         PR c++/71569 - ICE with redundant args on member variable template.
635         * decl.c (start_decl): Handle partial specialization of member
636         variable template.
637         * pt.c (determine_specialization): Allow partial specialization
638         of member variable template without specializing enclosing class.
639         (process_partial_specialization): Improve error message.
641 2018-02-28  Jason Merrill  <jason@redhat.com>
643         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
644         * pt.c (determine_specialization): Check ref-qualifier.
646 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
648         PR c++/84609
649         * parser.c (cp_parser_attributes_opt): Formatting fix.
650         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
651         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
652         New functions.
653         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
654         instead of tentative parse to peek over optional attribute tokens
655         to check for CPP_COLON after them.
657         PR c++/83871
658         PR c++/83503
659         * pt.c (INCLUDE_STRING): Remove define.
660         (warn_spec_missing_attributes): Use pretty_printer instead of
661         std::string.  Fix up inform call so that the list of attributes
662         is in %s argument.
664 2018-02-28  Martin Sebor  <msebor@redhat.com>
666         PR testsuite/84617
667         * decl.c (duplicate_decls): Fully merge attributes const, pure,
668         and malloc.
670 2018-02-28  Nathan Sidwell  <nathan@acm.org>
672         PR c++/84602
673         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
674         * name-lookup.c (fields_linear_search): Look in an anon-aggr
675         regardless of want_type.
676         (search_anon_aggr): Just use get_class_binding_direct.
678 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
680         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
681         inform_n.
683 2018-02-27  Martin Sebor  <msebor@redhat.com>
685         * pt.c: Avoid including <string> directly.
687 2018-02-27  Martin Sebor  <msebor@redhat.com>
689         PR c++/83871
690         PR c++/83503
691         * cp-tree.h (warn_spec_missing_attributes): New function.
692         ((check_explicit_specialization): Add an argument.  Call the above
693         function.
694         * decl.c (duplicate_decls): Avoid applying primary function template's
695         attributes to its explicit specializations.
696         cp/pt.c (warn_spec_missing_attributes): Define.
698 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
700         PR c++/71546 - lambda init-capture with qualified-id.
701         * parser.c (cp_parser_lambda_introducer): Clear scope after
702         each lambda capture.
704 2018-02-27  Nathan Sidwell  <nathan@acm.org>
706         PR c++/84426
707         * name-lookup.h (get_member_slot): Rename ...
708         (find_member_slot): ... here.
709         (add_member_slot): New.
710         * name-lookup.c (member_vec_linear_search): No need to check for
711         NULL slot.
712         (get_member_slot): Rename ...
713         (find_member_slot): ... here.  Don't add slot for incomplete class.
714         (add_member_slot): New.
715         * class.c (add_method): Adjust get_member_slot rename.  Bail out
716         if push_class_level_binding fails.  Create slot and grok
717         properties once we're committed to insertion.
719 2018-02-27  Jason Merrill  <jason@redhat.com>
721         PR c++/84489 - dependent default template argument
722         * pt.c (type_unification_real): Handle early substitution failure.
724 2018-02-26  Jason Merrill  <jason@redhat.com>
726         PR c++/84560 - ICE capturing multi-dimensional VLA.
727         * tree.c (array_of_runtime_bound_p): False if the element is
728         variably-modified.
730         PR c++/84441 - ICE with base initialized from ?:
731         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
733         PR c++/84520 - ICE with generic lambda in NSDMI.
734         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
735         'this' in a generic lambda instantiation.
737         PR c++/84559 - ICE with constexpr VLA.
738         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
739         for constexpr variable with VLA type.
741 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
743         PR c++/84558
744         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
745         a valid constant initializer.  Formatting fixes.
747 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
749         PR c++/84540
750         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
751         returning NULL_TREE.
752         (apply_late_template_attributes): Likewise.
754 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
756         PR c++/84557
757         * parser.c (cp_parser_omp_var_list_no_open): Only call
758         cp_parser_lookup_name_simple on names satisfying identifier_p.
759         (cp_parser_oacc_routine): Likewise.
761 2018-02-26  Jason Merrill  <jason@redhat.com>
763         PR c++/84551 - ICE with concepts and -g.
764         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
766 2018-02-26  Marek Polacek  <polacek@redhat.com>
768         PR c++/84325
769         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
770         non-types.
772 2018-02-26  Jason Merrill  <jason@redhat.com>
774         PR c++/84447 - ICE with deleted inherited ctor with default arg.
775         * call.c (build_over_call): Handle deleted functions in one place.
777 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
779         PR c++/84533
780         * decl.c (redeclaration_error_message): Don't try to use
781         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
783 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
785         * lambda.c (build_capture_proxy): Define static.
786         * cp-tree.h (build_capture_proxy): Remove.
788 2018-02-26  Marek Polacek  <polacek@redhat.com>
790         PR c++/84537
791         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
792         if name is error node.
794 2018-02-25  Jason Merrill  <jason@redhat.com>
796         PR c++/84015 - ICE with class deduction and auto template parm.
797         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
799 2018-02-24  Marek Polacek  <polacek@redhat.com>
801         PR c++/83692
802         * constexpr.c (maybe_constant_init_1): New function.
803         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
804         (cxx_constant_init): New function.
805         * cp-tree.h (cxx_constant_init): Declare.
806         * typeck2.c (store_init_value): Call cxx_constant_init instead of
807         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
809 2018-02-22  Jason Merrill  <jason@redhat.com>
811         PR c++/70468 - ICE with constructor delegation via typedef.
812         * pt.c (tsubst_initializer_list): Check for other mem-initializers
813         with constructor delegation.
815 2018-02-22  Jason Merrill  <jason@redhat.com>
817         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
818         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
819         VECTOR_TYPE.
821 2018-02-22  Marek Polacek  <polacek@redhat.com>
823         PR c++/84493
824         * parser.c (cp_parser_braced_list): Use require_open instead of
825         consume_open.
827 2018-02-21  Jason Merrill  <jason@redhat.com>
829         PR c++/84454 - ICE with pack expansion in signature.
830         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
832 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
834         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
835         IF_STMT.
837 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
839         PR c++/84446
840         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
841         on error_mark_node.
843 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
845         PR c++/84445
846         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
847         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
849         PR c++/84449
850         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
851         returns error_mark_node, return it immediately.
852         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
853         error_mark_node, return error_mark_node.
855         PR c++/84455
856         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
857         function_depth to avoid GC during finish_lambda_function.
859 2018-02-19  Jason Merrill  <jason@redhat.com>
861         PR c++/84429 - ICE capturing VLA.
862         * lambda.c (build_capture_proxy): Handle reference refs.
864 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
866         PR c++/84448
867         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
868         either operand is error_mark_node, set current.lhs to that instead of
869         creating a binary op with error_mark_node operands.
871         PR c++/84430
872         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
874 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
876         PR c++/84348
877         * decl.c (grokdeclarator): Early return error_mark_node upon
878         ill-formed friend declaration.
880 2018-02-16  Marek Polacek  <polacek@redhat.com>
881             Jakub Jelinek  <jakub@redhat.com>
883         PR c++/84192
884         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
885         set *jump_target to anything if jump_target is NULL.
887 2018-02-16  Jason Merrill  <jason@redhat.com>
889         PR c++/84151 - unnecessary volatile load with static member.
890         * call.c (build_new_method_call_1): Avoid loading from a volatile
891         lvalue used as the object argument for a static member function.
893         PR c++/81853 - using-directive and constexpr.
894         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
896         PR c++/84420 - ICE with structured binding in lambda.
897         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
899         PR c++/83835 - C++17 error with constructor ctors.
900         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
902         PR c++/82664 - ICE with reference to function template parm.
903         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
904         NOP_EXPRs.
906         PR c++/82764 - C++17 ICE with empty base
907         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
909 2018-02-16  Jason Merrill  <jason@redhat.com>
911         PR c++/84421 - type-dependent if constexpr
912         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
914 2018-02-16  Nathan Sidwell  <nathan@acm.org>
916         Deprecate -ffriend-injection.
917         * decl.c (cxx_init_decl_processing): Emit warning on option.
918         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
919         friend.
921 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
923         PR c++/82468
924         * decl.c (check_special_function_return_type): Reject template
925         template parameter in deduction guide.
927 2018-02-16  Nathan Sidwell  <nathan@acm.org>
929         PR c++/84375
930         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
932 2018-02-15  Jason Merrill  <jason@redhat.com>
934         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
935         * call.c (convert_like_real): Don't use the copy-list-initialization
936         shortcut for ck_base.
938         PR c++/84045 - ICE with typedef and noexcept.
939         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
941         PR c++/84376 - ICE with omitted template arguments.
942         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
944         PR c++/84368 - wrong error with local variable in variadic lambda.
945         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
946         local_specializations.
948 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
950         PR c++/84330
951         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
952         as first argument.
954 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
956         PR c++/84350
957         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
958         init, early return.
960 2018-02-14  Nathan Sidwell  <nathan@acm.org>
962         * decl2.c (mark_vtable_entries): Set input_location to decl's.
963         (c_parse_final_cleanups): Restore input_location after emitting
964         vtables.
966 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
968         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
969         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
970         auto_deduction_context, tree, int): Add defaults.
971         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
972         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
973         tsubst_flags_t argument.
974         * init.c (build_new): Likewise.
976 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
978         PR c++/84364
979         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
980         about return other than *this in assignment operators if
981         retval is type dependent expression.
983 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
985         PR c++/84333
986         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
987         save_expr for the G++ extension.
989 2018-02-13  Jason Merrill  <jason@redhat.com>
991         PR c++/84080 - ICE with return type deduction and specialization.
992         * pt.c (determine_specialization): Check uses_template_parms.
994         Fix more variadic capture issues.
995         * pt.c (find_parameter_packs_r): Also look at explicit captures.
996         (check_for_bare_parameter_packs): Check current_class_type for
997         lambda context.
998         (extract_locals_r): Handle seeing a full instantiation of a pack.
999         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1000         * parser.c (cp_parser_lambda_introducer): Don't
1001         check_for_bare_parameter_packs.
1003         PR c++/84338 - wrong variadic sizeof.
1004         * pt.c (argument_pack_select_arg): Like the macro, but look through
1005         a pack expansion.
1006         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1007         (extract_fnparm_pack): Do make_pack_expansion.
1008         (extract_locals_r): Do strip a pack expansion.
1009         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1011 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1013         PR c++/84341
1014         * parser.c (cp_parser_binary_expression): Use build_min instead of
1015         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1017 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1019         PR c++/84263
1020         * parser.c (cp_parser_decltype): Push and pop
1021         deferring_access_checks.  Reorganize to avoid goto.
1023 2018-02-12  Richard Biener  <rguenther@suse.de>
1025         PR c++/84281
1026         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1027         uniform constructors and delay allocating them fully.
1029 2018-02-09  Jason Merrill  <jason@redhat.com>
1031         PR c++/84036 - ICE with variadic capture.
1032         Handle variadic capture proxies more like non-variadic.
1033         * lambda.c (build_capture_proxy): Remove workaround.
1034         * pt.c (find_parameter_packs_r): The proxy is a pack.
1035         (instantiate_class_template_1): Remove dead lambda code.
1036         (extract_fnparm_pack): Don't make_pack_expansion.
1037         (extract_locals_r): Don't strip a pack expansion.
1038         (tsubst_pack_expansion): Handle proxy packs.  Use
1039         PACK_EXPANSION_EXTRA_ARGS less.
1040         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1041         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1042         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1043         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1044         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1046 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1048         PR sanitizer/83987
1049         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1051 2018-02-09  Jason Merrill  <jason@redhat.com>
1053         PR c++/81917 - ICE with void_t and partial specialization.
1054         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1055         calling most_specialized_partial_spec.
1057 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1059         PR c/84293
1060         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1061         Pass expr location to strict_aliasing_warning.
1063 2018-02-09  Jason Merrill  <jason@redhat.com>
1065         PR c++/84296 - ICE with qualified-id in template.
1066         PR c++/83714
1067         * pt.c (unknown_base_ref_p): New.
1068         (instantiation_dependent_scope_ref_p): Use it instead of
1069         any_dependent_bases_p.
1071 2018-02-09  Marek Polacek  <polacek@redhat.com>
1072             Jakub Jelinek  <jakub@redhat.com>
1074         PR c++/83659
1075         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1076         fold_indirect_ref_1, including poly_*int64.  Verify first that
1077         tree_fits_poly_int64_p (op01).  Formatting fixes.
1079 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1081         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1082         * lambda.c (build_capture_proxy): Likewise.
1083         * search.c (field_access_p): Likewise.
1084         * semantics.c (omp_clause_decl, omp_privatize_field,
1085         finish_omp_clauses): Likewise.
1087 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1089         PR c++/83806
1090         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1091         case of nullptr too.
1093 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1095         * class.c (finish_struct): Fix std:initializer_list diagnostic
1096         formatting.
1098 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1100         PR c++/83204
1101         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1103 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1105         PR c++/84082
1106         * parser.c (cp_parser_dot_deref_incomplete): New function.
1107         (cp_parser_postfix_dot_deref_expression): Use it.
1109 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1111         PR c++/81610
1112         PR c++/80567
1113         * name-lookup.c (suggest_rid_p): New function.
1114         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1115         suggest_rid_p.
1117 2018-02-07  Jason Merrill  <jason@redhat.com>
1119         PR c++/84182 - ICE with captured lambda
1120         PR c++/84181
1121         * pt.c (extract_locals_r, extract_local_specs): New.
1122         (tsubst_pack_expansion): Use them.
1124 2018-02-07  Martin Liska  <mliska@suse.cz>
1126         PR c++/84059.
1127         * class.c (add_method): Append argument value.
1128         * cp-tree.h (maybe_version_functions): Add new argument.
1129         * decl.c (decls_match): Call it if a declaration does not
1130         have DECL_FUNCTION_VERSIONED.
1131         (maybe_version_functions): record argument is added.
1133 2018-02-05  Marek Polacek  <polacek@redhat.com>
1135         * class.c: Remove unused global variables.
1136         (build_primary_vtable): Don't gather statistics.
1137         (print_class_statistics): Remove.
1138         * cp-tree.h (print_class_statistics): Remove.
1139         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1141 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1143         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1144         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1145         * decl.c (next_initializable_field, find_decomp_class_base,
1146         cp_finish_decomp): Likewise.
1147         * typeck2.c (process_init_constructor_record): Likewise.
1149 2018-02-02  Jason Merrill  <jason@redhat.com>
1151         PR c++/84181 - ICE with lambda parm in template argument.
1152         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1154 2018-02-01  Jason Merrill  <jason@redhat.com>
1156         PR c++/84160 - ICE with nested variadic capture.
1157         * lambda.c (is_capture_proxy_with_ref): New.
1158         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1159         COMPONENT_REF.
1160         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1161         * constexpr.c (potential_constant_expression_1): Likewise.
1162         * semantics.c (process_outer_var_ref): Likewise.
1164 2018-02-01  Marek Polacek  <polacek@redhat.com>
1166         PR c++/84125
1167         * typeck.c (build_address): Relax the assert when
1168         processing_template_decl.
1170 2018-02-01  Jason Merrill  <jason@redhat.com>
1172         PR c++/84126 - ICE with variadic generic lambda
1173         PR c++/84036
1174         PR c++/82249
1175         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1176         PACK_EXPANSION_EXTRA_ARGS.
1178 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1180         PR c++/83796
1181         * call.c (convert_like_real): If w're initializing from {} explicitly
1182         call abstract_virtuals_error_sfinae.
1184 2018-01-31  Jason Merrill  <jason@redhat.com>
1185             Jakub Jelinek  <jakub@redhat.com>
1187         PR c++/83993
1188         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1189         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1190         on ADDR_EXPR.
1192 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1194         PR c++/83993
1195         * constexpr.c (diag_array_subscript): Emit different diagnostics
1196         if TYPE_DOMAIN (arraytype) is NULL.
1197         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1198         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1200 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1202         PR c++/84092
1203         * semantics.c (finish_qualified_id_expr): When handling an
1204         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1206 2018-01-31  Marek Polacek  <polacek@redhat.com>
1208         PR c++/84138
1209         * cp-gimplify.c (cp_fold): Check if X is an error node before
1210         calling useless_type_conversion_p.
1212 2018-01-30  Jason Merrill  <jason@redhat.com>
1214         PR c++/84091 - ICE with local class in lambda in template.
1215         * decl2.c (determine_visibility): Look for outer containing template
1216         instantiation.
1218         PR c++/84098 - ICE with lambda in template NSDMI.
1219         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1221 2018-01-29  Jason Merrill  <jason@redhat.com>
1223         PR c++/68810 - wrong location for reinterpret_cast error.
1224         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1225         !dofold.
1227 2018-01-29  Marek Polacek  <polacek@redhat.com>
1229         PR c++/83996
1230         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1231         => fooarray[1] in offset_int.
1233 2018-01-29  Jason Merrill  <jason@redhat.com>
1235         PR c++/83942 - wrong unused warning with static_cast.
1236         * cvt.c (ocp_convert): Call mark_rvalue_use.
1238 2018-01-26  Jason Merrill  <jason@redhat.com>
1240         PR c++/83956 - wrong dtor error with anonymous union
1241         * method.c (walk_field_subobs): Variant members only affect
1242         deletedness.
1243         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1245         PR c++/84036 - ICE with variadic capture.
1246         PR c++/82249
1247         * pt.c (tsubst_pack_expansion): When optimizing a simple
1248         substitution, pull a single pack expansion out of its pack.
1250         PR c++/82514 - ICE with local class in generic lambda.
1251         * pt.c (regenerated_lambda_fn_p): Remove.
1252         (enclosing_instantiation_of): Don't use it.
1253         (tsubst_function_decl): Call enclosing_instantiation_of.
1255         * pt.c (lookup_template_class_1): Add sanity check.
1256         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1258 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1260         PR c++/84031
1261         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1262         recursive calls that return ret.
1263         (cp_finish_decomp): Ignore unnamed bitfields.
1265 2018-01-23  Jason Merrill  <jason@redhat.com>
1267         PR c++/82249 - wrong mismatched pack length error.
1268         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1269         unsubstituted function parameter pack.
1271 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1273         PR c++/83921
1274         * decl.c (check_for_uninitialized_const_var): Not static; add
1275         bool and tsubst_flags_t parameters; adjust to be used both in
1276         constexpr context and not.
1277         * constexpr.c (potential_constant_expression_1): Use the above.
1278         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1280 2018-01-23  Jason Merrill  <jason@redhat.com>
1282         PR c++/83947 - ICE with auto declarations.
1283         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1284         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1286 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1288         PR c++/83974
1289         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1290         for pointer to member function types.
1292 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1294         PR sanitizer/83987
1295         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1296         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1298 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1300         PR c++/83988
1301         * pt.c (tsubst_baselink): Remove optype assert.
1302         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1304 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1306         PR c++/83958
1307         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1308         refers to incomplete type.
1310 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1312         Deprecate ARM-era for scope handling
1313         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1314         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1315         cleared.
1316         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1317         cleanup handling.
1318         * semantics.c (begin_for_scope): Flag_new_for_scope is
1319         boolean-like.
1320         (finish_for_stmt, begin_range_for_stmt): Likewise.
1322 2018-01-22  Jason Merrill  <jason@redhat.com>
1324         PR c++/83720
1325         * decl2.c (determine_visibility): Fix template_decl handling
1326         instead of blocking it.
1328         PR c++/83720 - ICE with lambda and LTO.
1329         * decl2.c (determine_visibility): Clear template_decl for
1330         function-scope decls.  Propagate anonymous linkage from containing
1331         function.
1333 2018-01-22  Marek Polacek  <polacek@redhat.com>
1335         PR c++/81933
1336         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1337         split out anything.
1339 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1341         PR c++/83895
1342         * decl.c (grokdeclarator): Don't diagnose extra parens
1343         on typedefs.
1345 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1347         PR c++/81167
1348         * call.c (joust): Use TREE_TYPE (source) if source is
1349         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1351         PR c++/83919
1352         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1353         for direct enum init.
1354         * decl.c (reshape_init): Likewise.
1356 2018-01-19  Marek Polacek  <polacek@redhat.com>
1358         * constexpr.c (fold_simple): Simplify.
1360 2018-01-18  Jason Merrill  <jason@redhat.com>
1362         PR c++/83714
1363         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1364         * pt.c (instantiation_dependent_scope_ref_p): True if
1365         any_dependent_bases_p.
1367 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1369         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1370         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1372 2018-01-18  Jason Merrill  <jason@redhat.com>
1374         PR c++/82461 - constexpr list-initialized member
1375         * constexpr.c (potential_constant_expression_1): Check
1376         TARGET_EXPR_DIRECT_INIT_P.
1378 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1380         PR c++/81013
1381         * decl.c (xref_basetypes): Early return upon error about derived
1382         union.
1384 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1386         PR c++/83160
1387         * cp-tree.h (mark_use): Declare.
1388         * expr.c (mark_use): Make extern.
1389         * call.c (direct_reference_binding): Set inner conv's
1390         rvaluedness_matches_p, if it is an identity.
1391         (convert_like_real): Mark lvalue or rvalue use for identity as
1392         rvaledness_matches_p demands.
1394 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1396         PR c++/83824
1397         * parser.c (attr_chainon): New function.
1398         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1399         cp_parser_namespace_definition, cp_parser_init_declarator,
1400         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1401         cp_parser_gnu_attributes_opt): Use it.
1402         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1403         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1404         prefix_attributes if attributes is error_mark_node.
1406 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1408         PR c++/78344
1409         * decl.c (grokdeclarator): Do not append the error_mark_node
1410         due to an erroneous optional attribute-specifier-seq.
1412 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1414         PR c++/83897
1415         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1416         CLEANUP_POINT_EXPR.
1418 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1420         PR c++/81054
1421         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1422         error_mark_node when we give an error.
1423         * decl.c (cp_finish_decl): Use the latter.
1425 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1427         PR c++/83287
1428         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1430 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1432         PR c++/83814
1433         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1434         the C++ part.  If processing a template, call
1435         fold_non_dependent_expr rather than fully folding.
1437 2018-01-17  Jason Merrill  <jason@redhat.com>
1439         PR c++/81067 - redundant NULL warning.
1440         * call.c (convert_like_real): Restore null_node handling.
1442 2018-01-17  Jason Merrill  <jason@redhat.com>
1444         PR c++/81843 - ICE with variadic member template.
1445         PR c++/72801
1446         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1447         template args.
1449 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1451         PR c++/83799
1452         * pt.c (type_dependent_expression_p): Strip any location wrapper
1453         before testing tree codes.
1454         (selftest::test_type_dependent_expression_p): New function.
1455         (selftest::cp_pt_c_tests): Call it.
1457 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1459         PR c++/83739
1460         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1461         this not a final instantiation.
1463 2018-01-16  Jason Merrill  <jason@redhat.com>
1465         PR c++/83714 - ICE checking return in template.
1466         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1468 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1470         PR c++/83817
1471         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1472         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1473         instead of CALL_FROM_THUNK_P.
1475         PR c++/83825
1476         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1477         (resort_type_member_vec, set_class_bindings,
1478         insert_late_enum_def_bindings): Use vec qsort method instead of
1479         calling qsort directly.
1481 2018-01-15  Martin Sebor  <msebor@redhat.com>
1483         PR c++/83588
1484         * class.c (find_flexarrays): Make a record of multiple flexible array
1485         members.
1487 2018-01-12  Jason Merrill  <jason@redhat.com>
1489         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1490         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1492 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1494         * cp-tree.h (mark_rvalue_use): Add parm name.
1495         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1496         mark_rvalue_use.
1497         * call.c (convert_like_real): Fix formatting.
1499 2018-01-11  Jason Merrill  <jason@redhat.com>
1501         PR c++/82728 - wrong -Wunused-but-set-variable
1502         PR c++/82799
1503         PR c++/83690
1504         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1505         * decl.c (case_conversion): Likewise.
1506         * semantics.c (finish_static_assert): Call
1507         perform_implicit_conversion_flags.
1509 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1511         * method.c (enum mangling_flags): Delete long-dead enum.
1513 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1515         * parser.c (cp_parser_std_attribute_spec): When
1516         token_pair::require_open / require_close return false simply
1517         return error_mark_node, avoid duplicate cp_parser_error about
1518         expected '(' / ')', respectively.
1520 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1522         PR c++/43486
1523         * call.c (null_ptr_cst_p): Strip location wrappers when
1524         converting from '0' to a pointer type in C++11 onwards.
1525         (conversion_null_warnings): Replace comparison with null_node with
1526         call to null_node_p.
1527         (build_over_call): Likewise.
1528         * cp-gimplify.c (cp_fold): Remove the early bailout when
1529         processing_template_decl.
1530         * cp-lang.c (selftest::run_cp_tests): Call
1531         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1532         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1533         (selftest::run_cp_tests): Move decl to bottom of file.
1534         (null_node_p): New inline function.
1535         (selftest::cp_pt_c_tests): New decl.
1536         (selftest::cp_tree_c_tests): New decl.
1537         * cvt.c (build_expr_type_conversion): Replace comparison with
1538         null_node with call to null_node_p.
1539         * error.c (args_to_string): Likewise.
1540         * except.c (build_throw): Likewise.
1541         * mangle.c (write_expression): Skip location wrapper nodes.
1542         * parser.c (literal_integer_zerop): New function.
1543         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1544         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1545         param of cp_parser_parenthesized_expression_list.  When calling
1546         warn_for_memset, replace integer_zerop calls with
1547         literal_integer_zerop, eliminating the double logical negation
1548         cast to bool.  Eliminate the special-casing for CONST_DECL in
1549         favor of the fold_for_warn within warn_for_memset.
1550         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1551         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1552         maybe_add_location_wrapper on it when wrap_locations_p is true.
1553         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1554         the result for RID_ALIGNOF and RID_SIZEOF.
1555         (cp_parser_builtin_offsetof): Likewise.
1556         * pt.c: Include "selftest.h".
1557         (tsubst_copy): Handle location wrappers.
1558         (tsubst_copy_and_build): Likewise.
1559         (build_non_dependent_expr): Likewise.
1560         (selftest::test_build_non_dependent_expr): New function.
1561         (selftest::cp_pt_c_tests): New function.
1562         * tree.c: Include "selftest.h".
1563         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1564         (selftest::test_lvalue_kind): New function.
1565         (selftest::cp_tree_c_tests): New function.
1566         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1567         (cp_build_binary_op): Replace comparison with null_node with call
1568         to null_node_p.
1569         (build_address): Use location of operand when building address
1570         expression.
1572 2018-01-10  Marek Polacek  <polacek@redhat.com>
1574         PR c++/82541
1575         * call.c (build_conditional_expr_1): Check complain before warning.
1576         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1577         -Wduplicated-branches.
1579 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1581         PR c++/81327
1582         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1583         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1584         args uses and check number of operands too.  Don't strip away any
1585         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1586         Deal with src argument not having pointer type.  Check
1587         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1588         test.
1589         (build_over_call): Call maybe_warn_class_memaccess here on the
1590         original arguments.
1591         (build_cxx_call): Rather than here on converted arguments.
1593 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1595         PR c++/81055
1596         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1597         error_mark_node as second argument.
1599 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1601         PR c++/83734
1602         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1603         in STATEMENT_LIST.  Remove unneeded assert.
1605 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1606             Alan Hayward  <alan.hayward@arm.com>
1607             David Sherwood  <david.sherwood@arm.com>
1609         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1610         VECTOR_CST_NELTS.
1611         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1612         * call.c (build_conditional_expr_1): Likewise.
1613         * decl.c (cp_finish_decomp): Likewise.
1614         * mangle.c (write_type): Likewise.
1615         * typeck.c (structural_comptypes): Likewise.
1616         (cp_build_binary_op): Likewise.
1617         * typeck2.c (process_init_constructor_array): Likewise.
1619 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1621         PR c++/83555
1622         * typeck.c (build_static_cast_1): For static casts to reference types,
1623         call build_base_path with flag_delete_null_pointer_checks as nonnull
1624         instead of always false.  When -fsanitize=null, call
1625         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1626         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1627         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1629 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1631         PR c++/83667
1632         * method.c (make_alias_for): Copy DECL_CONTEXT.
1634 2018-01-03  Marek Polacek  <polacek@redhat.com>
1636         PR c++/83592
1637         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1639 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1641         PR preprocessor/83602
1642         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1643         for builtin macros.
1645         PR c++/83634
1646         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1647         error_mark_node, return error_mark_node.
1649         Update copyright years.
1651 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1653         PR c++/83556
1654         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1655         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1656         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1657         to false and return.
1658         (replace_placeholders): Pass NULL instead of &pset as last argument
1659         to cp_walk_tree.
1661 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1663         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1664         lval var.
1666 Copyright (C) 2018 Free Software Foundation, Inc.
1668 Copying and distribution of this file, with or without modification,
1669 are permitted in any medium without royalty provided the copyright
1670 notice and this notice are preserved.