PR c++/84791
[official-gcc.git] / gcc / cp / ChangeLog
blob13b2435109a9eacb4c620ede834d9c0ea6485a4c
1 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/84791
4         * semantics.c (finish_omp_reduction_clause): If
5         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
6         even if processing_template_decl.
8 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
10         PR c++/84269
11         * name-lookup.c (get_std_name_hint): Add names from <memory>,
12         <tuple>, and <utility>.
14 2018-03-29  Jason Merrill  <jason@redhat.com>
16         PR c++/85093 - too many template args with pack expansion.
17         * pt.c (coerce_template_parms): Keep pack expansion args that will
18         need to be empty.
20 2018-03-29  Jason Merrill  <jason@redhat.com>
22         * pt.c (build_non_dependent_expr): Propagate expr location.
24 2018-03-27  Jason Merrill  <jason@redhat.com>
26         PR c++/85060 - wrong-code with call to base member in template.
27         * search.c (any_dependent_bases_p): Check uses_template_parms
28         rather than processing_template_decl.
30 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
32         PR c++/85110
33         * typeck.c (convert_for_assignment): When complaining due to
34         conversions for an argument, attempt to use the location of the
35         argument.
37 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
39         PR c++/85028
40         * pt.c (tsubst_default_argument): Early return if the type of the
41         parameter is erroneous.
43 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
45         PR c++/84973
46         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
47         templates.
49         PR c++/84968
50         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
52 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
54         PR c++/85067
55         * method.c (defaulted_late_check): Partially revert r253321 changes,
56         do not early return upon error.
58 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
60         PR c++/85077
61         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
62         type call fold to generate VECTOR_CSTs when possible.
64         PR c++/85076
65         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
66         return it right away.
68 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
70         * search.c (check_final_overrider): Use inform instead of error
71         for the diagnostics of the overridden functions.  Tweak wording.
73 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
75         PR c++/85068
76         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
77         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
79 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
80             Jason Merrill  <jason@redhat.com>
82         PR c++/84632
83         * init.c (build_aggr_init): When initializing from array,
84         reject anything but CONSTRUCTORs and TARGET_EXPRs.
85         (build_vec_init): Handle separately ARRAY_TYPEs.
87 2018-03-26  Jason Merrill  <jason@redhat.com>
89         PR c++/85062 - ICE with alignas in wrong place.
90         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
91         here.
93         PR c++/85049 - ICE with __integer_pack.
94         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
95         * cp-tree.h (TEMPLATE_PARM_P): New.
97 2018-03-23  Jason Merrill  <jason@redhat.com>
99         PR c++/78489 - wrong SFINAE behavior.
101         PR c++/84489
102         * pt.c (type_unification_real): Don't defer substitution failure.
104 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
106         PR c++/85015
107         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
108         result.
110         PR c++/84942
111         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
112         cp_build_unary_op call with gcc_unreachable ().
114 2018-03-23  Marek Polacek  <polacek@redhat.com>
116         PR c++/85045
117         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
118         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
119         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
121 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
123         Implement P0962
124         * parser.c (cp_parser_perform_range_for_lookup): Change
125         the condition for deciding whether to use members.
127 2018-03-23  Marek Polacek  <polacek@redhat.com>
129         PR c++/85033
130         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
132 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
134         PR c++/71251
135         * parser.c (cp_parser_alias_declaration): Call
136         parser_check_template_parameters.
138         PR c++/84789
139         * pt.c (resolve_typename_type): Drop assert that stopped
140         simplification to template-independent types.  Add assert to
141         verify the initial scope is template dependent.
142         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
143         Reparse the id expression as a type-name, not a declarator.
145         PR c++/84729
146         * init.c (build_vec_init): Error at parenthesized array init.
148         PR c++/84610
149         PR c++/84642
150         PR c++/84942
151         * cp-tree.h (temp_override): New template class, generalizing
152         a cleanup that was only used...
153         * parser.c (cp_parser_parameter_declaration_clause):
154         ... here for auto_is_implicit_function_template_parm_p.
155         (cp_parser_gnu_attributes_opt): Use it here as well.
156         (cp_parser_std_attribute): Likewise.
158 2018-03-22  Marek Polacek  <polacek@redhat.com>
160         PR c++/84854
161         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
162         is boolean.
164 2018-03-21  Jason Merrill  <jason@redhat.com>
166         PR c++/81311 - wrong C++17 overload resolution.
167         * call.c (build_user_type_conversion_1): Remove C++17 code.
168         (conv_binds_ref_to_prvalue): New.
169         (build_over_call): Handle C++17 copy elision.
170         (build_special_member_call): Only do C++17 copy elision here if the
171         argument is already the right type.
173 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
175         PR c++/71965
176         * init.c (build_vec_init): Silence error, former sorry,
177         without tf_error.
179         PR c++/84610
180         PR c++/84642
181         * parser.c (abort_fully_implicit_template_p): New.
182         (cp_parser_skip_to_end_of_statement): Use it.
183         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
184         (finish_fully_implicit_template_p): Clear
185         implicit_template_parms and implicit_template_scope.
187 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
189         PR c++/84972
190         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
191         error_mark_node when check_array_designated_initializer fails.
193 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
195         PR c++/84961
196         * cp-tree.h (genericize_compound_lvalue): Declare.
197         * typeck.c (genericize_compound_lvalue): New function.
198         (unary_complex_lvalue, cp_build_modify_expr): Use it.
199         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
200         and PREDECREMENT_EXPR in output and "m" constrained input operands with
201         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
202         COMPOUND_EXPR operand.
204 2018-03-21  Nathan Sidwell  <nathan@acm.org>
206         PR c++/85008
207         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
208         * decl2.c (vague_linkage_p): Likewise.
210 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
212         PR c++/84994
213         * constexpr.c (constexpr_fn_retval): Make non-"static".
214         * cp-tree.h (constexpr_fn_retval): New decl.
215         * search.c (direct_accessor_p): Update leading comment.
216         (reference_accessor_p): Likewise.
217         (field_accessor_p): Replace check that function body is a
218         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
219         indentation of "field_type" decl.
221 2018-03-21  Nathan Sidwell  <nathan@acm.org>
223         PR c++/84804
224         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
225         complete classes.
227 2018-03-21  Martin Sebor  <msebor@redhat.com>
229         PR c++/84850
230         * call.c (first_non_public_field): New template and function.
231         (first_non_trivial_field): New function.
232         (maybe_warn_class_memaccess): Call them.
234 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
236         PR c++/84892
237         * search.c (field_accessor_p): Use class_of_this_parm rather than
238         type_of_this_parm, to check that "this" is a "const T *", rather
239         than a "T *const".
241 2018-03-21  Nathan Sidwell  <nathan@acm.org>
243         * class.c (finish_struct_anon_r): Refactor, deprecate anything
244         other than public non-static data members.
245         * parser.c (cp_parser_init_declarator): Deprecate attributes after
246         parenthesized initializer.
248         PR c++/84836
249         * name-lookup.c (update_binding): Correct logic for local binding
250         update.
252 2018-03-21  Marek Polacek  <polacek@redhat.com>
254         PR c++/71638, ICE with NSDMI and reference.
255         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
256         even when we replace an element.
258 2018-03-20  Marek Polacek  <polacek@redhat.com>
260         PR c++/84978, ICE with NRVO.
261         * constexpr.c (cxx_eval_constant_expression): Handle the case when
262         a RESULT_DECL isn't in the hash map.
264 2018-03-20  Jason Merrill  <jason@redhat.com>
266         PR c++/84978, ICE with NRVO.
267         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
268         (cp_get_callee_fndecl_nofold): New.
269         * cp-gimplify.c (cp_genericize_r): Use it instead.
270         * call.c (check_self_delegation): Likewise.
272 2018-03-20  Nathan Sidwell  <nathan@acm.org>
274         PR c++/84962
275         * name-lookup.c (pushdecl_class_level): Push anon-struct's
276         member_vec, if there is one.
278         PR c++/84970
279         * cp-tree.h (lookup_list_keep): Declare.
280         * tree.c (lookup_list_keep): New, broken out of ...
281         (build_min): ... here.  Call it.
282         * decl.c (cp_finish_decl): Call lookup_list_keep.
284 2018-03-19  Jason Merrill  <jason@redhat.com>
286         PR c++/84937 - ICE with class deduction and auto.
287         * pt.c (rewrite_template_parm): Fix auto handling.
289 2018-03-19  Marek Polacek  <polacek@redhat.com>
291         PR c++/84925
292         * pt.c (enclosing_instantiation_of): Check if fn is null.
294         PR c++/84927
295         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
296         as we evaluate the elements.
297         (cxx_eval_constant_expression): Verify constructor's flags
298         unconditionally.
300 2018-03-19  Jason Merrill  <jason@redhat.com>
302         PR c++/71834 - template-id with too few arguments.
303         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
305 2018-03-19  Nathan Sidwell  <nathan@acm.org>
307         PR c++/84835
308         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
309         * pt.c (build_template_decl): Propagate language linkage.
311         PR c++/84812
312         * name-lookup.c (set_local_extern_decl_linkage): Defend against
313         ambiguous lookups.
315 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
317         PR c/84910
318         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
319         diagnostics.
320         * method.c (synthesize_method): Likewise.
321         * pt.c (convert_nontype_argument): Likewise.
323 2018-03-16  Jason Merrill  <jason@redhat.com>
325         PR c++/84720 - ICE with rvalue ref non-type argument.
326         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
327         (convert_nontype_argument): Revert earlier change.
329         PR c++/80227 - SFINAE and negative array size.
330         * decl.c (compute_array_index_type): Use
331         build_converted_constant_expr and valid_constant_size_p.
333         PR c++/84906 - silent wrong code with ambiguous conversion.
334         * call.c (build_user_type_conversion_1): Set need_temporary_p on
335         ambiguous conversion.
336         (convert_like_real): Check it.
338         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
339         * call.c (build_special_member_call): Don't convert an init-list
340         argument directly to the class type.
342 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
344         PR c++/79937
345         PR c++/82410
346         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
347         (find_placeholder): Declare.
348         * tree.c (struct replace_placeholders_t): Add exp member.
349         (replace_placeholders_r): Don't walk into ctors with
350         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
351         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
352         (replace_placeholders): Initialize data.exp.
353         (find_placeholders_r, find_placeholders): New functions.
354         * typeck2.c (process_init_constructor_record,
355         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
356         if adding NSDMI on which find_placeholder returns true.
357         * call.c (build_over_call): Don't call replace_placeholders here.
358         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
359         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
360         TARGET_EXPR_INITIAL.
361         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
362         ctor.
364 2018-03-16  Jason Merrill  <jason@redhat.com>
366         PR c++/83911 - ICE with multiversioned constructor.
367         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
368         dispatchere here.
369         * call.c (build_over_call): Not here.
371 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
373         PR c++/84874
374         * decl.c (reshape_init_class): Don't assert d->cur->index == field
375         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
377 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
379         PR c++/84222
380         * cp-tree.h (cp_warn_deprecated_use): Declare.
381         * tree.c (cp_warn_deprecated_use): New function.
382         * typeck2.c (build_functional_cast): Use it.
383         * decl.c (grokparms): Likewise.
384         (grokdeclarator): Likewise.  Temporarily push nested class scope
385         around grokparms call for out of class member definitions.
387 2018-03-14  Jason Merrill  <jason@redhat.com>
389         PR c++/84820 - no error for invalid qualified-id.
390         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
391         cp_error_declarator.
393         PR c++/84801 - ICE with unexpanded pack in lambda.
394         * pt.c (check_for_bare_parameter_packs): Don't return early for a
395         lambda in non-template context.
397         PR c++/81236 - auto variable and auto function
398         * pt.c (tsubst_baselink): Update the type of the BASELINK after
399         mark_used.
401 2018-03-14  Jason Merrill  <jason@redhat.com>
403         PR c++/83916 - ICE with template template parameters.
404         * pt.c (convert_template_argument): Don't substitute into type of
405         non-type parameter if we don't have enough arg levels.
406         (unify): Likewise.
408 2018-03-14  Marek Polacek  <polacek@redhat.com>
410         PR c++/84596
411         * semantics.c (finish_static_assert): Check
412         instantiation_dependent_expression_p instead of
413         {type,value}_dependent_expression_p.
415 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
416             Jason Merrill  <jason@redhat.com>
418         PR c++/82336 - link error with list-init default argument.
419         * decl.c (check_default_argument): Unshare an initializer list.
421 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
423         PR c++/84843
424         * decl.c (duplicate_decls): For redefinition of built-in, use error
425         and return error_mark_node.  For redeclaration, return error_mark_node
426         rather than olddecl if !flag_permissive.
428 2018-03-13  Jason Merrill  <jason@redhat.com>
430         PR c++/82565 - ICE with concepts and generic lambda.
431         * pt.c (instantiate_decl): Clear fn_context for lambdas.
433 2018-03-13  Jason Merrill  <jason@redhat.com>
435         PR c++/84720 - ICE with rvalue ref non-type argument.
436         * pt.c (convert_nontype_argument): Handle rvalue references.
438         PR c++/84839 - ICE with decltype of parameter pack.
439         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
440         instantiating dummy parms.
442         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
443         parameter even without -Wpedantic.
445         PR c++/84798 - ICE with auto in abstract function declarator.
446         * parser.c (cp_parser_parameter_declaration_clause): Check
447         parser->default_arg_ok_p.
449 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
451         PR c++/84808
452         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
453         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
454         sizetype.  Formatting fixes.
456 2018-03-12  Jason Merrill  <jason@redhat.com>
458         PR c++/84355 - ICE with deduction for member class template.
459         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
460         CLASS_PLACEHOLDER_TEMPLATE.
462         PR c++/84802 - ICE capturing uninstantiated class.
463         * lambda.c (build_capture_proxy): Call complete_type.
465 2018-03-09  Jason Merrill  <jason@redhat.com>
467         PR c++/84770 - ICE with typedef and parameter pack.
468         * pt.c (verify_unstripped_args_1): Split out from
469         verify_unstripped_args.
471         PR c++/84785 - ICE with alias template and default targs.
472         * pt.c (type_unification_real): Set processing_template_decl if
473         saw_undeduced == 1.
475         PR c++/84752 - ICE with capture of constexpr array.
476         * call.c (standard_conversion): Set rvaluedness_matches_p on the
477         identity conversion under ck_lvalue.
479 2018-03-09  Jason Merrill  <jason@redhat.com>
480             Paolo Carlini  <paolo.carlini@oracle.com>
482         PR c++/71169
483         PR c++/71832
484         * pt.c (any_erroneous_template_args_p): New.
485         * cp-tree.h (any_erroneous_template_args_p): Declare it.
486         * parser.c (cp_parser_class_specifier_1): Use it.
488 2018-03-09  Jason Merrill  <jason@redhat.com>
490         PR c++/84726 - unnecessary capture of constant vars.
491         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
492         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
493         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
494         * lambda.c (is_constant_capture_proxy)
495         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
496         (prune_lambda_captures): New.
497         (finish_lambda_function): Call prune_lambda_captures.
499 2018-03-09  Jason Merrill  <jason@redhat.com>
500             Jakub Jelinek  <jakub@redhat.com>
502         PR c++/84076
503         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
504         build ADDR_EXPR with REFERENCE_TYPE.
505         (build_over_call): For purposes of check_function_arguments, if
506         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
507         its operand rather than the argument itself.
509 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
511         PR c++/84724
512         * decl.c (duplicate_decls): Don't override __* prefixed builtins
513         except for __[^b]*_chk, instead issue permerror and for -fpermissive
514         also a note and return olddecl.
516 2018-03-09  Nathan Sidwell  <nathan@acm.org>
518         PR c++/84733
519         * name-lookup.c (do_pushdecl_with_scope): Only clear
520         current_function_decl when pushing a non-class (i.e. namespace)
521         scope.
523 2018-03-08  Jason Merrill  <jason@redhat.com>
524             Jakub Jelinek  <jakub@redhat.com>
526         PR c++/80598
527         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
528         not calling mark_used for the benefit of -Wunused-function warning.
530 2018-03-06  Jason Merrill  <jason@redhat.com>
532         * lambda.c (is_capture_proxy_with_ref): Remove.
533         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
535 2018-03-06  Marek Polacek  <polacek@redhat.com>
537         PR c++/84684
538         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
539         arguments.
541 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
543         PR c++/84231
544         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
545         only while processing template decls.
546         * typeck.c (build_x_conditional_expr): Move wrapping of
547         reference type around type...
548         * call.c (build_conditional_expr_1): ... here.  Rename
549         is_lvalue to is_glvalue.
550         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
551         INDIRECT_REF of COND_EXPR too.
553         PR c++/84593
554         * init.c (build_zero_init_1): Zero-initialize references.
556         PR c++/84492
557         * semantics.c (finish_stmt_expr_expr): Reject unresolved
558         overloads used as stmt expr values.
560 2018-03-05  Jason Merrill  <jason@redhat.com>
562         PR c++/84708 - ICE with lambda in local class NSDMI.
563         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
564         context.
566 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
568         PR c++/84684
569         * constexpr.c (constexpr_call_hasher::equal): Return false if
570         lhs->hash != rhs->hash.  Change return 1 to return true and
571         return 0 to return false.
573 2018-03-05  Nathan Sidwell  <nathan@acm.org>
575         PR c++/84702
576         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
578 2018-03-05  Marek Polacek  <polacek@redhat.com>
580         PR c++/84707
581         * decl.c (duplicate_decls): Check DECL_NAME before accessing
582         UDLIT_OPER_P.
584 2018-03-05  Nathan Sidwell  <nathan@acm.org>
586         PR c++/84694
587         * friend.c (do_friend): Restore check for identifier_p inside
588         TEMPLATE_ID_EXPR.
590 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
592         PR c++/84618
593         * parser.c (cp_parser_lambda_introducer): Reject any capture not
594         involving a VAR_DECL or a PARM_DECL.
596 2018-03-05  Pádraig Brady  <P@draigBrady.com>
597             Jason  Merrill  <jason@redhat.com>
598             Nathan Sidwell  <nathan@acm.org>
600         PR c++/84497
601         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
603 2018-03-03  Jason Merrill  <jason@redhat.com>
605         PR c++/84686 - missing volatile loads.
606         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
608 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
610         PR c++/71464
611         * optimize.c (maybe_thunk_body): Bail out immediately if either
612         fns[0] or fns[1] is null.
614 2018-03-02  Marek Polacek  <polacek@redhat.com>
616         PR c++/84578
617         * constexpr.c (get_array_or_vector_nelts): New.
618         (cxx_eval_array_reference): Use it.
619         (cxx_eval_vec_init_1): Likewise.
620         (cxx_eval_store_expression): Likewise.
622 2018-03-02  Jason Merrill  <jason@redhat.com>
624         * semantics.c (force_paren_expr): Remove redundant test.
626 2018-03-02  Marek Polacek  <polacek@redhat.com>
628         PR c++/84663
629         * decl.c (cp_complete_array_type): Check error_mark_node.
631         PR c++/84664
632         * typeck.c (cp_perform_integral_promotions): Check the result of
633         mark_rvalue_use.
635 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
637         PR c++/84662
638         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
639         RETURN instead of return.
640         <case POINTER_PLUS_EXPR>: Likewise.
641         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
642         it instead of wrapping it into CONVERT_EXPR.
644 2018-03-02  Jason Merrill  <jason@redhat.com>
646         Fix MIPS16 ICE.
647         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
649 2018-03-02  Marek Polacek  <polacek@redhat.com>
651         PR c++/84590
652         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
653         wrapped in VIEW_CONVERT_EXPR.
655 2018-03-01  Martin Sebor  <msebor@redhat.com>
657         PR c++/84294
658         * decl.c (check_redeclaration_no_default_args): Merge attributes
659         specified on redeclarations of the same function template.
660         Remove dead code.
662 2018-03-01  Marek Polacek  <polacek@redhat.com>
663             Jason Merrill  <jason@redhat.com>
665         PR c++/84582
666         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
667         a template.
668         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
669         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
670         of instantiate_non_dependent_expr.
671         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
673 2018-03-01  Nathan Sidwell  <nathan@acm.org>
675         PR c++/84434
676         * name-lookup.c (member_vec_dedup): Remove manually peeled
677         iteration.  Ignore dependent ctor inheritance.
679 2018-03-01  Jason Merrill  <jason@redhat.com>
681         PR c++/71569 - decltype of template.
682         * parser.c (cp_parser_decltype_expr): Handle missing template args.
684 2018-03-01  Marek Polacek  <polacek@redhat.com>
686         PR c++/84596
687         * constexpr.c (require_rvalue_constant_expression): New function.
688         * cp-tree.h: Declare it.
689         * semantics.c (finish_static_assert): Use it instead of
690         require_potential_rvalue_constant_expression.
692 2018-03-01  Jason Merrill  <jason@redhat.com>
693             Alexandre Oliva <aoliva@redhat.com>
695         PR c++/71569 - ICE with redundant args on member variable template.
696         * decl.c (start_decl): Handle partial specialization of member
697         variable template.
698         * pt.c (determine_specialization): Allow partial specialization
699         of member variable template without specializing enclosing class.
700         (process_partial_specialization): Improve error message.
702 2018-02-28  Jason Merrill  <jason@redhat.com>
704         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
705         * pt.c (determine_specialization): Check ref-qualifier.
707 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
709         PR c++/84609
710         * parser.c (cp_parser_attributes_opt): Formatting fix.
711         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
712         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
713         New functions.
714         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
715         instead of tentative parse to peek over optional attribute tokens
716         to check for CPP_COLON after them.
718         PR c++/83871
719         PR c++/83503
720         * pt.c (INCLUDE_STRING): Remove define.
721         (warn_spec_missing_attributes): Use pretty_printer instead of
722         std::string.  Fix up inform call so that the list of attributes
723         is in %s argument.
725 2018-02-28  Martin Sebor  <msebor@redhat.com>
727         PR testsuite/84617
728         * decl.c (duplicate_decls): Fully merge attributes const, pure,
729         and malloc.
731 2018-02-28  Nathan Sidwell  <nathan@acm.org>
733         PR c++/84602
734         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
735         * name-lookup.c (fields_linear_search): Look in an anon-aggr
736         regardless of want_type.
737         (search_anon_aggr): Just use get_class_binding_direct.
739 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
741         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
742         inform_n.
744 2018-02-27  Martin Sebor  <msebor@redhat.com>
746         * pt.c: Avoid including <string> directly.
748 2018-02-27  Martin Sebor  <msebor@redhat.com>
750         PR c++/83871
751         PR c++/83503
752         * cp-tree.h (warn_spec_missing_attributes): New function.
753         ((check_explicit_specialization): Add an argument.  Call the above
754         function.
755         * decl.c (duplicate_decls): Avoid applying primary function template's
756         attributes to its explicit specializations.
757         cp/pt.c (warn_spec_missing_attributes): Define.
759 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
761         PR c++/71546 - lambda init-capture with qualified-id.
762         * parser.c (cp_parser_lambda_introducer): Clear scope after
763         each lambda capture.
765 2018-02-27  Nathan Sidwell  <nathan@acm.org>
767         PR c++/84426
768         * name-lookup.h (get_member_slot): Rename ...
769         (find_member_slot): ... here.
770         (add_member_slot): New.
771         * name-lookup.c (member_vec_linear_search): No need to check for
772         NULL slot.
773         (get_member_slot): Rename ...
774         (find_member_slot): ... here.  Don't add slot for incomplete class.
775         (add_member_slot): New.
776         * class.c (add_method): Adjust get_member_slot rename.  Bail out
777         if push_class_level_binding fails.  Create slot and grok
778         properties once we're committed to insertion.
780 2018-02-27  Jason Merrill  <jason@redhat.com>
782         PR c++/84489 - dependent default template argument
783         * pt.c (type_unification_real): Handle early substitution failure.
785 2018-02-26  Jason Merrill  <jason@redhat.com>
787         PR c++/84560 - ICE capturing multi-dimensional VLA.
788         * tree.c (array_of_runtime_bound_p): False if the element is
789         variably-modified.
791         PR c++/84441 - ICE with base initialized from ?:
792         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
794         PR c++/84520 - ICE with generic lambda in NSDMI.
795         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
796         'this' in a generic lambda instantiation.
798         PR c++/84559 - ICE with constexpr VLA.
799         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
800         for constexpr variable with VLA type.
802 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
804         PR c++/84558
805         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
806         a valid constant initializer.  Formatting fixes.
808 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
810         PR c++/84540
811         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
812         returning NULL_TREE.
813         (apply_late_template_attributes): Likewise.
815 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
817         PR c++/84557
818         * parser.c (cp_parser_omp_var_list_no_open): Only call
819         cp_parser_lookup_name_simple on names satisfying identifier_p.
820         (cp_parser_oacc_routine): Likewise.
822 2018-02-26  Jason Merrill  <jason@redhat.com>
824         PR c++/84551 - ICE with concepts and -g.
825         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
827 2018-02-26  Marek Polacek  <polacek@redhat.com>
829         PR c++/84325
830         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
831         non-types.
833 2018-02-26  Jason Merrill  <jason@redhat.com>
835         PR c++/84447 - ICE with deleted inherited ctor with default arg.
836         * call.c (build_over_call): Handle deleted functions in one place.
838 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
840         PR c++/84533
841         * decl.c (redeclaration_error_message): Don't try to use
842         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
844 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
846         * lambda.c (build_capture_proxy): Define static.
847         * cp-tree.h (build_capture_proxy): Remove.
849 2018-02-26  Marek Polacek  <polacek@redhat.com>
851         PR c++/84537
852         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
853         if name is error node.
855 2018-02-25  Jason Merrill  <jason@redhat.com>
857         PR c++/84015 - ICE with class deduction and auto template parm.
858         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
860 2018-02-24  Marek Polacek  <polacek@redhat.com>
862         PR c++/83692
863         * constexpr.c (maybe_constant_init_1): New function.
864         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
865         (cxx_constant_init): New function.
866         * cp-tree.h (cxx_constant_init): Declare.
867         * typeck2.c (store_init_value): Call cxx_constant_init instead of
868         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
870 2018-02-22  Jason Merrill  <jason@redhat.com>
872         PR c++/70468 - ICE with constructor delegation via typedef.
873         * pt.c (tsubst_initializer_list): Check for other mem-initializers
874         with constructor delegation.
876 2018-02-22  Jason Merrill  <jason@redhat.com>
878         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
879         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
880         VECTOR_TYPE.
882 2018-02-22  Marek Polacek  <polacek@redhat.com>
884         PR c++/84493
885         * parser.c (cp_parser_braced_list): Use require_open instead of
886         consume_open.
888 2018-02-21  Jason Merrill  <jason@redhat.com>
890         PR c++/84454 - ICE with pack expansion in signature.
891         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
893 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
895         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
896         IF_STMT.
898 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
900         PR c++/84446
901         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
902         on error_mark_node.
904 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
906         PR c++/84445
907         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
908         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
910         PR c++/84449
911         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
912         returns error_mark_node, return it immediately.
913         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
914         error_mark_node, return error_mark_node.
916         PR c++/84455
917         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
918         function_depth to avoid GC during finish_lambda_function.
920 2018-02-19  Jason Merrill  <jason@redhat.com>
922         PR c++/84429 - ICE capturing VLA.
923         * lambda.c (build_capture_proxy): Handle reference refs.
925 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
927         PR c++/84448
928         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
929         either operand is error_mark_node, set current.lhs to that instead of
930         creating a binary op with error_mark_node operands.
932         PR c++/84430
933         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
935 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
937         PR c++/84348
938         * decl.c (grokdeclarator): Early return error_mark_node upon
939         ill-formed friend declaration.
941 2018-02-16  Marek Polacek  <polacek@redhat.com>
942             Jakub Jelinek  <jakub@redhat.com>
944         PR c++/84192
945         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
946         set *jump_target to anything if jump_target is NULL.
948 2018-02-16  Jason Merrill  <jason@redhat.com>
950         PR c++/84151 - unnecessary volatile load with static member.
951         * call.c (build_new_method_call_1): Avoid loading from a volatile
952         lvalue used as the object argument for a static member function.
954         PR c++/81853 - using-directive and constexpr.
955         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
957         PR c++/84420 - ICE with structured binding in lambda.
958         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
960         PR c++/83835 - C++17 error with constructor ctors.
961         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
963         PR c++/82664 - ICE with reference to function template parm.
964         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
965         NOP_EXPRs.
967         PR c++/82764 - C++17 ICE with empty base
968         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
970 2018-02-16  Jason Merrill  <jason@redhat.com>
972         PR c++/84421 - type-dependent if constexpr
973         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
975 2018-02-16  Nathan Sidwell  <nathan@acm.org>
977         Deprecate -ffriend-injection.
978         * decl.c (cxx_init_decl_processing): Emit warning on option.
979         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
980         friend.
982 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
984         PR c++/82468
985         * decl.c (check_special_function_return_type): Reject template
986         template parameter in deduction guide.
988 2018-02-16  Nathan Sidwell  <nathan@acm.org>
990         PR c++/84375
991         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
993 2018-02-15  Jason Merrill  <jason@redhat.com>
995         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
996         * call.c (convert_like_real): Don't use the copy-list-initialization
997         shortcut for ck_base.
999         PR c++/84045 - ICE with typedef and noexcept.
1000         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
1002         PR c++/84376 - ICE with omitted template arguments.
1003         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
1005         PR c++/84368 - wrong error with local variable in variadic lambda.
1006         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
1007         local_specializations.
1009 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
1011         PR c++/84330
1012         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
1013         as first argument.
1015 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1017         PR c++/84350
1018         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
1019         init, early return.
1021 2018-02-14  Nathan Sidwell  <nathan@acm.org>
1023         * decl2.c (mark_vtable_entries): Set input_location to decl's.
1024         (c_parse_final_cleanups): Restore input_location after emitting
1025         vtables.
1027 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1029         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
1030         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
1031         auto_deduction_context, tree, int): Add defaults.
1032         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
1033         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
1034         tsubst_flags_t argument.
1035         * init.c (build_new): Likewise.
1037 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1039         PR c++/84364
1040         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1041         about return other than *this in assignment operators if
1042         retval is type dependent expression.
1044 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1046         PR c++/84333
1047         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1048         save_expr for the G++ extension.
1050 2018-02-13  Jason Merrill  <jason@redhat.com>
1052         PR c++/84080 - ICE with return type deduction and specialization.
1053         * pt.c (determine_specialization): Check uses_template_parms.
1055         Fix more variadic capture issues.
1056         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1057         (check_for_bare_parameter_packs): Check current_class_type for
1058         lambda context.
1059         (extract_locals_r): Handle seeing a full instantiation of a pack.
1060         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1061         * parser.c (cp_parser_lambda_introducer): Don't
1062         check_for_bare_parameter_packs.
1064         PR c++/84338 - wrong variadic sizeof.
1065         * pt.c (argument_pack_select_arg): Like the macro, but look through
1066         a pack expansion.
1067         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1068         (extract_fnparm_pack): Do make_pack_expansion.
1069         (extract_locals_r): Do strip a pack expansion.
1070         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1072 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1074         PR c++/84341
1075         * parser.c (cp_parser_binary_expression): Use build_min instead of
1076         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1078 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1080         PR c++/84263
1081         * parser.c (cp_parser_decltype): Push and pop
1082         deferring_access_checks.  Reorganize to avoid goto.
1084 2018-02-12  Richard Biener  <rguenther@suse.de>
1086         PR c++/84281
1087         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1088         uniform constructors and delay allocating them fully.
1090 2018-02-09  Jason Merrill  <jason@redhat.com>
1092         PR c++/84036 - ICE with variadic capture.
1093         Handle variadic capture proxies more like non-variadic.
1094         * lambda.c (build_capture_proxy): Remove workaround.
1095         * pt.c (find_parameter_packs_r): The proxy is a pack.
1096         (instantiate_class_template_1): Remove dead lambda code.
1097         (extract_fnparm_pack): Don't make_pack_expansion.
1098         (extract_locals_r): Don't strip a pack expansion.
1099         (tsubst_pack_expansion): Handle proxy packs.  Use
1100         PACK_EXPANSION_EXTRA_ARGS less.
1101         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1102         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1103         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1104         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1105         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1107 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1109         PR sanitizer/83987
1110         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1112 2018-02-09  Jason Merrill  <jason@redhat.com>
1114         PR c++/81917 - ICE with void_t and partial specialization.
1115         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1116         calling most_specialized_partial_spec.
1118 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1120         PR c/84293
1121         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1122         Pass expr location to strict_aliasing_warning.
1124 2018-02-09  Jason Merrill  <jason@redhat.com>
1126         PR c++/84296 - ICE with qualified-id in template.
1127         PR c++/83714
1128         * pt.c (unknown_base_ref_p): New.
1129         (instantiation_dependent_scope_ref_p): Use it instead of
1130         any_dependent_bases_p.
1132 2018-02-09  Marek Polacek  <polacek@redhat.com>
1133             Jakub Jelinek  <jakub@redhat.com>
1135         PR c++/83659
1136         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1137         fold_indirect_ref_1, including poly_*int64.  Verify first that
1138         tree_fits_poly_int64_p (op01).  Formatting fixes.
1140 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1142         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1143         * lambda.c (build_capture_proxy): Likewise.
1144         * search.c (field_access_p): Likewise.
1145         * semantics.c (omp_clause_decl, omp_privatize_field,
1146         finish_omp_clauses): Likewise.
1148 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1150         PR c++/83806
1151         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1152         case of nullptr too.
1154 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1156         * class.c (finish_struct): Fix std:initializer_list diagnostic
1157         formatting.
1159 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1161         PR c++/83204
1162         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1164 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1166         PR c++/84082
1167         * parser.c (cp_parser_dot_deref_incomplete): New function.
1168         (cp_parser_postfix_dot_deref_expression): Use it.
1170 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1172         PR c++/81610
1173         PR c++/80567
1174         * name-lookup.c (suggest_rid_p): New function.
1175         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1176         suggest_rid_p.
1178 2018-02-07  Jason Merrill  <jason@redhat.com>
1180         PR c++/84182 - ICE with captured lambda
1181         PR c++/84181
1182         * pt.c (extract_locals_r, extract_local_specs): New.
1183         (tsubst_pack_expansion): Use them.
1185 2018-02-07  Martin Liska  <mliska@suse.cz>
1187         PR c++/84059.
1188         * class.c (add_method): Append argument value.
1189         * cp-tree.h (maybe_version_functions): Add new argument.
1190         * decl.c (decls_match): Call it if a declaration does not
1191         have DECL_FUNCTION_VERSIONED.
1192         (maybe_version_functions): record argument is added.
1194 2018-02-05  Marek Polacek  <polacek@redhat.com>
1196         * class.c: Remove unused global variables.
1197         (build_primary_vtable): Don't gather statistics.
1198         (print_class_statistics): Remove.
1199         * cp-tree.h (print_class_statistics): Remove.
1200         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1202 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1204         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1205         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1206         * decl.c (next_initializable_field, find_decomp_class_base,
1207         cp_finish_decomp): Likewise.
1208         * typeck2.c (process_init_constructor_record): Likewise.
1210 2018-02-02  Jason Merrill  <jason@redhat.com>
1212         PR c++/84181 - ICE with lambda parm in template argument.
1213         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1215 2018-02-01  Jason Merrill  <jason@redhat.com>
1217         PR c++/84160 - ICE with nested variadic capture.
1218         * lambda.c (is_capture_proxy_with_ref): New.
1219         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1220         COMPONENT_REF.
1221         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1222         * constexpr.c (potential_constant_expression_1): Likewise.
1223         * semantics.c (process_outer_var_ref): Likewise.
1225 2018-02-01  Marek Polacek  <polacek@redhat.com>
1227         PR c++/84125
1228         * typeck.c (build_address): Relax the assert when
1229         processing_template_decl.
1231 2018-02-01  Jason Merrill  <jason@redhat.com>
1233         PR c++/84126 - ICE with variadic generic lambda
1234         PR c++/84036
1235         PR c++/82249
1236         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1237         PACK_EXPANSION_EXTRA_ARGS.
1239 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1241         PR c++/83796
1242         * call.c (convert_like_real): If w're initializing from {} explicitly
1243         call abstract_virtuals_error_sfinae.
1245 2018-01-31  Jason Merrill  <jason@redhat.com>
1246             Jakub Jelinek  <jakub@redhat.com>
1248         PR c++/83993
1249         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1250         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1251         on ADDR_EXPR.
1253 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1255         PR c++/83993
1256         * constexpr.c (diag_array_subscript): Emit different diagnostics
1257         if TYPE_DOMAIN (arraytype) is NULL.
1258         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1259         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1261 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1263         PR c++/84092
1264         * semantics.c (finish_qualified_id_expr): When handling an
1265         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1267 2018-01-31  Marek Polacek  <polacek@redhat.com>
1269         PR c++/84138
1270         * cp-gimplify.c (cp_fold): Check if X is an error node before
1271         calling useless_type_conversion_p.
1273 2018-01-30  Jason Merrill  <jason@redhat.com>
1275         PR c++/84091 - ICE with local class in lambda in template.
1276         * decl2.c (determine_visibility): Look for outer containing template
1277         instantiation.
1279         PR c++/84098 - ICE with lambda in template NSDMI.
1280         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1282 2018-01-29  Jason Merrill  <jason@redhat.com>
1284         PR c++/68810 - wrong location for reinterpret_cast error.
1285         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1286         !dofold.
1288 2018-01-29  Marek Polacek  <polacek@redhat.com>
1290         PR c++/83996
1291         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1292         => fooarray[1] in offset_int.
1294 2018-01-29  Jason Merrill  <jason@redhat.com>
1296         PR c++/83942 - wrong unused warning with static_cast.
1297         * cvt.c (ocp_convert): Call mark_rvalue_use.
1299 2018-01-26  Jason Merrill  <jason@redhat.com>
1301         PR c++/83956 - wrong dtor error with anonymous union
1302         * method.c (walk_field_subobs): Variant members only affect
1303         deletedness.
1304         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1306         PR c++/84036 - ICE with variadic capture.
1307         PR c++/82249
1308         * pt.c (tsubst_pack_expansion): When optimizing a simple
1309         substitution, pull a single pack expansion out of its pack.
1311         PR c++/82514 - ICE with local class in generic lambda.
1312         * pt.c (regenerated_lambda_fn_p): Remove.
1313         (enclosing_instantiation_of): Don't use it.
1314         (tsubst_function_decl): Call enclosing_instantiation_of.
1316         * pt.c (lookup_template_class_1): Add sanity check.
1317         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1319 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1321         PR c++/84031
1322         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1323         recursive calls that return ret.
1324         (cp_finish_decomp): Ignore unnamed bitfields.
1326 2018-01-23  Jason Merrill  <jason@redhat.com>
1328         PR c++/82249 - wrong mismatched pack length error.
1329         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1330         unsubstituted function parameter pack.
1332 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1334         PR c++/83921
1335         * decl.c (check_for_uninitialized_const_var): Not static; add
1336         bool and tsubst_flags_t parameters; adjust to be used both in
1337         constexpr context and not.
1338         * constexpr.c (potential_constant_expression_1): Use the above.
1339         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1341 2018-01-23  Jason Merrill  <jason@redhat.com>
1343         PR c++/83947 - ICE with auto declarations.
1344         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1345         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1347 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1349         PR c++/83974
1350         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1351         for pointer to member function types.
1353 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1355         PR sanitizer/83987
1356         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1357         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1359 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1361         PR c++/83988
1362         * pt.c (tsubst_baselink): Remove optype assert.
1363         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1365 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1367         PR c++/83958
1368         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1369         refers to incomplete type.
1371 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1373         Deprecate ARM-era for scope handling
1374         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1375         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1376         cleared.
1377         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1378         cleanup handling.
1379         * semantics.c (begin_for_scope): Flag_new_for_scope is
1380         boolean-like.
1381         (finish_for_stmt, begin_range_for_stmt): Likewise.
1383 2018-01-22  Jason Merrill  <jason@redhat.com>
1385         PR c++/83720
1386         * decl2.c (determine_visibility): Fix template_decl handling
1387         instead of blocking it.
1389         PR c++/83720 - ICE with lambda and LTO.
1390         * decl2.c (determine_visibility): Clear template_decl for
1391         function-scope decls.  Propagate anonymous linkage from containing
1392         function.
1394 2018-01-22  Marek Polacek  <polacek@redhat.com>
1396         PR c++/81933
1397         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1398         split out anything.
1400 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1402         PR c++/83895
1403         * decl.c (grokdeclarator): Don't diagnose extra parens
1404         on typedefs.
1406 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1408         PR c++/81167
1409         * call.c (joust): Use TREE_TYPE (source) if source is
1410         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1412         PR c++/83919
1413         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1414         for direct enum init.
1415         * decl.c (reshape_init): Likewise.
1417 2018-01-19  Marek Polacek  <polacek@redhat.com>
1419         * constexpr.c (fold_simple): Simplify.
1421 2018-01-18  Jason Merrill  <jason@redhat.com>
1423         PR c++/83714
1424         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1425         * pt.c (instantiation_dependent_scope_ref_p): True if
1426         any_dependent_bases_p.
1428 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1430         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1431         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1433 2018-01-18  Jason Merrill  <jason@redhat.com>
1435         PR c++/82461 - constexpr list-initialized member
1436         * constexpr.c (potential_constant_expression_1): Check
1437         TARGET_EXPR_DIRECT_INIT_P.
1439 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1441         PR c++/81013
1442         * decl.c (xref_basetypes): Early return upon error about derived
1443         union.
1445 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1447         PR c++/83160
1448         * cp-tree.h (mark_use): Declare.
1449         * expr.c (mark_use): Make extern.
1450         * call.c (direct_reference_binding): Set inner conv's
1451         rvaluedness_matches_p, if it is an identity.
1452         (convert_like_real): Mark lvalue or rvalue use for identity as
1453         rvaledness_matches_p demands.
1455 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1457         PR c++/83824
1458         * parser.c (attr_chainon): New function.
1459         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1460         cp_parser_namespace_definition, cp_parser_init_declarator,
1461         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1462         cp_parser_gnu_attributes_opt): Use it.
1463         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1464         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1465         prefix_attributes if attributes is error_mark_node.
1467 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1469         PR c++/78344
1470         * decl.c (grokdeclarator): Do not append the error_mark_node
1471         due to an erroneous optional attribute-specifier-seq.
1473 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1475         PR c++/83897
1476         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1477         CLEANUP_POINT_EXPR.
1479 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1481         PR c++/81054
1482         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1483         error_mark_node when we give an error.
1484         * decl.c (cp_finish_decl): Use the latter.
1486 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1488         PR c++/83287
1489         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1491 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1493         PR c++/83814
1494         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1495         the C++ part.  If processing a template, call
1496         fold_non_dependent_expr rather than fully folding.
1498 2018-01-17  Jason Merrill  <jason@redhat.com>
1500         PR c++/81067 - redundant NULL warning.
1501         * call.c (convert_like_real): Restore null_node handling.
1503 2018-01-17  Jason Merrill  <jason@redhat.com>
1505         PR c++/81843 - ICE with variadic member template.
1506         PR c++/72801
1507         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1508         template args.
1510 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1512         PR c++/83799
1513         * pt.c (type_dependent_expression_p): Strip any location wrapper
1514         before testing tree codes.
1515         (selftest::test_type_dependent_expression_p): New function.
1516         (selftest::cp_pt_c_tests): Call it.
1518 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1520         PR c++/83739
1521         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1522         this not a final instantiation.
1524 2018-01-16  Jason Merrill  <jason@redhat.com>
1526         PR c++/83714 - ICE checking return in template.
1527         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1529 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1531         PR c++/83817
1532         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1533         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1534         instead of CALL_FROM_THUNK_P.
1536         PR c++/83825
1537         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1538         (resort_type_member_vec, set_class_bindings,
1539         insert_late_enum_def_bindings): Use vec qsort method instead of
1540         calling qsort directly.
1542 2018-01-15  Martin Sebor  <msebor@redhat.com>
1544         PR c++/83588
1545         * class.c (find_flexarrays): Make a record of multiple flexible array
1546         members.
1548 2018-01-12  Jason Merrill  <jason@redhat.com>
1550         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1551         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1553 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1555         * cp-tree.h (mark_rvalue_use): Add parm name.
1556         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1557         mark_rvalue_use.
1558         * call.c (convert_like_real): Fix formatting.
1560 2018-01-11  Jason Merrill  <jason@redhat.com>
1562         PR c++/82728 - wrong -Wunused-but-set-variable
1563         PR c++/82799
1564         PR c++/83690
1565         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1566         * decl.c (case_conversion): Likewise.
1567         * semantics.c (finish_static_assert): Call
1568         perform_implicit_conversion_flags.
1570 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1572         * method.c (enum mangling_flags): Delete long-dead enum.
1574 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1576         * parser.c (cp_parser_std_attribute_spec): When
1577         token_pair::require_open / require_close return false simply
1578         return error_mark_node, avoid duplicate cp_parser_error about
1579         expected '(' / ')', respectively.
1581 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1583         PR c++/43486
1584         * call.c (null_ptr_cst_p): Strip location wrappers when
1585         converting from '0' to a pointer type in C++11 onwards.
1586         (conversion_null_warnings): Replace comparison with null_node with
1587         call to null_node_p.
1588         (build_over_call): Likewise.
1589         * cp-gimplify.c (cp_fold): Remove the early bailout when
1590         processing_template_decl.
1591         * cp-lang.c (selftest::run_cp_tests): Call
1592         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1593         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1594         (selftest::run_cp_tests): Move decl to bottom of file.
1595         (null_node_p): New inline function.
1596         (selftest::cp_pt_c_tests): New decl.
1597         (selftest::cp_tree_c_tests): New decl.
1598         * cvt.c (build_expr_type_conversion): Replace comparison with
1599         null_node with call to null_node_p.
1600         * error.c (args_to_string): Likewise.
1601         * except.c (build_throw): Likewise.
1602         * mangle.c (write_expression): Skip location wrapper nodes.
1603         * parser.c (literal_integer_zerop): New function.
1604         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1605         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1606         param of cp_parser_parenthesized_expression_list.  When calling
1607         warn_for_memset, replace integer_zerop calls with
1608         literal_integer_zerop, eliminating the double logical negation
1609         cast to bool.  Eliminate the special-casing for CONST_DECL in
1610         favor of the fold_for_warn within warn_for_memset.
1611         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1612         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1613         maybe_add_location_wrapper on it when wrap_locations_p is true.
1614         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1615         the result for RID_ALIGNOF and RID_SIZEOF.
1616         (cp_parser_builtin_offsetof): Likewise.
1617         * pt.c: Include "selftest.h".
1618         (tsubst_copy): Handle location wrappers.
1619         (tsubst_copy_and_build): Likewise.
1620         (build_non_dependent_expr): Likewise.
1621         (selftest::test_build_non_dependent_expr): New function.
1622         (selftest::cp_pt_c_tests): New function.
1623         * tree.c: Include "selftest.h".
1624         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1625         (selftest::test_lvalue_kind): New function.
1626         (selftest::cp_tree_c_tests): New function.
1627         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1628         (cp_build_binary_op): Replace comparison with null_node with call
1629         to null_node_p.
1630         (build_address): Use location of operand when building address
1631         expression.
1633 2018-01-10  Marek Polacek  <polacek@redhat.com>
1635         PR c++/82541
1636         * call.c (build_conditional_expr_1): Check complain before warning.
1637         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1638         -Wduplicated-branches.
1640 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1642         PR c++/81327
1643         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1644         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1645         args uses and check number of operands too.  Don't strip away any
1646         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1647         Deal with src argument not having pointer type.  Check
1648         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1649         test.
1650         (build_over_call): Call maybe_warn_class_memaccess here on the
1651         original arguments.
1652         (build_cxx_call): Rather than here on converted arguments.
1654 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1656         PR c++/81055
1657         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1658         error_mark_node as second argument.
1660 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1662         PR c++/83734
1663         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1664         in STATEMENT_LIST.  Remove unneeded assert.
1666 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1667             Alan Hayward  <alan.hayward@arm.com>
1668             David Sherwood  <david.sherwood@arm.com>
1670         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1671         VECTOR_CST_NELTS.
1672         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1673         * call.c (build_conditional_expr_1): Likewise.
1674         * decl.c (cp_finish_decomp): Likewise.
1675         * mangle.c (write_type): Likewise.
1676         * typeck.c (structural_comptypes): Likewise.
1677         (cp_build_binary_op): Likewise.
1678         * typeck2.c (process_init_constructor_array): Likewise.
1680 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1682         PR c++/83555
1683         * typeck.c (build_static_cast_1): For static casts to reference types,
1684         call build_base_path with flag_delete_null_pointer_checks as nonnull
1685         instead of always false.  When -fsanitize=null, call
1686         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1687         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1688         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1690 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1692         PR c++/83667
1693         * method.c (make_alias_for): Copy DECL_CONTEXT.
1695 2018-01-03  Marek Polacek  <polacek@redhat.com>
1697         PR c++/83592
1698         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1700 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1702         PR preprocessor/83602
1703         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1704         for builtin macros.
1706         PR c++/83634
1707         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1708         error_mark_node, return error_mark_node.
1710         Update copyright years.
1712 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1714         PR c++/83556
1715         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1716         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1717         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1718         to false and return.
1719         (replace_placeholders): Pass NULL instead of &pset as last argument
1720         to cp_walk_tree.
1722 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1724         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1725         lval var.
1727 Copyright (C) 2018 Free Software Foundation, Inc.
1729 Copying and distribution of this file, with or without modification,
1730 are permitted in any medium without royalty provided the copyright
1731 notice and this notice are preserved.