PR c++/84558
[official-gcc.git] / gcc / cp / ChangeLog
blob14f899c1881b8ed7b325df9702c374becd0c69a8
1 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/84558
4         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
5         a valid constant initializer.  Formatting fixes.
7 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
9         PR c++/84540
10         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
11         returning NULL_TREE.
12         (apply_late_template_attributes): Likewise.
14 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
16         PR c++/84557
17         * parser.c (cp_parser_omp_var_list_no_open): Only call
18         cp_parser_lookup_name_simple on names satisfying identifier_p.
19         (cp_parser_oacc_routine): Likewise.
21 2018-02-26  Jason Merrill  <jason@redhat.com>
23         PR c++/84551 - ICE with concepts and -g.
24         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
26 2018-02-26  Marek Polacek  <polacek@redhat.com>
28         PR c++/84325
29         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
30         non-types.
32 2018-02-26  Jason Merrill  <jason@redhat.com>
34         PR c++/84447 - ICE with deleted inherited ctor with default arg.
35         * call.c (build_over_call): Handle deleted functions in one place.
37 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
39         PR c++/84533
40         * decl.c (redeclaration_error_message): Don't try to use
41         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
43 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
45         * lambda.c (build_capture_proxy): Define static.
46         * cp-tree.h (build_capture_proxy): Remove.
48 2018-02-26  Marek Polacek  <polacek@redhat.com>
50         PR c++/84537
51         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
52         if name is error node.
54 2018-02-25  Jason Merrill  <jason@redhat.com>
56         PR c++/84015 - ICE with class deduction and auto template parm.
57         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
59 2018-02-24  Marek Polacek  <polacek@redhat.com>
61         PR c++/83692
62         * constexpr.c (maybe_constant_init_1): New function.
63         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
64         (cxx_constant_init): New function.
65         * cp-tree.h (cxx_constant_init): Declare.
66         * typeck2.c (store_init_value): Call cxx_constant_init instead of
67         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
69 2018-02-22  Jason Merrill  <jason@redhat.com>
71         PR c++/70468 - ICE with constructor delegation via typedef.
72         * pt.c (tsubst_initializer_list): Check for other mem-initializers
73         with constructor delegation.
75 2018-02-22  Jason Merrill  <jason@redhat.com>
77         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
78         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
79         VECTOR_TYPE.
81 2018-02-22  Marek Polacek  <polacek@redhat.com>
83         PR c++/84493
84         * parser.c (cp_parser_braced_list): Use require_open instead of
85         consume_open.
87 2018-02-21  Jason Merrill  <jason@redhat.com>
89         PR c++/84454 - ICE with pack expansion in signature.
90         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
92 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
94         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
95         IF_STMT.
97 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
99         PR c++/84446
100         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
101         on error_mark_node.
103 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
105         PR c++/84445
106         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
107         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
109         PR c++/84449
110         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
111         returns error_mark_node, return it immediately.
112         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
113         error_mark_node, return error_mark_node.
115         PR c++/84455
116         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
117         function_depth to avoid GC during finish_lambda_function.
119 2018-02-19  Jason Merrill  <jason@redhat.com>
121         PR c++/84429 - ICE capturing VLA.
122         * lambda.c (build_capture_proxy): Handle reference refs.
124 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
126         PR c++/84448
127         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
128         either operand is error_mark_node, set current.lhs to that instead of
129         creating a binary op with error_mark_node operands.
131         PR c++/84430
132         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
134 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
136         PR c++/84348
137         * decl.c (grokdeclarator): Early return error_mark_node upon
138         ill-formed friend declaration.
140 2018-02-16  Marek Polacek  <polacek@redhat.com>
141             Jakub Jelinek  <jakub@redhat.com>
143         PR c++/84192
144         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
145         set *jump_target to anything if jump_target is NULL.
147 2018-02-16  Jason Merrill  <jason@redhat.com>
149         PR c++/84151 - unnecessary volatile load with static member.
150         * call.c (build_new_method_call_1): Avoid loading from a volatile
151         lvalue used as the object argument for a static member function.
153         PR c++/81853 - using-directive and constexpr.
154         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
156         PR c++/84420 - ICE with structured binding in lambda.
157         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
159         PR c++/83835 - C++17 error with constructor ctors.
160         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
162         PR c++/82664 - ICE with reference to function template parm.
163         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
164         NOP_EXPRs.
166         PR c++/82764 - C++17 ICE with empty base
167         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
169 2018-02-16  Jason Merrill  <jason@redhat.com>
171         PR c++/84421 - type-dependent if constexpr
172         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
174 2018-02-16  Nathan Sidwell  <nathan@acm.org>
176         Deprecate -ffriend-injection.
177         * decl.c (cxx_init_decl_processing): Emit warning on option.
178         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
179         friend.
181 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
183         PR c++/82468
184         * decl.c (check_special_function_return_type): Reject template
185         template parameter in deduction guide.
187 2018-02-16  Nathan Sidwell  <nathan@acm.org>
189         PR c++/84375
190         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
192 2018-02-15  Jason Merrill  <jason@redhat.com>
194         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
195         * call.c (convert_like_real): Don't use the copy-list-initialization
196         shortcut for ck_base.
198         PR c++/84045 - ICE with typedef and noexcept.
199         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
201         PR c++/84376 - ICE with omitted template arguments.
202         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
204         PR c++/84368 - wrong error with local variable in variadic lambda.
205         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
206         local_specializations.
208 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
210         PR c++/84330
211         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
212         as first argument.
214 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
216         PR c++/84350
217         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
218         init, early return.
220 2018-02-14  Nathan Sidwell  <nathan@acm.org>
222         * decl2.c (mark_vtable_entries): Set input_location to decl's.
223         (c_parse_final_cleanups): Restore input_location after emitting
224         vtables.
226 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
228         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
229         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
230         auto_deduction_context, tree, int): Add defaults.
231         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
232         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
233         tsubst_flags_t argument.
234         * init.c (build_new): Likewise.
236 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
238         PR c++/84364
239         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
240         about return other than *this in assignment operators if
241         retval is type dependent expression.
243 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
245         PR c++/84333
246         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
247         save_expr for the G++ extension.
249 2018-02-13  Jason Merrill  <jason@redhat.com>
251         PR c++/84080 - ICE with return type deduction and specialization.
252         * pt.c (determine_specialization): Check uses_template_parms.
254         Fix more variadic capture issues.
255         * pt.c (find_parameter_packs_r): Also look at explicit captures.
256         (check_for_bare_parameter_packs): Check current_class_type for
257         lambda context.
258         (extract_locals_r): Handle seeing a full instantiation of a pack.
259         (tsubst_pack_expansion): Likewise.  Force lambda capture.
260         * parser.c (cp_parser_lambda_introducer): Don't
261         check_for_bare_parameter_packs.
263         PR c++/84338 - wrong variadic sizeof.
264         * pt.c (argument_pack_select_arg): Like the macro, but look through
265         a pack expansion.
266         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
267         (extract_fnparm_pack): Do make_pack_expansion.
268         (extract_locals_r): Do strip a pack expansion.
269         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
271 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
273         PR c++/84341
274         * parser.c (cp_parser_binary_expression): Use build_min instead of
275         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
277 2018-02-12  Nathan Sidwell  <nathan@acm.org>
279         PR c++/84263
280         * parser.c (cp_parser_decltype): Push and pop
281         deferring_access_checks.  Reorganize to avoid goto.
283 2018-02-12  Richard Biener  <rguenther@suse.de>
285         PR c++/84281
286         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
287         uniform constructors and delay allocating them fully.
289 2018-02-09  Jason Merrill  <jason@redhat.com>
291         PR c++/84036 - ICE with variadic capture.
292         Handle variadic capture proxies more like non-variadic.
293         * lambda.c (build_capture_proxy): Remove workaround.
294         * pt.c (find_parameter_packs_r): The proxy is a pack.
295         (instantiate_class_template_1): Remove dead lambda code.
296         (extract_fnparm_pack): Don't make_pack_expansion.
297         (extract_locals_r): Don't strip a pack expansion.
298         (tsubst_pack_expansion): Handle proxy packs.  Use
299         PACK_EXPANSION_EXTRA_ARGS less.
300         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
301         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
302         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
303         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
304         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
306 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
308         PR sanitizer/83987
309         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
311 2018-02-09  Jason Merrill  <jason@redhat.com>
313         PR c++/81917 - ICE with void_t and partial specialization.
314         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
315         calling most_specialized_partial_spec.
317 2018-02-09  Nathan Sidwell  <nathan@acm.org>
319         PR c/84293
320         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
321         Pass expr location to strict_aliasing_warning.
323 2018-02-09  Jason Merrill  <jason@redhat.com>
325         PR c++/84296 - ICE with qualified-id in template.
326         PR c++/83714
327         * pt.c (unknown_base_ref_p): New.
328         (instantiation_dependent_scope_ref_p): Use it instead of
329         any_dependent_bases_p.
331 2018-02-09  Marek Polacek  <polacek@redhat.com>
332             Jakub Jelinek  <jakub@redhat.com>
334         PR c++/83659
335         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
336         fold_indirect_ref_1, including poly_*int64.  Verify first that
337         tree_fits_poly_int64_p (op01).  Formatting fixes.
339 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
341         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
342         * lambda.c (build_capture_proxy): Likewise.
343         * search.c (field_access_p): Likewise.
344         * semantics.c (omp_clause_decl, omp_privatize_field,
345         finish_omp_clauses): Likewise.
347 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
349         PR c++/83806
350         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
351         case of nullptr too.
353 2018-02-08  Nathan Sidwell  <nathan@acm.org>
355         * class.c (finish_struct): Fix std:initializer_list diagnostic
356         formatting.
358 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
360         PR c++/83204
361         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
363 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
365         PR c++/84082
366         * parser.c (cp_parser_dot_deref_incomplete): New function.
367         (cp_parser_postfix_dot_deref_expression): Use it.
369 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
371         PR c++/81610
372         PR c++/80567
373         * name-lookup.c (suggest_rid_p): New function.
374         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
375         suggest_rid_p.
377 2018-02-07  Jason Merrill  <jason@redhat.com>
379         PR c++/84182 - ICE with captured lambda
380         PR c++/84181
381         * pt.c (extract_locals_r, extract_local_specs): New.
382         (tsubst_pack_expansion): Use them.
384 2018-02-07  Martin Liska  <mliska@suse.cz>
386         PR c++/84059.
387         * class.c (add_method): Append argument value.
388         * cp-tree.h (maybe_version_functions): Add new argument.
389         * decl.c (decls_match): Call it if a declaration does not
390         have DECL_FUNCTION_VERSIONED.
391         (maybe_version_functions): record argument is added.
393 2018-02-05  Marek Polacek  <polacek@redhat.com>
395         * class.c: Remove unused global variables.
396         (build_primary_vtable): Don't gather statistics.
397         (print_class_statistics): Remove.
398         * cp-tree.h (print_class_statistics): Remove.
399         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
401 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
403         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
404         * constexpr.c (cx_check_missing_mem_inits): Likewise.
405         * decl.c (next_initializable_field, find_decomp_class_base,
406         cp_finish_decomp): Likewise.
407         * typeck2.c (process_init_constructor_record): Likewise.
409 2018-02-02  Jason Merrill  <jason@redhat.com>
411         PR c++/84181 - ICE with lambda parm in template argument.
412         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
414 2018-02-01  Jason Merrill  <jason@redhat.com>
416         PR c++/84160 - ICE with nested variadic capture.
417         * lambda.c (is_capture_proxy_with_ref): New.
418         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
419         COMPONENT_REF.
420         * expr.c (mark_use): Use is_capture_proxy_with_ref.
421         * constexpr.c (potential_constant_expression_1): Likewise.
422         * semantics.c (process_outer_var_ref): Likewise.
424 2018-02-01  Marek Polacek  <polacek@redhat.com>
426         PR c++/84125
427         * typeck.c (build_address): Relax the assert when
428         processing_template_decl.
430 2018-02-01  Jason Merrill  <jason@redhat.com>
432         PR c++/84126 - ICE with variadic generic lambda
433         PR c++/84036
434         PR c++/82249
435         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
436         PACK_EXPANSION_EXTRA_ARGS.
438 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
440         PR c++/83796
441         * call.c (convert_like_real): If w're initializing from {} explicitly
442         call abstract_virtuals_error_sfinae.
444 2018-01-31  Jason Merrill  <jason@redhat.com>
445             Jakub Jelinek  <jakub@redhat.com>
447         PR c++/83993
448         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
449         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
450         on ADDR_EXPR.
452 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
454         PR c++/83993
455         * constexpr.c (diag_array_subscript): Emit different diagnostics
456         if TYPE_DOMAIN (arraytype) is NULL.
457         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
458         with NULL TYPE_DOMAIN use size_zero_node as nelts.
460 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
462         PR c++/84092
463         * semantics.c (finish_qualified_id_expr): When handling an
464         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
466 2018-01-31  Marek Polacek  <polacek@redhat.com>
468         PR c++/84138
469         * cp-gimplify.c (cp_fold): Check if X is an error node before
470         calling useless_type_conversion_p.
472 2018-01-30  Jason Merrill  <jason@redhat.com>
474         PR c++/84091 - ICE with local class in lambda in template.
475         * decl2.c (determine_visibility): Look for outer containing template
476         instantiation.
478         PR c++/84098 - ICE with lambda in template NSDMI.
479         * pt.c (instantiate_class_template_1): Ignore more lambdas.
481 2018-01-29  Jason Merrill  <jason@redhat.com>
483         PR c++/68810 - wrong location for reinterpret_cast error.
484         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
485         !dofold.
487 2018-01-29  Marek Polacek  <polacek@redhat.com>
489         PR c++/83996
490         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
491         => fooarray[1] in offset_int.
493 2018-01-29  Jason Merrill  <jason@redhat.com>
495         PR c++/83942 - wrong unused warning with static_cast.
496         * cvt.c (ocp_convert): Call mark_rvalue_use.
498 2018-01-26  Jason Merrill  <jason@redhat.com>
500         PR c++/83956 - wrong dtor error with anonymous union
501         * method.c (walk_field_subobs): Variant members only affect
502         deletedness.
503         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
505         PR c++/84036 - ICE with variadic capture.
506         PR c++/82249
507         * pt.c (tsubst_pack_expansion): When optimizing a simple
508         substitution, pull a single pack expansion out of its pack.
510         PR c++/82514 - ICE with local class in generic lambda.
511         * pt.c (regenerated_lambda_fn_p): Remove.
512         (enclosing_instantiation_of): Don't use it.
513         (tsubst_function_decl): Call enclosing_instantiation_of.
515         * pt.c (lookup_template_class_1): Add sanity check.
516         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
518 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
520         PR c++/84031
521         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
522         recursive calls that return ret.
523         (cp_finish_decomp): Ignore unnamed bitfields.
525 2018-01-23  Jason Merrill  <jason@redhat.com>
527         PR c++/82249 - wrong mismatched pack length error.
528         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
529         unsubstituted function parameter pack.
531 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
533         PR c++/83921
534         * decl.c (check_for_uninitialized_const_var): Not static; add
535         bool and tsubst_flags_t parameters; adjust to be used both in
536         constexpr context and not.
537         * constexpr.c (potential_constant_expression_1): Use the above.
538         * cp-tree.h (check_for_uninitialized_const_var): Declare.
540 2018-01-23  Jason Merrill  <jason@redhat.com>
542         PR c++/83947 - ICE with auto declarations.
543         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
544         * decl.c (undeduced_auto_decl): Limit to vars and fns.
546 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
548         PR c++/83974
549         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
550         for pointer to member function types.
552 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
554         PR sanitizer/83987
555         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
556         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
558 2018-01-23  Nathan Sidwell  <nathan@acm.org>
560         PR c++/83988
561         * pt.c (tsubst_baselink): Remove optype assert.
562         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
564 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
566         PR c++/83958
567         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
568         refers to incomplete type.
570 2018-01-23  Nathan Sidwell  <nathan@acm.org>
572         Deprecate ARM-era for scope handling
573         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
574         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
575         cleared.
576         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
577         cleanup handling.
578         * semantics.c (begin_for_scope): Flag_new_for_scope is
579         boolean-like.
580         (finish_for_stmt, begin_range_for_stmt): Likewise.
582 2018-01-22  Jason Merrill  <jason@redhat.com>
584         PR c++/83720
585         * decl2.c (determine_visibility): Fix template_decl handling
586         instead of blocking it.
588         PR c++/83720 - ICE with lambda and LTO.
589         * decl2.c (determine_visibility): Clear template_decl for
590         function-scope decls.  Propagate anonymous linkage from containing
591         function.
593 2018-01-22  Marek Polacek  <polacek@redhat.com>
595         PR c++/81933
596         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
597         split out anything.
599 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
601         PR c++/83895
602         * decl.c (grokdeclarator): Don't diagnose extra parens
603         on typedefs.
605 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
607         PR c++/81167
608         * call.c (joust): Use TREE_TYPE (source) if source is
609         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
611         PR c++/83919
612         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
613         for direct enum init.
614         * decl.c (reshape_init): Likewise.
616 2018-01-19  Marek Polacek  <polacek@redhat.com>
618         * constexpr.c (fold_simple): Simplify.
620 2018-01-18  Jason Merrill  <jason@redhat.com>
622         PR c++/83714
623         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
624         * pt.c (instantiation_dependent_scope_ref_p): True if
625         any_dependent_bases_p.
627 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
629         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
630         vs DECL_NONTRIVIALLY_INITIALIZED_P).
632 2018-01-18  Jason Merrill  <jason@redhat.com>
634         PR c++/82461 - constexpr list-initialized member
635         * constexpr.c (potential_constant_expression_1): Check
636         TARGET_EXPR_DIRECT_INIT_P.
638 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
640         PR c++/81013
641         * decl.c (xref_basetypes): Early return upon error about derived
642         union.
644 2018-01-18  Nathan Sidwell  <nathan@acm.org>
646         PR c++/83160
647         * cp-tree.h (mark_use): Declare.
648         * expr.c (mark_use): Make extern.
649         * call.c (direct_reference_binding): Set inner conv's
650         rvaluedness_matches_p, if it is an identity.
651         (convert_like_real): Mark lvalue or rvalue use for identity as
652         rvaledness_matches_p demands.
654 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
656         PR c++/83824
657         * parser.c (attr_chainon): New function.
658         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
659         cp_parser_namespace_definition, cp_parser_init_declarator,
660         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
661         cp_parser_gnu_attributes_opt): Use it.
662         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
663         cp_parser_objc_struct_declaration): Likewise.  Don't reset
664         prefix_attributes if attributes is error_mark_node.
666 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
668         PR c++/78344
669         * decl.c (grokdeclarator): Do not append the error_mark_node
670         due to an erroneous optional attribute-specifier-seq.
672 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
674         PR c++/83897
675         * cp-gimplify.c (cp_maybe_instrument_return): Handle
676         CLEANUP_POINT_EXPR.
678 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
680         PR c++/81054
681         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
682         error_mark_node when we give an error.
683         * decl.c (cp_finish_decl): Use the latter.
685 2018-01-17  Nathan Sidwell  <nathan@acm.org>
687         PR c++/83287
688         * init.c (build_raw_new_expr): Scan list for lookups to keep.
690 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
692         PR c++/83814
693         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
694         the C++ part.  If processing a template, call
695         fold_non_dependent_expr rather than fully folding.
697 2018-01-17  Jason Merrill  <jason@redhat.com>
699         PR c++/81067 - redundant NULL warning.
700         * call.c (convert_like_real): Restore null_node handling.
702 2018-01-17  Jason Merrill  <jason@redhat.com>
704         PR c++/81843 - ICE with variadic member template.
705         PR c++/72801
706         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
707         template args.
709 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
711         PR c++/83799
712         * pt.c (type_dependent_expression_p): Strip any location wrapper
713         before testing tree codes.
714         (selftest::test_type_dependent_expression_p): New function.
715         (selftest::cp_pt_c_tests): Call it.
717 2018-01-17  Nathan Sidwell  <nathan@acm.org>
719         PR c++/83739
720         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
721         this not a final instantiation.
723 2018-01-16  Jason Merrill  <jason@redhat.com>
725         PR c++/83714 - ICE checking return in template.
726         * typeck.c (check_return_expr): Call build_non_dependent_expr.
728 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
730         PR c++/83817
731         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
732         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
733         instead of CALL_FROM_THUNK_P.
735         PR c++/83825
736         * name-lookup.c (member_vec_dedup): Return early if len is 0.
737         (resort_type_member_vec, set_class_bindings,
738         insert_late_enum_def_bindings): Use vec qsort method instead of
739         calling qsort directly.
741 2018-01-15  Martin Sebor  <msebor@redhat.com>
743         PR c++/83588
744         * class.c (find_flexarrays): Make a record of multiple flexible array
745         members.
747 2018-01-12  Jason Merrill  <jason@redhat.com>
749         PR c++/83186 - ICE with static_cast of list-initialized temporary.
750         * typeck.c (build_static_cast): Use build_non_dependent_expr.
752 2018-01-12  Nathan Sidwell  <nathan@acm.org>
754         * cp-tree.h (mark_rvalue_use): Add parm name.
755         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
756         mark_rvalue_use.
757         * call.c (convert_like_real): Fix formatting.
759 2018-01-11  Jason Merrill  <jason@redhat.com>
761         PR c++/82728 - wrong -Wunused-but-set-variable
762         PR c++/82799
763         PR c++/83690
764         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
765         * decl.c (case_conversion): Likewise.
766         * semantics.c (finish_static_assert): Call
767         perform_implicit_conversion_flags.
769 2018-01-11  Nathan Sidwell  <nathan@acm.org>
771         * method.c (enum mangling_flags): Delete long-dead enum.
773 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
775         * parser.c (cp_parser_std_attribute_spec): When
776         token_pair::require_open / require_close return false simply
777         return error_mark_node, avoid duplicate cp_parser_error about
778         expected '(' / ')', respectively.
780 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
782         PR c++/43486
783         * call.c (null_ptr_cst_p): Strip location wrappers when
784         converting from '0' to a pointer type in C++11 onwards.
785         (conversion_null_warnings): Replace comparison with null_node with
786         call to null_node_p.
787         (build_over_call): Likewise.
788         * cp-gimplify.c (cp_fold): Remove the early bailout when
789         processing_template_decl.
790         * cp-lang.c (selftest::run_cp_tests): Call
791         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
792         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
793         (selftest::run_cp_tests): Move decl to bottom of file.
794         (null_node_p): New inline function.
795         (selftest::cp_pt_c_tests): New decl.
796         (selftest::cp_tree_c_tests): New decl.
797         * cvt.c (build_expr_type_conversion): Replace comparison with
798         null_node with call to null_node_p.
799         * error.c (args_to_string): Likewise.
800         * except.c (build_throw): Likewise.
801         * mangle.c (write_expression): Skip location wrapper nodes.
802         * parser.c (literal_integer_zerop): New function.
803         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
804         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
805         param of cp_parser_parenthesized_expression_list.  When calling
806         warn_for_memset, replace integer_zerop calls with
807         literal_integer_zerop, eliminating the double logical negation
808         cast to bool.  Eliminate the special-casing for CONST_DECL in
809         favor of the fold_for_warn within warn_for_memset.
810         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
811         param, defaulting to false.  Convert "expr" to a cp_expr, and call
812         maybe_add_location_wrapper on it when wrap_locations_p is true.
813         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
814         the result for RID_ALIGNOF and RID_SIZEOF.
815         (cp_parser_builtin_offsetof): Likewise.
816         * pt.c: Include "selftest.h".
817         (tsubst_copy): Handle location wrappers.
818         (tsubst_copy_and_build): Likewise.
819         (build_non_dependent_expr): Likewise.
820         (selftest::test_build_non_dependent_expr): New function.
821         (selftest::cp_pt_c_tests): New function.
822         * tree.c: Include "selftest.h".
823         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
824         (selftest::test_lvalue_kind): New function.
825         (selftest::cp_tree_c_tests): New function.
826         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
827         (cp_build_binary_op): Replace comparison with null_node with call
828         to null_node_p.
829         (build_address): Use location of operand when building address
830         expression.
832 2018-01-10  Marek Polacek  <polacek@redhat.com>
834         PR c++/82541
835         * call.c (build_conditional_expr_1): Check complain before warning.
836         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
837         -Wduplicated-branches.
839 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
841         PR c++/81327
842         * call.c (maybe_warn_class_memaccess): Add forward declaration.
843         Change last argument from tree * to const vec<tree, va_gc> *, adjust
844         args uses and check number of operands too.  Don't strip away any
845         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
846         Deal with src argument not having pointer type.  Check
847         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
848         test.
849         (build_over_call): Call maybe_warn_class_memaccess here on the
850         original arguments.
851         (build_cxx_call): Rather than here on converted arguments.
853 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
855         PR c++/81055
856         * init.c (build_vec_init): Avoid building an INIT_EXPR with
857         error_mark_node as second argument.
859 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
861         PR c++/83734
862         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
863         in STATEMENT_LIST.  Remove unneeded assert.
865 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
866             Alan Hayward  <alan.hayward@arm.com>
867             David Sherwood  <david.sherwood@arm.com>
869         * constexpr.c (cxx_eval_array_reference): Handle polynomial
870         VECTOR_CST_NELTS.
871         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
872         * call.c (build_conditional_expr_1): Likewise.
873         * decl.c (cp_finish_decomp): Likewise.
874         * mangle.c (write_type): Likewise.
875         * typeck.c (structural_comptypes): Likewise.
876         (cp_build_binary_op): Likewise.
877         * typeck2.c (process_init_constructor_array): Likewise.
879 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
881         PR c++/83555
882         * typeck.c (build_static_cast_1): For static casts to reference types,
883         call build_base_path with flag_delete_null_pointer_checks as nonnull
884         instead of always false.  When -fsanitize=null, call
885         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
886         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
887         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
889 2018-01-03  Nathan Sidwell  <nathan@acm.org>
891         PR c++/83667
892         * method.c (make_alias_for): Copy DECL_CONTEXT.
894 2018-01-03  Marek Polacek  <polacek@redhat.com>
896         PR c++/83592
897         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
899 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
901         PR preprocessor/83602
902         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
903         for builtin macros.
905         PR c++/83634
906         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
907         error_mark_node, return error_mark_node.
909         Update copyright years.
911 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
913         PR c++/83556
914         * tree.c (replace_placeholders_r): Pass NULL as last argument to
915         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
916         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
917         to false and return.
918         (replace_placeholders): Pass NULL instead of &pset as last argument
919         to cp_walk_tree.
921 2018-01-02  Nathan Sidwell  <nathan@acm.org>
923         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
924         lval var.
926 Copyright (C) 2018 Free Software Foundation, Inc.
928 Copying and distribution of this file, with or without modification,
929 are permitted in any medium without royalty provided the copyright
930 notice and this notice are preserved.