[PR c++/84426] ICE after conflicting member decl
[official-gcc.git] / gcc / cp / ChangeLog
blobdbb678cbd48c795d7d5f5d197de4a24d25111553
1 2018-02-27  Nathan Sidwell  <nathan@acm.org>
3         PR c++/84426
4         * name-lookup.h (get_member_slot): Rename ...
5         (find_member_slot): ... here.
6         (add_member_slot): New.
7         * name-lookup.c (member_vec_linear_search): No need to check for
8         NULL slot.
9         (get_member_slot): Rename ...
10         (find_member_slot): ... here.  Don't add slot for incomplete class.
11         (add_member_slot): New.
12         * class.c (add_method): Adjust get_member_slot rename.  Bail out
13         if push_class_level_binding fails.  Create slot and grok
14         properties once we're committed to insertion.
16 2018-02-27  Jason Merrill  <jason@redhat.com>
18         PR c++/84489 - dependent default template argument
19         * pt.c (type_unification_real): Handle early substitution failure.
21 2018-02-26  Jason Merrill  <jason@redhat.com>
23         PR c++/84560 - ICE capturing multi-dimensional VLA.
24         * tree.c (array_of_runtime_bound_p): False if the element is
25         variably-modified.
27         PR c++/84441 - ICE with base initialized from ?:
28         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
30         PR c++/84520 - ICE with generic lambda in NSDMI.
31         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
32         'this' in a generic lambda instantiation.
34         PR c++/84559 - ICE with constexpr VLA.
35         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
36         for constexpr variable with VLA type.
38 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
40         PR c++/84558
41         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
42         a valid constant initializer.  Formatting fixes.
44 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
46         PR c++/84540
47         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
48         returning NULL_TREE.
49         (apply_late_template_attributes): Likewise.
51 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
53         PR c++/84557
54         * parser.c (cp_parser_omp_var_list_no_open): Only call
55         cp_parser_lookup_name_simple on names satisfying identifier_p.
56         (cp_parser_oacc_routine): Likewise.
58 2018-02-26  Jason Merrill  <jason@redhat.com>
60         PR c++/84551 - ICE with concepts and -g.
61         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
63 2018-02-26  Marek Polacek  <polacek@redhat.com>
65         PR c++/84325
66         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
67         non-types.
69 2018-02-26  Jason Merrill  <jason@redhat.com>
71         PR c++/84447 - ICE with deleted inherited ctor with default arg.
72         * call.c (build_over_call): Handle deleted functions in one place.
74 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
76         PR c++/84533
77         * decl.c (redeclaration_error_message): Don't try to use
78         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
80 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
82         * lambda.c (build_capture_proxy): Define static.
83         * cp-tree.h (build_capture_proxy): Remove.
85 2018-02-26  Marek Polacek  <polacek@redhat.com>
87         PR c++/84537
88         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
89         if name is error node.
91 2018-02-25  Jason Merrill  <jason@redhat.com>
93         PR c++/84015 - ICE with class deduction and auto template parm.
94         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
96 2018-02-24  Marek Polacek  <polacek@redhat.com>
98         PR c++/83692
99         * constexpr.c (maybe_constant_init_1): New function.
100         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
101         (cxx_constant_init): New function.
102         * cp-tree.h (cxx_constant_init): Declare.
103         * typeck2.c (store_init_value): Call cxx_constant_init instead of
104         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
106 2018-02-22  Jason Merrill  <jason@redhat.com>
108         PR c++/70468 - ICE with constructor delegation via typedef.
109         * pt.c (tsubst_initializer_list): Check for other mem-initializers
110         with constructor delegation.
112 2018-02-22  Jason Merrill  <jason@redhat.com>
114         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
115         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
116         VECTOR_TYPE.
118 2018-02-22  Marek Polacek  <polacek@redhat.com>
120         PR c++/84493
121         * parser.c (cp_parser_braced_list): Use require_open instead of
122         consume_open.
124 2018-02-21  Jason Merrill  <jason@redhat.com>
126         PR c++/84454 - ICE with pack expansion in signature.
127         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
129 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
131         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
132         IF_STMT.
134 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
136         PR c++/84446
137         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
138         on error_mark_node.
140 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
142         PR c++/84445
143         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
144         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
146         PR c++/84449
147         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
148         returns error_mark_node, return it immediately.
149         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
150         error_mark_node, return error_mark_node.
152         PR c++/84455
153         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
154         function_depth to avoid GC during finish_lambda_function.
156 2018-02-19  Jason Merrill  <jason@redhat.com>
158         PR c++/84429 - ICE capturing VLA.
159         * lambda.c (build_capture_proxy): Handle reference refs.
161 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
163         PR c++/84448
164         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
165         either operand is error_mark_node, set current.lhs to that instead of
166         creating a binary op with error_mark_node operands.
168         PR c++/84430
169         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
171 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
173         PR c++/84348
174         * decl.c (grokdeclarator): Early return error_mark_node upon
175         ill-formed friend declaration.
177 2018-02-16  Marek Polacek  <polacek@redhat.com>
178             Jakub Jelinek  <jakub@redhat.com>
180         PR c++/84192
181         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
182         set *jump_target to anything if jump_target is NULL.
184 2018-02-16  Jason Merrill  <jason@redhat.com>
186         PR c++/84151 - unnecessary volatile load with static member.
187         * call.c (build_new_method_call_1): Avoid loading from a volatile
188         lvalue used as the object argument for a static member function.
190         PR c++/81853 - using-directive and constexpr.
191         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
193         PR c++/84420 - ICE with structured binding in lambda.
194         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
196         PR c++/83835 - C++17 error with constructor ctors.
197         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
199         PR c++/82664 - ICE with reference to function template parm.
200         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
201         NOP_EXPRs.
203         PR c++/82764 - C++17 ICE with empty base
204         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
206 2018-02-16  Jason Merrill  <jason@redhat.com>
208         PR c++/84421 - type-dependent if constexpr
209         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
211 2018-02-16  Nathan Sidwell  <nathan@acm.org>
213         Deprecate -ffriend-injection.
214         * decl.c (cxx_init_decl_processing): Emit warning on option.
215         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
216         friend.
218 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
220         PR c++/82468
221         * decl.c (check_special_function_return_type): Reject template
222         template parameter in deduction guide.
224 2018-02-16  Nathan Sidwell  <nathan@acm.org>
226         PR c++/84375
227         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
229 2018-02-15  Jason Merrill  <jason@redhat.com>
231         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
232         * call.c (convert_like_real): Don't use the copy-list-initialization
233         shortcut for ck_base.
235         PR c++/84045 - ICE with typedef and noexcept.
236         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
238         PR c++/84376 - ICE with omitted template arguments.
239         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
241         PR c++/84368 - wrong error with local variable in variadic lambda.
242         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
243         local_specializations.
245 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
247         PR c++/84330
248         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
249         as first argument.
251 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
253         PR c++/84350
254         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
255         init, early return.
257 2018-02-14  Nathan Sidwell  <nathan@acm.org>
259         * decl2.c (mark_vtable_entries): Set input_location to decl's.
260         (c_parse_final_cleanups): Restore input_location after emitting
261         vtables.
263 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
265         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
266         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
267         auto_deduction_context, tree, int): Add defaults.
268         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
269         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
270         tsubst_flags_t argument.
271         * init.c (build_new): Likewise.
273 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
275         PR c++/84364
276         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
277         about return other than *this in assignment operators if
278         retval is type dependent expression.
280 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
282         PR c++/84333
283         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
284         save_expr for the G++ extension.
286 2018-02-13  Jason Merrill  <jason@redhat.com>
288         PR c++/84080 - ICE with return type deduction and specialization.
289         * pt.c (determine_specialization): Check uses_template_parms.
291         Fix more variadic capture issues.
292         * pt.c (find_parameter_packs_r): Also look at explicit captures.
293         (check_for_bare_parameter_packs): Check current_class_type for
294         lambda context.
295         (extract_locals_r): Handle seeing a full instantiation of a pack.
296         (tsubst_pack_expansion): Likewise.  Force lambda capture.
297         * parser.c (cp_parser_lambda_introducer): Don't
298         check_for_bare_parameter_packs.
300         PR c++/84338 - wrong variadic sizeof.
301         * pt.c (argument_pack_select_arg): Like the macro, but look through
302         a pack expansion.
303         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
304         (extract_fnparm_pack): Do make_pack_expansion.
305         (extract_locals_r): Do strip a pack expansion.
306         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
308 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
310         PR c++/84341
311         * parser.c (cp_parser_binary_expression): Use build_min instead of
312         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
314 2018-02-12  Nathan Sidwell  <nathan@acm.org>
316         PR c++/84263
317         * parser.c (cp_parser_decltype): Push and pop
318         deferring_access_checks.  Reorganize to avoid goto.
320 2018-02-12  Richard Biener  <rguenther@suse.de>
322         PR c++/84281
323         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
324         uniform constructors and delay allocating them fully.
326 2018-02-09  Jason Merrill  <jason@redhat.com>
328         PR c++/84036 - ICE with variadic capture.
329         Handle variadic capture proxies more like non-variadic.
330         * lambda.c (build_capture_proxy): Remove workaround.
331         * pt.c (find_parameter_packs_r): The proxy is a pack.
332         (instantiate_class_template_1): Remove dead lambda code.
333         (extract_fnparm_pack): Don't make_pack_expansion.
334         (extract_locals_r): Don't strip a pack expansion.
335         (tsubst_pack_expansion): Handle proxy packs.  Use
336         PACK_EXPANSION_EXTRA_ARGS less.
337         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
338         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
339         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
340         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
341         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
343 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
345         PR sanitizer/83987
346         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
348 2018-02-09  Jason Merrill  <jason@redhat.com>
350         PR c++/81917 - ICE with void_t and partial specialization.
351         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
352         calling most_specialized_partial_spec.
354 2018-02-09  Nathan Sidwell  <nathan@acm.org>
356         PR c/84293
357         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
358         Pass expr location to strict_aliasing_warning.
360 2018-02-09  Jason Merrill  <jason@redhat.com>
362         PR c++/84296 - ICE with qualified-id in template.
363         PR c++/83714
364         * pt.c (unknown_base_ref_p): New.
365         (instantiation_dependent_scope_ref_p): Use it instead of
366         any_dependent_bases_p.
368 2018-02-09  Marek Polacek  <polacek@redhat.com>
369             Jakub Jelinek  <jakub@redhat.com>
371         PR c++/83659
372         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
373         fold_indirect_ref_1, including poly_*int64.  Verify first that
374         tree_fits_poly_int64_p (op01).  Formatting fixes.
376 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
378         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
379         * lambda.c (build_capture_proxy): Likewise.
380         * search.c (field_access_p): Likewise.
381         * semantics.c (omp_clause_decl, omp_privatize_field,
382         finish_omp_clauses): Likewise.
384 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
386         PR c++/83806
387         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
388         case of nullptr too.
390 2018-02-08  Nathan Sidwell  <nathan@acm.org>
392         * class.c (finish_struct): Fix std:initializer_list diagnostic
393         formatting.
395 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
397         PR c++/83204
398         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
400 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
402         PR c++/84082
403         * parser.c (cp_parser_dot_deref_incomplete): New function.
404         (cp_parser_postfix_dot_deref_expression): Use it.
406 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
408         PR c++/81610
409         PR c++/80567
410         * name-lookup.c (suggest_rid_p): New function.
411         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
412         suggest_rid_p.
414 2018-02-07  Jason Merrill  <jason@redhat.com>
416         PR c++/84182 - ICE with captured lambda
417         PR c++/84181
418         * pt.c (extract_locals_r, extract_local_specs): New.
419         (tsubst_pack_expansion): Use them.
421 2018-02-07  Martin Liska  <mliska@suse.cz>
423         PR c++/84059.
424         * class.c (add_method): Append argument value.
425         * cp-tree.h (maybe_version_functions): Add new argument.
426         * decl.c (decls_match): Call it if a declaration does not
427         have DECL_FUNCTION_VERSIONED.
428         (maybe_version_functions): record argument is added.
430 2018-02-05  Marek Polacek  <polacek@redhat.com>
432         * class.c: Remove unused global variables.
433         (build_primary_vtable): Don't gather statistics.
434         (print_class_statistics): Remove.
435         * cp-tree.h (print_class_statistics): Remove.
436         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
438 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
440         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
441         * constexpr.c (cx_check_missing_mem_inits): Likewise.
442         * decl.c (next_initializable_field, find_decomp_class_base,
443         cp_finish_decomp): Likewise.
444         * typeck2.c (process_init_constructor_record): Likewise.
446 2018-02-02  Jason Merrill  <jason@redhat.com>
448         PR c++/84181 - ICE with lambda parm in template argument.
449         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
451 2018-02-01  Jason Merrill  <jason@redhat.com>
453         PR c++/84160 - ICE with nested variadic capture.
454         * lambda.c (is_capture_proxy_with_ref): New.
455         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
456         COMPONENT_REF.
457         * expr.c (mark_use): Use is_capture_proxy_with_ref.
458         * constexpr.c (potential_constant_expression_1): Likewise.
459         * semantics.c (process_outer_var_ref): Likewise.
461 2018-02-01  Marek Polacek  <polacek@redhat.com>
463         PR c++/84125
464         * typeck.c (build_address): Relax the assert when
465         processing_template_decl.
467 2018-02-01  Jason Merrill  <jason@redhat.com>
469         PR c++/84126 - ICE with variadic generic lambda
470         PR c++/84036
471         PR c++/82249
472         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
473         PACK_EXPANSION_EXTRA_ARGS.
475 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
477         PR c++/83796
478         * call.c (convert_like_real): If w're initializing from {} explicitly
479         call abstract_virtuals_error_sfinae.
481 2018-01-31  Jason Merrill  <jason@redhat.com>
482             Jakub Jelinek  <jakub@redhat.com>
484         PR c++/83993
485         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
486         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
487         on ADDR_EXPR.
489 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
491         PR c++/83993
492         * constexpr.c (diag_array_subscript): Emit different diagnostics
493         if TYPE_DOMAIN (arraytype) is NULL.
494         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
495         with NULL TYPE_DOMAIN use size_zero_node as nelts.
497 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
499         PR c++/84092
500         * semantics.c (finish_qualified_id_expr): When handling an
501         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
503 2018-01-31  Marek Polacek  <polacek@redhat.com>
505         PR c++/84138
506         * cp-gimplify.c (cp_fold): Check if X is an error node before
507         calling useless_type_conversion_p.
509 2018-01-30  Jason Merrill  <jason@redhat.com>
511         PR c++/84091 - ICE with local class in lambda in template.
512         * decl2.c (determine_visibility): Look for outer containing template
513         instantiation.
515         PR c++/84098 - ICE with lambda in template NSDMI.
516         * pt.c (instantiate_class_template_1): Ignore more lambdas.
518 2018-01-29  Jason Merrill  <jason@redhat.com>
520         PR c++/68810 - wrong location for reinterpret_cast error.
521         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
522         !dofold.
524 2018-01-29  Marek Polacek  <polacek@redhat.com>
526         PR c++/83996
527         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
528         => fooarray[1] in offset_int.
530 2018-01-29  Jason Merrill  <jason@redhat.com>
532         PR c++/83942 - wrong unused warning with static_cast.
533         * cvt.c (ocp_convert): Call mark_rvalue_use.
535 2018-01-26  Jason Merrill  <jason@redhat.com>
537         PR c++/83956 - wrong dtor error with anonymous union
538         * method.c (walk_field_subobs): Variant members only affect
539         deletedness.
540         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
542         PR c++/84036 - ICE with variadic capture.
543         PR c++/82249
544         * pt.c (tsubst_pack_expansion): When optimizing a simple
545         substitution, pull a single pack expansion out of its pack.
547         PR c++/82514 - ICE with local class in generic lambda.
548         * pt.c (regenerated_lambda_fn_p): Remove.
549         (enclosing_instantiation_of): Don't use it.
550         (tsubst_function_decl): Call enclosing_instantiation_of.
552         * pt.c (lookup_template_class_1): Add sanity check.
553         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
555 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
557         PR c++/84031
558         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
559         recursive calls that return ret.
560         (cp_finish_decomp): Ignore unnamed bitfields.
562 2018-01-23  Jason Merrill  <jason@redhat.com>
564         PR c++/82249 - wrong mismatched pack length error.
565         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
566         unsubstituted function parameter pack.
568 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
570         PR c++/83921
571         * decl.c (check_for_uninitialized_const_var): Not static; add
572         bool and tsubst_flags_t parameters; adjust to be used both in
573         constexpr context and not.
574         * constexpr.c (potential_constant_expression_1): Use the above.
575         * cp-tree.h (check_for_uninitialized_const_var): Declare.
577 2018-01-23  Jason Merrill  <jason@redhat.com>
579         PR c++/83947 - ICE with auto declarations.
580         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
581         * decl.c (undeduced_auto_decl): Limit to vars and fns.
583 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
585         PR c++/83974
586         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
587         for pointer to member function types.
589 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
591         PR sanitizer/83987
592         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
593         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
595 2018-01-23  Nathan Sidwell  <nathan@acm.org>
597         PR c++/83988
598         * pt.c (tsubst_baselink): Remove optype assert.
599         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
601 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
603         PR c++/83958
604         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
605         refers to incomplete type.
607 2018-01-23  Nathan Sidwell  <nathan@acm.org>
609         Deprecate ARM-era for scope handling
610         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
611         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
612         cleared.
613         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
614         cleanup handling.
615         * semantics.c (begin_for_scope): Flag_new_for_scope is
616         boolean-like.
617         (finish_for_stmt, begin_range_for_stmt): Likewise.
619 2018-01-22  Jason Merrill  <jason@redhat.com>
621         PR c++/83720
622         * decl2.c (determine_visibility): Fix template_decl handling
623         instead of blocking it.
625         PR c++/83720 - ICE with lambda and LTO.
626         * decl2.c (determine_visibility): Clear template_decl for
627         function-scope decls.  Propagate anonymous linkage from containing
628         function.
630 2018-01-22  Marek Polacek  <polacek@redhat.com>
632         PR c++/81933
633         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
634         split out anything.
636 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
638         PR c++/83895
639         * decl.c (grokdeclarator): Don't diagnose extra parens
640         on typedefs.
642 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
644         PR c++/81167
645         * call.c (joust): Use TREE_TYPE (source) if source is
646         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
648         PR c++/83919
649         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
650         for direct enum init.
651         * decl.c (reshape_init): Likewise.
653 2018-01-19  Marek Polacek  <polacek@redhat.com>
655         * constexpr.c (fold_simple): Simplify.
657 2018-01-18  Jason Merrill  <jason@redhat.com>
659         PR c++/83714
660         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
661         * pt.c (instantiation_dependent_scope_ref_p): True if
662         any_dependent_bases_p.
664 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
666         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
667         vs DECL_NONTRIVIALLY_INITIALIZED_P).
669 2018-01-18  Jason Merrill  <jason@redhat.com>
671         PR c++/82461 - constexpr list-initialized member
672         * constexpr.c (potential_constant_expression_1): Check
673         TARGET_EXPR_DIRECT_INIT_P.
675 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
677         PR c++/81013
678         * decl.c (xref_basetypes): Early return upon error about derived
679         union.
681 2018-01-18  Nathan Sidwell  <nathan@acm.org>
683         PR c++/83160
684         * cp-tree.h (mark_use): Declare.
685         * expr.c (mark_use): Make extern.
686         * call.c (direct_reference_binding): Set inner conv's
687         rvaluedness_matches_p, if it is an identity.
688         (convert_like_real): Mark lvalue or rvalue use for identity as
689         rvaledness_matches_p demands.
691 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
693         PR c++/83824
694         * parser.c (attr_chainon): New function.
695         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
696         cp_parser_namespace_definition, cp_parser_init_declarator,
697         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
698         cp_parser_gnu_attributes_opt): Use it.
699         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
700         cp_parser_objc_struct_declaration): Likewise.  Don't reset
701         prefix_attributes if attributes is error_mark_node.
703 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
705         PR c++/78344
706         * decl.c (grokdeclarator): Do not append the error_mark_node
707         due to an erroneous optional attribute-specifier-seq.
709 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
711         PR c++/83897
712         * cp-gimplify.c (cp_maybe_instrument_return): Handle
713         CLEANUP_POINT_EXPR.
715 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
717         PR c++/81054
718         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
719         error_mark_node when we give an error.
720         * decl.c (cp_finish_decl): Use the latter.
722 2018-01-17  Nathan Sidwell  <nathan@acm.org>
724         PR c++/83287
725         * init.c (build_raw_new_expr): Scan list for lookups to keep.
727 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
729         PR c++/83814
730         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
731         the C++ part.  If processing a template, call
732         fold_non_dependent_expr rather than fully folding.
734 2018-01-17  Jason Merrill  <jason@redhat.com>
736         PR c++/81067 - redundant NULL warning.
737         * call.c (convert_like_real): Restore null_node handling.
739 2018-01-17  Jason Merrill  <jason@redhat.com>
741         PR c++/81843 - ICE with variadic member template.
742         PR c++/72801
743         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
744         template args.
746 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
748         PR c++/83799
749         * pt.c (type_dependent_expression_p): Strip any location wrapper
750         before testing tree codes.
751         (selftest::test_type_dependent_expression_p): New function.
752         (selftest::cp_pt_c_tests): Call it.
754 2018-01-17  Nathan Sidwell  <nathan@acm.org>
756         PR c++/83739
757         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
758         this not a final instantiation.
760 2018-01-16  Jason Merrill  <jason@redhat.com>
762         PR c++/83714 - ICE checking return in template.
763         * typeck.c (check_return_expr): Call build_non_dependent_expr.
765 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
767         PR c++/83817
768         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
769         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
770         instead of CALL_FROM_THUNK_P.
772         PR c++/83825
773         * name-lookup.c (member_vec_dedup): Return early if len is 0.
774         (resort_type_member_vec, set_class_bindings,
775         insert_late_enum_def_bindings): Use vec qsort method instead of
776         calling qsort directly.
778 2018-01-15  Martin Sebor  <msebor@redhat.com>
780         PR c++/83588
781         * class.c (find_flexarrays): Make a record of multiple flexible array
782         members.
784 2018-01-12  Jason Merrill  <jason@redhat.com>
786         PR c++/83186 - ICE with static_cast of list-initialized temporary.
787         * typeck.c (build_static_cast): Use build_non_dependent_expr.
789 2018-01-12  Nathan Sidwell  <nathan@acm.org>
791         * cp-tree.h (mark_rvalue_use): Add parm name.
792         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
793         mark_rvalue_use.
794         * call.c (convert_like_real): Fix formatting.
796 2018-01-11  Jason Merrill  <jason@redhat.com>
798         PR c++/82728 - wrong -Wunused-but-set-variable
799         PR c++/82799
800         PR c++/83690
801         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
802         * decl.c (case_conversion): Likewise.
803         * semantics.c (finish_static_assert): Call
804         perform_implicit_conversion_flags.
806 2018-01-11  Nathan Sidwell  <nathan@acm.org>
808         * method.c (enum mangling_flags): Delete long-dead enum.
810 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
812         * parser.c (cp_parser_std_attribute_spec): When
813         token_pair::require_open / require_close return false simply
814         return error_mark_node, avoid duplicate cp_parser_error about
815         expected '(' / ')', respectively.
817 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
819         PR c++/43486
820         * call.c (null_ptr_cst_p): Strip location wrappers when
821         converting from '0' to a pointer type in C++11 onwards.
822         (conversion_null_warnings): Replace comparison with null_node with
823         call to null_node_p.
824         (build_over_call): Likewise.
825         * cp-gimplify.c (cp_fold): Remove the early bailout when
826         processing_template_decl.
827         * cp-lang.c (selftest::run_cp_tests): Call
828         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
829         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
830         (selftest::run_cp_tests): Move decl to bottom of file.
831         (null_node_p): New inline function.
832         (selftest::cp_pt_c_tests): New decl.
833         (selftest::cp_tree_c_tests): New decl.
834         * cvt.c (build_expr_type_conversion): Replace comparison with
835         null_node with call to null_node_p.
836         * error.c (args_to_string): Likewise.
837         * except.c (build_throw): Likewise.
838         * mangle.c (write_expression): Skip location wrapper nodes.
839         * parser.c (literal_integer_zerop): New function.
840         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
841         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
842         param of cp_parser_parenthesized_expression_list.  When calling
843         warn_for_memset, replace integer_zerop calls with
844         literal_integer_zerop, eliminating the double logical negation
845         cast to bool.  Eliminate the special-casing for CONST_DECL in
846         favor of the fold_for_warn within warn_for_memset.
847         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
848         param, defaulting to false.  Convert "expr" to a cp_expr, and call
849         maybe_add_location_wrapper on it when wrap_locations_p is true.
850         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
851         the result for RID_ALIGNOF and RID_SIZEOF.
852         (cp_parser_builtin_offsetof): Likewise.
853         * pt.c: Include "selftest.h".
854         (tsubst_copy): Handle location wrappers.
855         (tsubst_copy_and_build): Likewise.
856         (build_non_dependent_expr): Likewise.
857         (selftest::test_build_non_dependent_expr): New function.
858         (selftest::cp_pt_c_tests): New function.
859         * tree.c: Include "selftest.h".
860         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
861         (selftest::test_lvalue_kind): New function.
862         (selftest::cp_tree_c_tests): New function.
863         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
864         (cp_build_binary_op): Replace comparison with null_node with call
865         to null_node_p.
866         (build_address): Use location of operand when building address
867         expression.
869 2018-01-10  Marek Polacek  <polacek@redhat.com>
871         PR c++/82541
872         * call.c (build_conditional_expr_1): Check complain before warning.
873         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
874         -Wduplicated-branches.
876 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
878         PR c++/81327
879         * call.c (maybe_warn_class_memaccess): Add forward declaration.
880         Change last argument from tree * to const vec<tree, va_gc> *, adjust
881         args uses and check number of operands too.  Don't strip away any
882         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
883         Deal with src argument not having pointer type.  Check
884         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
885         test.
886         (build_over_call): Call maybe_warn_class_memaccess here on the
887         original arguments.
888         (build_cxx_call): Rather than here on converted arguments.
890 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
892         PR c++/81055
893         * init.c (build_vec_init): Avoid building an INIT_EXPR with
894         error_mark_node as second argument.
896 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
898         PR c++/83734
899         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
900         in STATEMENT_LIST.  Remove unneeded assert.
902 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
903             Alan Hayward  <alan.hayward@arm.com>
904             David Sherwood  <david.sherwood@arm.com>
906         * constexpr.c (cxx_eval_array_reference): Handle polynomial
907         VECTOR_CST_NELTS.
908         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
909         * call.c (build_conditional_expr_1): Likewise.
910         * decl.c (cp_finish_decomp): Likewise.
911         * mangle.c (write_type): Likewise.
912         * typeck.c (structural_comptypes): Likewise.
913         (cp_build_binary_op): Likewise.
914         * typeck2.c (process_init_constructor_array): Likewise.
916 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
918         PR c++/83555
919         * typeck.c (build_static_cast_1): For static casts to reference types,
920         call build_base_path with flag_delete_null_pointer_checks as nonnull
921         instead of always false.  When -fsanitize=null, call
922         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
923         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
924         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
926 2018-01-03  Nathan Sidwell  <nathan@acm.org>
928         PR c++/83667
929         * method.c (make_alias_for): Copy DECL_CONTEXT.
931 2018-01-03  Marek Polacek  <polacek@redhat.com>
933         PR c++/83592
934         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
936 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
938         PR preprocessor/83602
939         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
940         for builtin macros.
942         PR c++/83634
943         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
944         error_mark_node, return error_mark_node.
946         Update copyright years.
948 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
950         PR c++/83556
951         * tree.c (replace_placeholders_r): Pass NULL as last argument to
952         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
953         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
954         to false and return.
955         (replace_placeholders): Pass NULL instead of &pset as last argument
956         to cp_walk_tree.
958 2018-01-02  Nathan Sidwell  <nathan@acm.org>
960         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
961         lval var.
963 Copyright (C) 2018 Free Software Foundation, Inc.
965 Copying and distribution of this file, with or without modification,
966 are permitted in any medium without royalty provided the copyright
967 notice and this notice are preserved.