[C++ PATCH] Deprecate -ffriend-injection
[official-gcc.git] / gcc / cp / ChangeLog
blobee08e689b4ea7e0d812e88d2b33ade0538507ae6
1 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3         Deprecate -ffriend-injection.
4         * decl.c (cxx_init_decl_processing): Emit warning on option.
5         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
6         friend.
8 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
10         PR c++/82468
11         * decl.c (check_special_function_return_type): Reject template
12         template parameter in deduction guide.
14 2018-02-16  Nathan Sidwell  <nathan@acm.org>
16         PR c++/84375
17         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
19 2018-02-15  Jason Merrill  <jason@redhat.com>
21         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
22         * call.c (convert_like_real): Don't use the copy-list-initialization
23         shortcut for ck_base.
25         PR c++/84045 - ICE with typedef and noexcept.
26         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
28         PR c++/84376 - ICE with omitted template arguments.
29         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
31         PR c++/84368 - wrong error with local variable in variadic lambda.
32         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
33         local_specializations.
35 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
37         PR c++/84330
38         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
39         as first argument.
41 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
43         PR c++/84350
44         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
45         init, early return.
47 2018-02-14  Nathan Sidwell  <nathan@acm.org>
49         * decl2.c (mark_vtable_entries): Set input_location to decl's.
50         (c_parse_final_cleanups): Restore input_location after emitting
51         vtables.
53 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
55         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
56         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
57         auto_deduction_context, tree, int): Add defaults.
58         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
59         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
60         tsubst_flags_t argument.
61         * init.c (build_new): Likewise.
63 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
65         PR c++/84364
66         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
67         about return other than *this in assignment operators if
68         retval is type dependent expression.
70 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
72         PR c++/84333
73         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
74         save_expr for the G++ extension.
76 2018-02-13  Jason Merrill  <jason@redhat.com>
78         PR c++/84080 - ICE with return type deduction and specialization.
79         * pt.c (determine_specialization): Check uses_template_parms.
81         Fix more variadic capture issues.
82         * pt.c (find_parameter_packs_r): Also look at explicit captures.
83         (check_for_bare_parameter_packs): Check current_class_type for
84         lambda context.
85         (extract_locals_r): Handle seeing a full instantiation of a pack.
86         (tsubst_pack_expansion): Likewise.  Force lambda capture.
87         * parser.c (cp_parser_lambda_introducer): Don't
88         check_for_bare_parameter_packs.
90         PR c++/84338 - wrong variadic sizeof.
91         * pt.c (argument_pack_select_arg): Like the macro, but look through
92         a pack expansion.
93         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
94         (extract_fnparm_pack): Do make_pack_expansion.
95         (extract_locals_r): Do strip a pack expansion.
96         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
98 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
100         PR c++/84341
101         * parser.c (cp_parser_binary_expression): Use build_min instead of
102         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
104 2018-02-12  Nathan Sidwell  <nathan@acm.org>
106         PR c++/84263
107         * parser.c (cp_parser_decltype): Push and pop
108         deferring_access_checks.  Reorganize to avoid goto.
110 2018-02-12  Richard Biener  <rguenther@suse.de>
112         PR c++/84281
113         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
114         uniform constructors and delay allocating them fully.
116 2018-02-09  Jason Merrill  <jason@redhat.com>
118         PR c++/84036 - ICE with variadic capture.
119         Handle variadic capture proxies more like non-variadic.
120         * lambda.c (build_capture_proxy): Remove workaround.
121         * pt.c (find_parameter_packs_r): The proxy is a pack.
122         (instantiate_class_template_1): Remove dead lambda code.
123         (extract_fnparm_pack): Don't make_pack_expansion.
124         (extract_locals_r): Don't strip a pack expansion.
125         (tsubst_pack_expansion): Handle proxy packs.  Use
126         PACK_EXPANSION_EXTRA_ARGS less.
127         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
128         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
129         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
130         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
131         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
133 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
135         PR sanitizer/83987
136         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
138 2018-02-09  Jason Merrill  <jason@redhat.com>
140         PR c++/81917 - ICE with void_t and partial specialization.
141         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
142         calling most_specialized_partial_spec.
144 2018-02-09  Nathan Sidwell  <nathan@acm.org>
146         PR c/84293
147         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
148         Pass expr location to strict_aliasing_warning.
150 2018-02-09  Jason Merrill  <jason@redhat.com>
152         PR c++/84296 - ICE with qualified-id in template.
153         PR c++/83714
154         * pt.c (unknown_base_ref_p): New.
155         (instantiation_dependent_scope_ref_p): Use it instead of
156         any_dependent_bases_p.
158 2018-02-09  Marek Polacek  <polacek@redhat.com>
159             Jakub Jelinek  <jakub@redhat.com>
161         PR c++/83659
162         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
163         fold_indirect_ref_1, including poly_*int64.  Verify first that
164         tree_fits_poly_int64_p (op01).  Formatting fixes.
166 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
168         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
169         * lambda.c (build_capture_proxy): Likewise.
170         * search.c (field_access_p): Likewise.
171         * semantics.c (omp_clause_decl, omp_privatize_field,
172         finish_omp_clauses): Likewise.
174 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
176         PR c++/83806
177         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
178         case of nullptr too.
180 2018-02-08  Nathan Sidwell  <nathan@acm.org>
182         * class.c (finish_struct): Fix std:initializer_list diagnostic
183         formatting.
185 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
187         PR c++/83204
188         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
190 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
192         PR c++/84082
193         * parser.c (cp_parser_dot_deref_incomplete): New function.
194         (cp_parser_postfix_dot_deref_expression): Use it.
196 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
198         PR c++/81610
199         PR c++/80567
200         * name-lookup.c (suggest_rid_p): New function.
201         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
202         suggest_rid_p.
204 2018-02-07  Jason Merrill  <jason@redhat.com>
206         PR c++/84182 - ICE with captured lambda
207         PR c++/84181
208         * pt.c (extract_locals_r, extract_local_specs): New.
209         (tsubst_pack_expansion): Use them.
211 2018-02-07  Martin Liska  <mliska@suse.cz>
213         PR c++/84059.
214         * class.c (add_method): Append argument value.
215         * cp-tree.h (maybe_version_functions): Add new argument.
216         * decl.c (decls_match): Call it if a declaration does not
217         have DECL_FUNCTION_VERSIONED.
218         (maybe_version_functions): record argument is added.
220 2018-02-05  Marek Polacek  <polacek@redhat.com>
222         * class.c: Remove unused global variables.
223         (build_primary_vtable): Don't gather statistics.
224         (print_class_statistics): Remove.
225         * cp-tree.h (print_class_statistics): Remove.
226         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
228 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
230         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
231         * constexpr.c (cx_check_missing_mem_inits): Likewise.
232         * decl.c (next_initializable_field, find_decomp_class_base,
233         cp_finish_decomp): Likewise.
234         * typeck2.c (process_init_constructor_record): Likewise.
236 2018-02-02  Jason Merrill  <jason@redhat.com>
238         PR c++/84181 - ICE with lambda parm in template argument.
239         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
241 2018-02-01  Jason Merrill  <jason@redhat.com>
243         PR c++/84160 - ICE with nested variadic capture.
244         * lambda.c (is_capture_proxy_with_ref): New.
245         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
246         COMPONENT_REF.
247         * expr.c (mark_use): Use is_capture_proxy_with_ref.
248         * constexpr.c (potential_constant_expression_1): Likewise.
249         * semantics.c (process_outer_var_ref): Likewise.
251 2018-02-01  Marek Polacek  <polacek@redhat.com>
253         PR c++/84125
254         * typeck.c (build_address): Relax the assert when
255         processing_template_decl.
257 2018-02-01  Jason Merrill  <jason@redhat.com>
259         PR c++/84126 - ICE with variadic generic lambda
260         PR c++/84036
261         PR c++/82249
262         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
263         PACK_EXPANSION_EXTRA_ARGS.
265 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
267         PR c++/83796
268         * call.c (convert_like_real): If w're initializing from {} explicitly
269         call abstract_virtuals_error_sfinae.
271 2018-01-31  Jason Merrill  <jason@redhat.com>
272             Jakub Jelinek  <jakub@redhat.com>
274         PR c++/83993
275         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
276         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
277         on ADDR_EXPR.
279 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
281         PR c++/83993
282         * constexpr.c (diag_array_subscript): Emit different diagnostics
283         if TYPE_DOMAIN (arraytype) is NULL.
284         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
285         with NULL TYPE_DOMAIN use size_zero_node as nelts.
287 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
289         PR c++/84092
290         * semantics.c (finish_qualified_id_expr): When handling an
291         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
293 2018-01-31  Marek Polacek  <polacek@redhat.com>
295         PR c++/84138
296         * cp-gimplify.c (cp_fold): Check if X is an error node before
297         calling useless_type_conversion_p.
299 2018-01-30  Jason Merrill  <jason@redhat.com>
301         PR c++/84091 - ICE with local class in lambda in template.
302         * decl2.c (determine_visibility): Look for outer containing template
303         instantiation.
305         PR c++/84098 - ICE with lambda in template NSDMI.
306         * pt.c (instantiate_class_template_1): Ignore more lambdas.
308 2018-01-29  Jason Merrill  <jason@redhat.com>
310         PR c++/68810 - wrong location for reinterpret_cast error.
311         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
312         !dofold.
314 2018-01-29  Marek Polacek  <polacek@redhat.com>
316         PR c++/83996
317         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
318         => fooarray[1] in offset_int.
320 2018-01-29  Jason Merrill  <jason@redhat.com>
322         PR c++/83942 - wrong unused warning with static_cast.
323         * cvt.c (ocp_convert): Call mark_rvalue_use.
325 2018-01-26  Jason Merrill  <jason@redhat.com>
327         PR c++/83956 - wrong dtor error with anonymous union
328         * method.c (walk_field_subobs): Variant members only affect
329         deletedness.
330         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
332         PR c++/84036 - ICE with variadic capture.
333         PR c++/82249
334         * pt.c (tsubst_pack_expansion): When optimizing a simple
335         substitution, pull a single pack expansion out of its pack.
337         PR c++/82514 - ICE with local class in generic lambda.
338         * pt.c (regenerated_lambda_fn_p): Remove.
339         (enclosing_instantiation_of): Don't use it.
340         (tsubst_function_decl): Call enclosing_instantiation_of.
342         * pt.c (lookup_template_class_1): Add sanity check.
343         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
345 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
347         PR c++/84031
348         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
349         recursive calls that return ret.
350         (cp_finish_decomp): Ignore unnamed bitfields.
352 2018-01-23  Jason Merrill  <jason@redhat.com>
354         PR c++/82249 - wrong mismatched pack length error.
355         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
356         unsubstituted function parameter pack.
358 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
360         PR c++/83921
361         * decl.c (check_for_uninitialized_const_var): Not static; add
362         bool and tsubst_flags_t parameters; adjust to be used both in
363         constexpr context and not.
364         * constexpr.c (potential_constant_expression_1): Use the above.
365         * cp-tree.h (check_for_uninitialized_const_var): Declare.
367 2018-01-23  Jason Merrill  <jason@redhat.com>
369         PR c++/83947 - ICE with auto declarations.
370         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
371         * decl.c (undeduced_auto_decl): Limit to vars and fns.
373 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
375         PR c++/83974
376         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
377         for pointer to member function types.
379 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
381         PR sanitizer/83987
382         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
383         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
385 2018-01-23  Nathan Sidwell  <nathan@acm.org>
387         PR c++/83988
388         * pt.c (tsubst_baselink): Remove optype assert.
389         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
391 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
393         PR c++/83958
394         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
395         refers to incomplete type.
397 2018-01-23  Nathan Sidwell  <nathan@acm.org>
399         Deprecate ARM-era for scope handling
400         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
401         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
402         cleared.
403         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
404         cleanup handling.
405         * semantics.c (begin_for_scope): Flag_new_for_scope is
406         boolean-like.
407         (finish_for_stmt, begin_range_for_stmt): Likewise.
409 2018-01-22  Jason Merrill  <jason@redhat.com>
411         PR c++/83720
412         * decl2.c (determine_visibility): Fix template_decl handling
413         instead of blocking it.
415         PR c++/83720 - ICE with lambda and LTO.
416         * decl2.c (determine_visibility): Clear template_decl for
417         function-scope decls.  Propagate anonymous linkage from containing
418         function.
420 2018-01-22  Marek Polacek  <polacek@redhat.com>
422         PR c++/81933
423         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
424         split out anything.
426 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
428         PR c++/83895
429         * decl.c (grokdeclarator): Don't diagnose extra parens
430         on typedefs.
432 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
434         PR c++/81167
435         * call.c (joust): Use TREE_TYPE (source) if source is
436         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
438         PR c++/83919
439         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
440         for direct enum init.
441         * decl.c (reshape_init): Likewise.
443 2018-01-19  Marek Polacek  <polacek@redhat.com>
445         * constexpr.c (fold_simple): Simplify.
447 2018-01-18  Jason Merrill  <jason@redhat.com>
449         PR c++/83714
450         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
451         * pt.c (instantiation_dependent_scope_ref_p): True if
452         any_dependent_bases_p.
454 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
456         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
457         vs DECL_NONTRIVIALLY_INITIALIZED_P).
459 2018-01-18  Jason Merrill  <jason@redhat.com>
461         PR c++/82461 - constexpr list-initialized member
462         * constexpr.c (potential_constant_expression_1): Check
463         TARGET_EXPR_DIRECT_INIT_P.
465 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
467         PR c++/81013
468         * decl.c (xref_basetypes): Early return upon error about derived
469         union.
471 2018-01-18  Nathan Sidwell  <nathan@acm.org>
473         PR c++/83160
474         * cp-tree.h (mark_use): Declare.
475         * expr.c (mark_use): Make extern.
476         * call.c (direct_reference_binding): Set inner conv's
477         rvaluedness_matches_p, if it is an identity.
478         (convert_like_real): Mark lvalue or rvalue use for identity as
479         rvaledness_matches_p demands.
481 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
483         PR c++/83824
484         * parser.c (attr_chainon): New function.
485         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
486         cp_parser_namespace_definition, cp_parser_init_declarator,
487         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
488         cp_parser_gnu_attributes_opt): Use it.
489         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
490         cp_parser_objc_struct_declaration): Likewise.  Don't reset
491         prefix_attributes if attributes is error_mark_node.
493 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
495         PR c++/78344
496         * decl.c (grokdeclarator): Do not append the error_mark_node
497         due to an erroneous optional attribute-specifier-seq.
499 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
501         PR c++/83897
502         * cp-gimplify.c (cp_maybe_instrument_return): Handle
503         CLEANUP_POINT_EXPR.
505 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
507         PR c++/81054
508         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
509         error_mark_node when we give an error.
510         * decl.c (cp_finish_decl): Use the latter.
512 2018-01-17  Nathan Sidwell  <nathan@acm.org>
514         PR c++/83287
515         * init.c (build_raw_new_expr): Scan list for lookups to keep.
517 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
519         PR c++/83814
520         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
521         the C++ part.  If processing a template, call
522         fold_non_dependent_expr rather than fully folding.
524 2018-01-17  Jason Merrill  <jason@redhat.com>
526         PR c++/81067 - redundant NULL warning.
527         * call.c (convert_like_real): Restore null_node handling.
529 2018-01-17  Jason Merrill  <jason@redhat.com>
531         PR c++/81843 - ICE with variadic member template.
532         PR c++/72801
533         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
534         template args.
536 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
538         PR c++/83799
539         * pt.c (type_dependent_expression_p): Strip any location wrapper
540         before testing tree codes.
541         (selftest::test_type_dependent_expression_p): New function.
542         (selftest::cp_pt_c_tests): Call it.
544 2018-01-17  Nathan Sidwell  <nathan@acm.org>
546         PR c++/83739
547         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
548         this not a final instantiation.
550 2018-01-16  Jason Merrill  <jason@redhat.com>
552         PR c++/83714 - ICE checking return in template.
553         * typeck.c (check_return_expr): Call build_non_dependent_expr.
555 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
557         PR c++/83817
558         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
559         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
560         instead of CALL_FROM_THUNK_P.
562         PR c++/83825
563         * name-lookup.c (member_vec_dedup): Return early if len is 0.
564         (resort_type_member_vec, set_class_bindings,
565         insert_late_enum_def_bindings): Use vec qsort method instead of
566         calling qsort directly.
568 2018-01-15  Martin Sebor  <msebor@redhat.com>
570         PR c++/83588
571         * class.c (find_flexarrays): Make a record of multiple flexible array
572         members.
574 2018-01-12  Jason Merrill  <jason@redhat.com>
576         PR c++/83186 - ICE with static_cast of list-initialized temporary.
577         * typeck.c (build_static_cast): Use build_non_dependent_expr.
579 2018-01-12  Nathan Sidwell  <nathan@acm.org>
581         * cp-tree.h (mark_rvalue_use): Add parm name.
582         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
583         mark_rvalue_use.
584         * call.c (convert_like_real): Fix formatting.
586 2018-01-11  Jason Merrill  <jason@redhat.com>
588         PR c++/82728 - wrong -Wunused-but-set-variable
589         PR c++/82799
590         PR c++/83690
591         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
592         * decl.c (case_conversion): Likewise.
593         * semantics.c (finish_static_assert): Call
594         perform_implicit_conversion_flags.
596 2018-01-11  Nathan Sidwell  <nathan@acm.org>
598         * method.c (enum mangling_flags): Delete long-dead enum.
600 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
602         * parser.c (cp_parser_std_attribute_spec): When
603         token_pair::require_open / require_close return false simply
604         return error_mark_node, avoid duplicate cp_parser_error about
605         expected '(' / ')', respectively.
607 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
609         PR c++/43486
610         * call.c (null_ptr_cst_p): Strip location wrappers when
611         converting from '0' to a pointer type in C++11 onwards.
612         (conversion_null_warnings): Replace comparison with null_node with
613         call to null_node_p.
614         (build_over_call): Likewise.
615         * cp-gimplify.c (cp_fold): Remove the early bailout when
616         processing_template_decl.
617         * cp-lang.c (selftest::run_cp_tests): Call
618         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
619         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
620         (selftest::run_cp_tests): Move decl to bottom of file.
621         (null_node_p): New inline function.
622         (selftest::cp_pt_c_tests): New decl.
623         (selftest::cp_tree_c_tests): New decl.
624         * cvt.c (build_expr_type_conversion): Replace comparison with
625         null_node with call to null_node_p.
626         * error.c (args_to_string): Likewise.
627         * except.c (build_throw): Likewise.
628         * mangle.c (write_expression): Skip location wrapper nodes.
629         * parser.c (literal_integer_zerop): New function.
630         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
631         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
632         param of cp_parser_parenthesized_expression_list.  When calling
633         warn_for_memset, replace integer_zerop calls with
634         literal_integer_zerop, eliminating the double logical negation
635         cast to bool.  Eliminate the special-casing for CONST_DECL in
636         favor of the fold_for_warn within warn_for_memset.
637         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
638         param, defaulting to false.  Convert "expr" to a cp_expr, and call
639         maybe_add_location_wrapper on it when wrap_locations_p is true.
640         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
641         the result for RID_ALIGNOF and RID_SIZEOF.
642         (cp_parser_builtin_offsetof): Likewise.
643         * pt.c: Include "selftest.h".
644         (tsubst_copy): Handle location wrappers.
645         (tsubst_copy_and_build): Likewise.
646         (build_non_dependent_expr): Likewise.
647         (selftest::test_build_non_dependent_expr): New function.
648         (selftest::cp_pt_c_tests): New function.
649         * tree.c: Include "selftest.h".
650         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
651         (selftest::test_lvalue_kind): New function.
652         (selftest::cp_tree_c_tests): New function.
653         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
654         (cp_build_binary_op): Replace comparison with null_node with call
655         to null_node_p.
656         (build_address): Use location of operand when building address
657         expression.
659 2018-01-10  Marek Polacek  <polacek@redhat.com>
661         PR c++/82541
662         * call.c (build_conditional_expr_1): Check complain before warning.
663         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
664         -Wduplicated-branches.
666 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
668         PR c++/81327
669         * call.c (maybe_warn_class_memaccess): Add forward declaration.
670         Change last argument from tree * to const vec<tree, va_gc> *, adjust
671         args uses and check number of operands too.  Don't strip away any
672         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
673         Deal with src argument not having pointer type.  Check
674         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
675         test.
676         (build_over_call): Call maybe_warn_class_memaccess here on the
677         original arguments.
678         (build_cxx_call): Rather than here on converted arguments.
680 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
682         PR c++/81055
683         * init.c (build_vec_init): Avoid building an INIT_EXPR with
684         error_mark_node as second argument.
686 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
688         PR c++/83734
689         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
690         in STATEMENT_LIST.  Remove unneeded assert.
692 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
693             Alan Hayward  <alan.hayward@arm.com>
694             David Sherwood  <david.sherwood@arm.com>
696         * constexpr.c (cxx_eval_array_reference): Handle polynomial
697         VECTOR_CST_NELTS.
698         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
699         * call.c (build_conditional_expr_1): Likewise.
700         * decl.c (cp_finish_decomp): Likewise.
701         * mangle.c (write_type): Likewise.
702         * typeck.c (structural_comptypes): Likewise.
703         (cp_build_binary_op): Likewise.
704         * typeck2.c (process_init_constructor_array): Likewise.
706 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
708         PR c++/83555
709         * typeck.c (build_static_cast_1): For static casts to reference types,
710         call build_base_path with flag_delete_null_pointer_checks as nonnull
711         instead of always false.  When -fsanitize=null, call
712         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
713         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
714         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
716 2018-01-03  Nathan Sidwell  <nathan@acm.org>
718         PR c++/83667
719         * method.c (make_alias_for): Copy DECL_CONTEXT.
721 2018-01-03  Marek Polacek  <polacek@redhat.com>
723         PR c++/83592
724         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
726 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
728         PR preprocessor/83602
729         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
730         for builtin macros.
732         PR c++/83634
733         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
734         error_mark_node, return error_mark_node.
736         Update copyright years.
738 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
740         PR c++/83556
741         * tree.c (replace_placeholders_r): Pass NULL as last argument to
742         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
743         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
744         to false and return.
745         (replace_placeholders): Pass NULL instead of &pset as last argument
746         to cp_walk_tree.
748 2018-01-02  Nathan Sidwell  <nathan@acm.org>
750         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
751         lval var.
753 Copyright (C) 2018 Free Software Foundation, Inc.
755 Copying and distribution of this file, with or without modification,
756 are permitted in any medium without royalty provided the copyright
757 notice and this notice are preserved.