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