Fix typo in last ChangeLog entry
[official-gcc.git] / gcc / cp / ChangeLog
blobb7a4f4381e4c418d414351708db42eed00ea6d2e
1 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/85028
4         * pt.c (tsubst_default_argument): Early return if the type of the
5         parameter is erroneous.
7 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
9         PR c++/84973
10         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
11         templates.
13         PR c++/84968
14         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
16 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
18         PR c++/85067
19         * method.c (defaulted_late_check): Partially revert r253321 changes,
20         do not early return upon error.
22 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
24         PR c++/85077
25         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
26         type call fold to generate VECTOR_CSTs when possible.
28         PR c++/85076
29         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
30         return it right away.
32 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
34         * search.c (check_final_overrider): Use inform instead of error
35         for the diagnostics of the overridden functions.  Tweak wording.
37 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
39         PR c++/85068
40         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
41         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
43 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
44             Jason Merrill  <jason@redhat.com>
46         PR c++/84632
47         * init.c (build_aggr_init): When initializing from array,
48         reject anything but CONSTRUCTORs and TARGET_EXPRs.
49         (build_vec_init): Handle separately ARRAY_TYPEs.
51 2018-03-26  Jason Merrill  <jason@redhat.com>
53         PR c++/85062 - ICE with alignas in wrong place.
54         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
55         here.
57         PR c++/85049 - ICE with __integer_pack.
58         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
59         * cp-tree.h (TEMPLATE_PARM_P): New.
61 2018-03-23  Jason Merrill  <jason@redhat.com>
63         PR c++/78489 - wrong SFINAE behavior.
65         PR c++/84489
66         * pt.c (type_unification_real): Don't defer substitution failure.
68 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
70         PR c++/85015
71         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
72         result.
74         PR c++/84942
75         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
76         cp_build_unary_op call with gcc_unreachable ().
78 2018-03-23  Marek Polacek  <polacek@redhat.com>
80         PR c++/85045
81         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
82         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
83         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
85 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
87         Implement P0962
88         * parser.c (cp_parser_perform_range_for_lookup): Change
89         the condition for deciding whether to use members.
91 2018-03-23  Marek Polacek  <polacek@redhat.com>
93         PR c++/85033
94         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
96 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
98         PR c++/71251
99         * parser.c (cp_parser_alias_declaration): Call
100         parser_check_template_parameters.
102         PR c++/84789
103         * pt.c (resolve_typename_type): Drop assert that stopped
104         simplification to template-independent types.  Add assert to
105         verify the initial scope is template dependent.
106         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
107         Reparse the id expression as a type-name, not a declarator.
109         PR c++/84729
110         * init.c (build_vec_init): Error at parenthesized array init.
112         PR c++/84610
113         PR c++/84642
114         PR c++/84942
115         * cp-tree.h (temp_override): New template class, generalizing
116         a cleanup that was only used...
117         * parser.c (cp_parser_parameter_declaration_clause):
118         ... here for auto_is_implicit_function_template_parm_p.
119         (cp_parser_gnu_attributes_opt): Use it here as well.
120         (cp_parser_std_attribute): Likewise.
122 2018-03-22  Marek Polacek  <polacek@redhat.com>
124         PR c++/84854
125         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
126         is boolean.
128 2018-03-21  Jason Merrill  <jason@redhat.com>
130         PR c++/81311 - wrong C++17 overload resolution.
131         * call.c (build_user_type_conversion_1): Remove C++17 code.
132         (conv_binds_ref_to_prvalue): New.
133         (build_over_call): Handle C++17 copy elision.
134         (build_special_member_call): Only do C++17 copy elision here if the
135         argument is already the right type.
137 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
139         PR c++/71965
140         * init.c (build_vec_init): Silence error, former sorry,
141         without tf_error.
143         PR c++/84610
144         PR c++/84642
145         * parser.c (abort_fully_implicit_template_p): New.
146         (cp_parser_skip_to_end_of_statement): Use it.
147         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
148         (finish_fully_implicit_template_p): Clear
149         implicit_template_parms and implicit_template_scope.
151 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
153         PR c++/84972
154         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
155         error_mark_node when check_array_designated_initializer fails.
157 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
159         PR c++/84961
160         * cp-tree.h (genericize_compound_lvalue): Declare.
161         * typeck.c (genericize_compound_lvalue): New function.
162         (unary_complex_lvalue, cp_build_modify_expr): Use it.
163         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
164         and PREDECREMENT_EXPR in output and "m" constrained input operands with
165         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
166         COMPOUND_EXPR operand.
168 2018-03-21  Nathan Sidwell  <nathan@acm.org>
170         PR c++/85008
171         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
172         * decl2.c (vague_linkage_p): Likewise.
174 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
176         PR c++/84994
177         * constexpr.c (constexpr_fn_retval): Make non-"static".
178         * cp-tree.h (constexpr_fn_retval): New decl.
179         * search.c (direct_accessor_p): Update leading comment.
180         (reference_accessor_p): Likewise.
181         (field_accessor_p): Replace check that function body is a
182         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
183         indentation of "field_type" decl.
185 2018-03-21  Nathan Sidwell  <nathan@acm.org>
187         PR c++/84804
188         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
189         complete classes.
191 2018-03-21  Martin Sebor  <msebor@redhat.com>
193         PR c++/84850
194         * call.c (first_non_public_field): New template and function.
195         (first_non_trivial_field): New function.
196         (maybe_warn_class_memaccess): Call them.
198 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
200         PR c++/84892
201         * search.c (field_accessor_p): Use class_of_this_parm rather than
202         type_of_this_parm, to check that "this" is a "const T *", rather
203         than a "T *const".
205 2018-03-21  Nathan Sidwell  <nathan@acm.org>
207         * class.c (finish_struct_anon_r): Refactor, deprecate anything
208         other than public non-static data members.
209         * parser.c (cp_parser_init_declarator): Deprecate attributes after
210         parenthesized initializer.
212         PR c++/84836
213         * name-lookup.c (update_binding): Correct logic for local binding
214         update.
216 2018-03-21  Marek Polacek  <polacek@redhat.com>
218         PR c++/71638, ICE with NSDMI and reference.
219         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
220         even when we replace an element.
222 2018-03-20  Marek Polacek  <polacek@redhat.com>
224         PR c++/84978, ICE with NRVO.
225         * constexpr.c (cxx_eval_constant_expression): Handle the case when
226         a RESULT_DECL isn't in the hash map.
228 2018-03-20  Jason Merrill  <jason@redhat.com>
230         PR c++/84978, ICE with NRVO.
231         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
232         (cp_get_callee_fndecl_nofold): New.
233         * cp-gimplify.c (cp_genericize_r): Use it instead.
234         * call.c (check_self_delegation): Likewise.
236 2018-03-20  Nathan Sidwell  <nathan@acm.org>
238         PR c++/84962
239         * name-lookup.c (pushdecl_class_level): Push anon-struct's
240         member_vec, if there is one.
242         PR c++/84970
243         * cp-tree.h (lookup_list_keep): Declare.
244         * tree.c (lookup_list_keep): New, broken out of ...
245         (build_min): ... here.  Call it.
246         * decl.c (cp_finish_decl): Call lookup_list_keep.
248 2018-03-19  Jason Merrill  <jason@redhat.com>
250         PR c++/84937 - ICE with class deduction and auto.
251         * pt.c (rewrite_template_parm): Fix auto handling.
253 2018-03-19  Marek Polacek  <polacek@redhat.com>
255         PR c++/84925
256         * pt.c (enclosing_instantiation_of): Check if fn is null.
258         PR c++/84927
259         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
260         as we evaluate the elements.
261         (cxx_eval_constant_expression): Verify constructor's flags
262         unconditionally.
264 2018-03-19  Jason Merrill  <jason@redhat.com>
266         PR c++/71834 - template-id with too few arguments.
267         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
269 2018-03-19  Nathan Sidwell  <nathan@acm.org>
271         PR c++/84835
272         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
273         * pt.c (build_template_decl): Propagate language linkage.
275         PR c++/84812
276         * name-lookup.c (set_local_extern_decl_linkage): Defend against
277         ambiguous lookups.
279 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
281         PR c/84910
282         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
283         diagnostics.
284         * method.c (synthesize_method): Likewise.
285         * pt.c (convert_nontype_argument): Likewise.
287 2018-03-16  Jason Merrill  <jason@redhat.com>
289         PR c++/84720 - ICE with rvalue ref non-type argument.
290         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
291         (convert_nontype_argument): Revert earlier change.
293         PR c++/80227 - SFINAE and negative array size.
294         * decl.c (compute_array_index_type): Use
295         build_converted_constant_expr and valid_constant_size_p.
297         PR c++/84906 - silent wrong code with ambiguous conversion.
298         * call.c (build_user_type_conversion_1): Set need_temporary_p on
299         ambiguous conversion.
300         (convert_like_real): Check it.
302         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
303         * call.c (build_special_member_call): Don't convert an init-list
304         argument directly to the class type.
306 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
308         PR c++/79937
309         PR c++/82410
310         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
311         (find_placeholder): Declare.
312         * tree.c (struct replace_placeholders_t): Add exp member.
313         (replace_placeholders_r): Don't walk into ctors with
314         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
315         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
316         (replace_placeholders): Initialize data.exp.
317         (find_placeholders_r, find_placeholders): New functions.
318         * typeck2.c (process_init_constructor_record,
319         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
320         if adding NSDMI on which find_placeholder returns true.
321         * call.c (build_over_call): Don't call replace_placeholders here.
322         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
323         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
324         TARGET_EXPR_INITIAL.
325         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
326         ctor.
328 2018-03-16  Jason Merrill  <jason@redhat.com>
330         PR c++/83911 - ICE with multiversioned constructor.
331         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
332         dispatchere here.
333         * call.c (build_over_call): Not here.
335 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
337         PR c++/84874
338         * decl.c (reshape_init_class): Don't assert d->cur->index == field
339         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
341 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
343         PR c++/84222
344         * cp-tree.h (cp_warn_deprecated_use): Declare.
345         * tree.c (cp_warn_deprecated_use): New function.
346         * typeck2.c (build_functional_cast): Use it.
347         * decl.c (grokparms): Likewise.
348         (grokdeclarator): Likewise.  Temporarily push nested class scope
349         around grokparms call for out of class member definitions.
351 2018-03-14  Jason Merrill  <jason@redhat.com>
353         PR c++/84820 - no error for invalid qualified-id.
354         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
355         cp_error_declarator.
357         PR c++/84801 - ICE with unexpanded pack in lambda.
358         * pt.c (check_for_bare_parameter_packs): Don't return early for a
359         lambda in non-template context.
361         PR c++/81236 - auto variable and auto function
362         * pt.c (tsubst_baselink): Update the type of the BASELINK after
363         mark_used.
365 2018-03-14  Jason Merrill  <jason@redhat.com>
367         PR c++/83916 - ICE with template template parameters.
368         * pt.c (convert_template_argument): Don't substitute into type of
369         non-type parameter if we don't have enough arg levels.
370         (unify): Likewise.
372 2018-03-14  Marek Polacek  <polacek@redhat.com>
374         PR c++/84596
375         * semantics.c (finish_static_assert): Check
376         instantiation_dependent_expression_p instead of
377         {type,value}_dependent_expression_p.
379 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
380             Jason Merrill  <jason@redhat.com>
382         PR c++/82336 - link error with list-init default argument.
383         * decl.c (check_default_argument): Unshare an initializer list.
385 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
387         PR c++/84843
388         * decl.c (duplicate_decls): For redefinition of built-in, use error
389         and return error_mark_node.  For redeclaration, return error_mark_node
390         rather than olddecl if !flag_permissive.
392 2018-03-13  Jason Merrill  <jason@redhat.com>
394         PR c++/82565 - ICE with concepts and generic lambda.
395         * pt.c (instantiate_decl): Clear fn_context for lambdas.
397 2018-03-13  Jason Merrill  <jason@redhat.com>
399         PR c++/84720 - ICE with rvalue ref non-type argument.
400         * pt.c (convert_nontype_argument): Handle rvalue references.
402         PR c++/84839 - ICE with decltype of parameter pack.
403         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
404         instantiating dummy parms.
406         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
407         parameter even without -Wpedantic.
409         PR c++/84798 - ICE with auto in abstract function declarator.
410         * parser.c (cp_parser_parameter_declaration_clause): Check
411         parser->default_arg_ok_p.
413 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
415         PR c++/84808
416         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
417         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
418         sizetype.  Formatting fixes.
420 2018-03-12  Jason Merrill  <jason@redhat.com>
422         PR c++/84355 - ICE with deduction for member class template.
423         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
424         CLASS_PLACEHOLDER_TEMPLATE.
426         PR c++/84802 - ICE capturing uninstantiated class.
427         * lambda.c (build_capture_proxy): Call complete_type.
429 2018-03-09  Jason Merrill  <jason@redhat.com>
431         PR c++/84770 - ICE with typedef and parameter pack.
432         * pt.c (verify_unstripped_args_1): Split out from
433         verify_unstripped_args.
435         PR c++/84785 - ICE with alias template and default targs.
436         * pt.c (type_unification_real): Set processing_template_decl if
437         saw_undeduced == 1.
439         PR c++/84752 - ICE with capture of constexpr array.
440         * call.c (standard_conversion): Set rvaluedness_matches_p on the
441         identity conversion under ck_lvalue.
443 2018-03-09  Jason Merrill  <jason@redhat.com>
444             Paolo Carlini  <paolo.carlini@oracle.com>
446         PR c++/71169
447         PR c++/71832
448         * pt.c (any_erroneous_template_args_p): New.
449         * cp-tree.h (any_erroneous_template_args_p): Declare it.
450         * parser.c (cp_parser_class_specifier_1): Use it.
452 2018-03-09  Jason Merrill  <jason@redhat.com>
454         PR c++/84726 - unnecessary capture of constant vars.
455         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
456         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
457         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
458         * lambda.c (is_constant_capture_proxy)
459         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
460         (prune_lambda_captures): New.
461         (finish_lambda_function): Call prune_lambda_captures.
463 2018-03-09  Jason Merrill  <jason@redhat.com>
464             Jakub Jelinek  <jakub@redhat.com>
466         PR c++/84076
467         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
468         build ADDR_EXPR with REFERENCE_TYPE.
469         (build_over_call): For purposes of check_function_arguments, if
470         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
471         its operand rather than the argument itself.
473 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
475         PR c++/84724
476         * decl.c (duplicate_decls): Don't override __* prefixed builtins
477         except for __[^b]*_chk, instead issue permerror and for -fpermissive
478         also a note and return olddecl.
480 2018-03-09  Nathan Sidwell  <nathan@acm.org>
482         PR c++/84733
483         * name-lookup.c (do_pushdecl_with_scope): Only clear
484         current_function_decl when pushing a non-class (i.e. namespace)
485         scope.
487 2018-03-08  Jason Merrill  <jason@redhat.com>
488             Jakub Jelinek  <jakub@redhat.com>
490         PR c++/80598
491         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
492         not calling mark_used for the benefit of -Wunused-function warning.
494 2018-03-06  Jason Merrill  <jason@redhat.com>
496         * lambda.c (is_capture_proxy_with_ref): Remove.
497         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
499 2018-03-06  Marek Polacek  <polacek@redhat.com>
501         PR c++/84684
502         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
503         arguments.
505 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
507         PR c++/84231
508         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
509         only while processing template decls.
510         * typeck.c (build_x_conditional_expr): Move wrapping of
511         reference type around type...
512         * call.c (build_conditional_expr_1): ... here.  Rename
513         is_lvalue to is_glvalue.
514         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
515         INDIRECT_REF of COND_EXPR too.
517         PR c++/84593
518         * init.c (build_zero_init_1): Zero-initialize references.
520         PR c++/84492
521         * semantics.c (finish_stmt_expr_expr): Reject unresolved
522         overloads used as stmt expr values.
524 2018-03-05  Jason Merrill  <jason@redhat.com>
526         PR c++/84708 - ICE with lambda in local class NSDMI.
527         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
528         context.
530 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
532         PR c++/84684
533         * constexpr.c (constexpr_call_hasher::equal): Return false if
534         lhs->hash != rhs->hash.  Change return 1 to return true and
535         return 0 to return false.
537 2018-03-05  Nathan Sidwell  <nathan@acm.org>
539         PR c++/84702
540         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
542 2018-03-05  Marek Polacek  <polacek@redhat.com>
544         PR c++/84707
545         * decl.c (duplicate_decls): Check DECL_NAME before accessing
546         UDLIT_OPER_P.
548 2018-03-05  Nathan Sidwell  <nathan@acm.org>
550         PR c++/84694
551         * friend.c (do_friend): Restore check for identifier_p inside
552         TEMPLATE_ID_EXPR.
554 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
556         PR c++/84618
557         * parser.c (cp_parser_lambda_introducer): Reject any capture not
558         involving a VAR_DECL or a PARM_DECL.
560 2018-03-05  Pádraig Brady  <P@draigBrady.com>
561             Jason  Merrill  <jason@redhat.com>
562             Nathan Sidwell  <nathan@acm.org>
564         PR c++/84497
565         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
567 2018-03-03  Jason Merrill  <jason@redhat.com>
569         PR c++/84686 - missing volatile loads.
570         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
572 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
574         PR c++/71464
575         * optimize.c (maybe_thunk_body): Bail out immediately if either
576         fns[0] or fns[1] is null.
578 2018-03-02  Marek Polacek  <polacek@redhat.com>
580         PR c++/84578
581         * constexpr.c (get_array_or_vector_nelts): New.
582         (cxx_eval_array_reference): Use it.
583         (cxx_eval_vec_init_1): Likewise.
584         (cxx_eval_store_expression): Likewise.
586 2018-03-02  Jason Merrill  <jason@redhat.com>
588         * semantics.c (force_paren_expr): Remove redundant test.
590 2018-03-02  Marek Polacek  <polacek@redhat.com>
592         PR c++/84663
593         * decl.c (cp_complete_array_type): Check error_mark_node.
595         PR c++/84664
596         * typeck.c (cp_perform_integral_promotions): Check the result of
597         mark_rvalue_use.
599 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
601         PR c++/84662
602         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
603         RETURN instead of return.
604         <case POINTER_PLUS_EXPR>: Likewise.
605         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
606         it instead of wrapping it into CONVERT_EXPR.
608 2018-03-02  Jason Merrill  <jason@redhat.com>
610         Fix MIPS16 ICE.
611         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
613 2018-03-02  Marek Polacek  <polacek@redhat.com>
615         PR c++/84590
616         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
617         wrapped in VIEW_CONVERT_EXPR.
619 2018-03-01  Martin Sebor  <msebor@redhat.com>
621         PR c++/84294
622         * decl.c (check_redeclaration_no_default_args): Merge attributes
623         specified on redeclarations of the same function template.
624         Remove dead code.
626 2018-03-01  Marek Polacek  <polacek@redhat.com>
627             Jason Merrill  <jason@redhat.com>
629         PR c++/84582
630         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
631         a template.
632         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
633         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
634         of instantiate_non_dependent_expr.
635         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
637 2018-03-01  Nathan Sidwell  <nathan@acm.org>
639         PR c++/84434
640         * name-lookup.c (member_vec_dedup): Remove manually peeled
641         iteration.  Ignore dependent ctor inheritance.
643 2018-03-01  Jason Merrill  <jason@redhat.com>
645         PR c++/71569 - decltype of template.
646         * parser.c (cp_parser_decltype_expr): Handle missing template args.
648 2018-03-01  Marek Polacek  <polacek@redhat.com>
650         PR c++/84596
651         * constexpr.c (require_rvalue_constant_expression): New function.
652         * cp-tree.h: Declare it.
653         * semantics.c (finish_static_assert): Use it instead of
654         require_potential_rvalue_constant_expression.
656 2018-03-01  Jason Merrill  <jason@redhat.com>
657             Alexandre Oliva <aoliva@redhat.com>
659         PR c++/71569 - ICE with redundant args on member variable template.
660         * decl.c (start_decl): Handle partial specialization of member
661         variable template.
662         * pt.c (determine_specialization): Allow partial specialization
663         of member variable template without specializing enclosing class.
664         (process_partial_specialization): Improve error message.
666 2018-02-28  Jason Merrill  <jason@redhat.com>
668         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
669         * pt.c (determine_specialization): Check ref-qualifier.
671 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
673         PR c++/84609
674         * parser.c (cp_parser_attributes_opt): Formatting fix.
675         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
676         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
677         New functions.
678         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
679         instead of tentative parse to peek over optional attribute tokens
680         to check for CPP_COLON after them.
682         PR c++/83871
683         PR c++/83503
684         * pt.c (INCLUDE_STRING): Remove define.
685         (warn_spec_missing_attributes): Use pretty_printer instead of
686         std::string.  Fix up inform call so that the list of attributes
687         is in %s argument.
689 2018-02-28  Martin Sebor  <msebor@redhat.com>
691         PR testsuite/84617
692         * decl.c (duplicate_decls): Fully merge attributes const, pure,
693         and malloc.
695 2018-02-28  Nathan Sidwell  <nathan@acm.org>
697         PR c++/84602
698         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
699         * name-lookup.c (fields_linear_search): Look in an anon-aggr
700         regardless of want_type.
701         (search_anon_aggr): Just use get_class_binding_direct.
703 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
705         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
706         inform_n.
708 2018-02-27  Martin Sebor  <msebor@redhat.com>
710         * pt.c: Avoid including <string> directly.
712 2018-02-27  Martin Sebor  <msebor@redhat.com>
714         PR c++/83871
715         PR c++/83503
716         * cp-tree.h (warn_spec_missing_attributes): New function.
717         ((check_explicit_specialization): Add an argument.  Call the above
718         function.
719         * decl.c (duplicate_decls): Avoid applying primary function template's
720         attributes to its explicit specializations.
721         cp/pt.c (warn_spec_missing_attributes): Define.
723 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
725         PR c++/71546 - lambda init-capture with qualified-id.
726         * parser.c (cp_parser_lambda_introducer): Clear scope after
727         each lambda capture.
729 2018-02-27  Nathan Sidwell  <nathan@acm.org>
731         PR c++/84426
732         * name-lookup.h (get_member_slot): Rename ...
733         (find_member_slot): ... here.
734         (add_member_slot): New.
735         * name-lookup.c (member_vec_linear_search): No need to check for
736         NULL slot.
737         (get_member_slot): Rename ...
738         (find_member_slot): ... here.  Don't add slot for incomplete class.
739         (add_member_slot): New.
740         * class.c (add_method): Adjust get_member_slot rename.  Bail out
741         if push_class_level_binding fails.  Create slot and grok
742         properties once we're committed to insertion.
744 2018-02-27  Jason Merrill  <jason@redhat.com>
746         PR c++/84489 - dependent default template argument
747         * pt.c (type_unification_real): Handle early substitution failure.
749 2018-02-26  Jason Merrill  <jason@redhat.com>
751         PR c++/84560 - ICE capturing multi-dimensional VLA.
752         * tree.c (array_of_runtime_bound_p): False if the element is
753         variably-modified.
755         PR c++/84441 - ICE with base initialized from ?:
756         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
758         PR c++/84520 - ICE with generic lambda in NSDMI.
759         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
760         'this' in a generic lambda instantiation.
762         PR c++/84559 - ICE with constexpr VLA.
763         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
764         for constexpr variable with VLA type.
766 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
768         PR c++/84558
769         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
770         a valid constant initializer.  Formatting fixes.
772 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
774         PR c++/84540
775         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
776         returning NULL_TREE.
777         (apply_late_template_attributes): Likewise.
779 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
781         PR c++/84557
782         * parser.c (cp_parser_omp_var_list_no_open): Only call
783         cp_parser_lookup_name_simple on names satisfying identifier_p.
784         (cp_parser_oacc_routine): Likewise.
786 2018-02-26  Jason Merrill  <jason@redhat.com>
788         PR c++/84551 - ICE with concepts and -g.
789         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
791 2018-02-26  Marek Polacek  <polacek@redhat.com>
793         PR c++/84325
794         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
795         non-types.
797 2018-02-26  Jason Merrill  <jason@redhat.com>
799         PR c++/84447 - ICE with deleted inherited ctor with default arg.
800         * call.c (build_over_call): Handle deleted functions in one place.
802 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
804         PR c++/84533
805         * decl.c (redeclaration_error_message): Don't try to use
806         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
808 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
810         * lambda.c (build_capture_proxy): Define static.
811         * cp-tree.h (build_capture_proxy): Remove.
813 2018-02-26  Marek Polacek  <polacek@redhat.com>
815         PR c++/84537
816         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
817         if name is error node.
819 2018-02-25  Jason Merrill  <jason@redhat.com>
821         PR c++/84015 - ICE with class deduction and auto template parm.
822         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
824 2018-02-24  Marek Polacek  <polacek@redhat.com>
826         PR c++/83692
827         * constexpr.c (maybe_constant_init_1): New function.
828         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
829         (cxx_constant_init): New function.
830         * cp-tree.h (cxx_constant_init): Declare.
831         * typeck2.c (store_init_value): Call cxx_constant_init instead of
832         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
834 2018-02-22  Jason Merrill  <jason@redhat.com>
836         PR c++/70468 - ICE with constructor delegation via typedef.
837         * pt.c (tsubst_initializer_list): Check for other mem-initializers
838         with constructor delegation.
840 2018-02-22  Jason Merrill  <jason@redhat.com>
842         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
843         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
844         VECTOR_TYPE.
846 2018-02-22  Marek Polacek  <polacek@redhat.com>
848         PR c++/84493
849         * parser.c (cp_parser_braced_list): Use require_open instead of
850         consume_open.
852 2018-02-21  Jason Merrill  <jason@redhat.com>
854         PR c++/84454 - ICE with pack expansion in signature.
855         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
857 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
859         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
860         IF_STMT.
862 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
864         PR c++/84446
865         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
866         on error_mark_node.
868 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
870         PR c++/84445
871         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
872         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
874         PR c++/84449
875         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
876         returns error_mark_node, return it immediately.
877         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
878         error_mark_node, return error_mark_node.
880         PR c++/84455
881         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
882         function_depth to avoid GC during finish_lambda_function.
884 2018-02-19  Jason Merrill  <jason@redhat.com>
886         PR c++/84429 - ICE capturing VLA.
887         * lambda.c (build_capture_proxy): Handle reference refs.
889 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
891         PR c++/84448
892         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
893         either operand is error_mark_node, set current.lhs to that instead of
894         creating a binary op with error_mark_node operands.
896         PR c++/84430
897         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
899 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
901         PR c++/84348
902         * decl.c (grokdeclarator): Early return error_mark_node upon
903         ill-formed friend declaration.
905 2018-02-16  Marek Polacek  <polacek@redhat.com>
906             Jakub Jelinek  <jakub@redhat.com>
908         PR c++/84192
909         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
910         set *jump_target to anything if jump_target is NULL.
912 2018-02-16  Jason Merrill  <jason@redhat.com>
914         PR c++/84151 - unnecessary volatile load with static member.
915         * call.c (build_new_method_call_1): Avoid loading from a volatile
916         lvalue used as the object argument for a static member function.
918         PR c++/81853 - using-directive and constexpr.
919         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
921         PR c++/84420 - ICE with structured binding in lambda.
922         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
924         PR c++/83835 - C++17 error with constructor ctors.
925         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
927         PR c++/82664 - ICE with reference to function template parm.
928         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
929         NOP_EXPRs.
931         PR c++/82764 - C++17 ICE with empty base
932         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
934 2018-02-16  Jason Merrill  <jason@redhat.com>
936         PR c++/84421 - type-dependent if constexpr
937         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
939 2018-02-16  Nathan Sidwell  <nathan@acm.org>
941         Deprecate -ffriend-injection.
942         * decl.c (cxx_init_decl_processing): Emit warning on option.
943         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
944         friend.
946 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
948         PR c++/82468
949         * decl.c (check_special_function_return_type): Reject template
950         template parameter in deduction guide.
952 2018-02-16  Nathan Sidwell  <nathan@acm.org>
954         PR c++/84375
955         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
957 2018-02-15  Jason Merrill  <jason@redhat.com>
959         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
960         * call.c (convert_like_real): Don't use the copy-list-initialization
961         shortcut for ck_base.
963         PR c++/84045 - ICE with typedef and noexcept.
964         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
966         PR c++/84376 - ICE with omitted template arguments.
967         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
969         PR c++/84368 - wrong error with local variable in variadic lambda.
970         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
971         local_specializations.
973 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
975         PR c++/84330
976         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
977         as first argument.
979 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
981         PR c++/84350
982         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
983         init, early return.
985 2018-02-14  Nathan Sidwell  <nathan@acm.org>
987         * decl2.c (mark_vtable_entries): Set input_location to decl's.
988         (c_parse_final_cleanups): Restore input_location after emitting
989         vtables.
991 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
993         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
994         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
995         auto_deduction_context, tree, int): Add defaults.
996         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
997         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
998         tsubst_flags_t argument.
999         * init.c (build_new): Likewise.
1001 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1003         PR c++/84364
1004         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1005         about return other than *this in assignment operators if
1006         retval is type dependent expression.
1008 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1010         PR c++/84333
1011         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1012         save_expr for the G++ extension.
1014 2018-02-13  Jason Merrill  <jason@redhat.com>
1016         PR c++/84080 - ICE with return type deduction and specialization.
1017         * pt.c (determine_specialization): Check uses_template_parms.
1019         Fix more variadic capture issues.
1020         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1021         (check_for_bare_parameter_packs): Check current_class_type for
1022         lambda context.
1023         (extract_locals_r): Handle seeing a full instantiation of a pack.
1024         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1025         * parser.c (cp_parser_lambda_introducer): Don't
1026         check_for_bare_parameter_packs.
1028         PR c++/84338 - wrong variadic sizeof.
1029         * pt.c (argument_pack_select_arg): Like the macro, but look through
1030         a pack expansion.
1031         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1032         (extract_fnparm_pack): Do make_pack_expansion.
1033         (extract_locals_r): Do strip a pack expansion.
1034         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1036 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1038         PR c++/84341
1039         * parser.c (cp_parser_binary_expression): Use build_min instead of
1040         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1042 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1044         PR c++/84263
1045         * parser.c (cp_parser_decltype): Push and pop
1046         deferring_access_checks.  Reorganize to avoid goto.
1048 2018-02-12  Richard Biener  <rguenther@suse.de>
1050         PR c++/84281
1051         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1052         uniform constructors and delay allocating them fully.
1054 2018-02-09  Jason Merrill  <jason@redhat.com>
1056         PR c++/84036 - ICE with variadic capture.
1057         Handle variadic capture proxies more like non-variadic.
1058         * lambda.c (build_capture_proxy): Remove workaround.
1059         * pt.c (find_parameter_packs_r): The proxy is a pack.
1060         (instantiate_class_template_1): Remove dead lambda code.
1061         (extract_fnparm_pack): Don't make_pack_expansion.
1062         (extract_locals_r): Don't strip a pack expansion.
1063         (tsubst_pack_expansion): Handle proxy packs.  Use
1064         PACK_EXPANSION_EXTRA_ARGS less.
1065         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1066         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1067         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1068         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1069         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1071 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1073         PR sanitizer/83987
1074         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1076 2018-02-09  Jason Merrill  <jason@redhat.com>
1078         PR c++/81917 - ICE with void_t and partial specialization.
1079         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1080         calling most_specialized_partial_spec.
1082 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1084         PR c/84293
1085         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1086         Pass expr location to strict_aliasing_warning.
1088 2018-02-09  Jason Merrill  <jason@redhat.com>
1090         PR c++/84296 - ICE with qualified-id in template.
1091         PR c++/83714
1092         * pt.c (unknown_base_ref_p): New.
1093         (instantiation_dependent_scope_ref_p): Use it instead of
1094         any_dependent_bases_p.
1096 2018-02-09  Marek Polacek  <polacek@redhat.com>
1097             Jakub Jelinek  <jakub@redhat.com>
1099         PR c++/83659
1100         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1101         fold_indirect_ref_1, including poly_*int64.  Verify first that
1102         tree_fits_poly_int64_p (op01).  Formatting fixes.
1104 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1106         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1107         * lambda.c (build_capture_proxy): Likewise.
1108         * search.c (field_access_p): Likewise.
1109         * semantics.c (omp_clause_decl, omp_privatize_field,
1110         finish_omp_clauses): Likewise.
1112 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1114         PR c++/83806
1115         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1116         case of nullptr too.
1118 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1120         * class.c (finish_struct): Fix std:initializer_list diagnostic
1121         formatting.
1123 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1125         PR c++/83204
1126         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1128 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1130         PR c++/84082
1131         * parser.c (cp_parser_dot_deref_incomplete): New function.
1132         (cp_parser_postfix_dot_deref_expression): Use it.
1134 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1136         PR c++/81610
1137         PR c++/80567
1138         * name-lookup.c (suggest_rid_p): New function.
1139         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1140         suggest_rid_p.
1142 2018-02-07  Jason Merrill  <jason@redhat.com>
1144         PR c++/84182 - ICE with captured lambda
1145         PR c++/84181
1146         * pt.c (extract_locals_r, extract_local_specs): New.
1147         (tsubst_pack_expansion): Use them.
1149 2018-02-07  Martin Liska  <mliska@suse.cz>
1151         PR c++/84059.
1152         * class.c (add_method): Append argument value.
1153         * cp-tree.h (maybe_version_functions): Add new argument.
1154         * decl.c (decls_match): Call it if a declaration does not
1155         have DECL_FUNCTION_VERSIONED.
1156         (maybe_version_functions): record argument is added.
1158 2018-02-05  Marek Polacek  <polacek@redhat.com>
1160         * class.c: Remove unused global variables.
1161         (build_primary_vtable): Don't gather statistics.
1162         (print_class_statistics): Remove.
1163         * cp-tree.h (print_class_statistics): Remove.
1164         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1166 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1168         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1169         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1170         * decl.c (next_initializable_field, find_decomp_class_base,
1171         cp_finish_decomp): Likewise.
1172         * typeck2.c (process_init_constructor_record): Likewise.
1174 2018-02-02  Jason Merrill  <jason@redhat.com>
1176         PR c++/84181 - ICE with lambda parm in template argument.
1177         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1179 2018-02-01  Jason Merrill  <jason@redhat.com>
1181         PR c++/84160 - ICE with nested variadic capture.
1182         * lambda.c (is_capture_proxy_with_ref): New.
1183         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1184         COMPONENT_REF.
1185         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1186         * constexpr.c (potential_constant_expression_1): Likewise.
1187         * semantics.c (process_outer_var_ref): Likewise.
1189 2018-02-01  Marek Polacek  <polacek@redhat.com>
1191         PR c++/84125
1192         * typeck.c (build_address): Relax the assert when
1193         processing_template_decl.
1195 2018-02-01  Jason Merrill  <jason@redhat.com>
1197         PR c++/84126 - ICE with variadic generic lambda
1198         PR c++/84036
1199         PR c++/82249
1200         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1201         PACK_EXPANSION_EXTRA_ARGS.
1203 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1205         PR c++/83796
1206         * call.c (convert_like_real): If w're initializing from {} explicitly
1207         call abstract_virtuals_error_sfinae.
1209 2018-01-31  Jason Merrill  <jason@redhat.com>
1210             Jakub Jelinek  <jakub@redhat.com>
1212         PR c++/83993
1213         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1214         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1215         on ADDR_EXPR.
1217 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1219         PR c++/83993
1220         * constexpr.c (diag_array_subscript): Emit different diagnostics
1221         if TYPE_DOMAIN (arraytype) is NULL.
1222         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1223         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1225 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1227         PR c++/84092
1228         * semantics.c (finish_qualified_id_expr): When handling an
1229         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1231 2018-01-31  Marek Polacek  <polacek@redhat.com>
1233         PR c++/84138
1234         * cp-gimplify.c (cp_fold): Check if X is an error node before
1235         calling useless_type_conversion_p.
1237 2018-01-30  Jason Merrill  <jason@redhat.com>
1239         PR c++/84091 - ICE with local class in lambda in template.
1240         * decl2.c (determine_visibility): Look for outer containing template
1241         instantiation.
1243         PR c++/84098 - ICE with lambda in template NSDMI.
1244         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1246 2018-01-29  Jason Merrill  <jason@redhat.com>
1248         PR c++/68810 - wrong location for reinterpret_cast error.
1249         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1250         !dofold.
1252 2018-01-29  Marek Polacek  <polacek@redhat.com>
1254         PR c++/83996
1255         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1256         => fooarray[1] in offset_int.
1258 2018-01-29  Jason Merrill  <jason@redhat.com>
1260         PR c++/83942 - wrong unused warning with static_cast.
1261         * cvt.c (ocp_convert): Call mark_rvalue_use.
1263 2018-01-26  Jason Merrill  <jason@redhat.com>
1265         PR c++/83956 - wrong dtor error with anonymous union
1266         * method.c (walk_field_subobs): Variant members only affect
1267         deletedness.
1268         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1270         PR c++/84036 - ICE with variadic capture.
1271         PR c++/82249
1272         * pt.c (tsubst_pack_expansion): When optimizing a simple
1273         substitution, pull a single pack expansion out of its pack.
1275         PR c++/82514 - ICE with local class in generic lambda.
1276         * pt.c (regenerated_lambda_fn_p): Remove.
1277         (enclosing_instantiation_of): Don't use it.
1278         (tsubst_function_decl): Call enclosing_instantiation_of.
1280         * pt.c (lookup_template_class_1): Add sanity check.
1281         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1283 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1285         PR c++/84031
1286         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1287         recursive calls that return ret.
1288         (cp_finish_decomp): Ignore unnamed bitfields.
1290 2018-01-23  Jason Merrill  <jason@redhat.com>
1292         PR c++/82249 - wrong mismatched pack length error.
1293         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1294         unsubstituted function parameter pack.
1296 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1298         PR c++/83921
1299         * decl.c (check_for_uninitialized_const_var): Not static; add
1300         bool and tsubst_flags_t parameters; adjust to be used both in
1301         constexpr context and not.
1302         * constexpr.c (potential_constant_expression_1): Use the above.
1303         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1305 2018-01-23  Jason Merrill  <jason@redhat.com>
1307         PR c++/83947 - ICE with auto declarations.
1308         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1309         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1311 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1313         PR c++/83974
1314         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1315         for pointer to member function types.
1317 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1319         PR sanitizer/83987
1320         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1321         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1323 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1325         PR c++/83988
1326         * pt.c (tsubst_baselink): Remove optype assert.
1327         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1329 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1331         PR c++/83958
1332         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1333         refers to incomplete type.
1335 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1337         Deprecate ARM-era for scope handling
1338         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1339         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1340         cleared.
1341         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1342         cleanup handling.
1343         * semantics.c (begin_for_scope): Flag_new_for_scope is
1344         boolean-like.
1345         (finish_for_stmt, begin_range_for_stmt): Likewise.
1347 2018-01-22  Jason Merrill  <jason@redhat.com>
1349         PR c++/83720
1350         * decl2.c (determine_visibility): Fix template_decl handling
1351         instead of blocking it.
1353         PR c++/83720 - ICE with lambda and LTO.
1354         * decl2.c (determine_visibility): Clear template_decl for
1355         function-scope decls.  Propagate anonymous linkage from containing
1356         function.
1358 2018-01-22  Marek Polacek  <polacek@redhat.com>
1360         PR c++/81933
1361         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1362         split out anything.
1364 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1366         PR c++/83895
1367         * decl.c (grokdeclarator): Don't diagnose extra parens
1368         on typedefs.
1370 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1372         PR c++/81167
1373         * call.c (joust): Use TREE_TYPE (source) if source is
1374         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1376         PR c++/83919
1377         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1378         for direct enum init.
1379         * decl.c (reshape_init): Likewise.
1381 2018-01-19  Marek Polacek  <polacek@redhat.com>
1383         * constexpr.c (fold_simple): Simplify.
1385 2018-01-18  Jason Merrill  <jason@redhat.com>
1387         PR c++/83714
1388         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1389         * pt.c (instantiation_dependent_scope_ref_p): True if
1390         any_dependent_bases_p.
1392 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1394         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1395         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1397 2018-01-18  Jason Merrill  <jason@redhat.com>
1399         PR c++/82461 - constexpr list-initialized member
1400         * constexpr.c (potential_constant_expression_1): Check
1401         TARGET_EXPR_DIRECT_INIT_P.
1403 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1405         PR c++/81013
1406         * decl.c (xref_basetypes): Early return upon error about derived
1407         union.
1409 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1411         PR c++/83160
1412         * cp-tree.h (mark_use): Declare.
1413         * expr.c (mark_use): Make extern.
1414         * call.c (direct_reference_binding): Set inner conv's
1415         rvaluedness_matches_p, if it is an identity.
1416         (convert_like_real): Mark lvalue or rvalue use for identity as
1417         rvaledness_matches_p demands.
1419 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1421         PR c++/83824
1422         * parser.c (attr_chainon): New function.
1423         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1424         cp_parser_namespace_definition, cp_parser_init_declarator,
1425         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1426         cp_parser_gnu_attributes_opt): Use it.
1427         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1428         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1429         prefix_attributes if attributes is error_mark_node.
1431 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1433         PR c++/78344
1434         * decl.c (grokdeclarator): Do not append the error_mark_node
1435         due to an erroneous optional attribute-specifier-seq.
1437 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1439         PR c++/83897
1440         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1441         CLEANUP_POINT_EXPR.
1443 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1445         PR c++/81054
1446         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1447         error_mark_node when we give an error.
1448         * decl.c (cp_finish_decl): Use the latter.
1450 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1452         PR c++/83287
1453         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1455 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1457         PR c++/83814
1458         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1459         the C++ part.  If processing a template, call
1460         fold_non_dependent_expr rather than fully folding.
1462 2018-01-17  Jason Merrill  <jason@redhat.com>
1464         PR c++/81067 - redundant NULL warning.
1465         * call.c (convert_like_real): Restore null_node handling.
1467 2018-01-17  Jason Merrill  <jason@redhat.com>
1469         PR c++/81843 - ICE with variadic member template.
1470         PR c++/72801
1471         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1472         template args.
1474 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1476         PR c++/83799
1477         * pt.c (type_dependent_expression_p): Strip any location wrapper
1478         before testing tree codes.
1479         (selftest::test_type_dependent_expression_p): New function.
1480         (selftest::cp_pt_c_tests): Call it.
1482 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1484         PR c++/83739
1485         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1486         this not a final instantiation.
1488 2018-01-16  Jason Merrill  <jason@redhat.com>
1490         PR c++/83714 - ICE checking return in template.
1491         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1493 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1495         PR c++/83817
1496         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1497         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1498         instead of CALL_FROM_THUNK_P.
1500         PR c++/83825
1501         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1502         (resort_type_member_vec, set_class_bindings,
1503         insert_late_enum_def_bindings): Use vec qsort method instead of
1504         calling qsort directly.
1506 2018-01-15  Martin Sebor  <msebor@redhat.com>
1508         PR c++/83588
1509         * class.c (find_flexarrays): Make a record of multiple flexible array
1510         members.
1512 2018-01-12  Jason Merrill  <jason@redhat.com>
1514         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1515         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1517 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1519         * cp-tree.h (mark_rvalue_use): Add parm name.
1520         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1521         mark_rvalue_use.
1522         * call.c (convert_like_real): Fix formatting.
1524 2018-01-11  Jason Merrill  <jason@redhat.com>
1526         PR c++/82728 - wrong -Wunused-but-set-variable
1527         PR c++/82799
1528         PR c++/83690
1529         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1530         * decl.c (case_conversion): Likewise.
1531         * semantics.c (finish_static_assert): Call
1532         perform_implicit_conversion_flags.
1534 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1536         * method.c (enum mangling_flags): Delete long-dead enum.
1538 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1540         * parser.c (cp_parser_std_attribute_spec): When
1541         token_pair::require_open / require_close return false simply
1542         return error_mark_node, avoid duplicate cp_parser_error about
1543         expected '(' / ')', respectively.
1545 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1547         PR c++/43486
1548         * call.c (null_ptr_cst_p): Strip location wrappers when
1549         converting from '0' to a pointer type in C++11 onwards.
1550         (conversion_null_warnings): Replace comparison with null_node with
1551         call to null_node_p.
1552         (build_over_call): Likewise.
1553         * cp-gimplify.c (cp_fold): Remove the early bailout when
1554         processing_template_decl.
1555         * cp-lang.c (selftest::run_cp_tests): Call
1556         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1557         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1558         (selftest::run_cp_tests): Move decl to bottom of file.
1559         (null_node_p): New inline function.
1560         (selftest::cp_pt_c_tests): New decl.
1561         (selftest::cp_tree_c_tests): New decl.
1562         * cvt.c (build_expr_type_conversion): Replace comparison with
1563         null_node with call to null_node_p.
1564         * error.c (args_to_string): Likewise.
1565         * except.c (build_throw): Likewise.
1566         * mangle.c (write_expression): Skip location wrapper nodes.
1567         * parser.c (literal_integer_zerop): New function.
1568         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1569         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1570         param of cp_parser_parenthesized_expression_list.  When calling
1571         warn_for_memset, replace integer_zerop calls with
1572         literal_integer_zerop, eliminating the double logical negation
1573         cast to bool.  Eliminate the special-casing for CONST_DECL in
1574         favor of the fold_for_warn within warn_for_memset.
1575         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1576         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1577         maybe_add_location_wrapper on it when wrap_locations_p is true.
1578         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1579         the result for RID_ALIGNOF and RID_SIZEOF.
1580         (cp_parser_builtin_offsetof): Likewise.
1581         * pt.c: Include "selftest.h".
1582         (tsubst_copy): Handle location wrappers.
1583         (tsubst_copy_and_build): Likewise.
1584         (build_non_dependent_expr): Likewise.
1585         (selftest::test_build_non_dependent_expr): New function.
1586         (selftest::cp_pt_c_tests): New function.
1587         * tree.c: Include "selftest.h".
1588         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1589         (selftest::test_lvalue_kind): New function.
1590         (selftest::cp_tree_c_tests): New function.
1591         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1592         (cp_build_binary_op): Replace comparison with null_node with call
1593         to null_node_p.
1594         (build_address): Use location of operand when building address
1595         expression.
1597 2018-01-10  Marek Polacek  <polacek@redhat.com>
1599         PR c++/82541
1600         * call.c (build_conditional_expr_1): Check complain before warning.
1601         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1602         -Wduplicated-branches.
1604 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1606         PR c++/81327
1607         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1608         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1609         args uses and check number of operands too.  Don't strip away any
1610         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1611         Deal with src argument not having pointer type.  Check
1612         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1613         test.
1614         (build_over_call): Call maybe_warn_class_memaccess here on the
1615         original arguments.
1616         (build_cxx_call): Rather than here on converted arguments.
1618 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1620         PR c++/81055
1621         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1622         error_mark_node as second argument.
1624 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1626         PR c++/83734
1627         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1628         in STATEMENT_LIST.  Remove unneeded assert.
1630 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1631             Alan Hayward  <alan.hayward@arm.com>
1632             David Sherwood  <david.sherwood@arm.com>
1634         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1635         VECTOR_CST_NELTS.
1636         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1637         * call.c (build_conditional_expr_1): Likewise.
1638         * decl.c (cp_finish_decomp): Likewise.
1639         * mangle.c (write_type): Likewise.
1640         * typeck.c (structural_comptypes): Likewise.
1641         (cp_build_binary_op): Likewise.
1642         * typeck2.c (process_init_constructor_array): Likewise.
1644 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1646         PR c++/83555
1647         * typeck.c (build_static_cast_1): For static casts to reference types,
1648         call build_base_path with flag_delete_null_pointer_checks as nonnull
1649         instead of always false.  When -fsanitize=null, call
1650         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1651         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1652         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1654 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1656         PR c++/83667
1657         * method.c (make_alias_for): Copy DECL_CONTEXT.
1659 2018-01-03  Marek Polacek  <polacek@redhat.com>
1661         PR c++/83592
1662         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1664 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1666         PR preprocessor/83602
1667         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1668         for builtin macros.
1670         PR c++/83634
1671         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1672         error_mark_node, return error_mark_node.
1674         Update copyright years.
1676 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1678         PR c++/83556
1679         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1680         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1681         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1682         to false and return.
1683         (replace_placeholders): Pass NULL instead of &pset as last argument
1684         to cp_walk_tree.
1686 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1688         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1689         lval var.
1691 Copyright (C) 2018 Free Software Foundation, Inc.
1693 Copying and distribution of this file, with or without modification,
1694 are permitted in any medium without royalty provided the copyright
1695 notice and this notice are preserved.