PR c++/84557
[official-gcc.git] / gcc / cp / ChangeLog
blob94f684b041b07dfa280ae417180c378dc16f4294
1 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/84557
4         * parser.c (cp_parser_omp_var_list_no_open): Only call
5         cp_parser_lookup_name_simple on names satisfying identifier_p.
6         (cp_parser_oacc_routine): Likewise.
8 2018-02-26  Jason Merrill  <jason@redhat.com>
10         PR c++/84551 - ICE with concepts and -g.
11         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
13 2018-02-26  Marek Polacek  <polacek@redhat.com>
15         PR c++/84325
16         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
17         non-types.
19 2018-02-26  Jason Merrill  <jason@redhat.com>
21         PR c++/84447 - ICE with deleted inherited ctor with default arg.
22         * call.c (build_over_call): Handle deleted functions in one place.
24 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
26         PR c++/84533
27         * decl.c (redeclaration_error_message): Don't try to use
28         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
30 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
32         * lambda.c (build_capture_proxy): Define static.
33         * cp-tree.h (build_capture_proxy): Remove.
35 2018-02-26  Marek Polacek  <polacek@redhat.com>
37         PR c++/84537
38         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
39         if name is error node.
41 2018-02-25  Jason Merrill  <jason@redhat.com>
43         PR c++/84015 - ICE with class deduction and auto template parm.
44         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
46 2018-02-24  Marek Polacek  <polacek@redhat.com>
48         PR c++/83692
49         * constexpr.c (maybe_constant_init_1): New function.
50         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
51         (cxx_constant_init): New function.
52         * cp-tree.h (cxx_constant_init): Declare.
53         * typeck2.c (store_init_value): Call cxx_constant_init instead of
54         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
56 2018-02-22  Jason Merrill  <jason@redhat.com>
58         PR c++/70468 - ICE with constructor delegation via typedef.
59         * pt.c (tsubst_initializer_list): Check for other mem-initializers
60         with constructor delegation.
62 2018-02-22  Jason Merrill  <jason@redhat.com>
64         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
65         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
66         VECTOR_TYPE.
68 2018-02-22  Marek Polacek  <polacek@redhat.com>
70         PR c++/84493
71         * parser.c (cp_parser_braced_list): Use require_open instead of
72         consume_open.
74 2018-02-21  Jason Merrill  <jason@redhat.com>
76         PR c++/84454 - ICE with pack expansion in signature.
77         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
79 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
81         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
82         IF_STMT.
84 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
86         PR c++/84446
87         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
88         on error_mark_node.
90 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
92         PR c++/84445
93         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
94         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
96         PR c++/84449
97         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
98         returns error_mark_node, return it immediately.
99         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
100         error_mark_node, return error_mark_node.
102         PR c++/84455
103         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
104         function_depth to avoid GC during finish_lambda_function.
106 2018-02-19  Jason Merrill  <jason@redhat.com>
108         PR c++/84429 - ICE capturing VLA.
109         * lambda.c (build_capture_proxy): Handle reference refs.
111 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
113         PR c++/84448
114         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
115         either operand is error_mark_node, set current.lhs to that instead of
116         creating a binary op with error_mark_node operands.
118         PR c++/84430
119         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
121 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
123         PR c++/84348
124         * decl.c (grokdeclarator): Early return error_mark_node upon
125         ill-formed friend declaration.
127 2018-02-16  Marek Polacek  <polacek@redhat.com>
128             Jakub Jelinek  <jakub@redhat.com>
130         PR c++/84192
131         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
132         set *jump_target to anything if jump_target is NULL.
134 2018-02-16  Jason Merrill  <jason@redhat.com>
136         PR c++/84151 - unnecessary volatile load with static member.
137         * call.c (build_new_method_call_1): Avoid loading from a volatile
138         lvalue used as the object argument for a static member function.
140         PR c++/81853 - using-directive and constexpr.
141         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
143         PR c++/84420 - ICE with structured binding in lambda.
144         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
146         PR c++/83835 - C++17 error with constructor ctors.
147         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
149         PR c++/82664 - ICE with reference to function template parm.
150         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
151         NOP_EXPRs.
153         PR c++/82764 - C++17 ICE with empty base
154         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
156 2018-02-16  Jason Merrill  <jason@redhat.com>
158         PR c++/84421 - type-dependent if constexpr
159         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
161 2018-02-16  Nathan Sidwell  <nathan@acm.org>
163         Deprecate -ffriend-injection.
164         * decl.c (cxx_init_decl_processing): Emit warning on option.
165         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
166         friend.
168 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
170         PR c++/82468
171         * decl.c (check_special_function_return_type): Reject template
172         template parameter in deduction guide.
174 2018-02-16  Nathan Sidwell  <nathan@acm.org>
176         PR c++/84375
177         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
179 2018-02-15  Jason Merrill  <jason@redhat.com>
181         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
182         * call.c (convert_like_real): Don't use the copy-list-initialization
183         shortcut for ck_base.
185         PR c++/84045 - ICE with typedef and noexcept.
186         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
188         PR c++/84376 - ICE with omitted template arguments.
189         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
191         PR c++/84368 - wrong error with local variable in variadic lambda.
192         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
193         local_specializations.
195 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
197         PR c++/84330
198         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
199         as first argument.
201 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
203         PR c++/84350
204         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
205         init, early return.
207 2018-02-14  Nathan Sidwell  <nathan@acm.org>
209         * decl2.c (mark_vtable_entries): Set input_location to decl's.
210         (c_parse_final_cleanups): Restore input_location after emitting
211         vtables.
213 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
215         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
216         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
217         auto_deduction_context, tree, int): Add defaults.
218         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
219         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
220         tsubst_flags_t argument.
221         * init.c (build_new): Likewise.
223 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
225         PR c++/84364
226         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
227         about return other than *this in assignment operators if
228         retval is type dependent expression.
230 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
232         PR c++/84333
233         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
234         save_expr for the G++ extension.
236 2018-02-13  Jason Merrill  <jason@redhat.com>
238         PR c++/84080 - ICE with return type deduction and specialization.
239         * pt.c (determine_specialization): Check uses_template_parms.
241         Fix more variadic capture issues.
242         * pt.c (find_parameter_packs_r): Also look at explicit captures.
243         (check_for_bare_parameter_packs): Check current_class_type for
244         lambda context.
245         (extract_locals_r): Handle seeing a full instantiation of a pack.
246         (tsubst_pack_expansion): Likewise.  Force lambda capture.
247         * parser.c (cp_parser_lambda_introducer): Don't
248         check_for_bare_parameter_packs.
250         PR c++/84338 - wrong variadic sizeof.
251         * pt.c (argument_pack_select_arg): Like the macro, but look through
252         a pack expansion.
253         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
254         (extract_fnparm_pack): Do make_pack_expansion.
255         (extract_locals_r): Do strip a pack expansion.
256         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
258 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
260         PR c++/84341
261         * parser.c (cp_parser_binary_expression): Use build_min instead of
262         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
264 2018-02-12  Nathan Sidwell  <nathan@acm.org>
266         PR c++/84263
267         * parser.c (cp_parser_decltype): Push and pop
268         deferring_access_checks.  Reorganize to avoid goto.
270 2018-02-12  Richard Biener  <rguenther@suse.de>
272         PR c++/84281
273         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
274         uniform constructors and delay allocating them fully.
276 2018-02-09  Jason Merrill  <jason@redhat.com>
278         PR c++/84036 - ICE with variadic capture.
279         Handle variadic capture proxies more like non-variadic.
280         * lambda.c (build_capture_proxy): Remove workaround.
281         * pt.c (find_parameter_packs_r): The proxy is a pack.
282         (instantiate_class_template_1): Remove dead lambda code.
283         (extract_fnparm_pack): Don't make_pack_expansion.
284         (extract_locals_r): Don't strip a pack expansion.
285         (tsubst_pack_expansion): Handle proxy packs.  Use
286         PACK_EXPANSION_EXTRA_ARGS less.
287         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
288         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
289         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
290         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
291         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
293 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
295         PR sanitizer/83987
296         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
298 2018-02-09  Jason Merrill  <jason@redhat.com>
300         PR c++/81917 - ICE with void_t and partial specialization.
301         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
302         calling most_specialized_partial_spec.
304 2018-02-09  Nathan Sidwell  <nathan@acm.org>
306         PR c/84293
307         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
308         Pass expr location to strict_aliasing_warning.
310 2018-02-09  Jason Merrill  <jason@redhat.com>
312         PR c++/84296 - ICE with qualified-id in template.
313         PR c++/83714
314         * pt.c (unknown_base_ref_p): New.
315         (instantiation_dependent_scope_ref_p): Use it instead of
316         any_dependent_bases_p.
318 2018-02-09  Marek Polacek  <polacek@redhat.com>
319             Jakub Jelinek  <jakub@redhat.com>
321         PR c++/83659
322         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
323         fold_indirect_ref_1, including poly_*int64.  Verify first that
324         tree_fits_poly_int64_p (op01).  Formatting fixes.
326 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
328         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
329         * lambda.c (build_capture_proxy): Likewise.
330         * search.c (field_access_p): Likewise.
331         * semantics.c (omp_clause_decl, omp_privatize_field,
332         finish_omp_clauses): Likewise.
334 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
336         PR c++/83806
337         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
338         case of nullptr too.
340 2018-02-08  Nathan Sidwell  <nathan@acm.org>
342         * class.c (finish_struct): Fix std:initializer_list diagnostic
343         formatting.
345 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
347         PR c++/83204
348         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
350 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
352         PR c++/84082
353         * parser.c (cp_parser_dot_deref_incomplete): New function.
354         (cp_parser_postfix_dot_deref_expression): Use it.
356 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
358         PR c++/81610
359         PR c++/80567
360         * name-lookup.c (suggest_rid_p): New function.
361         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
362         suggest_rid_p.
364 2018-02-07  Jason Merrill  <jason@redhat.com>
366         PR c++/84182 - ICE with captured lambda
367         PR c++/84181
368         * pt.c (extract_locals_r, extract_local_specs): New.
369         (tsubst_pack_expansion): Use them.
371 2018-02-07  Martin Liska  <mliska@suse.cz>
373         PR c++/84059.
374         * class.c (add_method): Append argument value.
375         * cp-tree.h (maybe_version_functions): Add new argument.
376         * decl.c (decls_match): Call it if a declaration does not
377         have DECL_FUNCTION_VERSIONED.
378         (maybe_version_functions): record argument is added.
380 2018-02-05  Marek Polacek  <polacek@redhat.com>
382         * class.c: Remove unused global variables.
383         (build_primary_vtable): Don't gather statistics.
384         (print_class_statistics): Remove.
385         * cp-tree.h (print_class_statistics): Remove.
386         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
388 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
390         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
391         * constexpr.c (cx_check_missing_mem_inits): Likewise.
392         * decl.c (next_initializable_field, find_decomp_class_base,
393         cp_finish_decomp): Likewise.
394         * typeck2.c (process_init_constructor_record): Likewise.
396 2018-02-02  Jason Merrill  <jason@redhat.com>
398         PR c++/84181 - ICE with lambda parm in template argument.
399         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
401 2018-02-01  Jason Merrill  <jason@redhat.com>
403         PR c++/84160 - ICE with nested variadic capture.
404         * lambda.c (is_capture_proxy_with_ref): New.
405         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
406         COMPONENT_REF.
407         * expr.c (mark_use): Use is_capture_proxy_with_ref.
408         * constexpr.c (potential_constant_expression_1): Likewise.
409         * semantics.c (process_outer_var_ref): Likewise.
411 2018-02-01  Marek Polacek  <polacek@redhat.com>
413         PR c++/84125
414         * typeck.c (build_address): Relax the assert when
415         processing_template_decl.
417 2018-02-01  Jason Merrill  <jason@redhat.com>
419         PR c++/84126 - ICE with variadic generic lambda
420         PR c++/84036
421         PR c++/82249
422         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
423         PACK_EXPANSION_EXTRA_ARGS.
425 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
427         PR c++/83796
428         * call.c (convert_like_real): If w're initializing from {} explicitly
429         call abstract_virtuals_error_sfinae.
431 2018-01-31  Jason Merrill  <jason@redhat.com>
432             Jakub Jelinek  <jakub@redhat.com>
434         PR c++/83993
435         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
436         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
437         on ADDR_EXPR.
439 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
441         PR c++/83993
442         * constexpr.c (diag_array_subscript): Emit different diagnostics
443         if TYPE_DOMAIN (arraytype) is NULL.
444         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
445         with NULL TYPE_DOMAIN use size_zero_node as nelts.
447 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
449         PR c++/84092
450         * semantics.c (finish_qualified_id_expr): When handling an
451         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
453 2018-01-31  Marek Polacek  <polacek@redhat.com>
455         PR c++/84138
456         * cp-gimplify.c (cp_fold): Check if X is an error node before
457         calling useless_type_conversion_p.
459 2018-01-30  Jason Merrill  <jason@redhat.com>
461         PR c++/84091 - ICE with local class in lambda in template.
462         * decl2.c (determine_visibility): Look for outer containing template
463         instantiation.
465         PR c++/84098 - ICE with lambda in template NSDMI.
466         * pt.c (instantiate_class_template_1): Ignore more lambdas.
468 2018-01-29  Jason Merrill  <jason@redhat.com>
470         PR c++/68810 - wrong location for reinterpret_cast error.
471         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
472         !dofold.
474 2018-01-29  Marek Polacek  <polacek@redhat.com>
476         PR c++/83996
477         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
478         => fooarray[1] in offset_int.
480 2018-01-29  Jason Merrill  <jason@redhat.com>
482         PR c++/83942 - wrong unused warning with static_cast.
483         * cvt.c (ocp_convert): Call mark_rvalue_use.
485 2018-01-26  Jason Merrill  <jason@redhat.com>
487         PR c++/83956 - wrong dtor error with anonymous union
488         * method.c (walk_field_subobs): Variant members only affect
489         deletedness.
490         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
492         PR c++/84036 - ICE with variadic capture.
493         PR c++/82249
494         * pt.c (tsubst_pack_expansion): When optimizing a simple
495         substitution, pull a single pack expansion out of its pack.
497         PR c++/82514 - ICE with local class in generic lambda.
498         * pt.c (regenerated_lambda_fn_p): Remove.
499         (enclosing_instantiation_of): Don't use it.
500         (tsubst_function_decl): Call enclosing_instantiation_of.
502         * pt.c (lookup_template_class_1): Add sanity check.
503         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
505 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
507         PR c++/84031
508         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
509         recursive calls that return ret.
510         (cp_finish_decomp): Ignore unnamed bitfields.
512 2018-01-23  Jason Merrill  <jason@redhat.com>
514         PR c++/82249 - wrong mismatched pack length error.
515         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
516         unsubstituted function parameter pack.
518 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
520         PR c++/83921
521         * decl.c (check_for_uninitialized_const_var): Not static; add
522         bool and tsubst_flags_t parameters; adjust to be used both in
523         constexpr context and not.
524         * constexpr.c (potential_constant_expression_1): Use the above.
525         * cp-tree.h (check_for_uninitialized_const_var): Declare.
527 2018-01-23  Jason Merrill  <jason@redhat.com>
529         PR c++/83947 - ICE with auto declarations.
530         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
531         * decl.c (undeduced_auto_decl): Limit to vars and fns.
533 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
535         PR c++/83974
536         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
537         for pointer to member function types.
539 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
541         PR sanitizer/83987
542         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
543         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
545 2018-01-23  Nathan Sidwell  <nathan@acm.org>
547         PR c++/83988
548         * pt.c (tsubst_baselink): Remove optype assert.
549         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
551 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
553         PR c++/83958
554         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
555         refers to incomplete type.
557 2018-01-23  Nathan Sidwell  <nathan@acm.org>
559         Deprecate ARM-era for scope handling
560         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
561         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
562         cleared.
563         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
564         cleanup handling.
565         * semantics.c (begin_for_scope): Flag_new_for_scope is
566         boolean-like.
567         (finish_for_stmt, begin_range_for_stmt): Likewise.
569 2018-01-22  Jason Merrill  <jason@redhat.com>
571         PR c++/83720
572         * decl2.c (determine_visibility): Fix template_decl handling
573         instead of blocking it.
575         PR c++/83720 - ICE with lambda and LTO.
576         * decl2.c (determine_visibility): Clear template_decl for
577         function-scope decls.  Propagate anonymous linkage from containing
578         function.
580 2018-01-22  Marek Polacek  <polacek@redhat.com>
582         PR c++/81933
583         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
584         split out anything.
586 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
588         PR c++/83895
589         * decl.c (grokdeclarator): Don't diagnose extra parens
590         on typedefs.
592 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
594         PR c++/81167
595         * call.c (joust): Use TREE_TYPE (source) if source is
596         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
598         PR c++/83919
599         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
600         for direct enum init.
601         * decl.c (reshape_init): Likewise.
603 2018-01-19  Marek Polacek  <polacek@redhat.com>
605         * constexpr.c (fold_simple): Simplify.
607 2018-01-18  Jason Merrill  <jason@redhat.com>
609         PR c++/83714
610         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
611         * pt.c (instantiation_dependent_scope_ref_p): True if
612         any_dependent_bases_p.
614 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
616         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
617         vs DECL_NONTRIVIALLY_INITIALIZED_P).
619 2018-01-18  Jason Merrill  <jason@redhat.com>
621         PR c++/82461 - constexpr list-initialized member
622         * constexpr.c (potential_constant_expression_1): Check
623         TARGET_EXPR_DIRECT_INIT_P.
625 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
627         PR c++/81013
628         * decl.c (xref_basetypes): Early return upon error about derived
629         union.
631 2018-01-18  Nathan Sidwell  <nathan@acm.org>
633         PR c++/83160
634         * cp-tree.h (mark_use): Declare.
635         * expr.c (mark_use): Make extern.
636         * call.c (direct_reference_binding): Set inner conv's
637         rvaluedness_matches_p, if it is an identity.
638         (convert_like_real): Mark lvalue or rvalue use for identity as
639         rvaledness_matches_p demands.
641 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
643         PR c++/83824
644         * parser.c (attr_chainon): New function.
645         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
646         cp_parser_namespace_definition, cp_parser_init_declarator,
647         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
648         cp_parser_gnu_attributes_opt): Use it.
649         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
650         cp_parser_objc_struct_declaration): Likewise.  Don't reset
651         prefix_attributes if attributes is error_mark_node.
653 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
655         PR c++/78344
656         * decl.c (grokdeclarator): Do not append the error_mark_node
657         due to an erroneous optional attribute-specifier-seq.
659 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
661         PR c++/83897
662         * cp-gimplify.c (cp_maybe_instrument_return): Handle
663         CLEANUP_POINT_EXPR.
665 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
667         PR c++/81054
668         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
669         error_mark_node when we give an error.
670         * decl.c (cp_finish_decl): Use the latter.
672 2018-01-17  Nathan Sidwell  <nathan@acm.org>
674         PR c++/83287
675         * init.c (build_raw_new_expr): Scan list for lookups to keep.
677 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
679         PR c++/83814
680         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
681         the C++ part.  If processing a template, call
682         fold_non_dependent_expr rather than fully folding.
684 2018-01-17  Jason Merrill  <jason@redhat.com>
686         PR c++/81067 - redundant NULL warning.
687         * call.c (convert_like_real): Restore null_node handling.
689 2018-01-17  Jason Merrill  <jason@redhat.com>
691         PR c++/81843 - ICE with variadic member template.
692         PR c++/72801
693         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
694         template args.
696 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
698         PR c++/83799
699         * pt.c (type_dependent_expression_p): Strip any location wrapper
700         before testing tree codes.
701         (selftest::test_type_dependent_expression_p): New function.
702         (selftest::cp_pt_c_tests): Call it.
704 2018-01-17  Nathan Sidwell  <nathan@acm.org>
706         PR c++/83739
707         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
708         this not a final instantiation.
710 2018-01-16  Jason Merrill  <jason@redhat.com>
712         PR c++/83714 - ICE checking return in template.
713         * typeck.c (check_return_expr): Call build_non_dependent_expr.
715 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
717         PR c++/83817
718         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
719         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
720         instead of CALL_FROM_THUNK_P.
722         PR c++/83825
723         * name-lookup.c (member_vec_dedup): Return early if len is 0.
724         (resort_type_member_vec, set_class_bindings,
725         insert_late_enum_def_bindings): Use vec qsort method instead of
726         calling qsort directly.
728 2018-01-15  Martin Sebor  <msebor@redhat.com>
730         PR c++/83588
731         * class.c (find_flexarrays): Make a record of multiple flexible array
732         members.
734 2018-01-12  Jason Merrill  <jason@redhat.com>
736         PR c++/83186 - ICE with static_cast of list-initialized temporary.
737         * typeck.c (build_static_cast): Use build_non_dependent_expr.
739 2018-01-12  Nathan Sidwell  <nathan@acm.org>
741         * cp-tree.h (mark_rvalue_use): Add parm name.
742         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
743         mark_rvalue_use.
744         * call.c (convert_like_real): Fix formatting.
746 2018-01-11  Jason Merrill  <jason@redhat.com>
748         PR c++/82728 - wrong -Wunused-but-set-variable
749         PR c++/82799
750         PR c++/83690
751         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
752         * decl.c (case_conversion): Likewise.
753         * semantics.c (finish_static_assert): Call
754         perform_implicit_conversion_flags.
756 2018-01-11  Nathan Sidwell  <nathan@acm.org>
758         * method.c (enum mangling_flags): Delete long-dead enum.
760 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
762         * parser.c (cp_parser_std_attribute_spec): When
763         token_pair::require_open / require_close return false simply
764         return error_mark_node, avoid duplicate cp_parser_error about
765         expected '(' / ')', respectively.
767 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
769         PR c++/43486
770         * call.c (null_ptr_cst_p): Strip location wrappers when
771         converting from '0' to a pointer type in C++11 onwards.
772         (conversion_null_warnings): Replace comparison with null_node with
773         call to null_node_p.
774         (build_over_call): Likewise.
775         * cp-gimplify.c (cp_fold): Remove the early bailout when
776         processing_template_decl.
777         * cp-lang.c (selftest::run_cp_tests): Call
778         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
779         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
780         (selftest::run_cp_tests): Move decl to bottom of file.
781         (null_node_p): New inline function.
782         (selftest::cp_pt_c_tests): New decl.
783         (selftest::cp_tree_c_tests): New decl.
784         * cvt.c (build_expr_type_conversion): Replace comparison with
785         null_node with call to null_node_p.
786         * error.c (args_to_string): Likewise.
787         * except.c (build_throw): Likewise.
788         * mangle.c (write_expression): Skip location wrapper nodes.
789         * parser.c (literal_integer_zerop): New function.
790         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
791         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
792         param of cp_parser_parenthesized_expression_list.  When calling
793         warn_for_memset, replace integer_zerop calls with
794         literal_integer_zerop, eliminating the double logical negation
795         cast to bool.  Eliminate the special-casing for CONST_DECL in
796         favor of the fold_for_warn within warn_for_memset.
797         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
798         param, defaulting to false.  Convert "expr" to a cp_expr, and call
799         maybe_add_location_wrapper on it when wrap_locations_p is true.
800         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
801         the result for RID_ALIGNOF and RID_SIZEOF.
802         (cp_parser_builtin_offsetof): Likewise.
803         * pt.c: Include "selftest.h".
804         (tsubst_copy): Handle location wrappers.
805         (tsubst_copy_and_build): Likewise.
806         (build_non_dependent_expr): Likewise.
807         (selftest::test_build_non_dependent_expr): New function.
808         (selftest::cp_pt_c_tests): New function.
809         * tree.c: Include "selftest.h".
810         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
811         (selftest::test_lvalue_kind): New function.
812         (selftest::cp_tree_c_tests): New function.
813         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
814         (cp_build_binary_op): Replace comparison with null_node with call
815         to null_node_p.
816         (build_address): Use location of operand when building address
817         expression.
819 2018-01-10  Marek Polacek  <polacek@redhat.com>
821         PR c++/82541
822         * call.c (build_conditional_expr_1): Check complain before warning.
823         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
824         -Wduplicated-branches.
826 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
828         PR c++/81327
829         * call.c (maybe_warn_class_memaccess): Add forward declaration.
830         Change last argument from tree * to const vec<tree, va_gc> *, adjust
831         args uses and check number of operands too.  Don't strip away any
832         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
833         Deal with src argument not having pointer type.  Check
834         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
835         test.
836         (build_over_call): Call maybe_warn_class_memaccess here on the
837         original arguments.
838         (build_cxx_call): Rather than here on converted arguments.
840 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
842         PR c++/81055
843         * init.c (build_vec_init): Avoid building an INIT_EXPR with
844         error_mark_node as second argument.
846 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
848         PR c++/83734
849         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
850         in STATEMENT_LIST.  Remove unneeded assert.
852 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
853             Alan Hayward  <alan.hayward@arm.com>
854             David Sherwood  <david.sherwood@arm.com>
856         * constexpr.c (cxx_eval_array_reference): Handle polynomial
857         VECTOR_CST_NELTS.
858         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
859         * call.c (build_conditional_expr_1): Likewise.
860         * decl.c (cp_finish_decomp): Likewise.
861         * mangle.c (write_type): Likewise.
862         * typeck.c (structural_comptypes): Likewise.
863         (cp_build_binary_op): Likewise.
864         * typeck2.c (process_init_constructor_array): Likewise.
866 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
868         PR c++/83555
869         * typeck.c (build_static_cast_1): For static casts to reference types,
870         call build_base_path with flag_delete_null_pointer_checks as nonnull
871         instead of always false.  When -fsanitize=null, call
872         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
873         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
874         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
876 2018-01-03  Nathan Sidwell  <nathan@acm.org>
878         PR c++/83667
879         * method.c (make_alias_for): Copy DECL_CONTEXT.
881 2018-01-03  Marek Polacek  <polacek@redhat.com>
883         PR c++/83592
884         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
886 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
888         PR preprocessor/83602
889         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
890         for builtin macros.
892         PR c++/83634
893         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
894         error_mark_node, return error_mark_node.
896         Update copyright years.
898 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
900         PR c++/83556
901         * tree.c (replace_placeholders_r): Pass NULL as last argument to
902         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
903         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
904         to false and return.
905         (replace_placeholders): Pass NULL instead of &pset as last argument
906         to cp_walk_tree.
908 2018-01-02  Nathan Sidwell  <nathan@acm.org>
910         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
911         lval var.
913 Copyright (C) 2018 Free Software Foundation, Inc.
915 Copying and distribution of this file, with or without modification,
916 are permitted in any medium without royalty provided the copyright
917 notice and this notice are preserved.