PR c++/84707
[official-gcc.git] / gcc / cp / ChangeLog
blob001cb6a559ae8dc7bcad9dd1774ae6b90d8bf905
1 2018-03-05  Marek Polacek  <polacek@redhat.com>
3         PR c++/84707
4         * decl.c (duplicate_decls): Check DECL_NAME before accessing
5         UDLIT_OPER_P.
7 2018-03-05  Nathan Sidwell  <nathan@acm.org>
9         PR c++/84694
10         * friend.c (do_friend): Restore check for identifier_p inside
11         TEMPLATE_ID_EXPR.
13 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
15         PR c++/84618
16         * parser.c (cp_parser_lambda_introducer): Reject any capture not
17         involving a VAR_DECL or a PARM_DECL.
19 2018-03-05  Pádraig Brady  <P@draigBrady.com>
20             Jason  Merrill  <jason@redhat.com>
21             Nathan Sidwell  <nathan@acm.org>
23         PR c++/84497
24         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
26 2018-03-03  Jason Merrill  <jason@redhat.com>
28         PR c++/84686 - missing volatile loads.
29         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
31 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
33         PR c++/71464
34         * optimize.c (maybe_thunk_body): Bail out immediately if either
35         fns[0] or fns[1] is null.
37 2018-03-02  Marek Polacek  <polacek@redhat.com>
39         PR c++/84578
40         * constexpr.c (get_array_or_vector_nelts): New.
41         (cxx_eval_array_reference): Use it.
42         (cxx_eval_vec_init_1): Likewise.
43         (cxx_eval_store_expression): Likewise.
45 2018-03-02  Jason Merrill  <jason@redhat.com>
47         * semantics.c (force_paren_expr): Remove redundant test.
49 2018-03-02  Marek Polacek  <polacek@redhat.com>
51         PR c++/84663
52         * decl.c (cp_complete_array_type): Check error_mark_node.
54         PR c++/84664
55         * typeck.c (cp_perform_integral_promotions): Check the result of
56         mark_rvalue_use.
58 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
60         PR c++/84662
61         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
62         RETURN instead of return.
63         <case POINTER_PLUS_EXPR>: Likewise.
64         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
65         it instead of wrapping it into CONVERT_EXPR.
67 2018-03-02  Jason Merrill  <jason@redhat.com>
69         Fix MIPS16 ICE.
70         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
72 2018-03-02  Marek Polacek  <polacek@redhat.com>
74         PR c++/84590
75         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
76         wrapped in VIEW_CONVERT_EXPR.
78 2018-03-01  Martin Sebor  <msebor@redhat.com>
80         PR c++/84294
81         * decl.c (check_redeclaration_no_default_args): Merge attributes
82         specified on redeclarations of the same function template.
83         Remove dead code.
85 2018-03-01  Marek Polacek  <polacek@redhat.com>
86             Jason Merrill  <jason@redhat.com>
88         PR c++/84582
89         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
90         a template.
91         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
92         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
93         of instantiate_non_dependent_expr.
94         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
96 2018-03-01  Nathan Sidwell  <nathan@acm.org>
98         PR c++/84434
99         * name-lookup.c (member_vec_dedup): Remove manually peeled
100         iteration.  Ignore dependent ctor inheritance.
102 2018-03-01  Jason Merrill  <jason@redhat.com>
104         PR c++/71569 - decltype of template.
105         * parser.c (cp_parser_decltype_expr): Handle missing template args.
107 2018-03-01  Marek Polacek  <polacek@redhat.com>
109         PR c++/84596
110         * constexpr.c (require_rvalue_constant_expression): New function.
111         * cp-tree.h: Declare it.
112         * semantics.c (finish_static_assert): Use it instead of
113         require_potential_rvalue_constant_expression.
115 2018-03-01  Jason Merrill  <jason@redhat.com>
116             Alexandre Oliva <aoliva@redhat.com>
118         PR c++/71569 - ICE with redundant args on member variable template.
119         * decl.c (start_decl): Handle partial specialization of member
120         variable template.
121         * pt.c (determine_specialization): Allow partial specialization
122         of member variable template without specializing enclosing class.
123         (process_partial_specialization): Improve error message.
125 2018-02-28  Jason Merrill  <jason@redhat.com>
127         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
128         * pt.c (determine_specialization): Check ref-qualifier.
130 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
132         PR c++/84609
133         * parser.c (cp_parser_attributes_opt): Formatting fix.
134         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
135         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
136         New functions.
137         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
138         instead of tentative parse to peek over optional attribute tokens
139         to check for CPP_COLON after them.
141         PR c++/83871
142         PR c++/83503
143         * pt.c (INCLUDE_STRING): Remove define.
144         (warn_spec_missing_attributes): Use pretty_printer instead of
145         std::string.  Fix up inform call so that the list of attributes
146         is in %s argument.
148 2018-02-28  Martin Sebor  <msebor@redhat.com>
150         PR testsuite/84617
151         * decl.c (duplicate_decls): Fully merge attributes const, pure,
152         and malloc.
154 2018-02-28  Nathan Sidwell  <nathan@acm.org>
156         PR c++/84602
157         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
158         * name-lookup.c (fields_linear_search): Look in an anon-aggr
159         regardless of want_type.
160         (search_anon_aggr): Just use get_class_binding_direct.
162 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
164         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
165         inform_n.
167 2018-02-27  Martin Sebor  <msebor@redhat.com>
169         * pt.c: Avoid including <string> directly.
171 2018-02-27  Martin Sebor  <msebor@redhat.com>
173         PR c++/83871
174         PR c++/83503
175         * cp-tree.h (warn_spec_missing_attributes): New function.
176         ((check_explicit_specialization): Add an argument.  Call the above
177         function.
178         * decl.c (duplicate_decls): Avoid applying primary function template's
179         attributes to its explicit specializations.
180         cp/pt.c (warn_spec_missing_attributes): Define.
182 2018-02-27  Håkon Sandsmark  <hsandsmark@gmail.com>
184         PR c++/71546 - lambda init-capture with qualified-id.
185         * parser.c (cp_parser_lambda_introducer): Clear scope after
186         each lambda capture.
188 2018-02-27  Nathan Sidwell  <nathan@acm.org>
190         PR c++/84426
191         * name-lookup.h (get_member_slot): Rename ...
192         (find_member_slot): ... here.
193         (add_member_slot): New.
194         * name-lookup.c (member_vec_linear_search): No need to check for
195         NULL slot.
196         (get_member_slot): Rename ...
197         (find_member_slot): ... here.  Don't add slot for incomplete class.
198         (add_member_slot): New.
199         * class.c (add_method): Adjust get_member_slot rename.  Bail out
200         if push_class_level_binding fails.  Create slot and grok
201         properties once we're committed to insertion.
203 2018-02-27  Jason Merrill  <jason@redhat.com>
205         PR c++/84489 - dependent default template argument
206         * pt.c (type_unification_real): Handle early substitution failure.
208 2018-02-26  Jason Merrill  <jason@redhat.com>
210         PR c++/84560 - ICE capturing multi-dimensional VLA.
211         * tree.c (array_of_runtime_bound_p): False if the element is
212         variably-modified.
214         PR c++/84441 - ICE with base initialized from ?:
215         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
217         PR c++/84520 - ICE with generic lambda in NSDMI.
218         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
219         'this' in a generic lambda instantiation.
221         PR c++/84559 - ICE with constexpr VLA.
222         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
223         for constexpr variable with VLA type.
225 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
227         PR c++/84558
228         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
229         a valid constant initializer.  Formatting fixes.
231 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
233         PR c++/84540
234         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
235         returning NULL_TREE.
236         (apply_late_template_attributes): Likewise.
238 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
240         PR c++/84557
241         * parser.c (cp_parser_omp_var_list_no_open): Only call
242         cp_parser_lookup_name_simple on names satisfying identifier_p.
243         (cp_parser_oacc_routine): Likewise.
245 2018-02-26  Jason Merrill  <jason@redhat.com>
247         PR c++/84551 - ICE with concepts and -g.
248         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
250 2018-02-26  Marek Polacek  <polacek@redhat.com>
252         PR c++/84325
253         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
254         non-types.
256 2018-02-26  Jason Merrill  <jason@redhat.com>
258         PR c++/84447 - ICE with deleted inherited ctor with default arg.
259         * call.c (build_over_call): Handle deleted functions in one place.
261 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
263         PR c++/84533
264         * decl.c (redeclaration_error_message): Don't try to use
265         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
267 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
269         * lambda.c (build_capture_proxy): Define static.
270         * cp-tree.h (build_capture_proxy): Remove.
272 2018-02-26  Marek Polacek  <polacek@redhat.com>
274         PR c++/84537
275         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
276         if name is error node.
278 2018-02-25  Jason Merrill  <jason@redhat.com>
280         PR c++/84015 - ICE with class deduction and auto template parm.
281         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
283 2018-02-24  Marek Polacek  <polacek@redhat.com>
285         PR c++/83692
286         * constexpr.c (maybe_constant_init_1): New function.
287         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
288         (cxx_constant_init): New function.
289         * cp-tree.h (cxx_constant_init): Declare.
290         * typeck2.c (store_init_value): Call cxx_constant_init instead of
291         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
293 2018-02-22  Jason Merrill  <jason@redhat.com>
295         PR c++/70468 - ICE with constructor delegation via typedef.
296         * pt.c (tsubst_initializer_list): Check for other mem-initializers
297         with constructor delegation.
299 2018-02-22  Jason Merrill  <jason@redhat.com>
301         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
302         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
303         VECTOR_TYPE.
305 2018-02-22  Marek Polacek  <polacek@redhat.com>
307         PR c++/84493
308         * parser.c (cp_parser_braced_list): Use require_open instead of
309         consume_open.
311 2018-02-21  Jason Merrill  <jason@redhat.com>
313         PR c++/84454 - ICE with pack expansion in signature.
314         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
316 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
318         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
319         IF_STMT.
321 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
323         PR c++/84446
324         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
325         on error_mark_node.
327 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
329         PR c++/84445
330         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
331         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
333         PR c++/84449
334         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
335         returns error_mark_node, return it immediately.
336         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
337         error_mark_node, return error_mark_node.
339         PR c++/84455
340         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
341         function_depth to avoid GC during finish_lambda_function.
343 2018-02-19  Jason Merrill  <jason@redhat.com>
345         PR c++/84429 - ICE capturing VLA.
346         * lambda.c (build_capture_proxy): Handle reference refs.
348 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
350         PR c++/84448
351         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
352         either operand is error_mark_node, set current.lhs to that instead of
353         creating a binary op with error_mark_node operands.
355         PR c++/84430
356         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
358 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
360         PR c++/84348
361         * decl.c (grokdeclarator): Early return error_mark_node upon
362         ill-formed friend declaration.
364 2018-02-16  Marek Polacek  <polacek@redhat.com>
365             Jakub Jelinek  <jakub@redhat.com>
367         PR c++/84192
368         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
369         set *jump_target to anything if jump_target is NULL.
371 2018-02-16  Jason Merrill  <jason@redhat.com>
373         PR c++/84151 - unnecessary volatile load with static member.
374         * call.c (build_new_method_call_1): Avoid loading from a volatile
375         lvalue used as the object argument for a static member function.
377         PR c++/81853 - using-directive and constexpr.
378         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
380         PR c++/84420 - ICE with structured binding in lambda.
381         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
383         PR c++/83835 - C++17 error with constructor ctors.
384         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
386         PR c++/82664 - ICE with reference to function template parm.
387         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
388         NOP_EXPRs.
390         PR c++/82764 - C++17 ICE with empty base
391         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
393 2018-02-16  Jason Merrill  <jason@redhat.com>
395         PR c++/84421 - type-dependent if constexpr
396         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
398 2018-02-16  Nathan Sidwell  <nathan@acm.org>
400         Deprecate -ffriend-injection.
401         * decl.c (cxx_init_decl_processing): Emit warning on option.
402         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
403         friend.
405 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
407         PR c++/82468
408         * decl.c (check_special_function_return_type): Reject template
409         template parameter in deduction guide.
411 2018-02-16  Nathan Sidwell  <nathan@acm.org>
413         PR c++/84375
414         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
416 2018-02-15  Jason Merrill  <jason@redhat.com>
418         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
419         * call.c (convert_like_real): Don't use the copy-list-initialization
420         shortcut for ck_base.
422         PR c++/84045 - ICE with typedef and noexcept.
423         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
425         PR c++/84376 - ICE with omitted template arguments.
426         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
428         PR c++/84368 - wrong error with local variable in variadic lambda.
429         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
430         local_specializations.
432 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
434         PR c++/84330
435         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
436         as first argument.
438 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
440         PR c++/84350
441         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
442         init, early return.
444 2018-02-14  Nathan Sidwell  <nathan@acm.org>
446         * decl2.c (mark_vtable_entries): Set input_location to decl's.
447         (c_parse_final_cleanups): Restore input_location after emitting
448         vtables.
450 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
452         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
453         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
454         auto_deduction_context, tree, int): Add defaults.
455         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
456         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
457         tsubst_flags_t argument.
458         * init.c (build_new): Likewise.
460 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
462         PR c++/84364
463         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
464         about return other than *this in assignment operators if
465         retval is type dependent expression.
467 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
469         PR c++/84333
470         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
471         save_expr for the G++ extension.
473 2018-02-13  Jason Merrill  <jason@redhat.com>
475         PR c++/84080 - ICE with return type deduction and specialization.
476         * pt.c (determine_specialization): Check uses_template_parms.
478         Fix more variadic capture issues.
479         * pt.c (find_parameter_packs_r): Also look at explicit captures.
480         (check_for_bare_parameter_packs): Check current_class_type for
481         lambda context.
482         (extract_locals_r): Handle seeing a full instantiation of a pack.
483         (tsubst_pack_expansion): Likewise.  Force lambda capture.
484         * parser.c (cp_parser_lambda_introducer): Don't
485         check_for_bare_parameter_packs.
487         PR c++/84338 - wrong variadic sizeof.
488         * pt.c (argument_pack_select_arg): Like the macro, but look through
489         a pack expansion.
490         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
491         (extract_fnparm_pack): Do make_pack_expansion.
492         (extract_locals_r): Do strip a pack expansion.
493         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
495 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
497         PR c++/84341
498         * parser.c (cp_parser_binary_expression): Use build_min instead of
499         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
501 2018-02-12  Nathan Sidwell  <nathan@acm.org>
503         PR c++/84263
504         * parser.c (cp_parser_decltype): Push and pop
505         deferring_access_checks.  Reorganize to avoid goto.
507 2018-02-12  Richard Biener  <rguenther@suse.de>
509         PR c++/84281
510         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
511         uniform constructors and delay allocating them fully.
513 2018-02-09  Jason Merrill  <jason@redhat.com>
515         PR c++/84036 - ICE with variadic capture.
516         Handle variadic capture proxies more like non-variadic.
517         * lambda.c (build_capture_proxy): Remove workaround.
518         * pt.c (find_parameter_packs_r): The proxy is a pack.
519         (instantiate_class_template_1): Remove dead lambda code.
520         (extract_fnparm_pack): Don't make_pack_expansion.
521         (extract_locals_r): Don't strip a pack expansion.
522         (tsubst_pack_expansion): Handle proxy packs.  Use
523         PACK_EXPANSION_EXTRA_ARGS less.
524         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
525         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
526         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
527         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
528         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
530 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
532         PR sanitizer/83987
533         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
535 2018-02-09  Jason Merrill  <jason@redhat.com>
537         PR c++/81917 - ICE with void_t and partial specialization.
538         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
539         calling most_specialized_partial_spec.
541 2018-02-09  Nathan Sidwell  <nathan@acm.org>
543         PR c/84293
544         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
545         Pass expr location to strict_aliasing_warning.
547 2018-02-09  Jason Merrill  <jason@redhat.com>
549         PR c++/84296 - ICE with qualified-id in template.
550         PR c++/83714
551         * pt.c (unknown_base_ref_p): New.
552         (instantiation_dependent_scope_ref_p): Use it instead of
553         any_dependent_bases_p.
555 2018-02-09  Marek Polacek  <polacek@redhat.com>
556             Jakub Jelinek  <jakub@redhat.com>
558         PR c++/83659
559         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
560         fold_indirect_ref_1, including poly_*int64.  Verify first that
561         tree_fits_poly_int64_p (op01).  Formatting fixes.
563 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
565         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
566         * lambda.c (build_capture_proxy): Likewise.
567         * search.c (field_access_p): Likewise.
568         * semantics.c (omp_clause_decl, omp_privatize_field,
569         finish_omp_clauses): Likewise.
571 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
573         PR c++/83806
574         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
575         case of nullptr too.
577 2018-02-08  Nathan Sidwell  <nathan@acm.org>
579         * class.c (finish_struct): Fix std:initializer_list diagnostic
580         formatting.
582 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
584         PR c++/83204
585         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
587 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
589         PR c++/84082
590         * parser.c (cp_parser_dot_deref_incomplete): New function.
591         (cp_parser_postfix_dot_deref_expression): Use it.
593 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
595         PR c++/81610
596         PR c++/80567
597         * name-lookup.c (suggest_rid_p): New function.
598         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
599         suggest_rid_p.
601 2018-02-07  Jason Merrill  <jason@redhat.com>
603         PR c++/84182 - ICE with captured lambda
604         PR c++/84181
605         * pt.c (extract_locals_r, extract_local_specs): New.
606         (tsubst_pack_expansion): Use them.
608 2018-02-07  Martin Liska  <mliska@suse.cz>
610         PR c++/84059.
611         * class.c (add_method): Append argument value.
612         * cp-tree.h (maybe_version_functions): Add new argument.
613         * decl.c (decls_match): Call it if a declaration does not
614         have DECL_FUNCTION_VERSIONED.
615         (maybe_version_functions): record argument is added.
617 2018-02-05  Marek Polacek  <polacek@redhat.com>
619         * class.c: Remove unused global variables.
620         (build_primary_vtable): Don't gather statistics.
621         (print_class_statistics): Remove.
622         * cp-tree.h (print_class_statistics): Remove.
623         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
625 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
627         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
628         * constexpr.c (cx_check_missing_mem_inits): Likewise.
629         * decl.c (next_initializable_field, find_decomp_class_base,
630         cp_finish_decomp): Likewise.
631         * typeck2.c (process_init_constructor_record): Likewise.
633 2018-02-02  Jason Merrill  <jason@redhat.com>
635         PR c++/84181 - ICE with lambda parm in template argument.
636         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
638 2018-02-01  Jason Merrill  <jason@redhat.com>
640         PR c++/84160 - ICE with nested variadic capture.
641         * lambda.c (is_capture_proxy_with_ref): New.
642         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
643         COMPONENT_REF.
644         * expr.c (mark_use): Use is_capture_proxy_with_ref.
645         * constexpr.c (potential_constant_expression_1): Likewise.
646         * semantics.c (process_outer_var_ref): Likewise.
648 2018-02-01  Marek Polacek  <polacek@redhat.com>
650         PR c++/84125
651         * typeck.c (build_address): Relax the assert when
652         processing_template_decl.
654 2018-02-01  Jason Merrill  <jason@redhat.com>
656         PR c++/84126 - ICE with variadic generic lambda
657         PR c++/84036
658         PR c++/82249
659         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
660         PACK_EXPANSION_EXTRA_ARGS.
662 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
664         PR c++/83796
665         * call.c (convert_like_real): If w're initializing from {} explicitly
666         call abstract_virtuals_error_sfinae.
668 2018-01-31  Jason Merrill  <jason@redhat.com>
669             Jakub Jelinek  <jakub@redhat.com>
671         PR c++/83993
672         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
673         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
674         on ADDR_EXPR.
676 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
678         PR c++/83993
679         * constexpr.c (diag_array_subscript): Emit different diagnostics
680         if TYPE_DOMAIN (arraytype) is NULL.
681         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
682         with NULL TYPE_DOMAIN use size_zero_node as nelts.
684 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
686         PR c++/84092
687         * semantics.c (finish_qualified_id_expr): When handling an
688         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
690 2018-01-31  Marek Polacek  <polacek@redhat.com>
692         PR c++/84138
693         * cp-gimplify.c (cp_fold): Check if X is an error node before
694         calling useless_type_conversion_p.
696 2018-01-30  Jason Merrill  <jason@redhat.com>
698         PR c++/84091 - ICE with local class in lambda in template.
699         * decl2.c (determine_visibility): Look for outer containing template
700         instantiation.
702         PR c++/84098 - ICE with lambda in template NSDMI.
703         * pt.c (instantiate_class_template_1): Ignore more lambdas.
705 2018-01-29  Jason Merrill  <jason@redhat.com>
707         PR c++/68810 - wrong location for reinterpret_cast error.
708         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
709         !dofold.
711 2018-01-29  Marek Polacek  <polacek@redhat.com>
713         PR c++/83996
714         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
715         => fooarray[1] in offset_int.
717 2018-01-29  Jason Merrill  <jason@redhat.com>
719         PR c++/83942 - wrong unused warning with static_cast.
720         * cvt.c (ocp_convert): Call mark_rvalue_use.
722 2018-01-26  Jason Merrill  <jason@redhat.com>
724         PR c++/83956 - wrong dtor error with anonymous union
725         * method.c (walk_field_subobs): Variant members only affect
726         deletedness.
727         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
729         PR c++/84036 - ICE with variadic capture.
730         PR c++/82249
731         * pt.c (tsubst_pack_expansion): When optimizing a simple
732         substitution, pull a single pack expansion out of its pack.
734         PR c++/82514 - ICE with local class in generic lambda.
735         * pt.c (regenerated_lambda_fn_p): Remove.
736         (enclosing_instantiation_of): Don't use it.
737         (tsubst_function_decl): Call enclosing_instantiation_of.
739         * pt.c (lookup_template_class_1): Add sanity check.
740         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
742 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
744         PR c++/84031
745         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
746         recursive calls that return ret.
747         (cp_finish_decomp): Ignore unnamed bitfields.
749 2018-01-23  Jason Merrill  <jason@redhat.com>
751         PR c++/82249 - wrong mismatched pack length error.
752         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
753         unsubstituted function parameter pack.
755 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
757         PR c++/83921
758         * decl.c (check_for_uninitialized_const_var): Not static; add
759         bool and tsubst_flags_t parameters; adjust to be used both in
760         constexpr context and not.
761         * constexpr.c (potential_constant_expression_1): Use the above.
762         * cp-tree.h (check_for_uninitialized_const_var): Declare.
764 2018-01-23  Jason Merrill  <jason@redhat.com>
766         PR c++/83947 - ICE with auto declarations.
767         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
768         * decl.c (undeduced_auto_decl): Limit to vars and fns.
770 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
772         PR c++/83974
773         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
774         for pointer to member function types.
776 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
778         PR sanitizer/83987
779         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
780         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
782 2018-01-23  Nathan Sidwell  <nathan@acm.org>
784         PR c++/83988
785         * pt.c (tsubst_baselink): Remove optype assert.
786         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
788 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
790         PR c++/83958
791         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
792         refers to incomplete type.
794 2018-01-23  Nathan Sidwell  <nathan@acm.org>
796         Deprecate ARM-era for scope handling
797         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
798         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
799         cleared.
800         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
801         cleanup handling.
802         * semantics.c (begin_for_scope): Flag_new_for_scope is
803         boolean-like.
804         (finish_for_stmt, begin_range_for_stmt): Likewise.
806 2018-01-22  Jason Merrill  <jason@redhat.com>
808         PR c++/83720
809         * decl2.c (determine_visibility): Fix template_decl handling
810         instead of blocking it.
812         PR c++/83720 - ICE with lambda and LTO.
813         * decl2.c (determine_visibility): Clear template_decl for
814         function-scope decls.  Propagate anonymous linkage from containing
815         function.
817 2018-01-22  Marek Polacek  <polacek@redhat.com>
819         PR c++/81933
820         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
821         split out anything.
823 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
825         PR c++/83895
826         * decl.c (grokdeclarator): Don't diagnose extra parens
827         on typedefs.
829 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
831         PR c++/81167
832         * call.c (joust): Use TREE_TYPE (source) if source is
833         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
835         PR c++/83919
836         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
837         for direct enum init.
838         * decl.c (reshape_init): Likewise.
840 2018-01-19  Marek Polacek  <polacek@redhat.com>
842         * constexpr.c (fold_simple): Simplify.
844 2018-01-18  Jason Merrill  <jason@redhat.com>
846         PR c++/83714
847         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
848         * pt.c (instantiation_dependent_scope_ref_p): True if
849         any_dependent_bases_p.
851 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
853         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
854         vs DECL_NONTRIVIALLY_INITIALIZED_P).
856 2018-01-18  Jason Merrill  <jason@redhat.com>
858         PR c++/82461 - constexpr list-initialized member
859         * constexpr.c (potential_constant_expression_1): Check
860         TARGET_EXPR_DIRECT_INIT_P.
862 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
864         PR c++/81013
865         * decl.c (xref_basetypes): Early return upon error about derived
866         union.
868 2018-01-18  Nathan Sidwell  <nathan@acm.org>
870         PR c++/83160
871         * cp-tree.h (mark_use): Declare.
872         * expr.c (mark_use): Make extern.
873         * call.c (direct_reference_binding): Set inner conv's
874         rvaluedness_matches_p, if it is an identity.
875         (convert_like_real): Mark lvalue or rvalue use for identity as
876         rvaledness_matches_p demands.
878 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
880         PR c++/83824
881         * parser.c (attr_chainon): New function.
882         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
883         cp_parser_namespace_definition, cp_parser_init_declarator,
884         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
885         cp_parser_gnu_attributes_opt): Use it.
886         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
887         cp_parser_objc_struct_declaration): Likewise.  Don't reset
888         prefix_attributes if attributes is error_mark_node.
890 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
892         PR c++/78344
893         * decl.c (grokdeclarator): Do not append the error_mark_node
894         due to an erroneous optional attribute-specifier-seq.
896 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
898         PR c++/83897
899         * cp-gimplify.c (cp_maybe_instrument_return): Handle
900         CLEANUP_POINT_EXPR.
902 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
904         PR c++/81054
905         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
906         error_mark_node when we give an error.
907         * decl.c (cp_finish_decl): Use the latter.
909 2018-01-17  Nathan Sidwell  <nathan@acm.org>
911         PR c++/83287
912         * init.c (build_raw_new_expr): Scan list for lookups to keep.
914 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
916         PR c++/83814
917         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
918         the C++ part.  If processing a template, call
919         fold_non_dependent_expr rather than fully folding.
921 2018-01-17  Jason Merrill  <jason@redhat.com>
923         PR c++/81067 - redundant NULL warning.
924         * call.c (convert_like_real): Restore null_node handling.
926 2018-01-17  Jason Merrill  <jason@redhat.com>
928         PR c++/81843 - ICE with variadic member template.
929         PR c++/72801
930         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
931         template args.
933 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
935         PR c++/83799
936         * pt.c (type_dependent_expression_p): Strip any location wrapper
937         before testing tree codes.
938         (selftest::test_type_dependent_expression_p): New function.
939         (selftest::cp_pt_c_tests): Call it.
941 2018-01-17  Nathan Sidwell  <nathan@acm.org>
943         PR c++/83739
944         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
945         this not a final instantiation.
947 2018-01-16  Jason Merrill  <jason@redhat.com>
949         PR c++/83714 - ICE checking return in template.
950         * typeck.c (check_return_expr): Call build_non_dependent_expr.
952 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
954         PR c++/83817
955         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
956         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
957         instead of CALL_FROM_THUNK_P.
959         PR c++/83825
960         * name-lookup.c (member_vec_dedup): Return early if len is 0.
961         (resort_type_member_vec, set_class_bindings,
962         insert_late_enum_def_bindings): Use vec qsort method instead of
963         calling qsort directly.
965 2018-01-15  Martin Sebor  <msebor@redhat.com>
967         PR c++/83588
968         * class.c (find_flexarrays): Make a record of multiple flexible array
969         members.
971 2018-01-12  Jason Merrill  <jason@redhat.com>
973         PR c++/83186 - ICE with static_cast of list-initialized temporary.
974         * typeck.c (build_static_cast): Use build_non_dependent_expr.
976 2018-01-12  Nathan Sidwell  <nathan@acm.org>
978         * cp-tree.h (mark_rvalue_use): Add parm name.
979         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
980         mark_rvalue_use.
981         * call.c (convert_like_real): Fix formatting.
983 2018-01-11  Jason Merrill  <jason@redhat.com>
985         PR c++/82728 - wrong -Wunused-but-set-variable
986         PR c++/82799
987         PR c++/83690
988         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
989         * decl.c (case_conversion): Likewise.
990         * semantics.c (finish_static_assert): Call
991         perform_implicit_conversion_flags.
993 2018-01-11  Nathan Sidwell  <nathan@acm.org>
995         * method.c (enum mangling_flags): Delete long-dead enum.
997 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
999         * parser.c (cp_parser_std_attribute_spec): When
1000         token_pair::require_open / require_close return false simply
1001         return error_mark_node, avoid duplicate cp_parser_error about
1002         expected '(' / ')', respectively.
1004 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1006         PR c++/43486
1007         * call.c (null_ptr_cst_p): Strip location wrappers when
1008         converting from '0' to a pointer type in C++11 onwards.
1009         (conversion_null_warnings): Replace comparison with null_node with
1010         call to null_node_p.
1011         (build_over_call): Likewise.
1012         * cp-gimplify.c (cp_fold): Remove the early bailout when
1013         processing_template_decl.
1014         * cp-lang.c (selftest::run_cp_tests): Call
1015         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1016         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1017         (selftest::run_cp_tests): Move decl to bottom of file.
1018         (null_node_p): New inline function.
1019         (selftest::cp_pt_c_tests): New decl.
1020         (selftest::cp_tree_c_tests): New decl.
1021         * cvt.c (build_expr_type_conversion): Replace comparison with
1022         null_node with call to null_node_p.
1023         * error.c (args_to_string): Likewise.
1024         * except.c (build_throw): Likewise.
1025         * mangle.c (write_expression): Skip location wrapper nodes.
1026         * parser.c (literal_integer_zerop): New function.
1027         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1028         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1029         param of cp_parser_parenthesized_expression_list.  When calling
1030         warn_for_memset, replace integer_zerop calls with
1031         literal_integer_zerop, eliminating the double logical negation
1032         cast to bool.  Eliminate the special-casing for CONST_DECL in
1033         favor of the fold_for_warn within warn_for_memset.
1034         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1035         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1036         maybe_add_location_wrapper on it when wrap_locations_p is true.
1037         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1038         the result for RID_ALIGNOF and RID_SIZEOF.
1039         (cp_parser_builtin_offsetof): Likewise.
1040         * pt.c: Include "selftest.h".
1041         (tsubst_copy): Handle location wrappers.
1042         (tsubst_copy_and_build): Likewise.
1043         (build_non_dependent_expr): Likewise.
1044         (selftest::test_build_non_dependent_expr): New function.
1045         (selftest::cp_pt_c_tests): New function.
1046         * tree.c: Include "selftest.h".
1047         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1048         (selftest::test_lvalue_kind): New function.
1049         (selftest::cp_tree_c_tests): New function.
1050         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1051         (cp_build_binary_op): Replace comparison with null_node with call
1052         to null_node_p.
1053         (build_address): Use location of operand when building address
1054         expression.
1056 2018-01-10  Marek Polacek  <polacek@redhat.com>
1058         PR c++/82541
1059         * call.c (build_conditional_expr_1): Check complain before warning.
1060         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1061         -Wduplicated-branches.
1063 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1065         PR c++/81327
1066         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1067         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1068         args uses and check number of operands too.  Don't strip away any
1069         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1070         Deal with src argument not having pointer type.  Check
1071         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1072         test.
1073         (build_over_call): Call maybe_warn_class_memaccess here on the
1074         original arguments.
1075         (build_cxx_call): Rather than here on converted arguments.
1077 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1079         PR c++/81055
1080         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1081         error_mark_node as second argument.
1083 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1085         PR c++/83734
1086         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1087         in STATEMENT_LIST.  Remove unneeded assert.
1089 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1090             Alan Hayward  <alan.hayward@arm.com>
1091             David Sherwood  <david.sherwood@arm.com>
1093         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1094         VECTOR_CST_NELTS.
1095         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1096         * call.c (build_conditional_expr_1): Likewise.
1097         * decl.c (cp_finish_decomp): Likewise.
1098         * mangle.c (write_type): Likewise.
1099         * typeck.c (structural_comptypes): Likewise.
1100         (cp_build_binary_op): Likewise.
1101         * typeck2.c (process_init_constructor_array): Likewise.
1103 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1105         PR c++/83555
1106         * typeck.c (build_static_cast_1): For static casts to reference types,
1107         call build_base_path with flag_delete_null_pointer_checks as nonnull
1108         instead of always false.  When -fsanitize=null, call
1109         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1110         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1111         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1113 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1115         PR c++/83667
1116         * method.c (make_alias_for): Copy DECL_CONTEXT.
1118 2018-01-03  Marek Polacek  <polacek@redhat.com>
1120         PR c++/83592
1121         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1123 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1125         PR preprocessor/83602
1126         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1127         for builtin macros.
1129         PR c++/83634
1130         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1131         error_mark_node, return error_mark_node.
1133         Update copyright years.
1135 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1137         PR c++/83556
1138         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1139         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1140         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1141         to false and return.
1142         (replace_placeholders): Pass NULL instead of &pset as last argument
1143         to cp_walk_tree.
1145 2018-01-02  Nathan Sidwell  <nathan@acm.org>
1147         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1148         lval var.
1150 Copyright (C) 2018 Free Software Foundation, Inc.
1152 Copying and distribution of this file, with or without modification,
1153 are permitted in any medium without royalty provided the copyright
1154 notice and this notice are preserved.