1 2018-02-27 Nathan Sidwell <nathan@acm.org>
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
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
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>
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>
47 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
49 (apply_late_template_attributes): Likewise.
51 2018-02-26 Jakub Jelinek <jakub@redhat.com>
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>
66 * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
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>
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>
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>
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
118 2018-02-22 Marek Polacek <polacek@redhat.com>
121 * parser.c (cp_parser_braced_list): Use require_open instead of
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
134 2018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
137 * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
140 2018-02-20 Jakub Jelinek <jakub@redhat.com>
143 * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
144 TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
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.
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>
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.
169 * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
171 2018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
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>
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
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
218 2018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
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>
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>
248 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
251 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
254 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
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
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>
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>
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
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
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>
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>
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>
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>
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>
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.
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>
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>
387 * typeck.c (decay_conversion): Use mark_rvalue_use for the special
390 2018-02-08 Nathan Sidwell <nathan@acm.org>
392 * class.c (finish_struct): Fix std:initializer_list diagnostic
395 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
398 * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
400 2018-02-07 Jakub Jelinek <jakub@redhat.com>
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>
410 * name-lookup.c (suggest_rid_p): New function.
411 (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
414 2018-02-07 Jason Merrill <jason@redhat.com>
416 PR c++/84182 - ICE with captured lambda
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>
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
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>
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
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>
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>
485 * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
486 around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
489 2018-01-31 Jakub Jelinek <jakub@redhat.com>
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>
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>
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
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
524 2018-01-29 Marek Polacek <polacek@redhat.com>
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
540 (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
542 PR c++/84036 - ICE with variadic capture.
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>
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>
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>
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>
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>
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>
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
613 * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
615 * semantics.c (begin_for_scope): Flag_new_for_scope is
617 (finish_for_stmt, begin_range_for_stmt): Likewise.
619 2018-01-22 Jason Merrill <jason@redhat.com>
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
630 2018-01-22 Marek Polacek <polacek@redhat.com>
633 * typeck2.c (split_nonconstant_init_1): Return false if we didn't
636 2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
639 * decl.c (grokdeclarator): Don't diagnose extra parens
642 2018-01-19 Jakub Jelinek <jakub@redhat.com>
645 * call.c (joust): Use TREE_TYPE (source) if source is
646 a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
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>
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>
678 * decl.c (xref_basetypes): Early return upon error about derived
681 2018-01-18 Nathan Sidwell <nathan@acm.org>
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>
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>
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>
712 * cp-gimplify.c (cp_maybe_instrument_return): Handle
715 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
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>
725 * init.c (build_raw_new_expr): Scan list for lookups to keep.
727 2018-01-17 David Malcolm <dmalcolm@redhat.com>
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.
743 * pt.c (unify_pack_expansion): Don't try to deduce enclosing
746 2018-01-17 David Malcolm <dmalcolm@redhat.com>
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>
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>
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.
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>
781 * class.c (find_flexarrays): Make a record of multiple flexible array
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
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
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>
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
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
866 (build_address): Use location of operand when building address
869 2018-01-10 Marek Polacek <polacek@redhat.com>
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>
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
886 (build_over_call): Call maybe_warn_class_memaccess here on the
888 (build_cxx_call): Rather than here on converted arguments.
890 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
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>
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
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>
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>
929 * method.c (make_alias_for): Copy DECL_CONTEXT.
931 2018-01-03 Marek Polacek <polacek@redhat.com>
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
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>
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
955 (replace_placeholders): Pass NULL instead of &pset as last argument
958 2018-01-02 Nathan Sidwell <nathan@acm.org>
960 * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
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.