1 2018-10-24 Jakub Jelinek <jakub@redhat.com>
4 * parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
5 :: is not present and attr_ns non-NULL, canonicalize also attr_id.
6 (cp_parser_attribute_spec): Fix comment typo.
8 2018-10-24 Martin Sebor <msebor@redhat.com>
11 * call.c (maybe_warn_class_memaccess): Tighten up.
13 2018-10-17 David Malcolm <dmalcolm@redhat.com>
15 * Make-lang.in (selftest-c++): New.
16 (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
17 (selftest-c++-gdb, selftest-c++-valgrind): Move here from
20 2018-10-17 Paolo Carlini <paolo.carlini@oracle.com>
23 * tree.c (build_cplus_new): Avoid duplicate diagnostic about
24 incomplete type, early return error_mark_node if the second
25 argument is error_mark_node.
27 2018-10-12 Nathan Sidwell <nathan@acm.org>
29 * parser.h (struct cp_parser): Drop implicit_extern_c.
30 * parser.c (cp_debug_parser): Drop implicit_extern_c.
31 (cp_parser_new): Likewise.
32 (cp_parser_translation_unit): Handle implicit extern c here. Call
33 cp_parser_toplevel_declaration.
34 (cp_parser_toplevel_declaration): New, broken out of ...
35 (cp_parser_declaration_seq_opt): ... here. Call it. Drop
36 implicit extern C handling.
38 2018-10-11 Will Wray <wjwray@gmail.com>
41 * cxx-pretty-print.c (pp_cxx_enumeration_constant): New function.
42 (cxx_pretty_printer::constant): Use it.
44 2018-10-11 David Malcolm <dmalcolm@redhat.com>
47 * call.c (enforce_access): Move diagnostics to...
48 (complain_about_access): ...this new function.
49 * cp-tree.h (class access_failure_info): Rename split out field
50 "m_field_decl" into "m_decl" and "m_diag_decl".
51 (access_failure_info::record_access_failure): Add tree param.
52 (access_failure_info::was_inaccessible_p): New accessor.
53 (access_failure_info::get_decl): New accessor.
54 (access_failure_info::get_diag_decl): New accessor.
55 (access_failure_info::get_any_accessor): New member function.
56 (access_failure_info::add_fixit_hint): New static member function.
57 (complain_about_access): New decl.
58 * typeck.c (access_failure_info::record_access_failure): Update
60 (access_failure_info::maybe_suggest_accessor): Split out into...
61 (access_failure_info::get_any_accessor): ...this new function...
62 (access_failure_info::add_fixit_hint): ...and this new function.
63 (finish_class_member_access_expr): Split out "has no member named"
64 error-handling into...
65 (complain_about_unrecognized_member): ...this new function, and
66 check that the guessed name is accessible along the access path.
67 Only provide a spell-correction fix-it hint if it is; otherwise,
68 attempt to issue an accessor fix-it hint.
70 2018-10-11 Nathan Sidwell <nathan@acm.org>
72 * parser.c (cp_parser_translation_unit): Return void. Don't fail
73 at first extra }, simplify logic.
74 (c_parse_file): Call finish_translation_unit here.
76 2018-10-11 Jakub Jelinek <jakub@redhat.com>
79 * typeck.c (maybe_warn_about_returning_address_of_local): If
80 whats_returned is a structured binding identifier and the structured
81 binding is a reference, recurse on its initializer.
84 * rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
87 2018-10-10 Marek Polacek <polacek@redhat.com>
89 PR c++/87567 - constexpr rejects call to non-constexpr function.
90 * constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
91 true if the condition is always false.
92 <case WHILE_STMT>: Likewise.
94 2018-10-09 Paolo Carlini <paolo.carlini@oracle.com>
97 * pt.c (convert_template_argument): Immediately return error_mark_node
98 if the second argument is erroneous.
99 * parser.c (cp_parser_type_id): Add location_t * parameter.
100 (cp_parser_type_id_1): Likewise.
101 (cp_parser_alias_declaration): Adjust cp_parser_type_id call,
102 obtain the location of the type and save it.
103 (cp_parser_template_type_arg): Adjust.
104 (cp_parser_trailing_type_id): Likewise.
105 * decl.c (grokdeclarator): Improve error message for 'auto' in
108 2018-10-08 Paolo Carlini <paolo.carlini@oracle.com>
111 * pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
112 explicitly instantiated.
114 2018-10-05 David Malcolm <dmalcolm@redhat.com>
117 * call.c (build_over_call): Build a vec of locations of the
118 arguments before the call to maybe_constant_value, and pass to
119 check_function_arguments.
120 * cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
121 c_get_substring_location.
122 * parser.c (cp_parser_string_literal): Capture string
123 concatenation locations.
125 2018-10-04 Nathan Sidwell <nathan@acm.org>
127 * lang-specs.h: Use string contatenation, not line splicing.
129 2018-10-03 Jason Merrill <jason@redhat.com>
131 Implement P0840, language support for empty objects.
132 * tree.c (handle_no_unique_addr_attribute): New.
133 (cxx_attribute_table): Add [[no_unique_address]].
134 * class.c (field_poverlapping_p): New.
135 (layout_class_type): Check it. Adjust DECL_SIZE of potentially
137 (layout_empty_base_or_field): Rename from layout_empty_base, handle
139 (build_base_field, record_subobject_offsets): Adjust.
141 2018-10-03 Martin Liska <mliska@suse.cz>
143 PR gcov-profile/86109
144 * parser.c (cp_parser_lambda_declarator_opt):
145 Set DECL_LAMBDA_FUNCTION for lambdas.
147 2018-10-02 Richard Biener <rguenther@suse.de>
149 * name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.
151 2018-09-28 Eric Botcazou <ebotcazou@adacore.com>
152 Pierre-Marie de Rodat <derodat@adacore.com>
154 * method.c (use_thunk): Adjust call to cgraph_node::create_thunk.
156 2018-09-28 Richard Biener <rguenther@suse.de>
158 * error.c (cp_print_error_function): Simplify by eliding
159 the BLOCK_ABSTRACT_ORIGIN chasing.
161 2018-09-27 Paolo Carlini <paolo.carlini@oracle.com>
164 * semantics.c (finish_unary_op_expr): Check return value of
165 build_x_unary_op for error_mark_node.
167 2018-09-25 Jakub Jelinek <jakub@redhat.com>
170 * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
171 look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.
173 2018-09-25 Martin Liska <mliska@suse.cz>
175 * name-lookup.c (namespace_scope_ht_size): Remove
177 * parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
179 2018-09-24 Paolo Carlini <paolo.carlini@oracle.com>
182 * method.c (lazily_declare_fn): During error-recovery add_method
185 2018-09-21 Marek Polacek <polacek@redhat.com>
187 PR c++/87372 - __func__ constexpr evaluation.
188 * constexpr.c (maybe_constant_init_1): Pass false for strict down to
189 cxx_eval_outermost_constant_expr.
191 2018-09-20 Marek Polacek <polacek@redhat.com>
193 PR c++/87109 - wrong ctor with maybe-rvalue semantics.
194 * call.c (build_user_type_conversion_1): Refine the maybe-rvalue
195 check to only return if we're converting the return value to a base
198 2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
200 * g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
202 2018-09-20 Jason Merrill <jason@redhat.com>
204 PR c++/87075 - ICE with constexpr array initialization.
205 * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
207 2018-09-19 Marek Polacek <polacek@redhat.com>
209 Add -Wclass-conversion.
210 * decl.c (grok_op_properties): Change a warning from -Wconversion to
211 -Wclass-conversion. Make it print the types.
213 2018-09-19 Paolo Carlini <paolo.carlini@oracle.com>
216 * parser.c (cp_parser_initializer_list): Assign error_mark_node
217 to the index upon error.
219 2018-09-19 Marek Polacek <polacek@redhat.com>
221 PR c++/87357 - missing -Wconversion warning
222 * decl.c (grok_op_properties): Remove diagnostic parts mentioning
223 a conversion to a reference to void. Use
224 same_type_ignoring_top_level_qualifiers_p rather than comparing types
227 2018-09-18 Marek Polacek <polacek@redhat.com>
229 P1064R0 - Allowing Virtual Function Calls in Constant Expressions
230 * call.c (build_over_call): No longer check if we're outside a template
232 * class.c (build_vtbl_initializer): Build vtable's constructor with
234 * constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
235 initializer. Handle OBJ_TYPE_REF.
236 (potential_constant_expression_1): Handle OBJ_TYPE_REF.
237 * decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
238 (initialize_artificial_var): Mark the variable as constexpr.
239 (grokdeclarator): Change error to pedwarn. Only warn when
240 pedantic and not C++2a.
242 2018-09-18 Paolo Carlini <paolo.carlini@oracle.com>
245 * cp-tree.h (NON_ERROR): New.
246 * pt.c (auto_hash::hash): Use it.
247 (do_auto_deduction): Likewise.
249 2018-09-18 Nathan Sidwell <nathan@acm.org>
252 * name-lookup.c (check_local_shadow): Ignore auto types.
254 2018-09-17 David Malcolm <dmalcolm@redhat.com>
256 * error.c (range_label_for_type_mismatch::get_text): Update for
259 2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
261 * typeck2.c (digest_init_r): Fix overlength strings.
263 2018-09-13 Ville Voutilainen <ville.voutilainen@gmail.com>
266 * method.c (constructible_expr): We're in an unevaluated context
267 in all cases, not just for class targets.
269 2018-09-12 David Malcolm <dmalcolm@redhat.com>
272 * call.c (struct conversion_info): Add "loc" field.
273 (arg_conversion_rejection): Add "loc" param, using it to
274 initialize the new field.
275 (bad_arg_conversion_rejection): Likewise.
276 (explicit_conversion_rejection): Initialize the new field to
278 (template_conversion_rejection): Likewise.
279 (add_function_candidate): Pass on the argument location to the new
280 param of arg_conversion_rejection.
281 (add_conv_candidate): Likewise.
282 (build_builtin_candidate): Likewise.
283 (build_user_type_conversion_1): Likewise.
284 (single_z_candidate): New function.
285 (maybe_get_bad_conversion_for_unmatched_call): New function.
286 (complain_about_bad_argument): New function, based on part of
287 convert_for_assignment.
288 (build_new_method_call_1): Split out handling of the "no viable
289 candidates" case into...
290 (complain_about_no_candidates_for_method_call): ...this new
291 function, and use the new functions above to special-case the
292 handling of a single non-viable candidate due to a bad argument.
293 * cp-tree.h (complain_about_bad_argument): New decl.
294 * typeck.c (convert_for_assignment): Split out one error-handling
295 case into complain_about_bad_argument.
297 2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
298 Julian Brown <julian@codesourcery.com>
301 * semantics.c (finish_omp_clauses): Treat C++ references the same in
304 2018-08-28 Martin Liska <mliska@suse.cz>
306 * constexpr.c (cxx_eval_call_expression): Add quotes
307 to -fconstexpr-depth=.
309 2018-09-10 Marek Polacek <polacek@redhat.com>
311 * class.c (build_vtbl_ref): Remove.
312 (build_vtbl_ref_1): Rename to build_vtbl_ref.
313 (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
315 2018-09-08 Marek Polacek <polacek@redhat.com>
317 PR c++/87150 - wrong ctor with maybe-rvalue semantics.
318 * call.c (struct conversion): Update commentary.
319 (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
322 2018-09-08 Jason Merrill <jason@redhat.com>
324 PR c++/86678 - constexpr function with non-constant after return.
325 * constexpr.c (potential_constant_expression_1): Add jump_target.
326 (breaks): Check for BREAK_STMT.
327 (continues): Check for CONTINUE_STMT.
329 2018-09-08 Marek Polacek <polacek@redhat.com>
331 * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
332 RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
334 2018-09-07 Marek Polacek <polacek@redhat.com>
336 PR c++/87152 - range-based for loops with initializer broken in templates.
337 * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
338 Recur into RANGE_FOR_INIT_STMT.
339 * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
340 * cp-tree.h (RANGE_FOR_INIT_STMT): Define.
341 * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
343 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
345 * semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
346 Do put the init statement in RANGE_FOR_INIT_STMT.
347 (finish_range_for_decl): Pop it for templates.
349 2018-09-06 Bernd Edlinger <bernd.edlinger@hotmail.de>
351 * decl.c (check_initializer): Call cp_complete_array_type.
353 2018-09-05 Marek Polacek <polacek@redhat.com>
355 PR c++/87109, wrong overload with ref-qualifiers.
356 * call.c (build_user_type_conversion_1): Use NULL instead of 0. Bail
357 out if performing the maybe-rvalue overload resolution and a conversion
358 function is getting called.
360 PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
361 * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
362 to std::move or std::forward.
363 (is_std_forward_p): New function.
365 2018-09-05 Pádraig Brady <p@draigbrady.com>
368 * lambda.c (prune_lambda_captures): Protect against const_vars.get
371 2018-09-04 Marek Polacek <polacek@redhat.com>
373 * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
374 * except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P.
375 * typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK
377 (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
378 (check_return_expr): Likewise.
380 2018-09-03 Paolo Carlini <paolo.carlini@oracle.com>
383 * constraint.cc (finish_shorthand_constraint): Early return if the
384 constraint is erroneous.
386 2018-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
388 * decl.c (eval_check_narrowing): Remove.
389 (check_initializer): Move call to braced_list_to_string from here ...
390 * typeck2.c (store_init_value): ... to here.
391 (digest_init_r): Remove handing of signed/unsigned char strings.
393 2018-08-31 Nathan Sidwell <nathan@acm.org>
397 * name-lookup.c (name_lookup::search_namespace): Don't look at
398 inlines when searching for NULL names.
400 * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
401 of return types and parms.
402 * parser.c (cp_parser_parameter_declaration_clause): Likewise,
403 '()' always means '(void)'.
405 2018-08-29 Jakub Jelinek <jakub@redhat.com>
408 * decl.c (begin_destructor_body): If current_class_type has
409 virtual bases and the primary base is nearly empty virtual base,
410 voidify clearing of vptr and make it conditional on in-charge
413 2018-08-29 Paolo Carlini <paolo.carlini@oracle.com>
416 * parser.c (cp_parser_introduction_list): If cp_parser_identifier
417 returns error_mark_node early exit the loop.
418 (cp_parser_template_introduction): Improve error-recovery, remove
419 error call about empty introduction-list.
421 2018-08-29 David Malcolm <dmalcolm@redhat.com>
424 * call.c (print_conversion_rejection): Add "fn" param and use it
425 for "no known conversion" messages to underline the pertinent
427 (print_z_candidate): Supply "fn" to the new param above.
429 2018-08-29 Jakub Jelinek <jakub@redhat.com>
432 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
433 processing_template_decl and decl is structured binding decl, call
436 2018-08-28 Paolo Carlini <paolo.carlini@oracle.com>
439 * decl.c (finish_case_label): If the type is erroneous early
440 return error_mark_node.
442 2018-08-27 David Malcolm <dmalcolm@redhat.com>
445 * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
448 2018-08-27 Jakub Jelinek <jakub@redhat.com>
451 * cp-tree.h (cxx_readonly_error): Add location_t argument.
452 * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
453 ERROR_FOR_ASSIGNMENT macro and readonly_error. Add LOC argument
454 to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
455 pass LOC to it. Formatting fixes.
456 * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
457 (cp_build_modify_expr): Pass loc to cxx_readonly_error.
458 * semantics.c (finish_asm_stmt): Pass input_location to
461 2018-08-27 David Malcolm <dmalcolm@redhat.com>
464 * decl.c (grokdeclarator): Update for conversion of show_caret_p
466 * error.c (cp_printer): Likewise.
467 * name-lookup.c (maybe_suggest_missing_std_header): Update call to
468 maybe_add_include_fixit to suggest overriding the location, as it
470 * parser.c (cp_parser_string_literal): Update for conversion of
471 show_caret_p to a tri-state.
472 (cp_parser_elaborated_type_specifier): Likewise.
473 (set_and_check_decl_spec_loc): Likewise.
474 * pt.c (listify): Update call to maybe_add_include_fixit to not
475 override the location, as it is for an error.
476 * rtti.c (typeid_ok_p): Likewise.
478 2018-08-27 Martin Liska <mliska@suse.cz>
480 * call.c (build_call_a): Use new function
481 fndecl_built_in_p and remove check for FUNCTION_DECL if
483 (build_cxx_call): Likewise.
484 * constexpr.c (constexpr_fn_retval): Likewise.
485 (cxx_eval_builtin_function_call): Likewise.
486 (cxx_eval_call_expression): Likewise.
487 (potential_constant_expression_1): Likewise.
488 * cp-gimplify.c (cp_gimplify_expr): Likewise.
490 * decl.c (decls_match): Likewise.
491 (validate_constexpr_redeclaration): Likewise.
492 (duplicate_decls): Likewise.
493 (make_rtl_for_nonlocal_decl): Likewise.
494 * name-lookup.c (consider_binding_level): Likewise.
495 (cp_emit_debug_info_for_using): Likewise.
496 * semantics.c (finish_call_expr): Likewise.
497 * tree.c (builtin_valid_in_constant_expr_p): Likewise.
499 2018-08-26 Marek Polacek <polacek@redhat.com>
502 * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.
504 PR c++/87029, Implement -Wredundant-move.
505 * typeck.c (treat_lvalue_as_rvalue_p): New function.
506 (maybe_warn_pessimizing_move): Call convert_from_reference.
507 Warn about redundant moves.
509 2018-08-24 Marek Polacek <polacek@redhat.com>
513 * decl.c (grokdeclarator): Disallow functions with trailing return
514 type with decltype(auto) as its type. Also check the function if
515 it's inner declarator doesn't exist
517 2018-08-21 Marek Polacek <polacek@redhat.com>
520 * parser.c (cp_parser_lambda_introducer): Give error if a non-local
521 lambda has a capture-default.
523 2018-08-21 Paolo Carlini <paolo.carlini@oracle.com>
525 * decl.c (check_static_variable_definition): Change to return void.
527 2018-08-21 Marek Polacek <polacek@redhat.com>
529 PR c++/86981, Implement -Wpessimizing-move.
530 * typeck.c (decl_in_std_namespace_p): New.
531 (is_std_move_p): New.
532 (maybe_warn_pessimizing_move): New.
533 (can_do_nrvo_p): New, factored out of ...
534 (check_return_expr): ... here. Warn about potentially harmful
535 std::move in a return statement.
538 * call.c (standard_conversion): Set check_narrowing.
539 * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
540 than comparing with INTEGER_TYPE.
542 * cp-tree.h: Fix typo.
544 2018-08-20 David Malcolm <dmalcolm@redhat.com>
547 * call.c (build_user_type_conversion_1): Add auto_diagnostic_group
549 (print_error_for_call_failure): Likewise.
550 (build_op_call_1): Likewise.
551 (build_conditional_expr_1): Likewise.
552 (build_new_op_1): Likewise.
553 (build_op_delete_call): Likewise.
554 (convert_like_real): Likewise.
555 (build_over_call): Likewise.
556 (build_new_method_call_1): Likewise.
558 * class.c (check_tag): Likewise.
559 (finish_struct_anon_r): Likewise.
560 (one_inherited_ctor): Likewise.
561 (finalize_literal_type_property): Likewise.
562 (explain_non_literal_class): Likewise.
563 (find_flexarrays): Likewise.
564 (resolve_address_of_overloaded_function): Likewise.
565 * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
566 (is_valid_constexpr_fn): Likewise.
567 (cx_check_missing_mem_inits): Likewise.
568 * cp-gimplify.c (cp_genericize_r): Likewise.
569 * cvt.c (maybe_warn_nodiscard): Likewise.
570 * decl.c (warn_extern_redeclared_static): Likewise.
571 (check_redeclaration_exception_specification): Likewise.
572 (check_no_redeclaration_friend_default_args): Likewise.
573 (duplicate_decls): Likewise.
574 (redeclaration_error_message): Likewise.
575 (warn_misplaced_attr_for_class_type): Likewise.
576 * decl2.c (finish_static_data_member_decl): Likewise.
577 (no_linkage_error): Likewise.
578 (cp_warn_deprecated_use): Likewise.
579 * error.c (qualified_name_lookup_error): Likewise.
580 * friend.c (make_friend_class): Likewise.
581 (do_friend): Likewise.
582 * init.c (perform_member_init): Likewise.
583 (build_new_1): Likewise.
584 (build_vec_delete_1): Likewise.
585 (build_delete): Likewise.
586 * lex.c (unqualified_name_lookup_error): Likewise.
587 * name-lookup.c (check_extern_c_conflict): Likewise.
588 (inform_shadowed): New function.
589 (check_local_shadow): Add auto_diagnostic_group instances,
590 replacing goto "inform_shadowed" label with call to subroutine.
591 (set_local_extern_decl_linkage): Add auto_diagnostic_group
593 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
594 (cp_parser_namespace_name): Likewise.
595 * pt.c (check_specialization_namespace): Likewise.
596 (check_template_variable): Likewise.
597 (warn_spec_missing_attributes): Likewise.
598 (check_explicit_specialization): Likewise.
599 (process_partial_specialization): Likewise.
600 (lookup_template_class_1): Likewise.
601 (finish_template_variable): Likewise.
602 (do_auto_deduction): Likewise.
603 * search.c (check_final_overrider): Likewise.
604 (look_for_overrides_r): Likewise.
605 * tree.c (maybe_warn_parm_abi): Likewise.
606 * typeck.c (cxx_sizeof_expr): Likewise.
607 (cp_build_function_call_vec): Likewise.
608 (cp_build_binary_op): Likewise.
609 (convert_for_assignment): Likewise.
610 (maybe_warn_about_returning_address_of_local): Likewise.
611 * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
612 (check_narrowing): Likewise.
614 2018-08-17 David Malcolm <dmalcolm@redhat.com>
616 * typeck.c (string_conv_p): Extract location from EXP and use it
617 in preference to input_location when issuing warnings.
619 2018-08-15 David Malcolm <dmalcolm@redhat.com>
621 * call.c: Include "gcc-rich-location.h".
622 (convert_like_real): Add range label for "invalid conversion"
624 (perform_implicit_conversion_flags): Add type label to the
625 "could not convert" error.
626 * error.c: Include "gcc-rich-location.h".
627 (range_label_for_type_mismatch::get_text): New function.
628 * typeck.c (convert_for_assignment): Add type label to
629 the "cannot convert" error if a location is available.
631 2018-08-15 Paolo Carlini <paolo.carlini@oracle.com>
633 * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
634 emit an error instead of a permerror.
636 2018-08-13 Marek Polacek <polacek@redhat.com>
639 * call.c (struct conversion): Add check_narrowing_const_only.
640 (build_converted_constant_expr): Set check_narrowing and
641 check_narrowing_const_only. Give error if expr is error node.
642 (convert_like_real): Pass it to check_narrowing.
643 * cp-tree.h (check_narrowing): Add a default parameter.
644 * decl.c (compute_array_index_type): Use input_location instead of
646 * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
647 * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
648 expressions. Call maybe_constant_value instead of
649 fold_non_dependent_expr. Don't mention { } in diagnostic. Only check
650 narrowing for constants if CONST_ONLY.
652 2018-08-13 Martin Sebor <msebor@redhat.com>
654 PR tree-optimization/71625
655 * decl.c (check_initializer): Call braced_list_to_string.
656 (eval_check_narrowing): New function.
657 * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
658 as initilizers for all narrow character types.
660 2018-08-13 Marek Polacek <polacek@redhat.com>
662 P0806R2 - Deprecate implicit capture of this via [=]
663 * lambda.c (add_default_capture): Formatting fixes. Warn about
664 deprecated implicit capture of this via [=].
667 * decl.c (create_array_type_for_decl): Handle null name.
669 2018-08-10 Jason Merrill <jason@redhat.com>
671 PR c++/86728 - C variadic generic lambda.
672 * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
673 a pack if it's followed by a declarator-id.
675 2018-08-08 Jakub Jelinek <jakub@redhat.com>
677 P0595R1 - is_constant_evaluated
678 * cp-tree.h (enum cp_built_in_function): New.
679 (maybe_constant_init): Add pretend_const_required argument.
680 * typeck2.c (store_init_value): Pass true as new argument to
682 * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
683 for BUILT_IN_UNREACHABLE.
684 (struct constexpr_ctx): Add pretend_const_required field.
685 (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
686 macro. Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED. Check also
687 DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
688 (cxx_eval_outermost_constant_expr): Add pretend_const_required
689 argument, initialize pretend_const_required field in ctx. If the
690 result is TREE_CONSTANT and non_constant_p, retry with
691 pretend_const_required false if it was true.
692 (is_sub_constant_expr): Initialize pretend_const_required_field in
694 (cxx_constant_value): Pass true as pretend_const_required to
695 cxx_eval_outermost_constant_expr.
696 (maybe_constant_value): Pass false as pretend_const_required to
697 cxx_eval_outermost_constant_expr.
698 (fold_non_dependent_expr): Likewise.
699 (maybe_constant_init_1): Add pretend_const_required argument, pass it
700 down to cxx_eval_outermost_constant_expr. Pass !allow_non_constant
701 instead of false as strict to cxx_eval_outermost_constant_expr.
702 (maybe_constant_init): Add pretend_const_required argument, pass it
703 down to maybe_constant_init_1.
704 (cxx_constant_init): Pass true as pretend_const_required to
705 maybe_constant_init_1.
706 * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
707 CP_BUILT_IN_IS_CONSTANT_EVALUATED.
708 (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
709 * decl.c: Include langhooks.h.
710 (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
712 * tree.c (builtin_valid_in_constant_expr_p): Return true for
713 CP_BUILT_IN_IS_CONSTANT_EVALUATED.
714 * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
717 * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
718 before tsubst_init, not after it.
721 * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
722 NULL pointer set *non_constant_p to true.
723 (cxx_eval_component_reference): For dereferencing of a NULL pointer,
724 set *non_constant_p to true and return t.
726 2018-08-07 Paolo Carlini <paolo.carlini@oracle.com>
729 * decl.c (check_no_redeclaration_friend_default_args): New.
730 (duplicate_decls): Use the latter; also check that a friend
731 declaration specifying default arguments is a definition.
733 2018-08-07 Ville Voutilainen <ville.voutilainen@gmail.com>
736 * name-lookup.c (check_local_shadow): Reject captures and parameters
739 2018-08-06 Marek Polacek <polacek@redhat.com>
742 * constexpr.c (cxx_eval_statement_list): Handle continue.
744 2018-08-03 David Malcolm <dmalcolm@redhat.com>
745 Jonathan Wakely <jwakely@redhat.com>
747 * decl.c: Include "gcc-rich-location.h".
748 (add_return_star_this_fixit): New function.
749 (finish_function): When warning about missing return statements in
750 functions returning non-void, add a "return *this;" fix-it hint for
751 assignment operators.
753 2018-08-03 Jason Merrill <jason@redhat.com>
756 * class.c (build_base_path): Use currently_open_class.
758 2018-08-02 David Malcolm <dmalcolm@redhat.com>
760 * error.c (cxx_print_error_function): Duplicate "file" before
761 passing it to pp_set_prefix.
762 (cp_print_error_function): Use pp_take_prefix when saving the
765 2018-08-02 Richard Biener <rguenther@suse.de>
768 * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
769 to the CLASSTYPE_AS_BASE.
771 2018-08-01 Martin Sebor <msebor@redhat.com>
773 PR tree-optimization/86650
774 * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
775 TREE_BLOCK (t) from within percent_K_format to this callsite.
777 2018-08-01 Paolo Carlini <paolo.carlini@oracle.com>
780 * class.c (note_name_declared_in_class): Use location_of in permerror
781 instead of DECL_SOURCE_LOCATION (for OVERLOADs).
783 2018-07-31 Tom de Vries <tdevries@suse.de>
786 * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
788 2018-07-31 Jakub Jelinek <jakub@redhat.com>
790 P1008R1 - prohibit aggregates with user-declared constructors
791 * class.c (check_bases_and_members): For C++2a set
792 CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
793 type_has_user_provided_or_explicit_constructor.
795 2018-07-31 Martin Liska <mliska@suse.cz>
798 * parser.c (cp_parser_condition): Initialize non_constant_p
801 2018-07-28 David Malcolm <dmalcolm@redhat.com>
803 * error.c (cp_printer): In the leading comment, move "%H" and "%I"
804 into alphabetical order, and add missing "%G" and "%K". Within
805 the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
806 cases are in alphabetical order.
808 2018-07-25 Jakub Jelinek <jakub@redhat.com>
810 * cp-tree.h (enum cp_tree_index): Add
811 CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
812 and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
813 (abi_tag_identifier, aligned_identifier, begin_identifier,
814 end_identifier, get__identifier, gnu_identifier,
815 tuple_element_identifier, tuple_size_identifier, type_identifier,
816 value_identifier, fun_identifier, closure_identifier): Define.
817 * decl.c (initialize_predefined_identifiers): Initialize the above
819 (get_tuple_size): Use tuple_size_identifier instead of
820 get_identifier ("tuple_size") and value_identifier instead of
821 get_identifier ("value").
822 (get_tuple_element_type): Use tuple_element_identifier instead of
823 get_identifier ("tuple_element") and type_identifier instead of
824 get_identifier ("type").
825 (get_tuple_decomp_init): Use get__identifier instead of
826 get_identifier ("get").
827 * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
828 get_identifier ("_FUN").
829 * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
830 instead of get_identifier ("__closure").
831 (cp_parser_std_attribute): Use gnu_identifier instead of
832 get_identifier ("gnu").
833 (cp_parser_std_attribute_spec): Likewise. Use aligned_identifier
834 instead of get_identifier ("aligned").
835 * class.c (check_abi_tags, inherit_targ_abi_tags): Use
836 abi_tag_identifier instead of get_identifier ("abi_tag").
839 * cp-tree.h (enum cp_tree_index): Add
840 CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
841 (for_range__identifier, for_begin__identifier, for_end__identifier,
842 for_range_identifier, for_begin_identifier, for_end_identifier):
844 * decl.c (initialize_predefined_identifiers): Initialize
845 for_{range,begin,end}{,_}_identifier.
846 * parser.c (build_range_temp): Use for_range__identifier instead of
847 get_identifier ("__for_range").
848 (cp_convert_range_for): Use for_begin__identifier and
849 for_end__identifier instead of get_identifier ("__for_begin") and
850 get_identifier ("__for_end").
851 * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
852 local symbols to "__for_{range,begin,end}".
854 2018-07-23 Jakub Jelinek <jakub@redhat.com>
857 * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
858 of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
859 or warn_nonnull_compare.
861 2018-07-19 Paolo Carlini <paolo.carlini@oracle.com>
863 Revert fix for c++/59480 (and testsuite followup)
865 2019-07-18 Paolo Carlini <paolo.carlini@oracle.com>
868 * decl.c (check_no_redeclaration_friend_default_args): New.
869 (duplicate_decls): Use the latter; also check that a friend
870 declaration specifying default arguments is a definition.
872 2018-07-18 Jakub Jelinek <jakub@redhat.com>
875 * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
876 specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
878 2018-07-18 Marek Polacek <polacek@redhat.com>
880 PR c++/86190 - bogus -Wsign-conversion warning
881 * typeck.c (cp_build_binary_op): Fix formatting. Add a warning
884 2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
887 * decl.c (check_no_redeclaration_friend_default_args): New.
888 (duplicate_decls): Use the latter; also check that a friend
889 declaration specifying default arguments is a definition.
891 2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
893 * class.c (note_name_declared_in_class): Prefer permerror + inform
894 to a pair of permerrors; use DECL_SOURCE_LOCATION.
896 2018-07-18 Richard Biener <rguenther@suse.de>
899 * decl2.c (c_parse_final_cleanups): Call write_out_vars before
900 start_static_storage_duration_function sets current_function_decl.
902 2018-07-17 Jason Merrill <jason@redhat.com>
904 PR c++/86480 - nested variadic lambda and constexpr if.
905 * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
907 * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
908 cp_unevaluated_operand.
909 [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
911 2018-07-16 Paolo Carlini <paolo.carlini@oracle.com>
913 * class.c (resolve_address_of_overloaded_function): Don't emit an
914 inform if the matching permerror returns false.
915 * pt.c (check_specialization_namespace): Likewise.
917 2018-07-16 Jakub Jelinek <jakub@redhat.com>
921 * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
922 in TREE_USED flag from stmt to h->to.
924 2018-07-13 Nathan Sidwell <nathan@acm.org>
927 * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
928 contexts that are classes.
929 * parser.c (cp_parser_template_id): Combine entering_scope decl &
932 2018-07-12 Jakub Jelinek <jakub@redhat.com>
934 * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
935 type here, instead add "omp declare target implicit" attribute. Add
936 that attribute instead of "omp declare target" also when
937 processing_template_decl.
938 * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
939 and before calling cp_omp_mappable_type call complete_type.
941 2018-07-10 Jakub Jelinek <jakub@redhat.com>
944 * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
948 * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
949 instead of setting *lastp turn orig_declv elt into a TREE_LIST.
950 (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
951 * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
952 TREE_LIST for both the original class iterator and the "last" helper
955 2018-07-09 Paolo Carlini <paolo.carlini@oracle.com>
957 * decl.c (grokdeclarator): Use rich_location::add_range in three
958 more places; include gcc-rich-location.h.
960 2018-07-07 Aldy Hernandez <aldyh@redhat.com>
962 * decl.c (build_enumerator): Change overflow type to overflow_type.
963 * init.c (build_new_1): Same.
965 2018-07-05 Nathan Sidwell <nathan@acm.org>
967 * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
968 NO_IMPLICIT_EXTERN_C.
969 * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
971 2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com>
974 * method.c (is_trivially_xible): Return false
975 if is_xible_helper returns a NULL_TREE.
977 2018-07-03 Paolo Carlini <paolo.carlini@oracle.com>
979 * decl.c (min_location): New.
980 (smallest_type_quals_location): Use the latter.
981 (check_concept_fn): Use DECL_SOURCE_LOCATION.
982 (grokdeclarator): Use accurate locations in a number of error
983 messages involving ds_thread, ds_storage_class, ds_virtual,
984 ds_constexpr, ds_typedef and ds_friend; exploit min_location.
986 2018-07-03 Marek Polacek <polacek@redhat.com>
989 * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
991 2018-07-03 Jason Merrill <jason@redhat.com>
993 PR c++/86378 - functional cast in noexcept-specifier.
994 * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
996 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com>
998 * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
999 in error message about __thread and thread_local at the same time.
1001 2018-06-29 Marek Polacek <polacek@redhat.com>
1004 * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
1006 2018-06-28 David Malcolm <dmalcolm@redhat.com>
1008 * parser.c (cp_parser_error_1): After issuing a conflict marker
1009 error, consume tokens until the end of the source line.
1011 2018-06-28 Jason Merrill <jason@redhat.com>
1013 PR c++/86342 - -Wdeprecated-copy and system headers.
1014 * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
1017 2018-06-27 David Malcolm <dmalcolm@redhat.com>
1020 * name-lookup.c (consider_binding_level): Filter out names that
1021 match anon_aggrname_p.
1023 2018-06-27 Jason Merrill <jason@redhat.com>
1025 * name-lookup.c (do_pushtag): If we skip a class level, also skip
1028 2018-06-26 Jason Merrill <jason@redhat.com>
1030 PR c++/86320 - memory-hog with std::array of pair
1031 * typeck2.c (process_init_constructor_array): Only compute a
1032 constant initializer once.
1034 PR c++/80290 - memory-hog with std::pair.
1035 * pt.c (fn_type_unification): Add convs parameter.
1036 (check_non_deducible_conversion): Remember conversion.
1037 (check_non_deducible_conversions): New. Do checks here.
1038 (type_unification_real): Not here. Remove flags parm.
1039 * call.c (add_function_candidate): Make convs a parameter.
1040 Don't recalculate the conversion if it's already set.
1041 (add_template_candidate_real): Allocate convs here.
1042 (good_conversion, conv_flags): New.
1044 2018-06-26 Jakub Jelinek <jakub@redhat.com>
1047 * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
1048 type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
1050 2018-06-23 Paolo Carlini <paolo.carlini@oracle.com>
1052 * decl.c (bad_specifiers): Add const location_t* parameter and
1053 use locations in error messages about 'inline' and 'virtual'.
1054 (mark_inline_variable): Add location_t parameter and use it in
1055 error_at and pedwarn messages.
1056 (grokdeclarator): Use declspecs->locations[ds_constexpr],
1057 declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
1058 declspecs->locations[ds_inline] in many error messages; adjust
1059 bad_specifiers and mark_inline_variable calls.
1060 (grokvardecl): Use declspecs->locations[ds_concept] in error message.
1062 2018-06-22 Jason Merrill <jason@redhat.com>
1064 PR c++/86219 - ICE with erroneous initializer in template.
1065 * constexpr.c (fold_non_dependent_expr): Add complain parm.
1066 * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
1068 * call.c (build_cxx_call): Don't mess with builtins in a template.
1069 * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
1070 produce a constant value, go back to the uninstantiated form.
1072 Avoid taking the address of something just because it's in parens.
1073 * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
1074 (cxx_fold_indirect_ref): Use it.
1075 (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
1076 * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
1077 * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
1078 static_cast to reference type.
1079 (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
1081 2018-06-21 Jason Merrill <jason@redhat.com>
1083 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
1085 * name-lookup.c (do_push_to_top_level): Don't allocate
1087 (do_pop_from_top_level): Release current_lang_base.
1089 Let -fmem-report see callers of cxx_make_type.
1090 * lex.c (cxx_make_type): Add MEM_STAT_DECL.
1091 (make_class_type): Likewise.
1092 (cxx_make_type_hook): New.
1093 * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
1095 2018-06-20 Nathan Sidwell <nathan@acm.org>
1098 * friend.c (add_friend): Keep lookup sets of tempate sets.
1100 2018-06-20 Paolo Carlini <paolo.carlini@oracle.com>
1102 * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
1103 tidy handling of a null location_t argument; use proper location
1104 information in a few additional error messages.
1105 (grokdeclarator): Update calls.
1107 2018-06-20 Chung-Lin Tang <cltang@codesourcery.com>
1108 Thomas Schwinge <thomas@codesourcery.com>
1109 Cesar Philippidis <cesar@codesourcery.com>
1111 * parser.c (cp_parser_omp_clause_name): Add support for finalize
1112 and if_present. Make present_or_{copy,copyin,copyout,create} aliases
1113 to their non-present_or_* counterparts. Make 'self' an alias to
1114 PRAGMA_OACC_CLAUSE_HOST.
1115 (cp_parser_oacc_data_clause): Update GOMP mappings for
1116 PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
1117 PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
1118 (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
1119 Remove support for present_or_* clauses.
1120 (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
1121 (OACC_PARALLEL_CLAUSE_MASK): Likewise.
1122 (OACC_DECLARE_CLAUSE_MASK): Likewise.
1123 (OACC_DATA_CLAUSE_MASK): Likewise.
1124 (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
1125 (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
1126 (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
1127 (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
1128 * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
1129 * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
1131 2018-06-20 Marek Polacek <polacek@redhat.com>
1134 * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
1135 (fold_simple_1): Likewise.
1136 * error.c (dump_expr): Likewise.
1138 2018-06-20 Nathan Sidwell <nathan@acm.org>
1141 * cp-tree.h (lookup_keep): Drop KEEP parm.
1142 (lookup_list_keep): Delete.
1143 (maybe_get_fns): Declare.
1144 * parser.c (cp_parser_primary_expression): Call lookup_keep here.
1145 (cp_parser_template_id): Not here ...
1146 * decl.c (cp_finish_decl): ... nor here ...
1147 * init.c (build_raw_new_expr): ... nor here ...
1148 * pt.c (process_template_parm): ... nor here ...
1149 * semantics.c (perform_koenig_lookup): Call lookup_keep.
1150 (finish_call_expr): Not here.
1151 * tree.c (ovl_cache): Delete.
1152 (ovl_make, ovl_copy): No cache.
1153 (lookup_keep): Always keep.
1154 (lookup_list_keep): Delete.
1155 (maybe_get_fns): New, broken out of ...
1156 (get_fns): ... here. Call it.
1157 (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
1158 (build_min_nt_call_vec): Likewise.
1160 2018-06-19 Jason Merrill <jason@redhat.com>
1162 * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
1163 * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
1165 PR c++/86182 - ICE with anonymous union passed to template.
1166 * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
1167 used to declare a named variable.
1169 2018-06-18 Jason Merrill <jason@redhat.com>
1171 * tree.c (cp_expr_location): New.
1172 * cp-tree.h (cp_expr_loc_or_loc): New.
1173 * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
1174 error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
1175 typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
1177 * parser.c (cp_parser_lambda_expression): Use a range for
1178 LAMBDA_EXPR_LOCATION.
1180 PR c++/86200 - ICE with unexpanded pack in lambda parameter.
1181 * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
1184 PR c++/81060 - ICE with unexpanded parameter pack.
1185 * pt.c (check_for_bare_parameter_packs): Add loc parameter.
1186 * decl.c (grokdeclarator): Call it for qualifying_scope.
1188 PR c++/86171 - ICE with recursive alias instantiation.
1189 * pt.c (tsubst_decl): Handle recursive alias instantiation.
1191 2018-06-18 Paolo Carlini <paolo.carlini@oracle.com>
1193 * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
1194 in errors about redefined default arguments; tidy.
1196 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
1198 * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
1199 * cp-gimplify.c (cp_fold): Likewise.
1201 2018-06-15 Jason Merrill <jason@redhat.com>
1203 PR c++/86147 - wrong capture for template argument.
1204 * expr.c (mark_use): Look through NOP_EXPR.
1206 * name-lookup.c (do_pushtag): Don't look through complete types, but
1207 don't add to them either. Get context from current_binding_level.
1208 * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
1210 * decl.c (start_enum): Do compare dependent underlying type.
1212 PR c++/82882 - ICE with lambda in template default argument.
1213 * lambda.c (record_null_lambda_scope): New.
1214 * pt.c (tsubst_lambda_expr): Use it.
1215 * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
1216 function that isn't open.
1218 * tree.c (maybe_warn_parm_abi): Inform the location of the class.
1220 2018-06-14 Marek Polacek <polacek@redhat.com>
1223 * decl2.c (cp_check_const_attributes): Skip trees that are not
1226 2018-06-14 Jakub Jelinek <jakub@redhat.com>
1228 P0624R2 - Default constructible and assignable stateless lambdas
1229 * method.c (synthesized_method_walk): For C++2a don't mark
1230 sfk_constructor or sfk_copy_assignment as deleted if lambda has
1233 2018-06-14 Paolo Carlini <paolo.carlini@oracle.com>
1235 * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
1236 OPT_Wshadow warning_at.
1237 (grokfndecl): Consistently use the location_t argument in
1238 literal operator diagnostic messages.
1239 (grokdeclarator): Use declspecs->locations[ds_storage_class]
1241 * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
1244 2018-06-13 Jason Merrill <jason@redhat.com>
1246 PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
1247 * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
1250 PR c++/86094 - wrong code with defaulted move ctor.
1251 * class.c (classtype_has_non_deleted_move_ctor): New.
1252 * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
1253 Handle v12 breakage.
1255 2018-06-12 Jason Merrill <jason@redhat.com>
1257 PR c++/86098 - ICE with template placeholder for TTP.
1258 * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
1259 CLASS_PLACEHOLDER_TEMPLATE.
1261 2018-06-12 Paolo Carlini <paolo.carlini@oracle.com>
1263 * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
1264 parameter and adjust error_at calls.
1265 * decl.c (grok_op_properties): Adjust calls.
1266 * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
1268 2018-06-12 Marek Polacek <polacek@redhat.com>
1270 Core issue 1331 - const mismatch with defaulted copy constructor
1271 * class.c (check_bases_and_members): When checking a defaulted
1272 function, mark it as deleted rather than giving an error.
1274 2018-06-11 Jason Merrill <jason@redhat.com>
1276 PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
1277 * class.c (maybe_warn_about_overly_private_class): Handle inherited
1280 PR c++/85963 - -Wunused-but-set with ?: in template.
1281 * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
1283 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com>
1285 * decl.c (grok_op_properties): Consistently use the location
1286 of the decl; remove special casing of POSTINCREMENT_EXPR and
1287 POSTDECREMENT_EXPR wrt default arguments.
1289 2018-06-05 Jason Merrill <jason@redhat.com>
1291 * constexpr.c (cxx_eval_binary_expression): Special case comparison
1292 of pointers to members of the same union.
1294 2018-06-11 Jason Merrill <jason@redhat.com>
1296 PR c++/86094 - wrong code with defaulted move ctor.
1297 * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
1299 2018-06-10 Paolo Carlini <paolo.carlini@oracle.com>
1301 * decl.c (grokfndecl): Use the location_t argument in two more places.
1303 2018-06-06 Marek Polacek <polacek@redhat.com>
1306 * pt.c (unify): If ELTTYPE has no deducible template parms, skip
1307 deduction from the list elements.
1308 (type_unification_real): Check convertibility of list elements.
1310 2018-06-06 Jason Merrill <jason@redhat.com>
1312 PR c++/86060 - ICE on range for with -std=c++98.
1313 * parser.c (cp_parser_init_statement): Don't clobber *decl after
1316 PR c++/85710 - ICE with -Wmemset-elt-size.
1317 * semantics.c (finish_call_expr): Call warn_for_memset here.
1318 * parser.c (cp_parser_postfix_expression): Not here.
1319 (literal_integer_zerop): No longer static.
1320 * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
1322 2018-06-05 Marek Polacek <polacek@redhat.com>
1325 * tree.c (cp_tree_equal): Handle USING_DECL.
1327 2018-06-05 Jason Merrill <jason@redhat.com>
1329 PR c++/85731 - wrong error with qualified-id in template.
1330 * semantics.c (finish_qualified_id_expr): build_qualified_name
1331 for unbound names in the current class.
1333 2018-06-04 Jason Merrill <jason@redhat.com>
1335 PR c++/61806 - missed SFINAE with partial specialization.
1336 * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
1337 parameter to constructor.
1338 * pt.c (instantiate_class_template_1): Enable access checking
1339 before call to most_specialized_partial_spec.
1341 PR c++/85765 - SFINAE and non-type default template arg.
1342 * pt.c (type_unification_real): Do full semantic processing if
1343 substituting a partial args list replaces all template parms.
1345 2018-06-03 Jason Merrill <jason@redhat.com>
1347 PR c++/85739 - ICE with pointer to member template parm.
1348 * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
1350 2018-06-02 Jason Merrill <jason@redhat.com>
1352 PR c++/85761 - ICE with ill-formed use of const outer variable.
1353 * expr.c (mark_use): Handle location wrappers.
1355 2018-06-01 Jason Merrill <jason@redhat.com>
1357 PR c++/85764 - bogus 'this' not captured error.
1358 * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
1359 (nonlambda_method_basetype): Handle NSDMI.
1361 CWG 1581: When are constexpr member functions defined?
1362 * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
1363 (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
1365 PR c++/58281 - explicit instantiation of constexpr
1366 * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
1368 * pt.c (instantiate_decl): Any defaulted function is defined.
1370 2018-05-30 Jonathan Wakely <jwakely@redhat.com>
1373 * call.c (resolve_args): Use location of expression, not current input
1376 2018-05-30 Ville Voutilainen <ville.voutilainen@gmail.com>
1378 Do not warn about zero-as-null when NULL is used.
1379 * call.c (conversion_null_warnings): Check for pointer
1380 types converted from zero constants.
1381 (convert_like_real): Add a warning sentinel at the end.
1382 * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
1385 2018-05-30 Jason Merrill <jason@redhat.com>
1387 PR c++/85807 - ICE with call in template NSDMI.
1388 * init.c (get_nsdmi): Use push_to/pop_from_top_level.
1389 * tree.c (bot_manip): Don't set_flags_from_callee in a template.
1391 PR c++/85873 - constant initializer_list array not in .rodata.
1392 * tree.c (build_target_expr): Set TREE_READONLY.
1393 * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
1395 * parser.c (cp_parser_check_condition_declarator): Handle
1396 cp_error_declarator.
1398 2018-05-30 Jonathan Wakely <jwakely@redhat.com>
1400 * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
1401 of using it in dead store.
1403 2018-05-29 Jason Merrill <jason@redhat.com>
1405 PR c++/67445 - returning temporary initializer_list.
1406 PR c++/67711 - assigning from temporary initializer_list.
1407 PR c++/48562 - new initializer_list.
1408 * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
1409 about returning local initializer_list.
1410 * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
1411 * call.c (build_over_call): Warn about assignment from temporary
1413 * init.c (build_new_1): Warn about 'new std::initializer_list'.
1414 (find_list_begin, maybe_warn_list_ctor): New.
1415 (perform_member_init): Use maybe_warn_list_ctor.
1417 2018-05-29 Marek Polacek <polacek@redhat.com>
1420 * init.c (build_new): Handle deducing a class with new
1421 with more than one argument.
1423 2018-05-29 Jakub Jelinek <jakub@redhat.com>
1426 * init.c (build_aggr_init): For structured binding initialized from
1427 array call mark_rvalue_use on the initializer.
1429 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
1431 * decl2.c (start_static_storage_duration_function): Use
1432 splay_tree_delete_pointers.
1434 2018-05-25 Jason Merrill <jason@redhat.com>
1436 PR c++/85815 - reference to member of enclosing template.
1437 * search.c (lookup_base): Use currently_open_class.
1438 (lookup_member): Use it regardless of -fconcepts.
1439 * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
1441 CWG 616, 1213 - value category of subobject references.
1442 * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
1444 2018-05-24 Jason Merrill <jason@redhat.com>
1446 PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
1447 * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
1450 2018-05-24 Ville Voutilainen <ville.voutilainen@gmail.com>
1452 Pedwarn on a non-standard position of a C++ attribute.
1453 * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
1454 after the namespace name.
1456 2018-05-24 Paolo Carlini <paolo.carlini@oracle.com>
1458 * cp-tree.h (INDIRECT_TYPE_P): New.
1459 * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
1460 joust): Use it instead of POINTER_TYPE_P.
1461 * class.c (update_vtable_entry_for_fn, find_flexarrays,
1462 * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
1463 * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
1464 * cxx_eval_increment_expression, potential_constant_expression_1):
1466 * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
1467 * cp-objcp-common.c (cxx_get_alias_set): Likewise.
1468 * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
1469 cp_ubsan_maybe_instrument_downcast): Likewise.
1470 * cvt.c (cp_convert_to_pointer, ocp_convert,
1471 cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
1472 * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
1473 pp_cxx_offsetof_expression_1): Likewise.
1474 * decl.c (grokparms, static_fn_type): Likewise.
1475 * decl2.c (grokbitfield): Likewise.
1476 * error.c (dump_expr): Likewise.
1477 * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
1478 * init.c (warn_placement_new_too_small): Likewise.
1479 * lambda.c (build_capture_proxy, add_capture): Likewise.
1480 * parser.c (cp_parser_omp_for_loop): Likewise.
1481 * pt.c (convert_nontype_argument, fn_type_unification,
1482 uses_deducible_template_parms, check_cv_quals_for_unify,
1483 dependent_type_p_r): Likewise.
1484 * search.c (check_final_overrider): Likewise.
1485 * semantics.c (handle_omp_array_sections, finish_omp_clauses,
1486 finish_omp_for): Likewise.
1487 * tree.c (cp_build_qualified_type_real): Likewise.
1488 * typeck.c (build_class_member_access_expr,
1489 finish_class_member_access_expr, build_x_indirect_ref,
1490 cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
1493 2018-05-24 Jason Merrill <jason@redhat.com>
1495 PR c++/85864 - literal template and default template arg.
1496 * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
1498 2018-05-24 Marek Polacek <polacek@redhat.com>
1501 * init.c (build_new_1): Use fold_non_dependent_expr. Use a dedicated
1502 variable for its result. Fix a condition.
1503 (build_new): Use fold_non_dependent_expr. Tweak a condition.
1505 2018-05-23 Jason Merrill <jason@redhat.com>
1507 Fix cast to rvalue reference from prvalue.
1508 * cvt.c (diagnose_ref_binding): Handle rvalue reference.
1509 * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
1510 non-class type. Handle xvalue argument.
1511 * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
1513 * semantics.c (finish_compound_literal): Do direct-initialization,
1514 not cast, to initialize a reference.
1516 CWG 616, 1213 - value category of subobject references.
1517 * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
1519 * typeck2.c (build_m_component_ref): Likewise.
1520 * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
1521 distinction between temporary and xvalue.
1523 2018-05-23 Marek Polacek <polacek@redhat.com>
1525 Implement P0614R1, Range-based for statements with initializer.
1526 * parser.c (cp_parser_range_based_for_with_init_p): New.
1527 (cp_parser_init_statement): Use it. Parse the optional init-statement
1528 for a range-based for loop.
1529 (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
1531 2018-05-22 Jason Merrill <jason@redhat.com>
1533 PR c++/81420 - not extending temporary lifetime.
1534 * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
1535 * class.c (build_base_path): Avoid redundant move of an rvalue.
1537 PR c++/85866 - error with .* in default template arg.
1538 * pt.c (tsubst_copy_and_build): Handle partial instantiation.
1540 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
1542 * parser.c (cp_parser_parameter_declaration_list): Remove
1544 (cp_parser_parameter_declaration_clause): Adjust.
1545 (cp_parser_cache_defarg): Likewise.
1547 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
1550 * parser.c (cp_parser_maybe_commit_to_declaration,
1551 cp_parser_check_condition_declarator): New.
1552 (cp_parser_simple_declaration): Use the first above.
1553 (cp_parser_condition): Use both the above; enforce
1554 [stmt.stmt]/2 about the declarator not specifying
1555 a function or an array; improve error-recovery.
1557 2018-05-20 Jason Merrill <jason@redhat.com>
1559 PR libstdc++/85843 - warning in logic_error copy constructor.
1560 * class.c (type_has_user_nondefault_constructor): Check for a
1561 user-provided ctor, not user-declared.
1563 2018-05-19 Jason Merrill <jason@redhat.com>
1565 * pt.c (tsubst_pack_expansion): Sorry rather than abort
1566 on __integer_pack as subexpression of pattern.
1568 2018-05-18 Jason Merrill <jason@redhat.com>
1570 PR c++/58407 - deprecated implicit copy ops.
1571 * call.c (build_over_call): Warn about deprecated trivial fns.
1572 * class.c (classtype_has_user_copy_or_dtor): New.
1573 (type_build_ctor_call): Check TREE_DEPRECATED.
1574 (type_build_dtor_call): Likewise.
1575 * decl2.c (cp_warn_deprecated_use): Move from tree.c.
1576 Add checks. Return bool. Handle -Wdeprecated-copy.
1577 (mark_used): Use it.
1578 * decl.c (grokdeclarator): Remove redundant checks.
1579 * typeck2.c (build_functional_cast): Likewise.
1580 * method.c (lazily_declare_fn): Mark deprecated copy ops.
1581 * init.c (build_aggr_init): Only set TREE_USED if there are
1584 2018-05-18 Cesar Philippidis <cesar@codesourcery.com>
1587 * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
1590 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
1592 * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
1593 (potential_constant_expression_1): Likewise.
1595 2018-05-16 Marek Polacek <polacek@redhat.com>
1598 * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
1599 * tree.c (bot_manip): Call set_flags_from_callee for
1600 AGGR_INIT_EXPRs too.
1602 2018-05-15 Jason Merrill <jason@redhat.com>
1604 * cp-tree.h (cp_expr): Remove copy constructor.
1605 * mangle.c (struct releasing_vec): Declare copy constructor.
1607 * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
1609 PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
1610 * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
1611 is a throw-expression.
1613 2018-05-15 Paolo Carlini <paolo.carlini@oracle.com>
1615 * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
1616 (FOR_EACH_CLONE): Update.
1617 * decl.c (grokdeclarator): Use it.
1618 * decl2.c (vague_linkage_p): Likewise.
1619 * mangle.c (mangle_decl): Likewise.
1620 * method.c (lazily_declare_fn): Likewise.
1621 * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
1622 * repo.c (repo_emit_p): Likewise.
1623 * tree.c (decl_linkage): Likewise.
1625 2018-05-14 Jason Merrill <jason@redhat.com>
1627 Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
1628 * tree.c (build_cp_fntype_variant): New.
1629 (build_ref_qualified_type, build_exception_variant)
1630 (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
1631 (cxx_type_hash_eq, cp_check_qualified_type): Check
1632 TYPE_HAS_LATE_RETURN_TYPE.
1633 (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
1634 (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
1635 * class.c (build_clone): Use cxx_copy_lang_qualifiers.
1636 (adjust_clone_args): Likewise.
1637 * decl.c (grokfndecl): Add late_return_type_p parameter. Use
1638 build_cp_fntype_variant.
1639 (grokdeclarator): Pass late_return_type_p to grokfndecl.
1640 (check_function_type): Use cxx_copy_lang_qualifiers.
1641 (static_fn_type): Use cxx_copy_lang_qualifiers.
1642 * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
1643 (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
1644 (change_return_type): Use cxx_copy_lang_qualifiers.
1645 * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
1646 * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
1647 return type on the declarator like a normal trailing return type.
1648 * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
1649 (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
1650 * typeck.c (merge_types): Use build_cp_fntype_variant.
1652 2018-05-14 Paolo Carlini <paolo.carlini@oracle.com>
1654 * cp-tree.h (TYPE_REF_P): New.
1655 (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
1656 * call.c (build_list_conv, build_aggr_conv, standard_conversion,
1657 direct_reference_binding, reference_binding, implicit_conversion,
1658 add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
1659 build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
1660 build_over_call, perform_implicit_conversion_flags,
1661 extend_ref_init_temps, type_has_extended_temps): Use it.
1662 * class.c (one_inheriting_sig, check_field_decls,
1663 check_bases_and_members, find_flexarrays, finish_struct,
1664 fixed_type_or_null): Likewise.
1665 * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
1666 non_const_var_error, cxx_eval_constant_expression,
1667 potential_constant_expression_1): Likewise.
1668 * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
1669 cp_genericize_r, cxx_omp_privatize_by_reference,
1670 cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
1671 cp_fold_maybe_rvalue): Likewise.
1672 * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
1673 * cvt.c (build_up_reference, convert_to_reference,
1674 convert_from_reference, convert_to_void, noexcept_conv_p,
1675 fnptr_conv_p): Likewise.
1676 * decl.c (poplevel, check_for_uninitialized_const_var,
1677 check_initializer, initialize_local_var, cp_finish_decl,
1678 get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
1679 move_signature_fn_p, grok_op_properties, finish_function): Likewise.
1680 * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
1681 decl_maybe_constant_var_p): Likewise.
1682 * error.c (dump_type_prefix, dump_expr): Likewise.
1683 * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
1684 is_admissible_throw_operand_or_catch_parameter): Likewise.
1685 * expr.c (mark_use): Likewise.
1686 * init.c (build_zero_init_1, build_value_init_noctor,
1687 perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
1688 build_new, build_delete): Likewise.
1689 * lambda.c (build_lambda_object): Likewise.
1690 * mangle.c (write_expression, write_template_arg): Likewise.
1691 * method.c (forward_parm, do_build_copy_constructor,
1692 do_build_copy_assign, build_stub_object, constructible_expr,
1693 walk_field_subobs): Likewise.
1694 * parser.c (cp_parser_omp_for_loop_init,
1695 cp_parser_omp_declare_reduction_exprs,
1696 cp_parser_omp_declare_reduction): Likewise.
1697 * pt.c (convert_nontype_argument_function, convert_nontype_argument,
1698 convert_template_argument, tsubst_pack_expansion,
1699 tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
1700 maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
1701 more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
1702 value_dependent_expression_p, build_deduction_guide): Likewise.
1703 * semantics.c (finish_handler_parms, finish_non_static_data_member,
1704 finish_compound_literal, omp_privatize_field,
1705 handle_omp_array_sections_1, handle_omp_array_sections,
1706 cp_check_omp_declare_reduction, finish_omp_reduction_clause,
1707 finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
1708 finish_omp_clauses, finish_decltype_type, capture_decltype,
1709 finish_builtin_launder): Likewise.
1710 * tree.c (lvalue_kind, cp_build_reference_type, move,
1711 cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
1712 * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
1713 cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
1714 cp_build_addr_expr_1, maybe_warn_about_useless_cast,
1715 build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
1716 build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
1717 convert_for_initialization,
1718 maybe_warn_about_returning_address_of_local, check_return_expr,
1719 cp_type_quals, casts_away_constness, non_reference): Likewise.
1720 * typeck2.c (cxx_readonly_error, store_init_value,
1721 process_init_constructor_record, build_x_arrow, build_functional_cast,
1722 add_exception_specifier): Likewise.
1724 2018-05-14 Jason Merrill <jason@redhat.com>
1726 * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
1727 (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
1729 2018-05-11 Jakub Jelinek <jakub@redhat.com>
1732 * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
1733 * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
1734 cxx_omp_predetermined_sharing_1. Rename old function to ...
1735 (cxx_omp_predetermined_sharing_1): ... this.
1736 * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
1737 instead of cxx_omp_predetermined_sharing.
1739 2018-05-10 Jason Merrill <jason@redhat.com>
1741 * decl.c (cp_finish_decl): Don't instantiate auto variable.
1742 (check_static_variable_definition): Allow auto.
1743 * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
1745 * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
1746 (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
1748 Core issue 2310 - conversion to base of incomplete type.
1749 * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
1751 CWG 2267 - list-initialization of reference temporary
1752 * call.c (reference_binding): List-initializing a reference
1753 temporary is copy-list-initialization.
1755 * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
1757 * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
1758 instantiation in template context.
1760 * class.c (vbase_has_user_provided_move_assign): Use
1763 * lambda.c (lambda_expr_this_capture): Improve logic.
1765 * decl.c (make_typename_type): s/parameters/arguments/.
1766 * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
1767 * pt.c (make_pack_expansion): Correct error message.
1769 2018-05-10 Jakub Jelinek <jakub@redhat.com>
1772 * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
1773 fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
1776 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
1779 * decl2.c (adjust_var_decl_tls_model): New static function.
1780 (comdat_linkage): Call it on a variable.
1781 (maybe_make_one_only): Likewise.
1783 2018-05-09 Paolo Carlini <paolo.carlini@oracle.com>
1787 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
1790 * parser.c (cp_parser_parameter_declaration_list): When the
1791 entire parameter-declaration-list is erroneous maybe call
1792 abort_fully_implicit_template.
1794 2018-05-08 Jason Merrill <jason@redhat.com>
1796 PR c++/85706 - class deduction under decltype
1797 * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE. Clear
1798 *walk_subtrees whether or not we walked into the operand.
1799 (type_uses_auto): Only look at deduced contexts.
1801 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
1804 * parser.c (cp_parser_parameter_declaration_list): When the
1805 entire parameter-declaration-list is erroneous maybe call
1806 abort_fully_implicit_template.
1808 2018-05-08 Marek Polacek <polacek@redhat.com>
1811 * semantics.c (finish_if_stmt_cond): See through typedefs.
1813 2018-05-07 Jason Merrill <jason@redhat.com>
1815 PR c++/85646 - lambda visibility.
1816 * decl2.c (determine_visibility): Don't mess with template arguments
1817 from the containing scope.
1818 (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
1821 2018-05-07 Nathan Sidwell <nathan@acm.org>
1823 Remove fno-for-scope
1824 * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
1825 (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
1826 (SET_DECL_SHADOWED_FOR_VAR): Delete.
1827 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1828 (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
1830 * name-lookup.h (struct cp_binding_level): Remove
1831 dead_vars_from_for field.
1832 * cp-lang.c (cp_init_ts): Delete.
1833 (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
1834 * cp-objcp-common.c (shadowed_var_for_decl): Delete.
1835 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1836 (init_shadowed_var_for_decl): Delete.
1837 * decl.c (poplevel): Remove shadowed for var handling.
1838 (cxx_init_decl_processing): Remove -ffor-scope deprecation.
1839 * name-lookup.c (find_local_binding): Remove shadowed for var
1841 (check_local_shadow): Likewise.
1842 (check_for_out_of_scope_variable): Delete.
1843 * parser.c (cp_parser_primary_expression): Remove shadowed for var
1845 * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
1846 * semantics.c (begin_for_scope): Always have a scope.
1847 (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
1848 (begin_range_for_stmt, finish_id_expression): Likewise.
1850 2018-05-07 Jason Merrill <jason@redhat.com>
1852 PR c++/85618 - ICE with initialized VLA.
1853 * tree.c (vla_type_p): New.
1854 * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
1855 rather than array_of_runtime_bound_p.
1857 2018-05-05 Paolo Carlini <paolo.carlini@oracle.com>
1859 * cvt.c (ocp_convert): Early handle the special case of a
1860 null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
1862 2018-05-03 Jason Merrill <jason@redhat.com>
1864 PR c++/85600 - virtual delete failure.
1865 * init.c (build_delete): Always save_expr when deleting.
1867 2018-05-03 Nathan Sidwell <nathan@acm.org>
1869 * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
1870 * name-lookup.c (do_pushdecl): Likewise.
1872 2018-05-02 Paolo Carlini <paolo.carlini@oracle.com>
1873 Jason Merrill <jason@redhat.com>
1876 * name-lookup.c (check_local_shadow): Don't handle static old
1877 declarations in the block handling locals shadowing locals.
1879 2018-05-01 Jason Merrill <jason@redhat.com>
1881 PR c++/85587 - error with scoped enum in template.
1882 * semantics.c (finish_qualified_id_expr): Don't return an
1883 unqualified IDENTIFIER_NODE.
1885 2018-04-30 Jason Merrill <jason@redhat.com>
1887 PR c++/85580 - extern "C" and local variables
1888 * name-lookup.c (check_extern_c_conflict): Ignore local decls.
1890 PR c++/84701 - unsigned typeof.
1891 * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
1892 of long/short/signed/unsigned.
1894 PR c++/85305 - pack in lambda init-capture.
1895 * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
1896 check_for_bare_parameter_packs in a subexpression.
1897 (cp_parser_lambda_introducer): Use it.
1899 PR c++/61982 - dead stores to destroyed objects.
1900 * call.c (build_trivial_dtor_call): New, assigns a clobber.
1901 (build_over_call, build_special_member_call): Use it.
1902 * cp-tree.h: Declare it.
1903 * init.c (build_delete): Remove trivial path.
1905 * init.c (build_dtor_call): Use build_special_member_call.
1906 (build_delete): Remove redundant uses of save_addr.
1908 * decl.c (build_clobber_this): Use build_clobber.
1910 2018-04-27 Jakub Jelinek <jakub@redhat.com>
1913 * init.c (build_zero_init_1): For zero initialization of
1914 NULLPTR_TYPE_P type use build_int_cst directly.
1916 2018-04-27 David Malcolm <dmalcolm@redhat.com>
1919 * name-lookup.c (consider_binding_level): Skip compiler-generated
1921 * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
1922 nested if statements into a series of rejection tests. Reject
1923 lambda-ignored entities as suggestions.
1925 2018-04-27 Jason Merrill <jason@redhat.com>
1927 * cvt.c (cp_fold_convert): Use convert_ptrmem.
1928 * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
1930 2018-04-27 Paolo Carlini <paolo.carlini@oracle.com>
1933 * decl.c (grokdeclarator): Clear friendp upon definition in local
1934 class definition error.
1936 2018-04-27 Jason Merrill <jason@redhat.com>
1938 PR c++/85545 - ICE with noexcept PMF conversion.
1939 * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
1941 * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
1943 (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
1945 2018-04-27 Nathan Sidwell <nathan@acm.org>
1947 * typeck.c (convert_ptrmem): Move local var decls to initialization.
1949 * cp-tree.h (TEMPLATE_INFO): Fix comments.
1950 (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
1951 (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
1952 (dump, print_other_binding_stacks): Remove declarations.
1953 * name-lookup.c (print_other_binding_stack): Make static.
1954 * pt.c (build_template_decl): Make static.
1956 2018-04-26 Jason Merrill <jason@redhat.com>
1958 PR c++/85545 - ICE with noexcept PMF conversion.
1959 * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
1961 2018-04-25 Nathan Sidwell <nathan@acm.org>
1965 * cp-tree.h (REINTERPRET_CAST_P): New.
1966 * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
1967 Reject REINTERPET_CAST_P conversions. Use cplus_expand_constant
1968 for non-trivial PTRMEM_CST cases.
1969 * typeck.c (build_nop_reinterpret): New.
1970 (build_reinterpret_cast_1): Use it. Set REINTERPRET_CAST_P on
1971 NOP_EXPRs returned by cp_convert.
1973 2018-04-23 Jason Merrill <jason@redhat.com>
1975 PR c++/69560 - wrong alignof(double) on x86.
1976 CWG 1879 - Inadequate definition of alignment requirement.
1977 * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
1978 * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
1979 (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
1980 (cxx_alignof_expr): Pass it.
1981 * parser.c (cp_parser_unary_expression): Pass it.
1982 * pt.c (tsubst_copy): Copy it.
1983 (tsubst_copy_and_build): Pass it.
1984 * decl.c (fold_sizeof_expr): Pass it.
1986 2018-04-23 Jakub Jelinek <jakub@redhat.com>
1987 Jason Merrill <jason@redhat.com>
1989 PR c++/85470 - wrong error with static data member.
1990 * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
1991 * typeck2.c (store_init_value): Likewise.
1993 2018-04-20 Jakub Jelinek <jakub@redhat.com>
1996 * cp-tree.h (tinst_level): Remove in_system_header_p member,
1997 change refcount member from unsigned char to unsigned short,
1998 add refcount_infinity static data member, adjust comments.
1999 * pt.c (tinst_level::refcount_infinity): Define.
2000 (inc_refcount_use): Remove assert, don't increment if refcount
2001 is already refcount_infinity, adjust comment.
2002 (dec_refcount_use): Remove assert, don't decrement if refcount
2003 is refcount_infinity, adjust comment.
2004 (push_tinst_level_loc): Formatting fix.
2006 2018-04-19 Paolo Carlini <paolo.carlini@oracle.com>
2009 * pt.c (lookup_template_class_1): Check pushtag return value for
2012 2018-04-19 Alexandre Oliva <aoliva@redhat.com>
2015 * cp-tree.h (tinst_level::free): Fix whitespace.
2017 2018-04-18 Paolo Carlini <paolo.carlini@oracle.com>
2020 * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
2021 for error_mark_node.
2023 2018-04-18 Jakub Jelinek <jakub@redhat.com>
2026 * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
2027 tricks from here to ...
2028 * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here. Only use it
2029 if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
2031 2018-04-18 Alexandre Oliva <aoliva@redhat.com>
2034 * cp-tree.h (struct tinst_level): Split decl into tldcl and
2035 targs. Add private split_list_p, tree_list_p, and not_list_p
2036 inline const predicates; to_list private member function
2037 declaration; free public member function declaration; list_p,
2038 get_node and maybe_get_node accessors, and refcount data
2039 member. Narrow errors to unsigned short.
2040 * error.c (print_instantiation_full_context): Use new
2042 (print_instantiation_partial_context_line): Likewise. Drop
2043 const from tinst_level-typed parameter.
2044 * mangle.c (mangle_decl_string): Likewise.
2045 * pt.c (freelist): New template class.
2046 (tree_list_freelist_head): New var.
2047 (tree_list_freelist): New fn, along with specializations.
2048 (tinst_level_freelist_head): New var.
2049 (pending_template_freelist_head): Likewise.
2050 (tinst_level_freelist, pending_template_freelist): New fns.
2051 (tinst_level::to_list, tinst_level::free): Define.
2052 (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
2053 (set_refcount_ptr): New template fn.
2054 (add_pending_template): Adjust for refcounting, freelists and
2056 (neglectable_inst_p): Take a NULL d as a non-DECL.
2057 (limit_bad_template_recursion): Use new accessors.
2058 (push_tinst_level): New overload to create the list.
2059 (push_tinst_level_loc): Make it static, split decl into two
2060 args, adjust tests and initialization to cope with split
2061 lists, use freelist, adjust for refcounting.
2062 (push_tinst_level_loc): New wrapper with the old interface.
2063 (pop_tinst_level): Adjust for refcounting.
2064 (record_last_problematic_instantiation): Likewise.
2065 (reopen_tinst_level): Likewise. Use new accessors.
2066 (instantiate_alias_template): Adjust for split list.
2067 (fn_type_unification): Likewise.
2068 (get_partial_spec_bindings): Likewise.
2069 (instantiate_pending_templates): Use new accessors. Adjust
2070 for refcount. Release pending_template to freelist.
2071 (instantiating_current_function_p): Use new accessors.
2073 2018-04-16 Alexandre Oliva <aoliva@redhat.com>
2076 * parser.c (cp_parser_builtin_offset): Reject type definitions.
2077 * mangle.c (nested_anon_class_index): Avoid crash returning -1
2078 if we've seen errors.
2080 2018-04-12 David Malcolm <dmalcolm@redhat.com>
2083 * name-lookup.c (macro_use_before_def::maybe_make): New function,
2084 checking that the use is indeed before the definition.
2085 (macro_use_before_def::macro_use_before_def): Make private.
2086 (macro_use_before_def::~macro_use_before_def): Make private. Move
2087 check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
2088 (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
2089 than using new directly.
2091 2018-04-12 Jason Merrill <jason@redhat.com>
2093 PR c++/85356 - ICE with pointer to member function.
2094 * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
2095 flag_noexcept_type. Build the new spec within the function context.
2096 * except.c (build_noexcept_spec): Do get constant value in templates
2097 if flag_noexcept_type.
2098 * decl.c (check_redeclaration_exception_specification): Don't
2099 instantiate noexcept on a dependent declaration.
2101 2018-04-12 Marek Polacek <polacek@redhat.com>
2104 * constexpr.c (reduced_constant_expression_p): Return false for null
2107 2018-04-11 Marek Polacek <polacek@redhat.com>
2110 * constexpr.c (potential_constant_expression_1): Consider conversions
2111 from classes to literal types potentially constant.
2113 2018-04-10 Paolo Carlini <paolo.carlini@oracle.com>
2116 * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
2117 the type like TYPE_PTR_OR_PTRMEM_P.
2119 2018-04-10 Jason Merrill <jason@redhat.com>
2121 PR debug/65821 - wrong location for main().
2122 * call.c (clear_location_r, convert_default_arg): Revert.
2123 * tree.c (break_out_target_exprs): Add clear_location parm.
2124 (struct bot_data): New.
2125 (bot_manip): Clear location if requested.
2126 * init.c (get_nsdmi): Pass clear_location.
2128 2018-04-10 David Malcolm <dmalcolm@redhat.com>
2131 * call.c (get_fndecl_argument_location): Make non-static.
2132 * cp-tree.h (get_fndecl_argument_location): New decl.
2133 * typeck.c (convert_for_assignment): When complaining due to
2134 conversions for an argument, show the location of the parameter
2137 2018-04-10 Jakub Jelinek <jakub@redhat.com>
2139 PR c++/85312 - P0962 cleanup
2140 * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
2143 2018-04-10 Jason Merrill <jason@redhat.com>
2145 PR debug/65821 - wrong location for main().
2146 * call.c (clear_location_r): New.
2147 (convert_default_arg): Use it.
2148 * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
2150 PR c++/85285 - ICE with flexible array after substitution.
2151 * pt.c (instantiate_class_template_1): Check for flexible array in
2154 2018-04-09 Paolo Carlini <paolo.carlini@oracle.com>
2157 * decl.c (cp_finish_decomp): In a template, if the type is incomplete
2158 issue a pedwarn and defer trying to do bindings.
2160 2018-04-09 Jason Merrill <jason@redhat.com>
2162 PR c++/85279 - dump_expr doesn't understand decltype.
2163 * error.c (dump_expr): Handle DECLTYPE_TYPE.
2165 PR c++/85262 - ICE with redundant qualification on constructor.
2166 * call.c (build_new_method_call_1): Move make_args_non_dependent
2167 after A::A() handling.
2169 PR c++/85277 - ICE with invalid offsetof.
2170 * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
2171 Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
2173 PR c++/85264 - ICE with excess template-parameter-list.
2174 * parser.c (cp_parser_check_template_parameters): Add template_id_p
2175 parameter. Don't allow an extra template header if true.
2176 (cp_parser_class_head): Pass template_id_p.
2177 (cp_parser_elaborated_type_specifier): Likewise.
2178 (cp_parser_alias_declaration): Likewise.
2179 (cp_parser_check_declarator_template_parameters): Likewise.
2181 2018-04-09 Jakub Jelinek <jakub@redhat.com>
2184 * parser.c (cp_parser_simple_declaration): For structured bindings,
2185 if *maybe_range_for_decl is NULL after parsing it, set it to
2188 2018-04-09 Jason Merrill <jason@redhat.com>
2190 PR c++/85256 - ICE capturing pointer to VLA.
2191 * lambda.c (add_capture): Distinguish between variable-size and
2192 variably-modified types.
2194 2018-04-06 Jason Merrill <jason@redhat.com>
2196 PR c++/85214 - ICE with alias, generic lambda, constexpr if.
2197 * pt.c (extract_locals_r): Remember local typedefs.
2199 2018-04-06 David Malcolm <dmalcolm@redhat.com>
2202 * name-lookup.c (struct std_name_hint): Move out of
2203 get_std_name_hint; add field "min_dialect".
2204 (get_std_name_hint): Add min_dialect values to all initializers.
2205 Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
2206 <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
2207 <shared_mutex>, <string_view>, <thread>, and <variant>.
2208 Add fstream, ifstream, and ofstream to <fstream>.
2209 Add istringstream, ostringstream, and stringstream to <sstream>.
2210 Add basic_string to <string>.
2211 Add tuple_element and tuple_size to <tuple>.
2212 Add declval to <utility>.
2213 Fix ordering of <queue> and <tuple>.
2214 Return a std_name_hint, rather than a const char *.
2215 (get_cxx_dialect_name): New function.
2216 (maybe_suggest_missing_std_header): Detect names that aren't yet
2217 available in the current dialect, and instead of suggesting a
2218 missing #include, warn about the dialect.
2220 2018-04-06 Jakub Jelinek <jakub@redhat.com>
2223 * pt.c (tsubst_decomp_names): Return error_mark_node and assert
2224 errorcount is set if tsubst doesn't return a VAR_DECL.
2226 2018-04-06 David Malcolm <dmalcolm@redhat.com>
2229 * name-lookup.c (using_directives_contain_std_p): New function.
2230 (has_using_namespace_std_directive_p): New function.
2231 (suggest_alternatives_for): Simplify if/else logic using early
2232 returns. If no candidates were found, and there's a
2233 "using namespace std;" directive, call
2234 maybe_suggest_missing_std_header.
2235 (maybe_suggest_missing_header): Split later part of the function
2237 (maybe_suggest_missing_std_header): New.
2239 2018-04-06 Jason Merrill <jason@redhat.com>
2241 PR c++/85242 - ICE with class definition in template parm.
2242 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
2243 processing_template_parmlist.
2245 PR c++/85240 - LTO ICE with using of undeduced auto fn.
2246 * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
2248 2018-04-05 Jakub Jelinek <jakub@redhat.com>
2251 * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
2252 is not prev, if prev == decl.
2255 * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
2256 maybe_apply_pragma_weak here...
2257 (cp_maybe_mangle_decomp): ... but call it here instead.
2259 2018-04-05 Jason Merrill <jason@redhat.com>
2261 PR c++/85136 - ICE with designated init in template.
2262 * decl.c (maybe_deduce_size_from_array_init): Handle dependent
2263 designated initializer.
2264 (check_array_designated_initializer): Update ce->index with the
2267 PR c++/83808 - ICE with VLA initialization.
2268 * typeck2.c (process_init_constructor_array): Don't require a VLA
2269 initializer to have VLA type.
2271 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
2274 * call.c (convert_like_real): Fail gracefully for a broken
2275 std::initializer_list, missing a definition.
2277 * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
2279 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
2282 * decl.c (grokdeclarator): Fix diagnostic about typedef name used
2283 as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
2285 2018-04-05 Jason Merrill <jason@redhat.com>
2287 PR c++/82152 - ICE with class deduction and inherited ctor.
2288 * pt.c (do_class_deduction): Ignore inherited ctors.
2290 PR c++/84665 - ICE with array of empty class.
2291 * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
2293 PR c++/85228 - ICE with lambda in enumerator in template.
2294 * pt.c (bt_instantiate_type_proc): Don't assume
2295 CLASSTYPE_TEMPLATE_INFO is non-null.
2297 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
2300 * decl.c (find_decomp_class_base): Check accessibility instead
2301 of declared access, adjust diagnostic.
2303 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
2306 * decl.c (get_tuple_decomp_init): Check the templatedness
2309 2018-04-05 Jason Merrill <jason@redhat.com>
2311 PR c++/85200 - ICE with constexpr if in generic lambda.
2312 * pt.c (extract_locals_r): Don't record the local specs of variables
2313 declared within the pattern.
2315 2018-04-05 Alexandre Oliva <aoliva@redhat.com>
2318 * pt.c (check_auto_in_tmpl_args): New.
2319 (tsubst_qualified_id): Use it to reject template args
2320 referencing auto for non-type templates.
2321 * parser.c (cp_parser_template_id): Likewise.
2322 * cp-tree.h (check_auto_in_tmpl_args): Declare.
2323 * typeck2.c (build_functional_cast): Report correct location
2324 for invalid use of auto.
2326 2018-04-04 Jason Merrill <jason@redhat.com>
2328 PR c++/85215 - ICE with copy-init from conversion.
2329 * call.c (merge_conversion_sequences): Fix type of direct binding
2332 PR c++/84938 - ICE with division by ~-1.
2333 * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
2335 PR c++/84936 - ICE with unexpanded pack in mem-initializer.
2336 * parser.c (cp_parser_mem_initializer_list): Call
2337 check_for_bare_parameter_packs.
2339 2018-04-04 Jakub Jelinek <jakub@redhat.com>
2342 * constexpr.c (cxx_eval_builtin_function_call): For calls to
2343 builtin_valid_in_constant_expr_p functions, don't call
2344 cxx_eval_constant_expression if argument is not
2345 potential_constant_expression.
2348 * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
2350 * semantics.c (calculate_bases): Add complain argument. Use
2351 complete_type_or_maybe_complain instead of just complete_type and
2352 return an empty vector if it fails. Move make_tree_vector () call
2353 after early return. Formatting fixes.
2354 (calculate_direct_bases): Likewise. Call release_tree_vector at the
2356 (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
2357 * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
2358 calculate_direct_bases callers, formatting fixes.
2360 2018-04-04 Jason Merrill <jason@redhat.com>
2362 PR c++/85006 - -fconcepts ICE with A<auto...> return type
2363 * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
2365 PR c++/85200 - ICE with constexpr if in generic lambda.
2366 * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
2368 PR c++/84221 - bogus -Wunused with attribute and template.
2369 * decl2.c (is_late_template_attribute): Handle unused and used
2370 normally on non-TYPE_DECL.
2372 PR c++/85135 - ICE with omitted template arguments.
2373 * decl.c (grokdeclarator): Catch deduced class type in trailing
2376 PR c++/85133 - ICE with missing concept initializer.
2377 * decl.c (cp_finish_decl): If a concept initializer is missing, use
2380 PR c++/85118 - wrong error with generic lambda and std::bind.
2381 * call.c (add_template_conv_candidate): Disable if there are any
2384 PR c++/85141 - ICE with compound assignment and static member fn.
2385 * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
2386 compound assignment.
2388 PR c++/85148 - ICE with 'this' in array NSDMI.
2389 * tree.c (replace_placeholders_r): Use handled_component_p.
2391 2018-04-04 Ville Voutilainen <ville.voutilainen@gmail.com>
2394 * decl.c (grokfndecl): Handle standard UDL diagnostics here..
2395 * parser.c (cp_parser_unqualified_id): ..not here.
2397 2018-04-04 Alexandre Oliva <aoliva@redhat.com>
2400 * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
2402 * decl2.c (mark_used): Return without effects if tf_conv.
2404 2018-04-03 Jason Merrill <jason@redhat.com>
2406 PR c++/85092 - C++17 ICE with unused list constructor.
2407 * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
2410 PR c++/85113 - ICE with constexpr and __builtin_constant_p.
2411 * constexpr.c (cxx_eval_builtin_function_call): Only defer
2412 __builtin_constant_p if ctx->quiet.
2414 2018-04-03 Paolo Carlini <paolo.carlini@oracle.com>
2417 * pt.c (rewrite_template_parm): If the first argument is
2418 error_mark_node return it immediately.
2419 (build_deduction_guide): Check the return value of the
2420 latter for error_mark_node.
2421 (do_class_deduction): Check the return value of the latter.
2423 2018-04-03 Jason Merrill <jason@redhat.com>
2425 * semantics.c (finish_if_stmt_cond): Use
2426 instantiation_dependent_expression_p.
2428 PR c++/85149 - generic lambda and constexpr if.
2429 * pt.c (build_extra_args, add_extra_args): Split from
2430 tsubst_pack_expansion.
2431 (tsubst_expr) [IF_STMT]: Use them.
2432 * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
2434 * typeck.c (merge_types): Limit matching attribute shortcut to
2437 2018-04-03 Jakub Jelinek <jakub@redhat.com>
2440 * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
2443 * name-lookup.c (handle_namespace_attrs): Return early if attributes
2447 * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
2448 fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
2449 instead for static data members clear init and set DECL_EXTERNAL.
2451 2018-04-02 Jason Merrill <jason@redhat.com>
2453 PR c++/64095 - auto... parameter pack.
2454 * parser.c (cp_parser_parameter_declaration): Handle turning autos
2456 (cp_parser_parameter_declaration_list): Not here.
2458 2018-03-31 Alexandre Oliva <aoliva@redhat.com>
2461 * class.c (instantiate_type): Peel off SAVE_EXPR before
2464 2018-03-30 Jason Merrill <jason@redhat.com>
2466 * typeck2.c (process_init_constructor_record): Use
2467 init_list_type_node for the CONSTRUCTOR around an anonymous union
2468 designated initializer.
2470 2018-03-30 Jakub Jelinek <jakub@redhat.com>
2473 * semantics.c (finish_omp_reduction_clause): If
2474 OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
2475 even if processing_template_decl.
2477 2018-03-29 David Malcolm <dmalcolm@redhat.com>
2480 * name-lookup.c (get_std_name_hint): Add names from <memory>,
2481 <tuple>, and <utility>.
2483 2018-03-29 Jason Merrill <jason@redhat.com>
2485 PR c++/85093 - too many template args with pack expansion.
2486 * pt.c (coerce_template_parms): Keep pack expansion args that will
2489 2018-03-29 Jason Merrill <jason@redhat.com>
2491 * pt.c (build_non_dependent_expr): Propagate expr location.
2493 2018-03-27 Jason Merrill <jason@redhat.com>
2495 PR c++/85060 - wrong-code with call to base member in template.
2496 * search.c (any_dependent_bases_p): Check uses_template_parms
2497 rather than processing_template_decl.
2499 2018-03-29 David Malcolm <dmalcolm@redhat.com>
2502 * typeck.c (convert_for_assignment): When complaining due to
2503 conversions for an argument, attempt to use the location of the
2506 2018-03-28 Paolo Carlini <paolo.carlini@oracle.com>
2509 * pt.c (tsubst_default_argument): Early return if the type of the
2510 parameter is erroneous.
2512 2018-03-28 Alexandre Oliva <aoliva@redhat.com>
2515 * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
2519 * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
2521 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
2524 * method.c (defaulted_late_check): Partially revert r253321 changes,
2525 do not early return upon error.
2527 2018-03-27 Jakub Jelinek <jakub@redhat.com>
2530 * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
2531 type call fold to generate VECTOR_CSTs when possible.
2534 * tree.c (cp_build_reference_type): If to_type is error_mark_node,
2535 return it right away.
2537 2018-03-27 Volker Reichelt <v.reichelt@netcologne.de>
2539 * search.c (check_final_overrider): Use inform instead of error
2540 for the diagnostics of the overridden functions. Tweak wording.
2542 2018-03-27 Jakub Jelinek <jakub@redhat.com>
2545 * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
2546 is NULL. Assert if thunk_binfo is NULL then errorcount is non-zero.
2548 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
2549 Jason Merrill <jason@redhat.com>
2552 * init.c (build_aggr_init): When initializing from array,
2553 reject anything but CONSTRUCTORs and TARGET_EXPRs.
2554 (build_vec_init): Handle separately ARRAY_TYPEs.
2556 2018-03-26 Jason Merrill <jason@redhat.com>
2558 PR c++/85062 - ICE with alignas in wrong place.
2559 * decl.c (grokdeclarator): Ignore attributes on type-specifiers
2562 PR c++/85049 - ICE with __integer_pack.
2563 * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
2564 * cp-tree.h (TEMPLATE_PARM_P): New.
2566 2018-03-23 Jason Merrill <jason@redhat.com>
2568 PR c++/78489 - wrong SFINAE behavior.
2571 * pt.c (type_unification_real): Don't defer substitution failure.
2573 2018-03-23 Jakub Jelinek <jakub@redhat.com>
2576 * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
2580 * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
2581 cp_build_unary_op call with gcc_unreachable ().
2583 2018-03-23 Marek Polacek <polacek@redhat.com>
2586 * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
2587 Handle EXACT_DIV_EXPR and RDIV_EXPR. Tweak condition.
2588 (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
2590 2018-03-23 Ville Voutilainen <ville.voutilainen@gmail.com>
2593 * parser.c (cp_parser_perform_range_for_lookup): Change
2594 the condition for deciding whether to use members.
2596 2018-03-23 Marek Polacek <polacek@redhat.com>
2599 * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
2601 2018-03-23 Alexandre Oliva <aoliva@redhat.com>
2604 * parser.c (cp_parser_alias_declaration): Call
2605 parser_check_template_parameters.
2608 * pt.c (resolve_typename_type): Drop assert that stopped
2609 simplification to template-independent types. Add assert to
2610 verify the initial scope is template dependent.
2611 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
2612 Reparse the id expression as a type-name, not a declarator.
2615 * init.c (build_vec_init): Error at parenthesized array init.
2620 * cp-tree.h (temp_override): New template class, generalizing
2621 a cleanup that was only used...
2622 * parser.c (cp_parser_parameter_declaration_clause):
2623 ... here for auto_is_implicit_function_template_parm_p.
2624 (cp_parser_gnu_attributes_opt): Use it here as well.
2625 (cp_parser_std_attribute): Likewise.
2627 2018-03-22 Marek Polacek <polacek@redhat.com>
2630 * semantics.c (finish_if_stmt_cond): Check if the type of the condition
2633 2018-03-21 Jason Merrill <jason@redhat.com>
2635 PR c++/81311 - wrong C++17 overload resolution.
2636 * call.c (build_user_type_conversion_1): Remove C++17 code.
2637 (conv_binds_ref_to_prvalue): New.
2638 (build_over_call): Handle C++17 copy elision.
2639 (build_special_member_call): Only do C++17 copy elision here if the
2640 argument is already the right type.
2642 2018-03-21 Alexandre Oliva <aoliva@redhat.com>
2645 * init.c (build_vec_init): Silence error, former sorry,
2650 * parser.c (abort_fully_implicit_template_p): New.
2651 (cp_parser_skip_to_end_of_statement): Use it.
2652 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2653 (finish_fully_implicit_template_p): Clear
2654 implicit_template_parms and implicit_template_scope.
2656 2018-03-21 Paolo Carlini <paolo.carlini@oracle.com>
2659 * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
2660 error_mark_node when check_array_designated_initializer fails.
2662 2018-03-21 Jakub Jelinek <jakub@redhat.com>
2665 * cp-tree.h (genericize_compound_lvalue): Declare.
2666 * typeck.c (genericize_compound_lvalue): New function.
2667 (unary_complex_lvalue, cp_build_modify_expr): Use it.
2668 * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
2669 and PREDECREMENT_EXPR in output and "m" constrained input operands with
2670 COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost
2671 COMPOUND_EXPR operand.
2673 2018-03-21 Nathan Sidwell <nathan@acm.org>
2676 * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
2677 * decl2.c (vague_linkage_p): Likewise.
2679 2018-03-21 David Malcolm <dmalcolm@redhat.com>
2682 * constexpr.c (constexpr_fn_retval): Make non-"static".
2683 * cp-tree.h (constexpr_fn_retval): New decl.
2684 * search.c (direct_accessor_p): Update leading comment.
2685 (reference_accessor_p): Likewise.
2686 (field_accessor_p): Replace check that function body is a
2687 RETURN_EXPR with a call to constexpr_fn_retval. Fix
2688 indentation of "field_type" decl.
2690 2018-03-21 Nathan Sidwell <nathan@acm.org>
2693 * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
2696 2018-03-21 Martin Sebor <msebor@redhat.com>
2699 * call.c (first_non_public_field): New template and function.
2700 (first_non_trivial_field): New function.
2701 (maybe_warn_class_memaccess): Call them.
2703 2018-03-21 David Malcolm <dmalcolm@redhat.com>
2706 * search.c (field_accessor_p): Use class_of_this_parm rather than
2707 type_of_this_parm, to check that "this" is a "const T *", rather
2710 2018-03-21 Nathan Sidwell <nathan@acm.org>
2712 * class.c (finish_struct_anon_r): Refactor, deprecate anything
2713 other than public non-static data members.
2714 * parser.c (cp_parser_init_declarator): Deprecate attributes after
2715 parenthesized initializer.
2718 * name-lookup.c (update_binding): Correct logic for local binding
2721 2018-03-21 Marek Polacek <polacek@redhat.com>
2723 PR c++/71638, ICE with NSDMI and reference.
2724 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2725 even when we replace an element.
2727 2018-03-20 Marek Polacek <polacek@redhat.com>
2729 PR c++/84978, ICE with NRVO.
2730 * constexpr.c (cxx_eval_constant_expression): Handle the case when
2731 a RESULT_DECL isn't in the hash map.
2733 2018-03-20 Jason Merrill <jason@redhat.com>
2735 PR c++/84978, ICE with NRVO.
2736 * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
2737 (cp_get_callee_fndecl_nofold): New.
2738 * cp-gimplify.c (cp_genericize_r): Use it instead.
2739 * call.c (check_self_delegation): Likewise.
2741 2018-03-20 Nathan Sidwell <nathan@acm.org>
2744 * name-lookup.c (pushdecl_class_level): Push anon-struct's
2745 member_vec, if there is one.
2748 * cp-tree.h (lookup_list_keep): Declare.
2749 * tree.c (lookup_list_keep): New, broken out of ...
2750 (build_min): ... here. Call it.
2751 * decl.c (cp_finish_decl): Call lookup_list_keep.
2753 2018-03-19 Jason Merrill <jason@redhat.com>
2755 PR c++/84937 - ICE with class deduction and auto.
2756 * pt.c (rewrite_template_parm): Fix auto handling.
2758 2018-03-19 Marek Polacek <polacek@redhat.com>
2761 * pt.c (enclosing_instantiation_of): Check if fn is null.
2764 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2765 as we evaluate the elements.
2766 (cxx_eval_constant_expression): Verify constructor's flags
2769 2018-03-19 Jason Merrill <jason@redhat.com>
2771 PR c++/71834 - template-id with too few arguments.
2772 * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
2774 2018-03-19 Nathan Sidwell <nathan@acm.org>
2777 * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
2778 * pt.c (build_template_decl): Propagate language linkage.
2781 * name-lookup.c (set_local_extern_decl_linkage): Defend against
2784 2018-03-16 Jakub Jelinek <jakub@redhat.com>
2787 * parser.c (cp_parser_lambda_introducer): Remove trailing space from
2789 * method.c (synthesize_method): Likewise.
2790 * pt.c (convert_nontype_argument): Likewise.
2792 2018-03-16 Jason Merrill <jason@redhat.com>
2794 PR c++/84720 - ICE with rvalue ref non-type argument.
2795 * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
2796 (convert_nontype_argument): Revert earlier change.
2798 PR c++/80227 - SFINAE and negative array size.
2799 * decl.c (compute_array_index_type): Use
2800 build_converted_constant_expr and valid_constant_size_p.
2802 PR c++/84906 - silent wrong code with ambiguous conversion.
2803 * call.c (build_user_type_conversion_1): Set need_temporary_p on
2804 ambiguous conversion.
2805 (convert_like_real): Check it.
2807 PR c++/83937 - wrong C++17 handling of init-list ctor argument.
2808 * call.c (build_special_member_call): Don't convert an init-list
2809 argument directly to the class type.
2811 2018-03-16 Jakub Jelinek <jakub@redhat.com>
2815 * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
2816 (find_placeholder): Declare.
2817 * tree.c (struct replace_placeholders_t): Add exp member.
2818 (replace_placeholders_r): Don't walk into ctors with
2819 CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
2820 d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
2821 (replace_placeholders): Initialize data.exp.
2822 (find_placeholders_r, find_placeholders): New functions.
2823 * typeck2.c (process_init_constructor_record,
2824 process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
2825 if adding NSDMI on which find_placeholder returns true.
2826 * call.c (build_over_call): Don't call replace_placeholders here.
2827 * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
2828 TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
2829 TARGET_EXPR_INITIAL.
2830 (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
2833 2018-03-16 Jason Merrill <jason@redhat.com>
2835 PR c++/83911 - ICE with multiversioned constructor.
2836 * cp-gimplify.c (cp_genericize_r): Replace versioned function with
2838 * call.c (build_over_call): Not here.
2840 2018-03-16 Jakub Jelinek <jakub@redhat.com>
2843 * decl.c (reshape_init_class): Don't assert d->cur->index == field
2844 if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
2846 2018-03-15 Jakub Jelinek <jakub@redhat.com>
2849 * cp-tree.h (cp_warn_deprecated_use): Declare.
2850 * tree.c (cp_warn_deprecated_use): New function.
2851 * typeck2.c (build_functional_cast): Use it.
2852 * decl.c (grokparms): Likewise.
2853 (grokdeclarator): Likewise. Temporarily push nested class scope
2854 around grokparms call for out of class member definitions.
2856 2018-03-14 Jason Merrill <jason@redhat.com>
2858 PR c++/84820 - no error for invalid qualified-id.
2859 * parser.c (cp_parser_make_indirect_declarator): Don't wrap
2860 cp_error_declarator.
2862 PR c++/84801 - ICE with unexpanded pack in lambda.
2863 * pt.c (check_for_bare_parameter_packs): Don't return early for a
2864 lambda in non-template context.
2866 PR c++/81236 - auto variable and auto function
2867 * pt.c (tsubst_baselink): Update the type of the BASELINK after
2870 2018-03-14 Jason Merrill <jason@redhat.com>
2872 PR c++/83916 - ICE with template template parameters.
2873 * pt.c (convert_template_argument): Don't substitute into type of
2874 non-type parameter if we don't have enough arg levels.
2877 2018-03-14 Marek Polacek <polacek@redhat.com>
2880 * semantics.c (finish_static_assert): Check
2881 instantiation_dependent_expression_p instead of
2882 {type,value}_dependent_expression_p.
2884 2018-03-13 Paolo Carlini <paolo.carlini@oracle.com>
2885 Jason Merrill <jason@redhat.com>
2887 PR c++/82336 - link error with list-init default argument.
2888 * decl.c (check_default_argument): Unshare an initializer list.
2890 2018-03-13 Jakub Jelinek <jakub@redhat.com>
2893 * decl.c (duplicate_decls): For redefinition of built-in, use error
2894 and return error_mark_node. For redeclaration, return error_mark_node
2895 rather than olddecl if !flag_permissive.
2897 2018-03-13 Jason Merrill <jason@redhat.com>
2899 PR c++/82565 - ICE with concepts and generic lambda.
2900 * pt.c (instantiate_decl): Clear fn_context for lambdas.
2902 2018-03-13 Jason Merrill <jason@redhat.com>
2904 PR c++/84720 - ICE with rvalue ref non-type argument.
2905 * pt.c (convert_nontype_argument): Handle rvalue references.
2907 PR c++/84839 - ICE with decltype of parameter pack.
2908 * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
2909 instantiating dummy parms.
2911 * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
2912 parameter even without -Wpedantic.
2914 PR c++/84798 - ICE with auto in abstract function declarator.
2915 * parser.c (cp_parser_parameter_declaration_clause): Check
2916 parser->default_arg_ok_p.
2918 2018-03-13 Jakub Jelinek <jakub@redhat.com>
2921 * constexpr.c (find_array_ctor_elt): Don't use elt reference after
2922 first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
2923 sizetype. Formatting fixes.
2925 2018-03-12 Jason Merrill <jason@redhat.com>
2927 PR c++/84355 - ICE with deduction for member class template.
2928 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
2929 CLASS_PLACEHOLDER_TEMPLATE.
2931 PR c++/84802 - ICE capturing uninstantiated class.
2932 * lambda.c (build_capture_proxy): Call complete_type.
2934 2018-03-09 Jason Merrill <jason@redhat.com>
2936 PR c++/84770 - ICE with typedef and parameter pack.
2937 * pt.c (verify_unstripped_args_1): Split out from
2938 verify_unstripped_args.
2940 PR c++/84785 - ICE with alias template and default targs.
2941 * pt.c (type_unification_real): Set processing_template_decl if
2944 PR c++/84752 - ICE with capture of constexpr array.
2945 * call.c (standard_conversion): Set rvaluedness_matches_p on the
2946 identity conversion under ck_lvalue.
2948 2018-03-09 Jason Merrill <jason@redhat.com>
2949 Paolo Carlini <paolo.carlini@oracle.com>
2953 * pt.c (any_erroneous_template_args_p): New.
2954 * cp-tree.h (any_erroneous_template_args_p): Declare it.
2955 * parser.c (cp_parser_class_specifier_1): Use it.
2957 2018-03-09 Jason Merrill <jason@redhat.com>
2959 PR c++/84726 - unnecessary capture of constant vars.
2960 * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
2961 (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
2962 * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
2963 * lambda.c (is_constant_capture_proxy)
2964 (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
2965 (prune_lambda_captures): New.
2966 (finish_lambda_function): Call prune_lambda_captures.
2968 2018-03-09 Jason Merrill <jason@redhat.com>
2969 Jakub Jelinek <jakub@redhat.com>
2972 * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
2973 build ADDR_EXPR with REFERENCE_TYPE.
2974 (build_over_call): For purposes of check_function_arguments, if
2975 argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
2976 its operand rather than the argument itself.
2978 2018-03-09 Jakub Jelinek <jakub@redhat.com>
2981 * decl.c (duplicate_decls): Don't override __* prefixed builtins
2982 except for __[^b]*_chk, instead issue permerror and for -fpermissive
2983 also a note and return olddecl.
2985 2018-03-09 Nathan Sidwell <nathan@acm.org>
2988 * name-lookup.c (do_pushdecl_with_scope): Only clear
2989 current_function_decl when pushing a non-class (i.e. namespace)
2992 2018-03-08 Jason Merrill <jason@redhat.com>
2993 Jakub Jelinek <jakub@redhat.com>
2996 * call.c (build_over_call): In templates set TREE_USED (first_fn) when
2997 not calling mark_used for the benefit of -Wunused-function warning.
2999 2018-03-06 Jason Merrill <jason@redhat.com>
3001 * lambda.c (is_capture_proxy_with_ref): Remove.
3002 * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
3004 2018-03-06 Marek Polacek <polacek@redhat.com>
3007 * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
3010 2018-03-06 Alexandre Oliva <aoliva@redhat.com>
3013 * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
3014 only while processing template decls.
3015 * typeck.c (build_x_conditional_expr): Move wrapping of
3016 reference type around type...
3017 * call.c (build_conditional_expr_1): ... here. Rename
3018 is_lvalue to is_glvalue.
3019 * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
3020 INDIRECT_REF of COND_EXPR too.
3023 * init.c (build_zero_init_1): Zero-initialize references.
3026 * semantics.c (finish_stmt_expr_expr): Reject unresolved
3027 overloads used as stmt expr values.
3029 2018-03-05 Jason Merrill <jason@redhat.com>
3031 PR c++/84708 - ICE with lambda in local class NSDMI.
3032 * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
3035 2018-03-05 Jakub Jelinek <jakub@redhat.com>
3038 * constexpr.c (constexpr_call_hasher::equal): Return false if
3039 lhs->hash != rhs->hash. Change return 1 to return true and
3040 return 0 to return false.
3042 2018-03-05 Nathan Sidwell <nathan@acm.org>
3045 * pt.c (process_template_arg): Mark lookup_keep on a default arg.
3047 2018-03-05 Marek Polacek <polacek@redhat.com>
3050 * decl.c (duplicate_decls): Check DECL_NAME before accessing
3053 2018-03-05 Nathan Sidwell <nathan@acm.org>
3056 * friend.c (do_friend): Restore check for identifier_p inside
3059 2018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
3062 * parser.c (cp_parser_lambda_introducer): Reject any capture not
3063 involving a VAR_DECL or a PARM_DECL.
3065 2018-03-05 Pádraig Brady <P@draigBrady.com>
3066 Jason Merrill <jason@redhat.com>
3067 Nathan Sidwell <nathan@acm.org>
3070 * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
3072 2018-03-03 Jason Merrill <jason@redhat.com>
3074 PR c++/84686 - missing volatile loads.
3075 * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
3077 2018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
3080 * optimize.c (maybe_thunk_body): Bail out immediately if either
3081 fns[0] or fns[1] is null.
3083 2018-03-02 Marek Polacek <polacek@redhat.com>
3086 * constexpr.c (get_array_or_vector_nelts): New.
3087 (cxx_eval_array_reference): Use it.
3088 (cxx_eval_vec_init_1): Likewise.
3089 (cxx_eval_store_expression): Likewise.
3091 2018-03-02 Jason Merrill <jason@redhat.com>
3093 * semantics.c (force_paren_expr): Remove redundant test.
3095 2018-03-02 Marek Polacek <polacek@redhat.com>
3098 * decl.c (cp_complete_array_type): Check error_mark_node.
3101 * typeck.c (cp_perform_integral_promotions): Check the result of
3104 2018-03-02 Jakub Jelinek <jakub@redhat.com>
3107 * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
3108 RETURN instead of return.
3109 <case POINTER_PLUS_EXPR>: Likewise.
3110 <case CONVERT_EXPR>: If op0 is error_mark_node, just return
3111 it instead of wrapping it into CONVERT_EXPR.
3113 2018-03-02 Jason Merrill <jason@redhat.com>
3116 * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
3118 2018-03-02 Marek Polacek <polacek@redhat.com>
3121 * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
3122 wrapped in VIEW_CONVERT_EXPR.
3124 2018-03-01 Martin Sebor <msebor@redhat.com>
3127 * decl.c (check_redeclaration_no_default_args): Merge attributes
3128 specified on redeclarations of the same function template.
3131 2018-03-01 Marek Polacek <polacek@redhat.com>
3132 Jason Merrill <jason@redhat.com>
3135 * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
3137 (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
3138 * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
3139 of instantiate_non_dependent_expr.
3140 * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
3142 2018-03-01 Nathan Sidwell <nathan@acm.org>
3145 * name-lookup.c (member_vec_dedup): Remove manually peeled
3146 iteration. Ignore dependent ctor inheritance.
3148 2018-03-01 Jason Merrill <jason@redhat.com>
3150 PR c++/71569 - decltype of template.
3151 * parser.c (cp_parser_decltype_expr): Handle missing template args.
3153 2018-03-01 Marek Polacek <polacek@redhat.com>
3156 * constexpr.c (require_rvalue_constant_expression): New function.
3157 * cp-tree.h: Declare it.
3158 * semantics.c (finish_static_assert): Use it instead of
3159 require_potential_rvalue_constant_expression.
3161 2018-03-01 Jason Merrill <jason@redhat.com>
3162 Alexandre Oliva <aoliva@redhat.com>
3164 PR c++/71569 - ICE with redundant args on member variable template.
3165 * decl.c (start_decl): Handle partial specialization of member
3167 * pt.c (determine_specialization): Allow partial specialization
3168 of member variable template without specializing enclosing class.
3169 (process_partial_specialization): Improve error message.
3171 2018-02-28 Jason Merrill <jason@redhat.com>
3173 PR c++/71784 - ICE with ref-qualifier and explicit specialization.
3174 * pt.c (determine_specialization): Check ref-qualifier.
3176 2018-02-28 Jakub Jelinek <jakub@redhat.com>
3179 * parser.c (cp_parser_attributes_opt): Formatting fix.
3180 (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
3181 cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
3183 (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
3184 instead of tentative parse to peek over optional attribute tokens
3185 to check for CPP_COLON after them.
3189 * pt.c (INCLUDE_STRING): Remove define.
3190 (warn_spec_missing_attributes): Use pretty_printer instead of
3191 std::string. Fix up inform call so that the list of attributes
3194 2018-02-28 Martin Sebor <msebor@redhat.com>
3197 * decl.c (duplicate_decls): Fully merge attributes const, pure,
3200 2018-02-28 Nathan Sidwell <nathan@acm.org>
3203 * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
3204 * name-lookup.c (fields_linear_search): Look in an anon-aggr
3205 regardless of want_type.
3206 (search_anon_aggr): Just use get_class_binding_direct.
3208 2018-02-28 Jakub Jelinek <jakub@redhat.com>
3210 * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
3213 2018-02-27 Martin Sebor <msebor@redhat.com>
3215 * pt.c: Avoid including <string> directly.
3217 2018-02-27 Martin Sebor <msebor@redhat.com>
3221 * cp-tree.h (warn_spec_missing_attributes): New function.
3222 ((check_explicit_specialization): Add an argument. Call the above
3224 * decl.c (duplicate_decls): Avoid applying primary function template's
3225 attributes to its explicit specializations.
3226 cp/pt.c (warn_spec_missing_attributes): Define.
3228 2018-02-27 HÃ¥kon Sandsmark <hsandsmark@gmail.com>
3230 PR c++/71546 - lambda init-capture with qualified-id.
3231 * parser.c (cp_parser_lambda_introducer): Clear scope after
3232 each lambda capture.
3234 2018-02-27 Nathan Sidwell <nathan@acm.org>
3237 * name-lookup.h (get_member_slot): Rename ...
3238 (find_member_slot): ... here.
3239 (add_member_slot): New.
3240 * name-lookup.c (member_vec_linear_search): No need to check for
3242 (get_member_slot): Rename ...
3243 (find_member_slot): ... here. Don't add slot for incomplete class.
3244 (add_member_slot): New.
3245 * class.c (add_method): Adjust get_member_slot rename. Bail out
3246 if push_class_level_binding fails. Create slot and grok
3247 properties once we're committed to insertion.
3249 2018-02-27 Jason Merrill <jason@redhat.com>
3251 PR c++/84489 - dependent default template argument
3252 * pt.c (type_unification_real): Handle early substitution failure.
3254 2018-02-26 Jason Merrill <jason@redhat.com>
3256 PR c++/84560 - ICE capturing multi-dimensional VLA.
3257 * tree.c (array_of_runtime_bound_p): False if the element is
3260 PR c++/84441 - ICE with base initialized from ?:
3261 * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
3263 PR c++/84520 - ICE with generic lambda in NSDMI.
3264 * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
3265 'this' in a generic lambda instantiation.
3267 PR c++/84559 - ICE with constexpr VLA.
3268 * constexpr.c (ensure_literal_type_for_constexpr_object): Check
3269 for constexpr variable with VLA type.
3271 2018-02-26 Jakub Jelinek <jakub@redhat.com>
3274 * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
3275 a valid constant initializer. Formatting fixes.
3277 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
3280 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
3281 returning NULL_TREE.
3282 (apply_late_template_attributes): Likewise.
3284 2018-02-26 Jakub Jelinek <jakub@redhat.com>
3287 * parser.c (cp_parser_omp_var_list_no_open): Only call
3288 cp_parser_lookup_name_simple on names satisfying identifier_p.
3289 (cp_parser_oacc_routine): Likewise.
3291 2018-02-26 Jason Merrill <jason@redhat.com>
3293 PR c++/84551 - ICE with concepts and -g.
3294 * parser.c (add_debug_begin_stmt): Do nothing in a concept.
3296 2018-02-26 Marek Polacek <polacek@redhat.com>
3299 * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
3302 2018-02-26 Jason Merrill <jason@redhat.com>
3304 PR c++/84447 - ICE with deleted inherited ctor with default arg.
3305 * call.c (build_over_call): Handle deleted functions in one place.
3307 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
3310 * decl.c (redeclaration_error_message): Don't try to use
3311 DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
3313 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
3315 * lambda.c (build_capture_proxy): Define static.
3316 * cp-tree.h (build_capture_proxy): Remove.
3318 2018-02-26 Marek Polacek <polacek@redhat.com>
3321 * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
3322 if name is error node.
3324 2018-02-25 Jason Merrill <jason@redhat.com>
3326 PR c++/84015 - ICE with class deduction and auto template parm.
3327 * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
3329 2018-02-24 Marek Polacek <polacek@redhat.com>
3332 * constexpr.c (maybe_constant_init_1): New function.
3333 (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
3334 (cxx_constant_init): New function.
3335 * cp-tree.h (cxx_constant_init): Declare.
3336 * typeck2.c (store_init_value): Call cxx_constant_init instead of
3337 cxx_constant_value. Move the maybe_constant_init call under an 'else'.
3339 2018-02-22 Jason Merrill <jason@redhat.com>
3341 PR c++/70468 - ICE with constructor delegation via typedef.
3342 * pt.c (tsubst_initializer_list): Check for other mem-initializers
3343 with constructor delegation.
3345 2018-02-22 Jason Merrill <jason@redhat.com>
3347 PR c++/84424 - ICE with constexpr and __builtin_shuffle.
3348 * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
3351 2018-02-22 Marek Polacek <polacek@redhat.com>
3354 * parser.c (cp_parser_braced_list): Use require_open instead of
3357 2018-02-21 Jason Merrill <jason@redhat.com>
3359 PR c++/84454 - ICE with pack expansion in signature.
3360 * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
3362 2018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org>
3364 * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
3367 2018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
3370 * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
3373 2018-02-20 Jakub Jelinek <jakub@redhat.com>
3376 * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
3377 TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
3380 * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
3381 returns error_mark_node, return it immediately.
3382 (break_out_target_exprs): If cp_walk_tree with bot_manip returns
3383 error_mark_node, return error_mark_node.
3386 * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
3387 function_depth to avoid GC during finish_lambda_function.
3389 2018-02-19 Jason Merrill <jason@redhat.com>
3391 PR c++/84429 - ICE capturing VLA.
3392 * lambda.c (build_capture_proxy): Handle reference refs.
3394 2018-02-19 Jakub Jelinek <jakub@redhat.com>
3397 * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
3398 either operand is error_mark_node, set current.lhs to that instead of
3399 creating a binary op with error_mark_node operands.
3402 * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
3404 2018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
3407 * decl.c (grokdeclarator): Early return error_mark_node upon
3408 ill-formed friend declaration.
3410 2018-02-16 Marek Polacek <polacek@redhat.com>
3411 Jakub Jelinek <jakub@redhat.com>
3414 * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
3415 set *jump_target to anything if jump_target is NULL.
3417 2018-02-16 Jason Merrill <jason@redhat.com>
3419 PR c++/84151 - unnecessary volatile load with static member.
3420 * call.c (build_new_method_call_1): Avoid loading from a volatile
3421 lvalue used as the object argument for a static member function.
3423 PR c++/81853 - using-directive and constexpr.
3424 * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
3426 PR c++/84420 - ICE with structured binding in lambda.
3427 * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
3429 PR c++/83835 - C++17 error with constructor ctors.
3430 * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
3432 PR c++/82664 - ICE with reference to function template parm.
3433 * pt.c (convert_nontype_argument_function): Avoid obfuscationg
3436 PR c++/82764 - C++17 ICE with empty base
3437 * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
3439 2018-02-16 Jason Merrill <jason@redhat.com>
3441 PR c++/84421 - type-dependent if constexpr
3442 * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
3444 2018-02-16 Nathan Sidwell <nathan@acm.org>
3446 Deprecate -ffriend-injection.
3447 * decl.c (cxx_init_decl_processing): Emit warning on option.
3448 * name-lookup.c (do_pushdecl): Emit warning if we push a visible
3451 2018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
3454 * decl.c (check_special_function_return_type): Reject template
3455 template parameter in deduction guide.
3457 2018-02-16 Nathan Sidwell <nathan@acm.org>
3460 * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
3462 2018-02-15 Jason Merrill <jason@redhat.com>
3464 PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
3465 * call.c (convert_like_real): Don't use the copy-list-initialization
3466 shortcut for ck_base.
3468 PR c++/84045 - ICE with typedef and noexcept.
3469 * except.c (build_noexcept_spec): Use strip_typedefs_expr.
3471 PR c++/84376 - ICE with omitted template arguments.
3472 * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
3474 PR c++/84368 - wrong error with local variable in variadic lambda.
3475 * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
3476 local_specializations.
3478 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
3481 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
3484 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
3487 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
3490 2018-02-14 Nathan Sidwell <nathan@acm.org>
3492 * decl2.c (mark_vtable_entries): Set input_location to decl's.
3493 (c_parse_final_cleanups): Restore input_location after emitting
3496 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
3498 * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
3499 (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
3500 auto_deduction_context, tree, int): Add defaults.
3501 * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
3502 (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
3503 tsubst_flags_t argument.
3504 * init.c (build_new): Likewise.
3506 2018-02-13 Jakub Jelinek <jakub@redhat.com>
3509 * typeck.c (check_return_expr): Don't emit -Weffc++ warning
3510 about return other than *this in assignment operators if
3511 retval is type dependent expression.
3513 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com>
3516 * call.c (build_conditional_expr_1): Use cp_save_expr instead of
3517 save_expr for the G++ extension.
3519 2018-02-13 Jason Merrill <jason@redhat.com>
3521 PR c++/84080 - ICE with return type deduction and specialization.
3522 * pt.c (determine_specialization): Check uses_template_parms.
3524 Fix more variadic capture issues.
3525 * pt.c (find_parameter_packs_r): Also look at explicit captures.
3526 (check_for_bare_parameter_packs): Check current_class_type for
3528 (extract_locals_r): Handle seeing a full instantiation of a pack.
3529 (tsubst_pack_expansion): Likewise. Force lambda capture.
3530 * parser.c (cp_parser_lambda_introducer): Don't
3531 check_for_bare_parameter_packs.
3533 PR c++/84338 - wrong variadic sizeof.
3534 * pt.c (argument_pack_select_arg): Like the macro, but look through
3536 (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
3537 (extract_fnparm_pack): Do make_pack_expansion.
3538 (extract_locals_r): Do strip a pack expansion.
3539 * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
3541 2018-02-12 Jakub Jelinek <jakub@redhat.com>
3544 * parser.c (cp_parser_binary_expression): Use build_min instead of
3545 build2_loc to build the no_toplevel_fold_p toplevel binary expression.
3547 2018-02-12 Nathan Sidwell <nathan@acm.org>
3550 * parser.c (cp_parser_decltype): Push and pop
3551 deferring_access_checks. Reorganize to avoid goto.
3553 2018-02-12 Richard Biener <rguenther@suse.de>
3556 * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
3557 uniform constructors and delay allocating them fully.
3559 2018-02-09 Jason Merrill <jason@redhat.com>
3561 PR c++/84036 - ICE with variadic capture.
3562 Handle variadic capture proxies more like non-variadic.
3563 * lambda.c (build_capture_proxy): Remove workaround.
3564 * pt.c (find_parameter_packs_r): The proxy is a pack.
3565 (instantiate_class_template_1): Remove dead lambda code.
3566 (extract_fnparm_pack): Don't make_pack_expansion.
3567 (extract_locals_r): Don't strip a pack expansion.
3568 (tsubst_pack_expansion): Handle proxy packs. Use
3569 PACK_EXPANSION_EXTRA_ARGS less.
3570 (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
3571 (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
3572 [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
3573 (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
3574 (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
3576 2018-02-10 Jakub Jelinek <jakub@redhat.com>
3579 * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
3581 2018-02-09 Jason Merrill <jason@redhat.com>
3583 PR c++/81917 - ICE with void_t and partial specialization.
3584 * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
3585 calling most_specialized_partial_spec.
3587 2018-02-09 Nathan Sidwell <nathan@acm.org>
3590 * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
3591 Pass expr location to strict_aliasing_warning.
3593 2018-02-09 Jason Merrill <jason@redhat.com>
3595 PR c++/84296 - ICE with qualified-id in template.
3597 * pt.c (unknown_base_ref_p): New.
3598 (instantiation_dependent_scope_ref_p): Use it instead of
3599 any_dependent_bases_p.
3601 2018-02-09 Marek Polacek <polacek@redhat.com>
3602 Jakub Jelinek <jakub@redhat.com>
3605 * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
3606 fold_indirect_ref_1, including poly_*int64. Verify first that
3607 tree_fits_poly_int64_p (op01). Formatting fixes.
3609 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
3611 * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
3612 * lambda.c (build_capture_proxy): Likewise.
3613 * search.c (field_access_p): Likewise.
3614 * semantics.c (omp_clause_decl, omp_privatize_field,
3615 finish_omp_clauses): Likewise.
3617 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
3620 * typeck.c (decay_conversion): Use mark_rvalue_use for the special
3621 case of nullptr too.
3623 2018-02-08 Nathan Sidwell <nathan@acm.org>
3625 * class.c (finish_struct): Fix std:initializer_list diagnostic
3628 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
3631 * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
3633 2018-02-07 Jakub Jelinek <jakub@redhat.com>
3636 * parser.c (cp_parser_dot_deref_incomplete): New function.
3637 (cp_parser_postfix_dot_deref_expression): Use it.
3639 2018-02-07 David Malcolm <dmalcolm@redhat.com>
3643 * name-lookup.c (suggest_rid_p): New function.
3644 (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
3647 2018-02-07 Jason Merrill <jason@redhat.com>
3649 PR c++/84182 - ICE with captured lambda
3651 * pt.c (extract_locals_r, extract_local_specs): New.
3652 (tsubst_pack_expansion): Use them.
3654 2018-02-07 Martin Liska <mliska@suse.cz>
3657 * class.c (add_method): Append argument value.
3658 * cp-tree.h (maybe_version_functions): Add new argument.
3659 * decl.c (decls_match): Call it if a declaration does not
3660 have DECL_FUNCTION_VERSIONED.
3661 (maybe_version_functions): record argument is added.
3663 2018-02-05 Marek Polacek <polacek@redhat.com>
3665 * class.c: Remove unused global variables.
3666 (build_primary_vtable): Don't gather statistics.
3667 (print_class_statistics): Remove.
3668 * cp-tree.h (print_class_statistics): Remove.
3669 * tree.c (cxx_print_statistics): Don't call print_class_statistics.
3671 2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
3673 * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
3674 * constexpr.c (cx_check_missing_mem_inits): Likewise.
3675 * decl.c (next_initializable_field, find_decomp_class_base,
3676 cp_finish_decomp): Likewise.
3677 * typeck2.c (process_init_constructor_record): Likewise.
3679 2018-02-02 Jason Merrill <jason@redhat.com>
3681 PR c++/84181 - ICE with lambda parm in template argument.
3682 * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
3684 2018-02-01 Jason Merrill <jason@redhat.com>
3686 PR c++/84160 - ICE with nested variadic capture.
3687 * lambda.c (is_capture_proxy_with_ref): New.
3688 (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
3690 * expr.c (mark_use): Use is_capture_proxy_with_ref.
3691 * constexpr.c (potential_constant_expression_1): Likewise.
3692 * semantics.c (process_outer_var_ref): Likewise.
3694 2018-02-01 Marek Polacek <polacek@redhat.com>
3697 * typeck.c (build_address): Relax the assert when
3698 processing_template_decl.
3700 2018-02-01 Jason Merrill <jason@redhat.com>
3702 PR c++/84126 - ICE with variadic generic lambda
3705 * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
3706 PACK_EXPANSION_EXTRA_ARGS.
3708 2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
3711 * call.c (convert_like_real): If w're initializing from {} explicitly
3712 call abstract_virtuals_error_sfinae.
3714 2018-01-31 Jason Merrill <jason@redhat.com>
3715 Jakub Jelinek <jakub@redhat.com>
3718 * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
3719 around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
3722 2018-01-31 Jakub Jelinek <jakub@redhat.com>
3725 * constexpr.c (diag_array_subscript): Emit different diagnostics
3726 if TYPE_DOMAIN (arraytype) is NULL.
3727 (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
3728 with NULL TYPE_DOMAIN use size_zero_node as nelts.
3730 2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
3733 * semantics.c (finish_qualified_id_expr): When handling an
3734 UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
3736 2018-01-31 Marek Polacek <polacek@redhat.com>
3739 * cp-gimplify.c (cp_fold): Check if X is an error node before
3740 calling useless_type_conversion_p.
3742 2018-01-30 Jason Merrill <jason@redhat.com>
3744 PR c++/84091 - ICE with local class in lambda in template.
3745 * decl2.c (determine_visibility): Look for outer containing template
3748 PR c++/84098 - ICE with lambda in template NSDMI.
3749 * pt.c (instantiate_class_template_1): Ignore more lambdas.
3751 2018-01-29 Jason Merrill <jason@redhat.com>
3753 PR c++/68810 - wrong location for reinterpret_cast error.
3754 * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
3757 2018-01-29 Marek Polacek <polacek@redhat.com>
3760 * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
3761 => fooarray[1] in offset_int.
3763 2018-01-29 Jason Merrill <jason@redhat.com>
3765 PR c++/83942 - wrong unused warning with static_cast.
3766 * cvt.c (ocp_convert): Call mark_rvalue_use.
3768 2018-01-26 Jason Merrill <jason@redhat.com>
3770 PR c++/83956 - wrong dtor error with anonymous union
3771 * method.c (walk_field_subobs): Variant members only affect
3773 (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
3775 PR c++/84036 - ICE with variadic capture.
3777 * pt.c (tsubst_pack_expansion): When optimizing a simple
3778 substitution, pull a single pack expansion out of its pack.
3780 PR c++/82514 - ICE with local class in generic lambda.
3781 * pt.c (regenerated_lambda_fn_p): Remove.
3782 (enclosing_instantiation_of): Don't use it.
3783 (tsubst_function_decl): Call enclosing_instantiation_of.
3785 * pt.c (lookup_template_class_1): Add sanity check.
3786 * name-lookup.c (do_pushtag): Don't add closures to local_classes.
3788 2018-01-25 Jakub Jelinek <jakub@redhat.com>
3791 * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore
3792 recursive calls that return ret.
3793 (cp_finish_decomp): Ignore unnamed bitfields.
3795 2018-01-23 Jason Merrill <jason@redhat.com>
3797 PR c++/82249 - wrong mismatched pack length error.
3798 * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
3799 unsubstituted function parameter pack.
3801 2018-01-23 Paolo Carlini <paolo.carlini@oracle.com>
3804 * decl.c (check_for_uninitialized_const_var): Not static; add
3805 bool and tsubst_flags_t parameters; adjust to be used both in
3806 constexpr context and not.
3807 * constexpr.c (potential_constant_expression_1): Use the above.
3808 * cp-tree.h (check_for_uninitialized_const_var): Declare.
3810 2018-01-23 Jason Merrill <jason@redhat.com>
3812 PR c++/83947 - ICE with auto declarations.
3813 * pt.c (do_auto_deduction): Don't deduce from an auto decl.
3814 * decl.c (undeduced_auto_decl): Limit to vars and fns.
3816 2018-01-23 David Malcolm <dmalcolm@redhat.com>
3819 * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
3820 for pointer to member function types.
3822 2018-01-23 Jakub Jelinek <jakub@redhat.com>
3825 * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
3826 DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
3828 2018-01-23 Nathan Sidwell <nathan@acm.org>
3831 * pt.c (tsubst_baselink): Remove optype assert.
3832 * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
3834 2018-01-23 Jakub Jelinek <jakub@redhat.com>
3837 * decl.c (cp_finish_decomp): Diagnose if reference structure binding
3838 refers to incomplete type.
3840 2018-01-23 Nathan Sidwell <nathan@acm.org>
3842 Deprecate ARM-era for scope handling
3843 * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
3844 (cxx_init_decl_processing): Deprecate flag_new_for_scope being
3846 * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
3848 * semantics.c (begin_for_scope): Flag_new_for_scope is
3850 (finish_for_stmt, begin_range_for_stmt): Likewise.
3852 2018-01-22 Jason Merrill <jason@redhat.com>
3855 * decl2.c (determine_visibility): Fix template_decl handling
3856 instead of blocking it.
3858 PR c++/83720 - ICE with lambda and LTO.
3859 * decl2.c (determine_visibility): Clear template_decl for
3860 function-scope decls. Propagate anonymous linkage from containing
3863 2018-01-22 Marek Polacek <polacek@redhat.com>
3866 * typeck2.c (split_nonconstant_init_1): Return false if we didn't
3869 2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
3872 * decl.c (grokdeclarator): Don't diagnose extra parens
3875 2018-01-19 Jakub Jelinek <jakub@redhat.com>
3878 * call.c (joust): Use TREE_TYPE (source) if source is
3879 a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
3882 * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
3883 for direct enum init.
3884 * decl.c (reshape_init): Likewise.
3886 2018-01-19 Marek Polacek <polacek@redhat.com>
3888 * constexpr.c (fold_simple): Simplify.
3890 2018-01-18 Jason Merrill <jason@redhat.com>
3893 * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
3894 * pt.c (instantiation_dependent_scope_ref_p): True if
3895 any_dependent_bases_p.
3897 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
3899 * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
3900 vs DECL_NONTRIVIALLY_INITIALIZED_P).
3902 2018-01-18 Jason Merrill <jason@redhat.com>
3904 PR c++/82461 - constexpr list-initialized member
3905 * constexpr.c (potential_constant_expression_1): Check
3906 TARGET_EXPR_DIRECT_INIT_P.
3908 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
3911 * decl.c (xref_basetypes): Early return upon error about derived
3914 2018-01-18 Nathan Sidwell <nathan@acm.org>
3917 * cp-tree.h (mark_use): Declare.
3918 * expr.c (mark_use): Make extern.
3919 * call.c (direct_reference_binding): Set inner conv's
3920 rvaluedness_matches_p, if it is an identity.
3921 (convert_like_real): Mark lvalue or rvalue use for identity as
3922 rvaledness_matches_p demands.
3924 2018-01-18 Jakub Jelinek <jakub@redhat.com>
3927 * parser.c (attr_chainon): New function.
3928 (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
3929 cp_parser_namespace_definition, cp_parser_init_declarator,
3930 cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
3931 cp_parser_gnu_attributes_opt): Use it.
3932 (cp_parser_member_declaration, cp_parser_objc_class_ivars,
3933 cp_parser_objc_struct_declaration): Likewise. Don't reset
3934 prefix_attributes if attributes is error_mark_node.
3936 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
3939 * decl.c (grokdeclarator): Do not append the error_mark_node
3940 due to an erroneous optional attribute-specifier-seq.
3942 2018-01-17 Jakub Jelinek <jakub@redhat.com>
3945 * cp-gimplify.c (cp_maybe_instrument_return): Handle
3948 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
3951 * constexpr.c (ensure_literal_type_for_constexpr_object): Return
3952 error_mark_node when we give an error.
3953 * decl.c (cp_finish_decl): Use the latter.
3955 2018-01-17 Nathan Sidwell <nathan@acm.org>
3958 * init.c (build_raw_new_expr): Scan list for lookups to keep.
3960 2018-01-17 David Malcolm <dmalcolm@redhat.com>
3963 * expr.c (fold_for_warn): Move from c-common.c, reducing to just
3964 the C++ part. If processing a template, call
3965 fold_non_dependent_expr rather than fully folding.
3967 2018-01-17 Jason Merrill <jason@redhat.com>
3969 PR c++/81067 - redundant NULL warning.
3970 * call.c (convert_like_real): Restore null_node handling.
3972 2018-01-17 Jason Merrill <jason@redhat.com>
3974 PR c++/81843 - ICE with variadic member template.
3976 * pt.c (unify_pack_expansion): Don't try to deduce enclosing
3979 2018-01-17 David Malcolm <dmalcolm@redhat.com>
3982 * pt.c (type_dependent_expression_p): Strip any location wrapper
3983 before testing tree codes.
3984 (selftest::test_type_dependent_expression_p): New function.
3985 (selftest::cp_pt_c_tests): Call it.
3987 2018-01-17 Nathan Sidwell <nathan@acm.org>
3990 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
3991 this not a final instantiation.
3993 2018-01-16 Jason Merrill <jason@redhat.com>
3995 PR c++/83714 - ICE checking return in template.
3996 * typeck.c (check_return_expr): Call build_non_dependent_expr.
3998 2018-01-16 Jakub Jelinek <jakub@redhat.com>
4001 * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
4002 is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
4003 instead of CALL_FROM_THUNK_P.
4006 * name-lookup.c (member_vec_dedup): Return early if len is 0.
4007 (resort_type_member_vec, set_class_bindings,
4008 insert_late_enum_def_bindings): Use vec qsort method instead of
4009 calling qsort directly.
4011 2018-01-15 Martin Sebor <msebor@redhat.com>
4014 * class.c (find_flexarrays): Make a record of multiple flexible array
4017 2018-01-12 Jason Merrill <jason@redhat.com>
4019 PR c++/83186 - ICE with static_cast of list-initialized temporary.
4020 * typeck.c (build_static_cast): Use build_non_dependent_expr.
4022 2018-01-12 Nathan Sidwell <nathan@acm.org>
4024 * cp-tree.h (mark_rvalue_use): Add parm name.
4025 * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
4027 * call.c (convert_like_real): Fix formatting.
4029 2018-01-11 Jason Merrill <jason@redhat.com>
4031 PR c++/82728 - wrong -Wunused-but-set-variable
4034 * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
4035 * decl.c (case_conversion): Likewise.
4036 * semantics.c (finish_static_assert): Call
4037 perform_implicit_conversion_flags.
4039 2018-01-11 Nathan Sidwell <nathan@acm.org>
4041 * method.c (enum mangling_flags): Delete long-dead enum.
4043 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
4045 * parser.c (cp_parser_std_attribute_spec): When
4046 token_pair::require_open / require_close return false simply
4047 return error_mark_node, avoid duplicate cp_parser_error about
4048 expected '(' / ')', respectively.
4050 2018-01-10 David Malcolm <dmalcolm@redhat.com>
4053 * call.c (null_ptr_cst_p): Strip location wrappers when
4054 converting from '0' to a pointer type in C++11 onwards.
4055 (conversion_null_warnings): Replace comparison with null_node with
4056 call to null_node_p.
4057 (build_over_call): Likewise.
4058 * cp-gimplify.c (cp_fold): Remove the early bailout when
4059 processing_template_decl.
4060 * cp-lang.c (selftest::run_cp_tests): Call
4061 selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
4062 * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
4063 (selftest::run_cp_tests): Move decl to bottom of file.
4064 (null_node_p): New inline function.
4065 (selftest::cp_pt_c_tests): New decl.
4066 (selftest::cp_tree_c_tests): New decl.
4067 * cvt.c (build_expr_type_conversion): Replace comparison with
4068 null_node with call to null_node_p.
4069 * error.c (args_to_string): Likewise.
4070 * except.c (build_throw): Likewise.
4071 * mangle.c (write_expression): Skip location wrapper nodes.
4072 * parser.c (literal_integer_zerop): New function.
4073 (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
4074 the result for RID_TYPEID. Pass true for new "wrap_locations_p"
4075 param of cp_parser_parenthesized_expression_list. When calling
4076 warn_for_memset, replace integer_zerop calls with
4077 literal_integer_zerop, eliminating the double logical negation
4078 cast to bool. Eliminate the special-casing for CONST_DECL in
4079 favor of the fold_for_warn within warn_for_memset.
4080 (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
4081 param, defaulting to false. Convert "expr" to a cp_expr, and call
4082 maybe_add_location_wrapper on it when wrap_locations_p is true.
4083 (cp_parser_unary_expression): Call maybe_add_location_wrapper on
4084 the result for RID_ALIGNOF and RID_SIZEOF.
4085 (cp_parser_builtin_offsetof): Likewise.
4086 * pt.c: Include "selftest.h".
4087 (tsubst_copy): Handle location wrappers.
4088 (tsubst_copy_and_build): Likewise.
4089 (build_non_dependent_expr): Likewise.
4090 (selftest::test_build_non_dependent_expr): New function.
4091 (selftest::cp_pt_c_tests): New function.
4092 * tree.c: Include "selftest.h".
4093 (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
4094 (selftest::test_lvalue_kind): New function.
4095 (selftest::cp_tree_c_tests): New function.
4096 * typeck.c (string_conv_p): Strip any location wrapper from "exp".
4097 (cp_build_binary_op): Replace comparison with null_node with call
4099 (build_address): Use location of operand when building address
4102 2018-01-10 Marek Polacek <polacek@redhat.com>
4105 * call.c (build_conditional_expr_1): Check complain before warning.
4106 * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
4107 -Wduplicated-branches.
4109 2018-01-10 Jakub Jelinek <jakub@redhat.com>
4112 * call.c (maybe_warn_class_memaccess): Add forward declaration.
4113 Change last argument from tree * to const vec<tree, va_gc> *, adjust
4114 args uses and check number of operands too. Don't strip away any
4115 nops. Use maybe_constant_value when looking for INTEGER_CST args.
4116 Deal with src argument not having pointer type. Check
4117 tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless
4119 (build_over_call): Call maybe_warn_class_memaccess here on the
4121 (build_cxx_call): Rather than here on converted arguments.
4123 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
4126 * init.c (build_vec_init): Avoid building an INIT_EXPR with
4127 error_mark_node as second argument.
4129 2018-01-09 Jakub Jelinek <jakub@redhat.com>
4132 * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
4133 in STATEMENT_LIST. Remove unneeded assert.
4135 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
4136 Alan Hayward <alan.hayward@arm.com>
4137 David Sherwood <david.sherwood@arm.com>
4139 * constexpr.c (cxx_eval_array_reference): Handle polynomial
4141 (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
4142 * call.c (build_conditional_expr_1): Likewise.
4143 * decl.c (cp_finish_decomp): Likewise.
4144 * mangle.c (write_type): Likewise.
4145 * typeck.c (structural_comptypes): Likewise.
4146 (cp_build_binary_op): Likewise.
4147 * typeck2.c (process_init_constructor_array): Likewise.
4149 2018-01-03 Jakub Jelinek <jakub@redhat.com>
4152 * typeck.c (build_static_cast_1): For static casts to reference types,
4153 call build_base_path with flag_delete_null_pointer_checks as nonnull
4154 instead of always false. When -fsanitize=null, call
4155 ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
4156 * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
4157 call if the first argument is INTEGER_CST with REFERENCE_TYPE.
4159 2018-01-03 Nathan Sidwell <nathan@acm.org>
4162 * method.c (make_alias_for): Copy DECL_CONTEXT.
4164 2018-01-03 Marek Polacek <polacek@redhat.com>
4167 * decl.c (grokdeclarator): Don't warn about MVP in typename context.
4169 2018-01-03 Jakub Jelinek <jakub@redhat.com>
4171 PR preprocessor/83602
4172 * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
4176 * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
4177 error_mark_node, return error_mark_node.
4179 Update copyright years.
4181 2018-01-02 Jakub Jelinek <jakub@redhat.com>
4184 * tree.c (replace_placeholders_r): Pass NULL as last argument to
4185 cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and
4186 non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
4187 to false and return.
4188 (replace_placeholders): Pass NULL instead of &pset as last argument
4191 2018-01-02 Nathan Sidwell <nathan@acm.org>
4193 * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
4196 Copyright (C) 2018 Free Software Foundation, Inc.
4198 Copying and distribution of this file, with or without modification,
4199 are permitted in any medium without royalty provided the copyright
4200 notice and this notice are preserved.