PR c++/81853 - using-directive and constexpr.
[official-gcc.git] / gcc / cp / ChangeLog
blob07788c0d516325875abb8dc1fa52da3e8927faac
1 2018-02-16  Jason Merrill  <jason@redhat.com>
3         PR c++/81853 - using-directive and constexpr.
4         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
6         PR c++/84420 - ICE with structured binding in lambda.
7         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
9         PR c++/83835 - C++17 error with constructor ctors.
10         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
12         PR c++/82664 - ICE with reference to function template parm.
13         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
14         NOP_EXPRs.
16         PR c++/82764 - C++17 ICE with empty base
17         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
19 2018-02-16  Jason Merrill  <jason@redhat.com>
21         PR c++/84421 - type-dependent if constexpr
22         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
24 2018-02-16  Nathan Sidwell  <nathan@acm.org>
26         Deprecate -ffriend-injection.
27         * decl.c (cxx_init_decl_processing): Emit warning on option.
28         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
29         friend.
31 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
33         PR c++/82468
34         * decl.c (check_special_function_return_type): Reject template
35         template parameter in deduction guide.
37 2018-02-16  Nathan Sidwell  <nathan@acm.org>
39         PR c++/84375
40         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
42 2018-02-15  Jason Merrill  <jason@redhat.com>
44         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
45         * call.c (convert_like_real): Don't use the copy-list-initialization
46         shortcut for ck_base.
48         PR c++/84045 - ICE with typedef and noexcept.
49         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
51         PR c++/84376 - ICE with omitted template arguments.
52         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
54         PR c++/84368 - wrong error with local variable in variadic lambda.
55         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
56         local_specializations.
58 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
60         PR c++/84330
61         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
62         as first argument.
64 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
66         PR c++/84350
67         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
68         init, early return.
70 2018-02-14  Nathan Sidwell  <nathan@acm.org>
72         * decl2.c (mark_vtable_entries): Set input_location to decl's.
73         (c_parse_final_cleanups): Restore input_location after emitting
74         vtables.
76 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
78         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
79         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
80         auto_deduction_context, tree, int): Add defaults.
81         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
82         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
83         tsubst_flags_t argument.
84         * init.c (build_new): Likewise.
86 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
88         PR c++/84364
89         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
90         about return other than *this in assignment operators if
91         retval is type dependent expression.
93 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
95         PR c++/84333
96         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
97         save_expr for the G++ extension.
99 2018-02-13  Jason Merrill  <jason@redhat.com>
101         PR c++/84080 - ICE with return type deduction and specialization.
102         * pt.c (determine_specialization): Check uses_template_parms.
104         Fix more variadic capture issues.
105         * pt.c (find_parameter_packs_r): Also look at explicit captures.
106         (check_for_bare_parameter_packs): Check current_class_type for
107         lambda context.
108         (extract_locals_r): Handle seeing a full instantiation of a pack.
109         (tsubst_pack_expansion): Likewise.  Force lambda capture.
110         * parser.c (cp_parser_lambda_introducer): Don't
111         check_for_bare_parameter_packs.
113         PR c++/84338 - wrong variadic sizeof.
114         * pt.c (argument_pack_select_arg): Like the macro, but look through
115         a pack expansion.
116         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
117         (extract_fnparm_pack): Do make_pack_expansion.
118         (extract_locals_r): Do strip a pack expansion.
119         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
121 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
123         PR c++/84341
124         * parser.c (cp_parser_binary_expression): Use build_min instead of
125         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
127 2018-02-12  Nathan Sidwell  <nathan@acm.org>
129         PR c++/84263
130         * parser.c (cp_parser_decltype): Push and pop
131         deferring_access_checks.  Reorganize to avoid goto.
133 2018-02-12  Richard Biener  <rguenther@suse.de>
135         PR c++/84281
136         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
137         uniform constructors and delay allocating them fully.
139 2018-02-09  Jason Merrill  <jason@redhat.com>
141         PR c++/84036 - ICE with variadic capture.
142         Handle variadic capture proxies more like non-variadic.
143         * lambda.c (build_capture_proxy): Remove workaround.
144         * pt.c (find_parameter_packs_r): The proxy is a pack.
145         (instantiate_class_template_1): Remove dead lambda code.
146         (extract_fnparm_pack): Don't make_pack_expansion.
147         (extract_locals_r): Don't strip a pack expansion.
148         (tsubst_pack_expansion): Handle proxy packs.  Use
149         PACK_EXPANSION_EXTRA_ARGS less.
150         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
151         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
152         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
153         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
154         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
156 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
158         PR sanitizer/83987
159         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
161 2018-02-09  Jason Merrill  <jason@redhat.com>
163         PR c++/81917 - ICE with void_t and partial specialization.
164         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
165         calling most_specialized_partial_spec.
167 2018-02-09  Nathan Sidwell  <nathan@acm.org>
169         PR c/84293
170         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
171         Pass expr location to strict_aliasing_warning.
173 2018-02-09  Jason Merrill  <jason@redhat.com>
175         PR c++/84296 - ICE with qualified-id in template.
176         PR c++/83714
177         * pt.c (unknown_base_ref_p): New.
178         (instantiation_dependent_scope_ref_p): Use it instead of
179         any_dependent_bases_p.
181 2018-02-09  Marek Polacek  <polacek@redhat.com>
182             Jakub Jelinek  <jakub@redhat.com>
184         PR c++/83659
185         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
186         fold_indirect_ref_1, including poly_*int64.  Verify first that
187         tree_fits_poly_int64_p (op01).  Formatting fixes.
189 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
191         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
192         * lambda.c (build_capture_proxy): Likewise.
193         * search.c (field_access_p): Likewise.
194         * semantics.c (omp_clause_decl, omp_privatize_field,
195         finish_omp_clauses): Likewise.
197 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
199         PR c++/83806
200         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
201         case of nullptr too.
203 2018-02-08  Nathan Sidwell  <nathan@acm.org>
205         * class.c (finish_struct): Fix std:initializer_list diagnostic
206         formatting.
208 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
210         PR c++/83204
211         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
213 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
215         PR c++/84082
216         * parser.c (cp_parser_dot_deref_incomplete): New function.
217         (cp_parser_postfix_dot_deref_expression): Use it.
219 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
221         PR c++/81610
222         PR c++/80567
223         * name-lookup.c (suggest_rid_p): New function.
224         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
225         suggest_rid_p.
227 2018-02-07  Jason Merrill  <jason@redhat.com>
229         PR c++/84182 - ICE with captured lambda
230         PR c++/84181
231         * pt.c (extract_locals_r, extract_local_specs): New.
232         (tsubst_pack_expansion): Use them.
234 2018-02-07  Martin Liska  <mliska@suse.cz>
236         PR c++/84059.
237         * class.c (add_method): Append argument value.
238         * cp-tree.h (maybe_version_functions): Add new argument.
239         * decl.c (decls_match): Call it if a declaration does not
240         have DECL_FUNCTION_VERSIONED.
241         (maybe_version_functions): record argument is added.
243 2018-02-05  Marek Polacek  <polacek@redhat.com>
245         * class.c: Remove unused global variables.
246         (build_primary_vtable): Don't gather statistics.
247         (print_class_statistics): Remove.
248         * cp-tree.h (print_class_statistics): Remove.
249         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
251 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
253         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
254         * constexpr.c (cx_check_missing_mem_inits): Likewise.
255         * decl.c (next_initializable_field, find_decomp_class_base,
256         cp_finish_decomp): Likewise.
257         * typeck2.c (process_init_constructor_record): Likewise.
259 2018-02-02  Jason Merrill  <jason@redhat.com>
261         PR c++/84181 - ICE with lambda parm in template argument.
262         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
264 2018-02-01  Jason Merrill  <jason@redhat.com>
266         PR c++/84160 - ICE with nested variadic capture.
267         * lambda.c (is_capture_proxy_with_ref): New.
268         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
269         COMPONENT_REF.
270         * expr.c (mark_use): Use is_capture_proxy_with_ref.
271         * constexpr.c (potential_constant_expression_1): Likewise.
272         * semantics.c (process_outer_var_ref): Likewise.
274 2018-02-01  Marek Polacek  <polacek@redhat.com>
276         PR c++/84125
277         * typeck.c (build_address): Relax the assert when
278         processing_template_decl.
280 2018-02-01  Jason Merrill  <jason@redhat.com>
282         PR c++/84126 - ICE with variadic generic lambda
283         PR c++/84036
284         PR c++/82249
285         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
286         PACK_EXPANSION_EXTRA_ARGS.
288 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
290         PR c++/83796
291         * call.c (convert_like_real): If w're initializing from {} explicitly
292         call abstract_virtuals_error_sfinae.
294 2018-01-31  Jason Merrill  <jason@redhat.com>
295             Jakub Jelinek  <jakub@redhat.com>
297         PR c++/83993
298         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
299         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
300         on ADDR_EXPR.
302 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
304         PR c++/83993
305         * constexpr.c (diag_array_subscript): Emit different diagnostics
306         if TYPE_DOMAIN (arraytype) is NULL.
307         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
308         with NULL TYPE_DOMAIN use size_zero_node as nelts.
310 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
312         PR c++/84092
313         * semantics.c (finish_qualified_id_expr): When handling an
314         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
316 2018-01-31  Marek Polacek  <polacek@redhat.com>
318         PR c++/84138
319         * cp-gimplify.c (cp_fold): Check if X is an error node before
320         calling useless_type_conversion_p.
322 2018-01-30  Jason Merrill  <jason@redhat.com>
324         PR c++/84091 - ICE with local class in lambda in template.
325         * decl2.c (determine_visibility): Look for outer containing template
326         instantiation.
328         PR c++/84098 - ICE with lambda in template NSDMI.
329         * pt.c (instantiate_class_template_1): Ignore more lambdas.
331 2018-01-29  Jason Merrill  <jason@redhat.com>
333         PR c++/68810 - wrong location for reinterpret_cast error.
334         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
335         !dofold.
337 2018-01-29  Marek Polacek  <polacek@redhat.com>
339         PR c++/83996
340         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
341         => fooarray[1] in offset_int.
343 2018-01-29  Jason Merrill  <jason@redhat.com>
345         PR c++/83942 - wrong unused warning with static_cast.
346         * cvt.c (ocp_convert): Call mark_rvalue_use.
348 2018-01-26  Jason Merrill  <jason@redhat.com>
350         PR c++/83956 - wrong dtor error with anonymous union
351         * method.c (walk_field_subobs): Variant members only affect
352         deletedness.
353         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
355         PR c++/84036 - ICE with variadic capture.
356         PR c++/82249
357         * pt.c (tsubst_pack_expansion): When optimizing a simple
358         substitution, pull a single pack expansion out of its pack.
360         PR c++/82514 - ICE with local class in generic lambda.
361         * pt.c (regenerated_lambda_fn_p): Remove.
362         (enclosing_instantiation_of): Don't use it.
363         (tsubst_function_decl): Call enclosing_instantiation_of.
365         * pt.c (lookup_template_class_1): Add sanity check.
366         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
368 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
370         PR c++/84031
371         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
372         recursive calls that return ret.
373         (cp_finish_decomp): Ignore unnamed bitfields.
375 2018-01-23  Jason Merrill  <jason@redhat.com>
377         PR c++/82249 - wrong mismatched pack length error.
378         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
379         unsubstituted function parameter pack.
381 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
383         PR c++/83921
384         * decl.c (check_for_uninitialized_const_var): Not static; add
385         bool and tsubst_flags_t parameters; adjust to be used both in
386         constexpr context and not.
387         * constexpr.c (potential_constant_expression_1): Use the above.
388         * cp-tree.h (check_for_uninitialized_const_var): Declare.
390 2018-01-23  Jason Merrill  <jason@redhat.com>
392         PR c++/83947 - ICE with auto declarations.
393         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
394         * decl.c (undeduced_auto_decl): Limit to vars and fns.
396 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
398         PR c++/83974
399         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
400         for pointer to member function types.
402 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
404         PR sanitizer/83987
405         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
406         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
408 2018-01-23  Nathan Sidwell  <nathan@acm.org>
410         PR c++/83988
411         * pt.c (tsubst_baselink): Remove optype assert.
412         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
414 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
416         PR c++/83958
417         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
418         refers to incomplete type.
420 2018-01-23  Nathan Sidwell  <nathan@acm.org>
422         Deprecate ARM-era for scope handling
423         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
424         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
425         cleared.
426         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
427         cleanup handling.
428         * semantics.c (begin_for_scope): Flag_new_for_scope is
429         boolean-like.
430         (finish_for_stmt, begin_range_for_stmt): Likewise.
432 2018-01-22  Jason Merrill  <jason@redhat.com>
434         PR c++/83720
435         * decl2.c (determine_visibility): Fix template_decl handling
436         instead of blocking it.
438         PR c++/83720 - ICE with lambda and LTO.
439         * decl2.c (determine_visibility): Clear template_decl for
440         function-scope decls.  Propagate anonymous linkage from containing
441         function.
443 2018-01-22  Marek Polacek  <polacek@redhat.com>
445         PR c++/81933
446         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
447         split out anything.
449 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
451         PR c++/83895
452         * decl.c (grokdeclarator): Don't diagnose extra parens
453         on typedefs.
455 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
457         PR c++/81167
458         * call.c (joust): Use TREE_TYPE (source) if source is
459         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
461         PR c++/83919
462         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
463         for direct enum init.
464         * decl.c (reshape_init): Likewise.
466 2018-01-19  Marek Polacek  <polacek@redhat.com>
468         * constexpr.c (fold_simple): Simplify.
470 2018-01-18  Jason Merrill  <jason@redhat.com>
472         PR c++/83714
473         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
474         * pt.c (instantiation_dependent_scope_ref_p): True if
475         any_dependent_bases_p.
477 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
479         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
480         vs DECL_NONTRIVIALLY_INITIALIZED_P).
482 2018-01-18  Jason Merrill  <jason@redhat.com>
484         PR c++/82461 - constexpr list-initialized member
485         * constexpr.c (potential_constant_expression_1): Check
486         TARGET_EXPR_DIRECT_INIT_P.
488 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
490         PR c++/81013
491         * decl.c (xref_basetypes): Early return upon error about derived
492         union.
494 2018-01-18  Nathan Sidwell  <nathan@acm.org>
496         PR c++/83160
497         * cp-tree.h (mark_use): Declare.
498         * expr.c (mark_use): Make extern.
499         * call.c (direct_reference_binding): Set inner conv's
500         rvaluedness_matches_p, if it is an identity.
501         (convert_like_real): Mark lvalue or rvalue use for identity as
502         rvaledness_matches_p demands.
504 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
506         PR c++/83824
507         * parser.c (attr_chainon): New function.
508         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
509         cp_parser_namespace_definition, cp_parser_init_declarator,
510         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
511         cp_parser_gnu_attributes_opt): Use it.
512         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
513         cp_parser_objc_struct_declaration): Likewise.  Don't reset
514         prefix_attributes if attributes is error_mark_node.
516 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
518         PR c++/78344
519         * decl.c (grokdeclarator): Do not append the error_mark_node
520         due to an erroneous optional attribute-specifier-seq.
522 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
524         PR c++/83897
525         * cp-gimplify.c (cp_maybe_instrument_return): Handle
526         CLEANUP_POINT_EXPR.
528 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
530         PR c++/81054
531         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
532         error_mark_node when we give an error.
533         * decl.c (cp_finish_decl): Use the latter.
535 2018-01-17  Nathan Sidwell  <nathan@acm.org>
537         PR c++/83287
538         * init.c (build_raw_new_expr): Scan list for lookups to keep.
540 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
542         PR c++/83814
543         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
544         the C++ part.  If processing a template, call
545         fold_non_dependent_expr rather than fully folding.
547 2018-01-17  Jason Merrill  <jason@redhat.com>
549         PR c++/81067 - redundant NULL warning.
550         * call.c (convert_like_real): Restore null_node handling.
552 2018-01-17  Jason Merrill  <jason@redhat.com>
554         PR c++/81843 - ICE with variadic member template.
555         PR c++/72801
556         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
557         template args.
559 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
561         PR c++/83799
562         * pt.c (type_dependent_expression_p): Strip any location wrapper
563         before testing tree codes.
564         (selftest::test_type_dependent_expression_p): New function.
565         (selftest::cp_pt_c_tests): Call it.
567 2018-01-17  Nathan Sidwell  <nathan@acm.org>
569         PR c++/83739
570         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
571         this not a final instantiation.
573 2018-01-16  Jason Merrill  <jason@redhat.com>
575         PR c++/83714 - ICE checking return in template.
576         * typeck.c (check_return_expr): Call build_non_dependent_expr.
578 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
580         PR c++/83817
581         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
582         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
583         instead of CALL_FROM_THUNK_P.
585         PR c++/83825
586         * name-lookup.c (member_vec_dedup): Return early if len is 0.
587         (resort_type_member_vec, set_class_bindings,
588         insert_late_enum_def_bindings): Use vec qsort method instead of
589         calling qsort directly.
591 2018-01-15  Martin Sebor  <msebor@redhat.com>
593         PR c++/83588
594         * class.c (find_flexarrays): Make a record of multiple flexible array
595         members.
597 2018-01-12  Jason Merrill  <jason@redhat.com>
599         PR c++/83186 - ICE with static_cast of list-initialized temporary.
600         * typeck.c (build_static_cast): Use build_non_dependent_expr.
602 2018-01-12  Nathan Sidwell  <nathan@acm.org>
604         * cp-tree.h (mark_rvalue_use): Add parm name.
605         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
606         mark_rvalue_use.
607         * call.c (convert_like_real): Fix formatting.
609 2018-01-11  Jason Merrill  <jason@redhat.com>
611         PR c++/82728 - wrong -Wunused-but-set-variable
612         PR c++/82799
613         PR c++/83690
614         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
615         * decl.c (case_conversion): Likewise.
616         * semantics.c (finish_static_assert): Call
617         perform_implicit_conversion_flags.
619 2018-01-11  Nathan Sidwell  <nathan@acm.org>
621         * method.c (enum mangling_flags): Delete long-dead enum.
623 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
625         * parser.c (cp_parser_std_attribute_spec): When
626         token_pair::require_open / require_close return false simply
627         return error_mark_node, avoid duplicate cp_parser_error about
628         expected '(' / ')', respectively.
630 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
632         PR c++/43486
633         * call.c (null_ptr_cst_p): Strip location wrappers when
634         converting from '0' to a pointer type in C++11 onwards.
635         (conversion_null_warnings): Replace comparison with null_node with
636         call to null_node_p.
637         (build_over_call): Likewise.
638         * cp-gimplify.c (cp_fold): Remove the early bailout when
639         processing_template_decl.
640         * cp-lang.c (selftest::run_cp_tests): Call
641         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
642         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
643         (selftest::run_cp_tests): Move decl to bottom of file.
644         (null_node_p): New inline function.
645         (selftest::cp_pt_c_tests): New decl.
646         (selftest::cp_tree_c_tests): New decl.
647         * cvt.c (build_expr_type_conversion): Replace comparison with
648         null_node with call to null_node_p.
649         * error.c (args_to_string): Likewise.
650         * except.c (build_throw): Likewise.
651         * mangle.c (write_expression): Skip location wrapper nodes.
652         * parser.c (literal_integer_zerop): New function.
653         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
654         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
655         param of cp_parser_parenthesized_expression_list.  When calling
656         warn_for_memset, replace integer_zerop calls with
657         literal_integer_zerop, eliminating the double logical negation
658         cast to bool.  Eliminate the special-casing for CONST_DECL in
659         favor of the fold_for_warn within warn_for_memset.
660         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
661         param, defaulting to false.  Convert "expr" to a cp_expr, and call
662         maybe_add_location_wrapper on it when wrap_locations_p is true.
663         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
664         the result for RID_ALIGNOF and RID_SIZEOF.
665         (cp_parser_builtin_offsetof): Likewise.
666         * pt.c: Include "selftest.h".
667         (tsubst_copy): Handle location wrappers.
668         (tsubst_copy_and_build): Likewise.
669         (build_non_dependent_expr): Likewise.
670         (selftest::test_build_non_dependent_expr): New function.
671         (selftest::cp_pt_c_tests): New function.
672         * tree.c: Include "selftest.h".
673         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
674         (selftest::test_lvalue_kind): New function.
675         (selftest::cp_tree_c_tests): New function.
676         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
677         (cp_build_binary_op): Replace comparison with null_node with call
678         to null_node_p.
679         (build_address): Use location of operand when building address
680         expression.
682 2018-01-10  Marek Polacek  <polacek@redhat.com>
684         PR c++/82541
685         * call.c (build_conditional_expr_1): Check complain before warning.
686         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
687         -Wduplicated-branches.
689 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
691         PR c++/81327
692         * call.c (maybe_warn_class_memaccess): Add forward declaration.
693         Change last argument from tree * to const vec<tree, va_gc> *, adjust
694         args uses and check number of operands too.  Don't strip away any
695         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
696         Deal with src argument not having pointer type.  Check
697         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
698         test.
699         (build_over_call): Call maybe_warn_class_memaccess here on the
700         original arguments.
701         (build_cxx_call): Rather than here on converted arguments.
703 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
705         PR c++/81055
706         * init.c (build_vec_init): Avoid building an INIT_EXPR with
707         error_mark_node as second argument.
709 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
711         PR c++/83734
712         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
713         in STATEMENT_LIST.  Remove unneeded assert.
715 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
716             Alan Hayward  <alan.hayward@arm.com>
717             David Sherwood  <david.sherwood@arm.com>
719         * constexpr.c (cxx_eval_array_reference): Handle polynomial
720         VECTOR_CST_NELTS.
721         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
722         * call.c (build_conditional_expr_1): Likewise.
723         * decl.c (cp_finish_decomp): Likewise.
724         * mangle.c (write_type): Likewise.
725         * typeck.c (structural_comptypes): Likewise.
726         (cp_build_binary_op): Likewise.
727         * typeck2.c (process_init_constructor_array): Likewise.
729 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
731         PR c++/83555
732         * typeck.c (build_static_cast_1): For static casts to reference types,
733         call build_base_path with flag_delete_null_pointer_checks as nonnull
734         instead of always false.  When -fsanitize=null, call
735         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
736         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
737         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
739 2018-01-03  Nathan Sidwell  <nathan@acm.org>
741         PR c++/83667
742         * method.c (make_alias_for): Copy DECL_CONTEXT.
744 2018-01-03  Marek Polacek  <polacek@redhat.com>
746         PR c++/83592
747         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
749 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
751         PR preprocessor/83602
752         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
753         for builtin macros.
755         PR c++/83634
756         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
757         error_mark_node, return error_mark_node.
759         Update copyright years.
761 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
763         PR c++/83556
764         * tree.c (replace_placeholders_r): Pass NULL as last argument to
765         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
766         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
767         to false and return.
768         (replace_placeholders): Pass NULL instead of &pset as last argument
769         to cp_walk_tree.
771 2018-01-02  Nathan Sidwell  <nathan@acm.org>
773         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
774         lval var.
776 Copyright (C) 2018 Free Software Foundation, Inc.
778 Copying and distribution of this file, with or without modification,
779 are permitted in any medium without royalty provided the copyright
780 notice and this notice are preserved.