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