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