Fix the previous ChangeLog
[official-gcc.git] / gcc / cp / ChangeLog
blob1d1d59a87ec29530b08df3d7183f9ab2c0d67635
1 2018-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
3         * typeck2.c (digest_init_r): Fix overlength strings.
5 2018-09-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
7         PR c++/87093
8         * method.c (constructible_expr): We're in an unevaluated context
9         in all cases, not just for class targets.
11 2018-09-12  David Malcolm  <dmalcolm@redhat.com>
13         PR c++/85110
14         * call.c (struct conversion_info): Add "loc" field.
15         (arg_conversion_rejection): Add "loc" param, using it to
16         initialize the new field.
17         (bad_arg_conversion_rejection): Likewise.
18         (explicit_conversion_rejection): Initialize the new field to
19         UNKNOWN_LOCATION.
20         (template_conversion_rejection): Likewise.
21         (add_function_candidate): Pass on the argument location to the new
22         param of arg_conversion_rejection.
23         (add_conv_candidate): Likewise.
24         (build_builtin_candidate): Likewise.
25         (build_user_type_conversion_1): Likewise.
26         (single_z_candidate): New function.
27         (maybe_get_bad_conversion_for_unmatched_call): New function.
28         (complain_about_bad_argument): New function, based on part of
29         convert_for_assignment.
30         (build_new_method_call_1): Split out handling of the "no viable
31         candidates" case into...
32         (complain_about_no_candidates_for_method_call): ...this new
33         function, and use the new functions above to special-case the
34         handling of a single non-viable candidate due to a bad argument.
35         * cp-tree.h (complain_about_bad_argument): New decl.
36         * typeck.c (convert_for_assignment): Split out one error-handling
37         case into complain_about_bad_argument.
39 2018-09-09  Cesar Philippidis  <cesar@codesourcery.com>
40             Julian Brown  <julian@codesourcery.com>
42         PR middle-end/86336
43         * semantics.c (finish_omp_clauses): Treat C++ references the same in
44         OpenACC as OpenMP.
46 2018-08-28  Martin Liska  <mliska@suse.cz>
48         * constexpr.c (cxx_eval_call_expression): Add quotes
49         to -fconstexpr-depth=.
51 2018-09-10  Marek Polacek  <polacek@redhat.com>
53         * class.c (build_vtbl_ref): Remove.
54         (build_vtbl_ref_1): Rename to build_vtbl_ref.
55         (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
57 2018-09-08  Marek Polacek  <polacek@redhat.com>
59         PR c++/87150 - wrong ctor with maybe-rvalue semantics.
60         * call.c (struct conversion): Update commentary.
61         (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
62         for ck_base.
64 2018-09-08  Jason Merrill  <jason@redhat.com>
66         PR c++/86678 - constexpr function with non-constant after return.
67         * constexpr.c (potential_constant_expression_1): Add jump_target.
68         (breaks): Check for BREAK_STMT.
69         (continues): Check for CONTINUE_STMT.
71 2018-09-08  Marek Polacek  <polacek@redhat.com>
73         * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
74         RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
76 2018-09-07  Marek Polacek  <polacek@redhat.com>
78         PR c++/87152 - range-based for loops with initializer broken in templates.
79         * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
80         Recur into RANGE_FOR_INIT_STMT.
81         * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
82         * cp-tree.h (RANGE_FOR_INIT_STMT): Define.
83         * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
84         RANGE_FOR_INIT_STMT.
85         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
86         RANGE_FOR_INIT_STMT.
87         * semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
88         Do put the init statement in RANGE_FOR_INIT_STMT.
89         (finish_range_for_decl): Pop it for templates.
91 2018-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
93         * decl.c (check_initializer): Call cp_complete_array_type.
95 2018-09-05  Marek Polacek  <polacek@redhat.com>
97         PR c++/87109, wrong overload with ref-qualifiers.
98         * call.c (build_user_type_conversion_1): Use NULL instead of 0.  Bail
99         out if performing the maybe-rvalue overload resolution and a conversion
100         function is getting called.
102         PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
103         * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
104         to std::move or std::forward.
105         (is_std_forward_p): New function.
107 2018-09-05  Pádraig Brady  <p@draigbrady.com>
109         PR c++/87185
110         * lambda.c (prune_lambda_captures): Protect against const_vars.get
111         returning NULL.
113 2018-09-04  Marek Polacek  <polacek@redhat.com>
115         * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
116         * except.c (build_throw): Use it.  Use CP_TYPE_VOLATILE_P.
117         * typeck.c (treat_lvalue_as_rvalue_p): No longer static.  Add PARM_OK
118         parameter.
119         (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
120         (check_return_expr): Likewise.
122 2018-09-03  Paolo Carlini  <paolo.carlini@oracle.com>
124         PR c++/84980
125         * constraint.cc (finish_shorthand_constraint): Early return if the
126         constraint is erroneous.
128 2018-09-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
130         * decl.c (eval_check_narrowing): Remove.
131         (check_initializer): Move call to braced_list_to_string from here ...
132         * typeck2.c (store_init_value): ... to here.
133         (digest_init_r): Remove handing of signed/unsigned char strings.
135 2018-08-31  Nathan Sidwell  <nathan@acm.org>
137         PR c++/87155
138         PR c++/84707
139         * name-lookup.c (name_lookup::search_namespace): Don't look at
140         inlines when searching for NULL names.
142         * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
143         of return types and parms.
144         * parser.c (cp_parser_parameter_declaration_clause): Likewise,
145         '()' always means '(void)'.
147 2018-08-29  Jakub Jelinek  <jakub@redhat.com>
149         PR c++/87095
150         * decl.c (begin_destructor_body): If current_class_type has
151         virtual bases and the primary base is nearly empty virtual base,
152         voidify clearing of vptr and make it conditional on in-charge
153         argument.
155 2018-08-29  Paolo Carlini  <paolo.carlini@oracle.com>
157         PR c++/85265
158         * parser.c (cp_parser_introduction_list): If cp_parser_identifier
159         returns error_mark_node early exit the loop.
160         (cp_parser_template_introduction): Improve error-recovery, remove
161         error call about empty introduction-list.
163 2018-08-29  David Malcolm  <dmalcolm@redhat.com>
165         PR c++/85110
166         * call.c (print_conversion_rejection): Add "fn" param and use it
167         for "no known conversion" messages to underline the pertinent
168         param.
169         (print_z_candidate): Supply "fn" to the new param above.
171 2018-08-29  Jakub Jelinek  <jakub@redhat.com>
173         PR c++/87122
174         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
175         processing_template_decl and decl is structured binding decl, call
176         cp_finish_decomp.
178 2018-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
180         PR c++/86546
181         * decl.c (finish_case_label): If the type is erroneous early
182         return error_mark_node.
184 2018-08-27  David Malcolm  <dmalcolm@redhat.com>
186         PR c++/63392
187         * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
188         hint.
190 2018-08-27  Jakub Jelinek  <jakub@redhat.com>
192         PR c++/86993
193         * cp-tree.h (cxx_readonly_error): Add location_t argument.
194         * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
195         ERROR_FOR_ASSIGNMENT macro and readonly_error.  Add LOC argument
196         to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
197         pass LOC to it.  Formatting fixes.
198         * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
199         (cp_build_modify_expr): Pass loc to cxx_readonly_error.
200         * semantics.c (finish_asm_stmt): Pass input_location to
201         cxx_readonly_error.
203 2018-08-27  David Malcolm  <dmalcolm@redhat.com>
205         PR c++/87091
206         * decl.c (grokdeclarator): Update for conversion of show_caret_p
207         to a tri-state.
208         * error.c (cp_printer): Likewise.
209         * name-lookup.c (maybe_suggest_missing_std_header): Update call to
210         maybe_add_include_fixit to suggest overriding the location, as it
211         is for a note.
212         * parser.c (cp_parser_string_literal): Update for conversion of
213         show_caret_p to a tri-state.
214         (cp_parser_elaborated_type_specifier): Likewise.
215         (set_and_check_decl_spec_loc): Likewise.
216         * pt.c (listify): Update call to maybe_add_include_fixit to not
217         override the location, as it is for an error.
218         * rtti.c (typeid_ok_p): Likewise.
220 2018-08-27  Martin Liska  <mliska@suse.cz>
222         * call.c (build_call_a): Use new function
223         fndecl_built_in_p and remove check for FUNCTION_DECL if
224         possible.
225         (build_cxx_call): Likewise.
226         * constexpr.c (constexpr_fn_retval): Likewise.
227         (cxx_eval_builtin_function_call): Likewise.
228         (cxx_eval_call_expression): Likewise.
229         (potential_constant_expression_1): Likewise.
230         * cp-gimplify.c (cp_gimplify_expr): Likewise.
231         (cp_fold): Likewise.
232         * decl.c (decls_match): Likewise.
233         (validate_constexpr_redeclaration): Likewise.
234         (duplicate_decls): Likewise.
235         (make_rtl_for_nonlocal_decl): Likewise.
236         * name-lookup.c (consider_binding_level): Likewise.
237         (cp_emit_debug_info_for_using): Likewise.
238         * semantics.c (finish_call_expr): Likewise.
239         * tree.c (builtin_valid_in_constant_expr_p): Likewise.
241 2018-08-26  Marek Polacek  <polacek@redhat.com>
243         PR c++/87080
244         * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.
246         PR c++/87029, Implement -Wredundant-move.
247         * typeck.c (treat_lvalue_as_rvalue_p): New function.
248         (maybe_warn_pessimizing_move): Call convert_from_reference.
249         Warn about redundant moves.
251 2018-08-24  Marek Polacek  <polacek@redhat.com>
253         PR c++/67012
254         PR c++/86942
255         * decl.c (grokdeclarator): Disallow functions with trailing return
256         type with decltype(auto) as its type.  Also check the function if
257         it's inner declarator doesn't exist
259 2018-08-21  Marek Polacek  <polacek@redhat.com>
261         PR c++/86499
262         * parser.c (cp_parser_lambda_introducer): Give error if a non-local
263         lambda has a capture-default.
265 2018-08-21  Paolo Carlini  <paolo.carlini@oracle.com>
267         * decl.c (check_static_variable_definition): Change to return void.
269 2018-08-21  Marek Polacek  <polacek@redhat.com>
271         PR c++/86981, Implement -Wpessimizing-move.
272         * typeck.c (decl_in_std_namespace_p): New.
273         (is_std_move_p): New.
274         (maybe_warn_pessimizing_move): New.
275         (can_do_nrvo_p): New, factored out of ...
276         (check_return_expr): ... here.  Warn about potentially harmful
277         std::move in a return statement.
279         PR c++/65043
280         * call.c (standard_conversion): Set check_narrowing.
281         * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
282         than comparing with INTEGER_TYPE.
284         * cp-tree.h: Fix typo.
286 2018-08-20  David Malcolm  <dmalcolm@redhat.com>
288         PR other/84889
289         * call.c (build_user_type_conversion_1): Add auto_diagnostic_group
290         instance(s).
291         (print_error_for_call_failure): Likewise.
292         (build_op_call_1): Likewise.
293         (build_conditional_expr_1): Likewise.
294         (build_new_op_1): Likewise.
295         (build_op_delete_call): Likewise.
296         (convert_like_real): Likewise.
297         (build_over_call): Likewise.
298         (build_new_method_call_1): Likewise.
299         (joust): Likewise.
300         * class.c (check_tag): Likewise.
301         (finish_struct_anon_r): Likewise.
302         (one_inherited_ctor): Likewise.
303         (finalize_literal_type_property): Likewise.
304         (explain_non_literal_class): Likewise.
305         (find_flexarrays): Likewise.
306         (resolve_address_of_overloaded_function): Likewise.
307         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
308         (is_valid_constexpr_fn): Likewise.
309         (cx_check_missing_mem_inits): Likewise.
310         * cp-gimplify.c (cp_genericize_r): Likewise.
311         * cvt.c (maybe_warn_nodiscard): Likewise.
312         * decl.c (warn_extern_redeclared_static): Likewise.
313         (check_redeclaration_exception_specification): Likewise.
314         (check_no_redeclaration_friend_default_args): Likewise.
315         (duplicate_decls): Likewise.
316         (redeclaration_error_message): Likewise.
317         (warn_misplaced_attr_for_class_type): Likewise.
318         * decl2.c (finish_static_data_member_decl): Likewise.
319         (no_linkage_error): Likewise.
320         (cp_warn_deprecated_use): Likewise.
321         * error.c (qualified_name_lookup_error): Likewise.
322         * friend.c (make_friend_class): Likewise.
323         (do_friend): Likewise.
324         * init.c (perform_member_init): Likewise.
325         (build_new_1): Likewise.
326         (build_vec_delete_1): Likewise.
327         (build_delete): Likewise.
328         * lex.c (unqualified_name_lookup_error): Likewise.
329         * name-lookup.c (check_extern_c_conflict): Likewise.
330         (inform_shadowed): New function.
331         (check_local_shadow): Add auto_diagnostic_group instances,
332         replacing goto "inform_shadowed" label with call to subroutine.
333         (set_local_extern_decl_linkage): Add auto_diagnostic_group
334         instance(s).
335         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
336         (cp_parser_namespace_name): Likewise.
337         * pt.c (check_specialization_namespace): Likewise.
338         (check_template_variable): Likewise.
339         (warn_spec_missing_attributes): Likewise.
340         (check_explicit_specialization): Likewise.
341         (process_partial_specialization): Likewise.
342         (lookup_template_class_1): Likewise.
343         (finish_template_variable): Likewise.
344         (do_auto_deduction): Likewise.
345         * search.c (check_final_overrider): Likewise.
346         (look_for_overrides_r): Likewise.
347         * tree.c (maybe_warn_parm_abi): Likewise.
348         * typeck.c (cxx_sizeof_expr): Likewise.
349         (cp_build_function_call_vec): Likewise.
350         (cp_build_binary_op): Likewise.
351         (convert_for_assignment): Likewise.
352         (maybe_warn_about_returning_address_of_local): Likewise.
353         * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
354         (check_narrowing): Likewise.
356 2018-08-17  David Malcolm  <dmalcolm@redhat.com>
358         * typeck.c (string_conv_p): Extract location from EXP and use it
359         in preference to input_location when issuing warnings.
361 2018-08-15  David Malcolm  <dmalcolm@redhat.com>
363         * call.c: Include "gcc-rich-location.h".
364         (convert_like_real): Add range label for "invalid conversion"
365         diagnostic.
366         (perform_implicit_conversion_flags): Add type label to the
367         "could not convert" error.
368         * error.c: Include "gcc-rich-location.h".
369         (range_label_for_type_mismatch::get_text): New function.
370         * typeck.c (convert_for_assignment): Add type label to
371         the "cannot convert" error if a location is available.
373 2018-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
375         * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
376         emit an error instead of a permerror.
378 2018-08-13  Marek Polacek  <polacek@redhat.com>
380         PR c++/57891
381         * call.c (struct conversion): Add check_narrowing_const_only.
382         (build_converted_constant_expr): Set check_narrowing and
383         check_narrowing_const_only.  Give error if expr is error node.
384         (convert_like_real): Pass it to check_narrowing.
385         * cp-tree.h (check_narrowing): Add a default parameter.
386         * decl.c (compute_array_index_type): Use input_location instead of
387         location_of.
388         * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
389         * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
390         expressions.  Call maybe_constant_value instead of
391         fold_non_dependent_expr.  Don't mention { } in diagnostic.  Only check
392         narrowing for constants if CONST_ONLY.
394 2018-08-13  Martin Sebor  <msebor@redhat.com>
396         PR tree-optimization/71625
397         * decl.c (check_initializer):  Call braced_list_to_string.
398         (eval_check_narrowing): New function.
399         * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
400         as initilizers for all narrow character types.
402 2018-08-13  Marek Polacek  <polacek@redhat.com>
404         P0806R2 - Deprecate implicit capture of this via [=]
405         * lambda.c (add_default_capture): Formatting fixes.  Warn about
406         deprecated implicit capture of this via [=].
408         PR c++/86915
409         * decl.c (create_array_type_for_decl): Handle null name.
411 2018-08-10  Jason Merrill  <jason@redhat.com>
413         PR c++/86728 - C variadic generic lambda.
414         * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
415         a pack if it's followed by a declarator-id.
417 2018-08-08  Jakub Jelinek  <jakub@redhat.com>
419         P0595R1 - is_constant_evaluated
420         * cp-tree.h (enum cp_built_in_function): New.
421         (maybe_constant_init): Add pretend_const_required argument.
422         * typeck2.c (store_init_value): Pass true as new argument to
423         maybe_constant_init.
424         * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
425         for BUILT_IN_UNREACHABLE.
426         (struct constexpr_ctx): Add pretend_const_required field.
427         (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
428         macro.  Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED.  Check also
429         DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
430         (cxx_eval_outermost_constant_expr): Add pretend_const_required
431         argument, initialize pretend_const_required field in ctx.  If the
432         result is TREE_CONSTANT and non_constant_p, retry with
433         pretend_const_required false if it was true.
434         (is_sub_constant_expr): Initialize pretend_const_required_field in
435         ctx.
436         (cxx_constant_value): Pass true as pretend_const_required to
437         cxx_eval_outermost_constant_expr.
438         (maybe_constant_value): Pass false as pretend_const_required to
439         cxx_eval_outermost_constant_expr.
440         (fold_non_dependent_expr): Likewise.
441         (maybe_constant_init_1): Add pretend_const_required argument, pass it
442         down to cxx_eval_outermost_constant_expr.  Pass !allow_non_constant
443         instead of false as strict to cxx_eval_outermost_constant_expr.
444         (maybe_constant_init): Add pretend_const_required argument, pass it
445         down to maybe_constant_init_1.
446         (cxx_constant_init): Pass true as pretend_const_required to
447         maybe_constant_init_1.
448         * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
449         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
450         (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
451         * decl.c: Include langhooks.h.
452         (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
453         built-in.
454         * tree.c (builtin_valid_in_constant_expr_p): Return true for
455         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
456         * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
458         PR c++/86836
459         * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
460         before tsubst_init, not after it.
462         PR c++/86738
463         * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
464         NULL pointer set *non_constant_p to true.
465         (cxx_eval_component_reference): For dereferencing of a NULL pointer,
466         set *non_constant_p to true and return t.
468 2018-08-07  Paolo Carlini  <paolo.carlini@oracle.com>
470         PR c++/59480, DR 136
471         * decl.c (check_no_redeclaration_friend_default_args): New.
472         (duplicate_decls): Use the latter; also check that a friend
473         declaration specifying default arguments is a definition.
475 2018-08-07  Ville Voutilainen  <ville.voutilainen@gmail.com>
477         PR c++/79133
478         * name-lookup.c (check_local_shadow): Reject captures and parameters
479         with the same name.
481 2018-08-06  Marek Polacek  <polacek@redhat.com>
483         PR c++/86767
484         * constexpr.c (cxx_eval_statement_list): Handle continue.
486 2018-08-03  David Malcolm  <dmalcolm@redhat.com>
487             Jonathan Wakely  <jwakely@redhat.com>
489         * decl.c: Include "gcc-rich-location.h".
490         (add_return_star_this_fixit): New function.
491         (finish_function): When warning about missing return statements in
492         functions returning non-void, add a "return *this;" fix-it hint for
493         assignment operators.
495 2018-08-03  Jason Merrill  <jason@redhat.com>
497         PR c++/86706
498         * class.c (build_base_path): Use currently_open_class.
500 2018-08-02  David Malcolm  <dmalcolm@redhat.com>
502         * error.c (cxx_print_error_function): Duplicate "file" before
503         passing it to pp_set_prefix.
504         (cp_print_error_function): Use pp_take_prefix when saving the
505         existing prefix.
507 2018-08-02  Richard Biener  <rguenther@suse.de>
509         PR c++/86763
510         * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
511         to the CLASSTYPE_AS_BASE.
513 2018-08-01  Martin Sebor  <msebor@redhat.com>
515         PR tree-optimization/86650
516         * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
517         TREE_BLOCK (t) from within percent_K_format to this callsite.
519 2018-08-01  Paolo Carlini  <paolo.carlini@oracle.com>
521         PR c++/86661
522         * class.c (note_name_declared_in_class): Use location_of in permerror
523         instead of DECL_SOURCE_LOCATION (for OVERLOADs).
525 2018-07-31  Tom de Vries  <tdevries@suse.de>
527         PR debug/86687
528         * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
530 2018-07-31  Jakub Jelinek  <jakub@redhat.com>
532         P1008R1 - prohibit aggregates with user-declared constructors
533         * class.c (check_bases_and_members): For C++2a set
534         CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
535         type_has_user_provided_or_explicit_constructor.
537 2018-07-31  Martin Liska  <mliska@suse.cz>
539         PR c++/86653
540         * parser.c (cp_parser_condition): Initialize non_constant_p
541         to false.
543 2018-07-28  David Malcolm  <dmalcolm@redhat.com>
545         * error.c (cp_printer): In the leading comment, move "%H" and "%I"
546         into alphabetical order, and add missing "%G" and "%K".  Within
547         the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
548         cases are in alphabetical order.
550 2018-07-25  Jakub Jelinek  <jakub@redhat.com>
552         * cp-tree.h (enum cp_tree_index): Add
553         CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
554         and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
555         (abi_tag_identifier, aligned_identifier, begin_identifier,
556         end_identifier, get__identifier, gnu_identifier,
557         tuple_element_identifier, tuple_size_identifier, type_identifier,
558         value_identifier, fun_identifier, closure_identifier): Define.
559         * decl.c (initialize_predefined_identifiers): Initialize the above
560         identifiers.
561         (get_tuple_size): Use tuple_size_identifier instead of
562         get_identifier ("tuple_size") and value_identifier instead of
563         get_identifier ("value").
564         (get_tuple_element_type): Use tuple_element_identifier instead of
565         get_identifier ("tuple_element") and type_identifier instead of
566         get_identifier ("type").
567         (get_tuple_decomp_init): Use get__identifier instead of
568         get_identifier ("get").
569         * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
570         get_identifier ("_FUN").
571         * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
572         instead of get_identifier ("__closure").
573         (cp_parser_std_attribute): Use gnu_identifier instead of
574         get_identifier ("gnu").
575         (cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
576         instead of get_identifier ("aligned").
577         * class.c (check_abi_tags, inherit_targ_abi_tags): Use
578         abi_tag_identifier instead of get_identifier ("abi_tag").
580         PR c++/85515
581         * cp-tree.h (enum cp_tree_index): Add
582         CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
583         (for_range__identifier, for_begin__identifier, for_end__identifier,
584         for_range_identifier, for_begin_identifier, for_end_identifier):
585         Define.
586         * decl.c (initialize_predefined_identifiers): Initialize
587         for_{range,begin,end}{,_}_identifier.
588         * parser.c (build_range_temp): Use for_range__identifier instead of
589         get_identifier ("__for_range").
590         (cp_convert_range_for): Use for_begin__identifier and
591         for_end__identifier instead of get_identifier ("__for_begin") and
592         get_identifier ("__for_end").
593         * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
594         local symbols to "__for_{range,begin,end}".
596 2018-07-23  Jakub Jelinek  <jakub@redhat.com>
598         PR c++/86569
599         * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
600         of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
601         or warn_nonnull_compare.
603 2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
605         Revert fix for c++/59480 (and testsuite followup)
607         2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
609         PR c++/59480, DR 136
610         * decl.c (check_no_redeclaration_friend_default_args): New.
611         (duplicate_decls): Use the latter; also check that a friend
612         declaration specifying default arguments is a definition.
614 2018-07-18  Jakub Jelinek  <jakub@redhat.com>
616         PR c++/86550
617         * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
618         specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
620 2018-07-18  Marek Polacek  <polacek@redhat.com>
622         PR c++/86190 - bogus -Wsign-conversion warning
623         * typeck.c (cp_build_binary_op): Fix formatting.  Add a warning
624         sentinel.
626 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
628         PR c++/59480, DR 136
629         * decl.c (check_no_redeclaration_friend_default_args): New.
630         (duplicate_decls): Use the latter; also check that a friend
631         declaration specifying default arguments is a definition.
633 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
635         * class.c (note_name_declared_in_class): Prefer permerror + inform
636         to a pair of permerrors; use DECL_SOURCE_LOCATION.
638 2018-07-18  Richard Biener  <rguenther@suse.de>
640         PR debug/86523
641         * decl2.c (c_parse_final_cleanups): Call write_out_vars before
642         start_static_storage_duration_function sets current_function_decl.
644 2018-07-17  Jason Merrill  <jason@redhat.com>
646         PR c++/86480 - nested variadic lambda and constexpr if.
647         * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
648         IF_STMT_EXTRA_ARGS.
649         * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
650         cp_unevaluated_operand.
651         [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
653 2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>
655         * class.c (resolve_address_of_overloaded_function): Don't emit an
656         inform if the matching permerror returns false.
657         * pt.c (check_specialization_namespace): Likewise.
659 2018-07-16  Jakub Jelinek  <jakub@redhat.com>
661         PR c++/3698
662         PR c++/86208
663         * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
664         in TREE_USED flag from stmt to h->to.
666 2018-07-13  Nathan Sidwell  <nathan@acm.org>
668         PR c++/86374
669         * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
670         contexts that are classes.
671         * parser.c (cp_parser_template_id): Combine entering_scope decl &
672         initializer.
674 2018-07-12  Jakub Jelinek  <jakub@redhat.com>
676         * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
677         type here, instead add "omp declare target implicit" attribute.  Add
678         that attribute instead of "omp declare target" also when
679         processing_template_decl.
680         * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
681         and before calling cp_omp_mappable_type call complete_type.
683 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
685         PR sanitizer/86406
686         * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
687         DEBUG_BEGIN_STMTs.
689         PR c++/86443
690         * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
691         instead of setting *lastp turn orig_declv elt into a TREE_LIST.
692         (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
693         * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
694         TREE_LIST for both the original class iterator and the "last" helper
695         var.
697 2018-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
699         * decl.c (grokdeclarator): Use rich_location::add_range in three
700         more places; include gcc-rich-location.h.
702 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
704         * decl.c (build_enumerator): Change overflow type to overflow_type.
705         * init.c (build_new_1): Same.
707 2018-07-05  Nathan Sidwell  <nathan@acm.org>
709         * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
710         NO_IMPLICIT_EXTERN_C.
711         * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
713 2018-07-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
715         PR c++/86398
716         * method.c (is_trivially_xible): Return false
717         if is_xible_helper returns a NULL_TREE.
719 2018-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
721         * decl.c (min_location): New.
722         (smallest_type_quals_location): Use the latter.
723         (check_concept_fn): Use DECL_SOURCE_LOCATION.
724         (grokdeclarator): Use accurate locations in a number of error
725         messages involving ds_thread, ds_storage_class, ds_virtual,
726         ds_constexpr, ds_typedef and ds_friend; exploit min_location.
728 2018-07-03  Marek Polacek  <polacek@redhat.com>
730         PR c++/86201
731         * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
733 2018-07-03  Jason Merrill  <jason@redhat.com>
735         PR c++/86378 - functional cast in noexcept-specifier.
736         * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
738 2018-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
740         * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
741         in error message about __thread and thread_local at the same time.
743 2018-06-29  Marek Polacek  <polacek@redhat.com>
745         PR c++/86184
746         * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
748 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
750         * parser.c (cp_parser_error_1): After issuing a conflict marker
751         error, consume tokens until the end of the source line.
753 2018-06-28  Jason Merrill  <jason@redhat.com>
755         PR c++/86342 - -Wdeprecated-copy and system headers.
756         * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
757         in system headers.
759 2018-06-27  David Malcolm  <dmalcolm@redhat.com>
761         PR c++/86329
762         * name-lookup.c (consider_binding_level): Filter out names that
763         match anon_aggrname_p.
765 2018-06-27  Jason Merrill  <jason@redhat.com>
767         * name-lookup.c (do_pushtag): If we skip a class level, also skip
768         its template level.
770 2018-06-26  Jason Merrill  <jason@redhat.com>
772         PR c++/86320 - memory-hog with std::array of pair
773         * typeck2.c (process_init_constructor_array): Only compute a
774         constant initializer once.
776         PR c++/80290 - memory-hog with std::pair.
777         * pt.c (fn_type_unification): Add convs parameter.
778         (check_non_deducible_conversion): Remember conversion.
779         (check_non_deducible_conversions): New.  Do checks here.
780         (type_unification_real): Not here.  Remove flags parm.
781         * call.c (add_function_candidate): Make convs a parameter.
782         Don't recalculate the conversion if it's already set.
783         (add_template_candidate_real): Allocate convs here.
784         (good_conversion, conv_flags): New.
786 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
788         PR c++/86291
789         * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
790         type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
792 2018-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
794         * decl.c (bad_specifiers): Add const location_t* parameter and
795         use locations in error messages about 'inline' and 'virtual'.
796         (mark_inline_variable): Add location_t parameter and use it in
797         error_at and pedwarn messages.
798         (grokdeclarator): Use declspecs->locations[ds_constexpr],
799         declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
800         declspecs->locations[ds_inline] in many error messages; adjust
801         bad_specifiers and mark_inline_variable calls.
802         (grokvardecl): Use declspecs->locations[ds_concept] in error message.
804 2018-06-22  Jason Merrill  <jason@redhat.com>
806         PR c++/86219 - ICE with erroneous initializer in template.
807         * constexpr.c (fold_non_dependent_expr): Add complain parm.
808         * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
809         Pass it.
810         * call.c (build_cxx_call): Don't mess with builtins in a template.
811         * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
812         produce a constant value, go back to the uninstantiated form.
814         Avoid taking the address of something just because it's in parens.
815         * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
816         (cxx_fold_indirect_ref): Use it.
817         (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
818         * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
819         * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
820         static_cast to reference type.
821         (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
823 2018-06-21  Jason Merrill  <jason@redhat.com>
825         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
827         * name-lookup.c (do_push_to_top_level): Don't allocate
828         current_lang_base.
829         (do_pop_from_top_level): Release current_lang_base.
831         Let -fmem-report see callers of cxx_make_type.
832         * lex.c (cxx_make_type): Add MEM_STAT_DECL.
833         (make_class_type): Likewise.
834         (cxx_make_type_hook): New.
835         * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
837 2018-06-20  Nathan Sidwell  <nathan@acm.org>
839         PR c++/85634
840         * friend.c (add_friend): Keep lookup sets of tempate sets.
842 2018-06-20  Paolo Carlini  <paolo.carlini@oracle.com>
844         * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
845         tidy handling of a null location_t argument; use proper location
846         information in a few additional error messages.
847         (grokdeclarator): Update calls.
849 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
850             Thomas Schwinge <thomas@codesourcery.com>
851             Cesar Philippidis  <cesar@codesourcery.com>
853         * parser.c (cp_parser_omp_clause_name): Add support for finalize
854         and if_present. Make present_or_{copy,copyin,copyout,create} aliases
855         to their non-present_or_* counterparts. Make 'self' an alias to
856         PRAGMA_OACC_CLAUSE_HOST.
857         (cp_parser_oacc_data_clause): Update GOMP mappings for
858         PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
859         PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
860         (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
861         Remove support for present_or_* clauses.
862         (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
863         (OACC_PARALLEL_CLAUSE_MASK): Likewise.
864         (OACC_DECLARE_CLAUSE_MASK): Likewise.
865         (OACC_DATA_CLAUSE_MASK): Likewise.
866         (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
867         (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
868         (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
869         (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
870         * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
871         * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
873 2018-06-20  Marek Polacek  <polacek@redhat.com>
875         PR c++/86240
876         * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
877         (fold_simple_1): Likewise.
878         * error.c (dump_expr): Likewise.
880 2018-06-20  Nathan Sidwell  <nathan@acm.org>
882         PR c++/85634
883         * cp-tree.h (lookup_keep): Drop KEEP parm.
884         (lookup_list_keep): Delete.
885         (maybe_get_fns): Declare.
886         * parser.c (cp_parser_primary_expression): Call lookup_keep here.
887         (cp_parser_template_id): Not here ...
888         * decl.c (cp_finish_decl): ... nor here ...
889         * init.c (build_raw_new_expr): ... nor here ...
890         * pt.c (process_template_parm): ... nor here ...
891         * semantics.c (perform_koenig_lookup): Call lookup_keep.
892         (finish_call_expr): Not here.
893         * tree.c (ovl_cache): Delete.
894         (ovl_make, ovl_copy): No cache.
895         (lookup_keep): Always keep.
896         (lookup_list_keep): Delete.
897         (maybe_get_fns): New, broken out of ...
898         (get_fns): ... here.  Call it.
899         (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
900         (build_min_nt_call_vec): Likewise.
902 2018-06-19  Jason Merrill  <jason@redhat.com>
904         * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
905         * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
907         PR c++/86182 - ICE with anonymous union passed to template.
908         * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
909         used to declare a named variable.
911 2018-06-18  Jason Merrill  <jason@redhat.com>
913         * tree.c (cp_expr_location): New.
914         * cp-tree.h (cp_expr_loc_or_loc): New.
915         * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
916         error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
917         typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
919         * parser.c (cp_parser_lambda_expression): Use a range for
920         LAMBDA_EXPR_LOCATION.
922         PR c++/86200 - ICE with unexpanded pack in lambda parameter.
923         * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
924         function type.
926         PR c++/81060 - ICE with unexpanded parameter pack.
927         * pt.c (check_for_bare_parameter_packs): Add loc parameter.
928         * decl.c (grokdeclarator): Call it for qualifying_scope.
930         PR c++/86171 - ICE with recursive alias instantiation.
931         * pt.c (tsubst_decl): Handle recursive alias instantiation.
933 2018-06-18  Paolo Carlini  <paolo.carlini@oracle.com>
935         * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
936         in errors about redefined default arguments; tidy.
938 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
940         * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
941         * cp-gimplify.c (cp_fold): Likewise.
943 2018-06-15  Jason Merrill  <jason@redhat.com>
945         PR c++/86147 - wrong capture for template argument.
946         * expr.c (mark_use): Look through NOP_EXPR.
948         * name-lookup.c (do_pushtag): Don't look through complete types, but
949         don't add to them either.  Get context from current_binding_level.
950         * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
952         * decl.c (start_enum): Do compare dependent underlying type.
954         PR c++/82882 - ICE with lambda in template default argument.
955         * lambda.c (record_null_lambda_scope): New.
956         * pt.c (tsubst_lambda_expr): Use it.
957         * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
958         function that isn't open.
960         * tree.c (maybe_warn_parm_abi): Inform the location of the class.
962 2018-06-14  Marek Polacek  <polacek@redhat.com>
964         PR c++/86063
965         * decl2.c (cp_check_const_attributes): Skip trees that are not
966         TREE_LISTs.
968 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
970         P0624R2 - Default constructible and assignable stateless lambdas
971         * method.c (synthesized_method_walk): For C++2a don't mark
972         sfk_constructor or sfk_copy_assignment as deleted if lambda has
973         no lambda-captures.
975 2018-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
977         * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
978         OPT_Wshadow warning_at.
979         (grokfndecl): Consistently use the location_t argument in
980         literal operator diagnostic messages.
981         (grokdeclarator): Use declspecs->locations[ds_storage_class]
982         in error_at call.
983         * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
984         in permerror call.
986 2018-06-13  Jason Merrill  <jason@redhat.com>
988         PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
989         * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
990         constructors.
992         PR c++/86094 - wrong code with defaulted move ctor.
993         * class.c (classtype_has_non_deleted_move_ctor): New.
994         * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
995         Handle v12 breakage.
997 2018-06-12  Jason Merrill  <jason@redhat.com>
999         PR c++/86098 - ICE with template placeholder for TTP.
1000         * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
1001         CLASS_PLACEHOLDER_TEMPLATE.
1003 2018-06-12  Paolo Carlini  <paolo.carlini@oracle.com>
1005         * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
1006         parameter and adjust error_at calls.
1007         * decl.c (grok_op_properties): Adjust calls.
1008         * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
1010 2018-06-12  Marek Polacek  <polacek@redhat.com>
1012         Core issue 1331 - const mismatch with defaulted copy constructor
1013         * class.c (check_bases_and_members): When checking a defaulted
1014         function, mark it as deleted rather than giving an error.
1016 2018-06-11  Jason Merrill  <jason@redhat.com>
1018         PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
1019         * class.c (maybe_warn_about_overly_private_class): Handle inherited
1020         constructors.
1022         PR c++/85963 - -Wunused-but-set with ?: in template.
1023         * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
1025 2018-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
1027         * decl.c (grok_op_properties): Consistently use the location
1028         of the decl; remove special casing of POSTINCREMENT_EXPR and
1029         POSTDECREMENT_EXPR wrt default arguments.
1031 2018-06-05  Jason Merrill  <jason@redhat.com>
1033         * constexpr.c (cxx_eval_binary_expression): Special case comparison
1034         of pointers to members of the same union.
1036 2018-06-11  Jason Merrill  <jason@redhat.com>
1038         PR c++/86094 - wrong code with defaulted move ctor.
1039         * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
1041 2018-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1043         * decl.c (grokfndecl): Use the location_t argument in two more places.
1045 2018-06-06  Marek Polacek  <polacek@redhat.com>
1047         PR c++/85977
1048         * pt.c (unify): If ELTTYPE has no deducible template parms, skip
1049         deduction from the list elements.
1050         (type_unification_real): Check convertibility of list elements.
1052 2018-06-06  Jason Merrill  <jason@redhat.com>
1054         PR c++/86060 - ICE on range for with -std=c++98.
1055         * parser.c (cp_parser_init_statement): Don't clobber *decl after
1056         pedwarn.
1058         PR c++/85710 - ICE with -Wmemset-elt-size.
1059         * semantics.c (finish_call_expr): Call warn_for_memset here.
1060         * parser.c (cp_parser_postfix_expression): Not here.
1061         (literal_integer_zerop): No longer static.
1062         * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
1064 2018-06-05  Marek Polacek  <polacek@redhat.com>
1066         PR c++/85976
1067         * tree.c (cp_tree_equal): Handle USING_DECL.
1069 2018-06-05  Jason Merrill  <jason@redhat.com>
1071         PR c++/85731 - wrong error with qualified-id in template.
1072         * semantics.c (finish_qualified_id_expr): build_qualified_name
1073         for unbound names in the current class.
1075 2018-06-04  Jason Merrill  <jason@redhat.com>
1077         PR c++/61806 - missed SFINAE with partial specialization.
1078         * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
1079         parameter to constructor.
1080         * pt.c (instantiate_class_template_1): Enable access checking
1081         before call to most_specialized_partial_spec.
1083         PR c++/85765 - SFINAE and non-type default template arg.
1084         * pt.c (type_unification_real): Do full semantic processing if
1085         substituting a partial args list replaces all template parms.
1087 2018-06-03  Jason Merrill  <jason@redhat.com>
1089         PR c++/85739 - ICE with pointer to member template parm.
1090         * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
1092 2018-06-02  Jason Merrill  <jason@redhat.com>
1094         PR c++/85761 - ICE with ill-formed use of const outer variable.
1095         * expr.c (mark_use): Handle location wrappers.
1097 2018-06-01  Jason Merrill  <jason@redhat.com>
1099         PR c++/85764 - bogus 'this' not captured error.
1100         * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
1101         (nonlambda_method_basetype): Handle NSDMI.
1103         CWG 1581: When are constexpr member functions defined?
1104         * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
1105         (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
1107         PR c++/58281 - explicit instantiation of constexpr
1108         * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
1110         * pt.c (instantiate_decl): Any defaulted function is defined.
1112 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
1114         PR c++/77777
1115         * call.c (resolve_args): Use location of expression, not current input
1116         location.
1118 2018-05-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
1120         Do not warn about zero-as-null when NULL is used.
1121         * call.c (conversion_null_warnings): Check for pointer
1122         types converted from zero constants.
1123         (convert_like_real): Add a warning sentinel at the end.
1124         * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
1125         check null_node_p.
1127 2018-05-30  Jason Merrill  <jason@redhat.com>
1129         PR c++/85807 - ICE with call in template NSDMI.
1130         * init.c (get_nsdmi): Use push_to/pop_from_top_level.
1131         * tree.c (bot_manip): Don't set_flags_from_callee in a template.
1133         PR c++/85873 - constant initializer_list array not in .rodata.
1134         * tree.c (build_target_expr): Set TREE_READONLY.
1135         * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
1137         * parser.c (cp_parser_check_condition_declarator): Handle
1138         cp_error_declarator.
1140 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
1142         * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
1143         of using it in dead store.
1145 2018-05-29  Jason Merrill  <jason@redhat.com>
1147         PR c++/67445 - returning temporary initializer_list.
1148         PR c++/67711 - assigning from temporary initializer_list.
1149         PR c++/48562 - new initializer_list.
1150         * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
1151         about returning local initializer_list.
1152         * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
1153         * call.c (build_over_call): Warn about assignment from temporary
1154         init_list.
1155         * init.c (build_new_1): Warn about 'new std::initializer_list'.
1156         (find_list_begin, maybe_warn_list_ctor): New.
1157         (perform_member_init): Use maybe_warn_list_ctor.
1159 2018-05-29  Marek Polacek  <polacek@redhat.com>
1161         PR c++/85883
1162         * init.c (build_new): Handle deducing a class with new
1163         with more than one argument.
1165 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
1167         PR c++/85952
1168         * init.c (build_aggr_init): For structured binding initialized from
1169         array call mark_rvalue_use on the initializer.
1171 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1173         * decl2.c (start_static_storage_duration_function): Use
1174         splay_tree_delete_pointers.
1176 2018-05-25  Jason Merrill  <jason@redhat.com>
1178         PR c++/85815 - reference to member of enclosing template.
1179         * search.c (lookup_base): Use currently_open_class.
1180         (lookup_member): Use it regardless of -fconcepts.
1181         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
1183         CWG 616, 1213 - value category of subobject references.
1184         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
1186 2018-05-24  Jason Merrill  <jason@redhat.com>
1188         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
1189         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
1190         generic lambda.
1192 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
1194         Pedwarn on a non-standard position of a C++ attribute.
1195         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
1196         after the namespace name.
1198 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1200         * cp-tree.h (INDIRECT_TYPE_P): New.
1201         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
1202         joust): Use it instead of POINTER_TYPE_P.
1203         * class.c (update_vtable_entry_for_fn, find_flexarrays,
1204         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
1205         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
1206         * cxx_eval_increment_expression, potential_constant_expression_1):
1207         Likewise.
1208         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
1209         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
1210         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
1211         cp_ubsan_maybe_instrument_downcast): Likewise.
1212         * cvt.c (cp_convert_to_pointer, ocp_convert,
1213         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
1214         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
1215         pp_cxx_offsetof_expression_1): Likewise.
1216         * decl.c (grokparms, static_fn_type): Likewise.
1217         * decl2.c (grokbitfield): Likewise.
1218         * error.c (dump_expr): Likewise.
1219         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
1220         * init.c (warn_placement_new_too_small): Likewise.
1221         * lambda.c (build_capture_proxy, add_capture): Likewise.
1222         * parser.c (cp_parser_omp_for_loop): Likewise.
1223         * pt.c (convert_nontype_argument, fn_type_unification,
1224         uses_deducible_template_parms, check_cv_quals_for_unify,
1225         dependent_type_p_r): Likewise.
1226         * search.c (check_final_overrider): Likewise.
1227         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
1228         finish_omp_for): Likewise.
1229         * tree.c (cp_build_qualified_type_real): Likewise.
1230         * typeck.c (build_class_member_access_expr,
1231         finish_class_member_access_expr, build_x_indirect_ref,
1232         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
1233         Likewise.
1235 2018-05-24  Jason Merrill  <jason@redhat.com>
1237         PR c++/85864 - literal template and default template arg.
1238         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
1240 2018-05-24  Marek Polacek  <polacek@redhat.com>
1242         PR c++/85847
1243         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
1244         variable for its result.  Fix a condition.
1245         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
1247 2018-05-23  Jason Merrill  <jason@redhat.com>
1249         Fix cast to rvalue reference from prvalue.
1250         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
1251         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
1252         non-class type.  Handle xvalue argument.
1253         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
1254         rvalue reference.
1255         * semantics.c (finish_compound_literal): Do direct-initialization,
1256         not cast, to initialize a reference.
1258         CWG 616, 1213 - value category of subobject references.
1259         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
1260         an xvalue.
1261         * typeck2.c (build_m_component_ref): Likewise.
1262         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
1263         distinction between temporary and xvalue.
1265 2018-05-23  Marek Polacek  <polacek@redhat.com>
1267         Implement P0614R1, Range-based for statements with initializer.
1268         * parser.c (cp_parser_range_based_for_with_init_p): New.
1269         (cp_parser_init_statement): Use it.  Parse the optional init-statement
1270         for a range-based for loop.
1271         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
1273 2018-05-22  Jason Merrill  <jason@redhat.com>
1275         PR c++/81420 - not extending temporary lifetime.
1276         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
1277         * class.c (build_base_path): Avoid redundant move of an rvalue.
1279         PR c++/85866 - error with .* in default template arg.
1280         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
1282 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
1284         * parser.c (cp_parser_parameter_declaration_list): Remove
1285         bool* parameter.
1286         (cp_parser_parameter_declaration_clause): Adjust.
1287         (cp_parser_cache_defarg): Likewise.
1289 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
1291         PR c++/84588
1292         * parser.c (cp_parser_maybe_commit_to_declaration,
1293         cp_parser_check_condition_declarator): New.
1294         (cp_parser_simple_declaration): Use the first above.
1295         (cp_parser_condition): Use both the above; enforce
1296         [stmt.stmt]/2 about the declarator not specifying
1297         a function or an array; improve error-recovery.
1299 2018-05-20  Jason Merrill  <jason@redhat.com>
1301         PR libstdc++/85843 - warning in logic_error copy constructor.
1302         * class.c (type_has_user_nondefault_constructor): Check for a
1303         user-provided ctor, not user-declared.
1305 2018-05-19  Jason Merrill  <jason@redhat.com>
1307         * pt.c (tsubst_pack_expansion): Sorry rather than abort
1308         on __integer_pack as subexpression of pattern.
1310 2018-05-18  Jason Merrill  <jason@redhat.com>
1312         PR c++/58407 - deprecated implicit copy ops.
1313         * call.c (build_over_call): Warn about deprecated trivial fns.
1314         * class.c (classtype_has_user_copy_or_dtor): New.
1315         (type_build_ctor_call): Check TREE_DEPRECATED.
1316         (type_build_dtor_call): Likewise.
1317         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
1318         Add checks.  Return bool.  Handle -Wdeprecated-copy.
1319         (mark_used): Use it.
1320         * decl.c (grokdeclarator): Remove redundant checks.
1321         * typeck2.c (build_functional_cast): Likewise.
1322         * method.c (lazily_declare_fn): Mark deprecated copy ops.
1323         * init.c (build_aggr_init): Only set TREE_USED if there are
1324         side-effects.
1326 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
1328         PR c++/85782
1329         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
1330         OACC_LOOPs.
1332 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
1334         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
1335         (potential_constant_expression_1): Likewise.
1337 2018-05-16  Marek Polacek  <polacek@redhat.com>
1339         PR c++/85363
1340         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
1341         * tree.c (bot_manip): Call set_flags_from_callee for
1342         AGGR_INIT_EXPRs too.
1344 2018-05-15  Jason Merrill  <jason@redhat.com>
1346         * cp-tree.h (cp_expr): Remove copy constructor.
1347         * mangle.c (struct releasing_vec): Declare copy constructor.
1349         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
1351         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
1352         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
1353         is a throw-expression.
1355 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
1357         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
1358         (FOR_EACH_CLONE): Update.
1359         * decl.c (grokdeclarator): Use it.
1360         * decl2.c (vague_linkage_p): Likewise.
1361         * mangle.c (mangle_decl): Likewise.
1362         * method.c (lazily_declare_fn): Likewise.
1363         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
1364         * repo.c (repo_emit_p): Likewise.
1365         * tree.c (decl_linkage): Likewise.
1367 2018-05-14  Jason Merrill  <jason@redhat.com>
1369         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
1370         * tree.c (build_cp_fntype_variant): New.
1371         (build_ref_qualified_type, build_exception_variant)
1372         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
1373         (cxx_type_hash_eq, cp_check_qualified_type): Check
1374         TYPE_HAS_LATE_RETURN_TYPE.
1375         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
1376         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
1377         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
1378         (adjust_clone_args): Likewise.
1379         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
1380         build_cp_fntype_variant.
1381         (grokdeclarator): Pass late_return_type_p to grokfndecl.
1382         (check_function_type): Use cxx_copy_lang_qualifiers.
1383         (static_fn_type): Use cxx_copy_lang_qualifiers.
1384         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
1385         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
1386         (change_return_type): Use cxx_copy_lang_qualifiers.
1387         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
1388         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
1389         return type on the declarator like a normal trailing return type.
1390         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
1391         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
1392         * typeck.c (merge_types): Use build_cp_fntype_variant.
1394 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
1396         * cp-tree.h (TYPE_REF_P): New.
1397         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
1398         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
1399         direct_reference_binding, reference_binding, implicit_conversion,
1400         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
1401         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
1402         build_over_call, perform_implicit_conversion_flags,
1403         extend_ref_init_temps, type_has_extended_temps): Use it.
1404         * class.c (one_inheriting_sig, check_field_decls,
1405         check_bases_and_members, find_flexarrays, finish_struct,
1406         fixed_type_or_null): Likewise.
1407         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
1408         non_const_var_error, cxx_eval_constant_expression,
1409         potential_constant_expression_1): Likewise.
1410         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
1411         cp_genericize_r, cxx_omp_privatize_by_reference,
1412         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
1413         cp_fold_maybe_rvalue): Likewise.
1414         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
1415         * cvt.c (build_up_reference, convert_to_reference,
1416         convert_from_reference, convert_to_void, noexcept_conv_p,
1417         fnptr_conv_p): Likewise.
1418         * decl.c (poplevel, check_for_uninitialized_const_var,
1419         check_initializer, initialize_local_var, cp_finish_decl,
1420         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
1421         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
1422         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
1423         decl_maybe_constant_var_p): Likewise.
1424         * error.c (dump_type_prefix, dump_expr): Likewise.
1425         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
1426         is_admissible_throw_operand_or_catch_parameter): Likewise.
1427         * expr.c (mark_use): Likewise.
1428         * init.c (build_zero_init_1, build_value_init_noctor,
1429         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
1430         build_new, build_delete): Likewise.
1431         * lambda.c (build_lambda_object): Likewise.
1432         * mangle.c (write_expression, write_template_arg): Likewise.
1433         * method.c (forward_parm, do_build_copy_constructor,
1434         do_build_copy_assign, build_stub_object, constructible_expr,
1435         walk_field_subobs): Likewise.
1436         * parser.c (cp_parser_omp_for_loop_init,
1437         cp_parser_omp_declare_reduction_exprs,
1438         cp_parser_omp_declare_reduction): Likewise.
1439         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
1440         convert_template_argument, tsubst_pack_expansion,
1441         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
1442         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
1443         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
1444         value_dependent_expression_p, build_deduction_guide): Likewise.
1445         * semantics.c (finish_handler_parms, finish_non_static_data_member,
1446         finish_compound_literal, omp_privatize_field,
1447         handle_omp_array_sections_1, handle_omp_array_sections,
1448         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
1449         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
1450         finish_omp_clauses, finish_decltype_type, capture_decltype,
1451         finish_builtin_launder): Likewise.
1452         * tree.c (lvalue_kind, cp_build_reference_type, move,
1453         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
1454         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
1455         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
1456         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
1457         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
1458         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
1459         convert_for_initialization,
1460         maybe_warn_about_returning_address_of_local, check_return_expr,
1461         cp_type_quals, casts_away_constness, non_reference): Likewise.
1462         * typeck2.c (cxx_readonly_error, store_init_value,
1463         process_init_constructor_record, build_x_arrow, build_functional_cast,
1464         add_exception_specifier): Likewise.
1466 2018-05-14  Jason Merrill  <jason@redhat.com>
1468         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
1469         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
1471 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
1473         PR c/85696
1474         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
1475         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
1476         cxx_omp_predetermined_sharing_1.  Rename old function to ...
1477         (cxx_omp_predetermined_sharing_1): ... this.
1478         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
1479         instead of cxx_omp_predetermined_sharing.
1481 2018-05-10  Jason Merrill  <jason@redhat.com>
1483         * decl.c (cp_finish_decl): Don't instantiate auto variable.
1484         (check_static_variable_definition): Allow auto.
1485         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
1487         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
1488         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
1490         Core issue 2310 - conversion to base of incomplete type.
1491         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
1493         CWG 2267 - list-initialization of reference temporary
1494         * call.c (reference_binding): List-initializing a reference
1495         temporary is copy-list-initialization.
1497         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
1499         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
1500         instantiation in template context.
1502         * class.c (vbase_has_user_provided_move_assign): Use
1503         user_provided_p.
1505         * lambda.c (lambda_expr_this_capture): Improve logic.
1507         * decl.c (make_typename_type): s/parameters/arguments/.
1508         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
1509         * pt.c (make_pack_expansion): Correct error message.
1511 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
1513         PR c++/85662
1514         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
1515         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
1516         fold_convert.
1518 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
1520         PR c++/85400
1521         * decl2.c (adjust_var_decl_tls_model): New static function.
1522         (comdat_linkage): Call it on a variable.
1523         (maybe_make_one_only): Likewise.
1525 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
1527         PR c++/85713
1528         Revert:
1529         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1531         PR c++/84588
1532         * parser.c (cp_parser_parameter_declaration_list): When the
1533         entire parameter-declaration-list is erroneous maybe call
1534         abort_fully_implicit_template.
1536 2018-05-08  Jason Merrill  <jason@redhat.com>
1538         PR c++/85706 - class deduction under decltype
1539         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
1540         *walk_subtrees whether or not we walked into the operand.
1541         (type_uses_auto): Only look at deduced contexts.
1543 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1545         PR c++/84588
1546         * parser.c (cp_parser_parameter_declaration_list): When the
1547         entire parameter-declaration-list is erroneous maybe call
1548         abort_fully_implicit_template.
1550 2018-05-08  Marek Polacek  <polacek@redhat.com>
1552         PR c++/85695
1553         * semantics.c (finish_if_stmt_cond): See through typedefs.
1555 2018-05-07  Jason Merrill  <jason@redhat.com>
1557         PR c++/85646 - lambda visibility.
1558         * decl2.c (determine_visibility): Don't mess with template arguments
1559         from the containing scope.
1560         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
1561         thunk.
1563 2018-05-07  Nathan Sidwell  <nathan@acm.org>
1565         Remove fno-for-scope
1566         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
1567         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
1568         (SET_DECL_SHADOWED_FOR_VAR): Delete.
1569         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1570         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
1571         Don't declare.
1572         * name-lookup.h (struct cp_binding_level): Remove
1573         dead_vars_from_for field.
1574         * cp-lang.c (cp_init_ts): Delete.
1575         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
1576         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
1577         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1578         (init_shadowed_var_for_decl): Delete.
1579         * decl.c (poplevel): Remove shadowed for var handling.
1580         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
1581         * name-lookup.c (find_local_binding): Remove shadowed for var
1582         handling.
1583         (check_local_shadow): Likewise.
1584         (check_for_out_of_scope_variable): Delete.
1585         * parser.c (cp_parser_primary_expression): Remove shadowed for var
1586         handling.
1587         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
1588         * semantics.c (begin_for_scope): Always have a scope.
1589         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
1590         (begin_range_for_stmt, finish_id_expression): Likewise.
1592 2018-05-07  Jason Merrill  <jason@redhat.com>
1594         PR c++/85618 - ICE with initialized VLA.
1595         * tree.c (vla_type_p): New.
1596         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
1597         rather than array_of_runtime_bound_p.
1599 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
1601         * cvt.c (ocp_convert): Early handle the special case of a
1602         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
1604 2018-05-03  Jason Merrill  <jason@redhat.com>
1606         PR c++/85600 - virtual delete failure.
1607         * init.c (build_delete): Always save_expr when deleting.
1609 2018-05-03  Nathan Sidwell  <nathan@acm.org>
1611         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
1612         * name-lookup.c (do_pushdecl): Likewise.
1614 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
1615             Jason Merrill  <jason@redhat.com>
1617         PR c++/68374
1618         * name-lookup.c (check_local_shadow): Don't handle static old
1619         declarations in the block handling locals shadowing locals.
1621 2018-05-01  Jason Merrill  <jason@redhat.com>
1623         PR c++/85587 - error with scoped enum in template.
1624         * semantics.c (finish_qualified_id_expr): Don't return an
1625         unqualified IDENTIFIER_NODE.
1627 2018-04-30  Jason Merrill  <jason@redhat.com>
1629         PR c++/85580 - extern "C" and local variables
1630         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
1632         PR c++/84701 - unsigned typeof.
1633         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
1634         of long/short/signed/unsigned.
1636         PR c++/85305 - pack in lambda init-capture.
1637         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
1638         check_for_bare_parameter_packs in a subexpression.
1639         (cp_parser_lambda_introducer): Use it.
1641         PR c++/61982 - dead stores to destroyed objects.
1642         * call.c (build_trivial_dtor_call): New, assigns a clobber.
1643         (build_over_call, build_special_member_call): Use it.
1644         * cp-tree.h: Declare it.
1645         * init.c (build_delete): Remove trivial path.
1647         * init.c (build_dtor_call): Use build_special_member_call.
1648         (build_delete): Remove redundant uses of save_addr.
1650         * decl.c (build_clobber_this): Use build_clobber.
1652 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
1654         PR c++/85553
1655         * init.c (build_zero_init_1): For zero initialization of
1656         NULLPTR_TYPE_P type use build_int_cst directly.
1658 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
1660         PR c++/85515
1661         * name-lookup.c (consider_binding_level): Skip compiler-generated
1662         variables.
1663         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
1664         nested if statements into a series of rejection tests.  Reject
1665         lambda-ignored entities as suggestions.
1667 2018-04-27  Jason Merrill  <jason@redhat.com>
1669         * cvt.c (cp_fold_convert): Use convert_ptrmem.
1670         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
1672 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
1674         PR c++/84691
1675         * decl.c (grokdeclarator): Clear friendp upon definition in local
1676         class definition error.
1678 2018-04-27  Jason Merrill  <jason@redhat.com>
1680         PR c++/85545 - ICE with noexcept PMF conversion.
1681         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
1682         build_ptrmemfunc.
1683         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
1684         adjustment.
1685         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
1687 2018-04-27  Nathan Sidwell  <nathan@acm.org>
1689         * typeck.c (convert_ptrmem): Move local var decls to initialization.
1691         * cp-tree.h (TEMPLATE_INFO): Fix comments.
1692         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
1693         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
1694         (dump, print_other_binding_stacks): Remove declarations.
1695         * name-lookup.c (print_other_binding_stack): Make static.
1696         * pt.c (build_template_decl): Make static.
1698 2018-04-26  Jason Merrill  <jason@redhat.com>
1700         PR c++/85545 - ICE with noexcept PMF conversion.
1701         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
1703 2018-04-25  Nathan Sidwell  <nathan@acm.org>
1705         PR c++/85437
1706         PR c++/49171
1707         * cp-tree.h (REINTERPRET_CAST_P): New.
1708         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
1709         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
1710         for non-trivial PTRMEM_CST cases.
1711         * typeck.c (build_nop_reinterpret): New.
1712         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
1713         NOP_EXPRs returned by cp_convert.
1715 2018-04-23  Jason Merrill  <jason@redhat.com>
1717         PR c++/69560 - wrong alignof(double) on x86.
1718         CWG 1879 - Inadequate definition of alignment requirement.
1719         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
1720         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
1721         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
1722         (cxx_alignof_expr): Pass it.
1723         * parser.c (cp_parser_unary_expression): Pass it.
1724         * pt.c (tsubst_copy): Copy it.
1725         (tsubst_copy_and_build): Pass it.
1726         * decl.c (fold_sizeof_expr): Pass it.
1728 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
1729             Jason Merrill  <jason@redhat.com>
1731         PR c++/85470 - wrong error with static data member.
1732         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
1733         * typeck2.c (store_init_value): Likewise.
1735 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
1737         PR c++/85462
1738         * cp-tree.h (tinst_level): Remove in_system_header_p member,
1739         change refcount member from unsigned char to unsigned short,
1740         add refcount_infinity static data member, adjust comments.
1741         * pt.c (tinst_level::refcount_infinity): Define.
1742         (inc_refcount_use): Remove assert, don't increment if refcount
1743         is already refcount_infinity, adjust comment.
1744         (dec_refcount_use): Remove assert, don't decrement if refcount
1745         is refcount_infinity, adjust comment.
1746         (push_tinst_level_loc): Formatting fix.
1748 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
1750         PR c++/84611
1751         * pt.c (lookup_template_class_1): Check pushtag return value for
1752         error_mark_node.
1754 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
1756         PR c++/80290
1757         * cp-tree.h (tinst_level::free): Fix whitespace.
1759 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
1761         PR c++/84630
1762         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
1763         for error_mark_node.
1765 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
1767         PR c++/84463
1768         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
1769         tricks from here to ...
1770         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
1771         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
1773 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
1775         PR c++/80290
1776         * cp-tree.h (struct tinst_level): Split decl into tldcl and
1777         targs.  Add private split_list_p, tree_list_p, and not_list_p
1778         inline const predicates; to_list private member function
1779         declaration; free public member function declaration; list_p,
1780         get_node and maybe_get_node accessors, and refcount data
1781         member.  Narrow errors to unsigned short.
1782         * error.c (print_instantiation_full_context): Use new
1783         accessors.
1784         (print_instantiation_partial_context_line): Likewise.  Drop
1785         const from tinst_level-typed parameter.
1786         * mangle.c (mangle_decl_string): Likewise.
1787         * pt.c (freelist): New template class.
1788         (tree_list_freelist_head): New var.
1789         (tree_list_freelist): New fn, along with specializations.
1790         (tinst_level_freelist_head): New var.
1791         (pending_template_freelist_head): Likewise.
1792         (tinst_level_freelist, pending_template_freelist): New fns.
1793         (tinst_level::to_list, tinst_level::free): Define.
1794         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
1795         (set_refcount_ptr): New template fn.
1796         (add_pending_template): Adjust for refcounting, freelists and
1797         new accessors.
1798         (neglectable_inst_p): Take a NULL d as a non-DECL.
1799         (limit_bad_template_recursion): Use new accessors.
1800         (push_tinst_level): New overload to create the list.
1801         (push_tinst_level_loc): Make it static, split decl into two
1802         args, adjust tests and initialization to cope with split
1803         lists, use freelist, adjust for refcounting.
1804         (push_tinst_level_loc): New wrapper with the old interface.
1805         (pop_tinst_level): Adjust for refcounting.
1806         (record_last_problematic_instantiation): Likewise.
1807         (reopen_tinst_level): Likewise.  Use new accessors.
1808         (instantiate_alias_template): Adjust for split list.
1809         (fn_type_unification): Likewise.
1810         (get_partial_spec_bindings): Likewise.
1811         (instantiate_pending_templates): Use new accessors.  Adjust
1812         for refcount.  Release pending_template to freelist.
1813         (instantiating_current_function_p): Use new accessors.
1815 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
1817         PR c++/85039
1818         * parser.c (cp_parser_builtin_offset): Reject type definitions.
1819         * mangle.c (nested_anon_class_index): Avoid crash returning -1
1820         if we've seen errors.
1822 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
1824         PR c++/85385
1825         * name-lookup.c (macro_use_before_def::maybe_make): New function,
1826         checking that the use is indeed before the definition.
1827         (macro_use_before_def::macro_use_before_def): Make private.
1828         (macro_use_before_def::~macro_use_before_def): Make private.  Move
1829         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
1830         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
1831         than using new directly.
1833 2018-04-12  Jason Merrill  <jason@redhat.com>
1835         PR c++/85356 - ICE with pointer to member function.
1836         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
1837         flag_noexcept_type.  Build the new spec within the function context.
1838         * except.c (build_noexcept_spec): Do get constant value in templates
1839         if flag_noexcept_type.
1840         * decl.c (check_redeclaration_exception_specification): Don't
1841         instantiate noexcept on a dependent declaration.
1843 2018-04-12  Marek Polacek  <polacek@redhat.com>
1845         PR c++/85258
1846         * constexpr.c (reduced_constant_expression_p): Return false for null
1847         trees.
1849 2018-04-11  Marek Polacek  <polacek@redhat.com>
1851         PR c++/85032
1852         * constexpr.c (potential_constant_expression_1): Consider conversions
1853         from classes to literal types potentially constant.
1855 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
1857         PR c++/70808
1858         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
1859         the type like TYPE_PTR_OR_PTRMEM_P.
1861 2018-04-10  Jason Merrill  <jason@redhat.com>
1863         PR debug/65821 - wrong location for main().
1864         * call.c (clear_location_r, convert_default_arg): Revert.
1865         * tree.c (break_out_target_exprs): Add clear_location parm.
1866         (struct bot_data): New.
1867         (bot_manip): Clear location if requested.
1868         * init.c (get_nsdmi): Pass clear_location.
1870 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
1872         PR c++/85110
1873         * call.c (get_fndecl_argument_location): Make non-static.
1874         * cp-tree.h (get_fndecl_argument_location): New decl.
1875         * typeck.c (convert_for_assignment): When complaining due to
1876         conversions for an argument, show the location of the parameter
1877         within the decl.
1879 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
1881         PR c++/85312 - P0962 cleanup
1882         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
1883         diagnostics.
1885 2018-04-10  Jason Merrill  <jason@redhat.com>
1887         PR debug/65821 - wrong location for main().
1888         * call.c (clear_location_r): New.
1889         (convert_default_arg): Use it.
1890         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
1892         PR c++/85285 - ICE with flexible array after substitution.
1893         * pt.c (instantiate_class_template_1): Check for flexible array in
1894         union.
1896 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
1898         PR c++/85227
1899         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
1900         issue a pedwarn and defer trying to do bindings.
1902 2018-04-09  Jason Merrill  <jason@redhat.com>
1904         PR c++/85279 - dump_expr doesn't understand decltype.
1905         * error.c (dump_expr): Handle DECLTYPE_TYPE.
1907         PR c++/85262 - ICE with redundant qualification on constructor.
1908         * call.c (build_new_method_call_1): Move make_args_non_dependent
1909         after A::A() handling.
1911         PR c++/85277 - ICE with invalid offsetof.
1912         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
1913         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
1915         PR c++/85264 - ICE with excess template-parameter-list.
1916         * parser.c (cp_parser_check_template_parameters): Add template_id_p
1917         parameter.  Don't allow an extra template header if true.
1918         (cp_parser_class_head): Pass template_id_p.
1919         (cp_parser_elaborated_type_specifier): Likewise.
1920         (cp_parser_alias_declaration): Likewise.
1921         (cp_parser_check_declarator_template_parameters): Likewise.
1923 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
1925         PR c++/85194
1926         * parser.c (cp_parser_simple_declaration): For structured bindings,
1927         if *maybe_range_for_decl is NULL after parsing it, set it to
1928         error_mark_node.
1930 2018-04-09  Jason Merrill  <jason@redhat.com>
1932         PR c++/85256 - ICE capturing pointer to VLA.
1933         * lambda.c (add_capture): Distinguish between variable-size and
1934         variably-modified types.
1936 2018-04-06  Jason Merrill  <jason@redhat.com>
1938         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
1939         * pt.c (extract_locals_r): Remember local typedefs.
1941 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
1943         PR c++/84269
1944         * name-lookup.c (struct std_name_hint): Move out of
1945         get_std_name_hint; add field "min_dialect".
1946         (get_std_name_hint): Add min_dialect values to all initializers.
1947         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
1948         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
1949         <shared_mutex>, <string_view>, <thread>, and <variant>.
1950         Add fstream, ifstream, and ofstream to <fstream>.
1951         Add istringstream, ostringstream, and stringstream to <sstream>.
1952         Add basic_string to <string>.
1953         Add tuple_element and tuple_size to <tuple>.
1954         Add declval to <utility>.
1955         Fix ordering of <queue> and <tuple>.
1956         Return a std_name_hint, rather than a const char *.
1957         (get_cxx_dialect_name): New function.
1958         (maybe_suggest_missing_std_header): Detect names that aren't yet
1959         available in the current dialect, and instead of suggesting a
1960         missing #include, warn about the dialect.
1962 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
1964         PR c++/85210
1965         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
1966         errorcount is set if tsubst doesn't return a VAR_DECL.
1968 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
1970         PR c++/85021
1971         * name-lookup.c (using_directives_contain_std_p): New function.
1972         (has_using_namespace_std_directive_p): New function.
1973         (suggest_alternatives_for): Simplify if/else logic using early
1974         returns.  If no candidates were found, and there's a
1975         "using namespace std;" directive, call
1976         maybe_suggest_missing_std_header.
1977         (maybe_suggest_missing_header): Split later part of the function
1978         into..
1979         (maybe_suggest_missing_std_header): New.
1981 2018-04-06  Jason Merrill  <jason@redhat.com>
1983         PR c++/85242 - ICE with class definition in template parm.
1984         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
1985         processing_template_parmlist.
1987         PR c++/85240 - LTO ICE with using of undeduced auto fn.
1988         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
1990 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
1992         PR c++/85209
1993         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
1994         is not prev, if prev == decl.
1996         PR c++/85208
1997         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
1998         maybe_apply_pragma_weak here...
1999         (cp_maybe_mangle_decomp): ... but call it here instead.
2001 2018-04-05  Jason Merrill  <jason@redhat.com>
2003         PR c++/85136 - ICE with designated init in template.
2004         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
2005         designated initializer.
2006         (check_array_designated_initializer): Update ce->index with the
2007         constant value.
2009         PR c++/83808 - ICE with VLA initialization.
2010         * typeck2.c (process_init_constructor_array): Don't require a VLA
2011         initializer to have VLA type.
2013 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
2015         PR c++/80956
2016         * call.c (convert_like_real): Fail gracefully for a broken
2017         std::initializer_list, missing a definition.
2019         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
2021 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
2023         PR c++/84792
2024         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
2025         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
2027 2018-04-05  Jason Merrill  <jason@redhat.com>
2029         PR c++/82152 - ICE with class deduction and inherited ctor.
2030         * pt.c (do_class_deduction): Ignore inherited ctors.
2032         PR c++/84665 - ICE with array of empty class.
2033         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
2035         PR c++/85228 - ICE with lambda in enumerator in template.
2036         * pt.c (bt_instantiate_type_proc): Don't assume
2037         CLASSTYPE_TEMPLATE_INFO is non-null.
2039 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
2041         Implement P0969
2042         * decl.c (find_decomp_class_base): Check accessibility instead
2043         of declared access, adjust diagnostic.
2045 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
2047         Implement P0961
2048         * decl.c (get_tuple_decomp_init): Check the templatedness
2049         of a member get.
2051 2018-04-05  Jason Merrill  <jason@redhat.com>
2053         PR c++/85200 - ICE with constexpr if in generic lambda.
2054         * pt.c (extract_locals_r): Don't record the local specs of variables
2055         declared within the pattern.
2057 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
2059         PR c++/84979
2060         * pt.c (check_auto_in_tmpl_args): New.
2061         (tsubst_qualified_id): Use it to reject template args
2062         referencing auto for non-type templates.
2063         * parser.c (cp_parser_template_id): Likewise.
2064         * cp-tree.h (check_auto_in_tmpl_args): Declare.
2065         * typeck2.c (build_functional_cast): Report correct location
2066         for invalid use of auto.
2068 2018-04-04  Jason Merrill  <jason@redhat.com>
2070         PR c++/85215 - ICE with copy-init from conversion.
2071         * call.c (merge_conversion_sequences): Fix type of direct binding
2072         sequence.
2074         PR c++/84938 - ICE with division by ~-1.
2075         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
2077         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
2078         * parser.c (cp_parser_mem_initializer_list): Call
2079         check_for_bare_parameter_packs.
2081 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
2083         PR inline-asm/85172
2084         * constexpr.c (cxx_eval_builtin_function_call): For calls to
2085         builtin_valid_in_constant_expr_p functions, don't call
2086         cxx_eval_constant_expression if argument is not
2087         potential_constant_expression.
2089         PR c++/85146
2090         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
2091         argument.
2092         * semantics.c (calculate_bases): Add complain argument.  Use
2093         complete_type_or_maybe_complain instead of just complete_type and
2094         return an empty vector if it fails.  Move make_tree_vector () call
2095         after early return.  Formatting fixes.
2096         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
2097         end.
2098         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
2099         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
2100         calculate_direct_bases callers, formatting fixes.
2102 2018-04-04  Jason Merrill  <jason@redhat.com>
2104         PR c++/85006 - -fconcepts ICE with A<auto...> return type
2105         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
2107         PR c++/85200 - ICE with constexpr if in generic lambda.
2108         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
2110         PR c++/84221 - bogus -Wunused with attribute and template.
2111         * decl2.c (is_late_template_attribute): Handle unused and used
2112         normally on non-TYPE_DECL.
2114         PR c++/85135 - ICE with omitted template arguments.
2115         * decl.c (grokdeclarator): Catch deduced class type in trailing
2116         return type.
2118         PR c++/85133 - ICE with missing concept initializer.
2119         * decl.c (cp_finish_decl): If a concept initializer is missing, use
2120         true.
2122         PR c++/85118 - wrong error with generic lambda and std::bind.
2123         * call.c (add_template_conv_candidate): Disable if there are any
2124         call operators.
2126         PR c++/85141 - ICE with compound assignment and static member fn.
2127         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
2128         compound assignment.
2130         PR c++/85148 - ICE with 'this' in array NSDMI.
2131         * tree.c (replace_placeholders_r): Use handled_component_p.
2133 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
2135         PR c++/65923
2136         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
2137         * parser.c (cp_parser_unqualified_id): ..not here.
2139 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
2141         PR c++/84943
2142         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
2143         used.
2144         * decl2.c (mark_used): Return without effects if tf_conv.
2146 2018-04-03  Jason Merrill  <jason@redhat.com>
2148         PR c++/85092 - C++17 ICE with unused list constructor.
2149         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
2150         from a TARGET_EXPR.
2152         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
2153         * constexpr.c (cxx_eval_builtin_function_call): Only defer
2154         __builtin_constant_p if ctx->quiet.
2156 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
2158         PR c++/84768
2159         * pt.c (rewrite_template_parm): If the first argument is
2160         error_mark_node return it immediately.
2161         (build_deduction_guide): Check the return value of the
2162         latter for error_mark_node.
2163         (do_class_deduction): Check the return value of the latter.
2165 2018-04-03  Jason Merrill  <jason@redhat.com>
2167         * semantics.c (finish_if_stmt_cond): Use
2168         instantiation_dependent_expression_p.
2170         PR c++/85149 - generic lambda and constexpr if.
2171         * pt.c (build_extra_args, add_extra_args): Split from
2172         tsubst_pack_expansion.
2173         (tsubst_expr) [IF_STMT]: Use them.
2174         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
2176         * typeck.c (merge_types): Limit matching attribute shortcut to
2177         the default case.
2179 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
2181         PR c++/85147
2182         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
2184         PR c++/85140
2185         * name-lookup.c (handle_namespace_attrs): Return early if attributes
2186         is error_mark_node.
2188         PR c++/85134
2189         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
2190         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
2191         instead for static data members clear init and set DECL_EXTERNAL.
2193 2018-04-02  Jason Merrill  <jason@redhat.com>
2195         PR c++/64095 - auto... parameter pack.
2196         * parser.c (cp_parser_parameter_declaration): Handle turning autos
2197         into packs here.
2198         (cp_parser_parameter_declaration_list): Not here.
2200 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
2202         PR c++/85027
2203         * class.c (instantiate_type): Peel off SAVE_EXPR before
2204         BASELINK.
2206 2018-03-30  Jason Merrill  <jason@redhat.com>
2208         * typeck2.c (process_init_constructor_record): Use
2209         init_list_type_node for the CONSTRUCTOR around an anonymous union
2210         designated initializer.
2212 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
2214         PR c++/84791
2215         * semantics.c (finish_omp_reduction_clause): If
2216         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
2217         even if processing_template_decl.
2219 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
2221         PR c++/84269
2222         * name-lookup.c (get_std_name_hint): Add names from <memory>,
2223         <tuple>, and <utility>.
2225 2018-03-29  Jason Merrill  <jason@redhat.com>
2227         PR c++/85093 - too many template args with pack expansion.
2228         * pt.c (coerce_template_parms): Keep pack expansion args that will
2229         need to be empty.
2231 2018-03-29  Jason Merrill  <jason@redhat.com>
2233         * pt.c (build_non_dependent_expr): Propagate expr location.
2235 2018-03-27  Jason Merrill  <jason@redhat.com>
2237         PR c++/85060 - wrong-code with call to base member in template.
2238         * search.c (any_dependent_bases_p): Check uses_template_parms
2239         rather than processing_template_decl.
2241 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
2243         PR c++/85110
2244         * typeck.c (convert_for_assignment): When complaining due to
2245         conversions for an argument, attempt to use the location of the
2246         argument.
2248 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
2250         PR c++/85028
2251         * pt.c (tsubst_default_argument): Early return if the type of the
2252         parameter is erroneous.
2254 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
2256         PR c++/84973
2257         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
2258         templates.
2260         PR c++/84968
2261         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
2263 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
2265         PR c++/85067
2266         * method.c (defaulted_late_check): Partially revert r253321 changes,
2267         do not early return upon error.
2269 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
2271         PR c++/85077
2272         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
2273         type call fold to generate VECTOR_CSTs when possible.
2275         PR c++/85076
2276         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
2277         return it right away.
2279 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
2281         * search.c (check_final_overrider): Use inform instead of error
2282         for the diagnostics of the overridden functions.  Tweak wording.
2284 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
2286         PR c++/85068
2287         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
2288         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
2290 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
2291             Jason Merrill  <jason@redhat.com>
2293         PR c++/84632
2294         * init.c (build_aggr_init): When initializing from array,
2295         reject anything but CONSTRUCTORs and TARGET_EXPRs.
2296         (build_vec_init): Handle separately ARRAY_TYPEs.
2298 2018-03-26  Jason Merrill  <jason@redhat.com>
2300         PR c++/85062 - ICE with alignas in wrong place.
2301         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
2302         here.
2304         PR c++/85049 - ICE with __integer_pack.
2305         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
2306         * cp-tree.h (TEMPLATE_PARM_P): New.
2308 2018-03-23  Jason Merrill  <jason@redhat.com>
2310         PR c++/78489 - wrong SFINAE behavior.
2312         PR c++/84489
2313         * pt.c (type_unification_real): Don't defer substitution failure.
2315 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
2317         PR c++/85015
2318         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
2319         result.
2321         PR c++/84942
2322         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
2323         cp_build_unary_op call with gcc_unreachable ().
2325 2018-03-23  Marek Polacek  <polacek@redhat.com>
2327         PR c++/85045
2328         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
2329         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
2330         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
2332 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
2334         Implement P0962
2335         * parser.c (cp_parser_perform_range_for_lookup): Change
2336         the condition for deciding whether to use members.
2338 2018-03-23  Marek Polacek  <polacek@redhat.com>
2340         PR c++/85033
2341         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
2343 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
2345         PR c++/71251
2346         * parser.c (cp_parser_alias_declaration): Call
2347         parser_check_template_parameters.
2349         PR c++/84789
2350         * pt.c (resolve_typename_type): Drop assert that stopped
2351         simplification to template-independent types.  Add assert to
2352         verify the initial scope is template dependent.
2353         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
2354         Reparse the id expression as a type-name, not a declarator.
2356         PR c++/84729
2357         * init.c (build_vec_init): Error at parenthesized array init.
2359         PR c++/84610
2360         PR c++/84642
2361         PR c++/84942
2362         * cp-tree.h (temp_override): New template class, generalizing
2363         a cleanup that was only used...
2364         * parser.c (cp_parser_parameter_declaration_clause):
2365         ... here for auto_is_implicit_function_template_parm_p.
2366         (cp_parser_gnu_attributes_opt): Use it here as well.
2367         (cp_parser_std_attribute): Likewise.
2369 2018-03-22  Marek Polacek  <polacek@redhat.com>
2371         PR c++/84854
2372         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
2373         is boolean.
2375 2018-03-21  Jason Merrill  <jason@redhat.com>
2377         PR c++/81311 - wrong C++17 overload resolution.
2378         * call.c (build_user_type_conversion_1): Remove C++17 code.
2379         (conv_binds_ref_to_prvalue): New.
2380         (build_over_call): Handle C++17 copy elision.
2381         (build_special_member_call): Only do C++17 copy elision here if the
2382         argument is already the right type.
2384 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
2386         PR c++/71965
2387         * init.c (build_vec_init): Silence error, former sorry,
2388         without tf_error.
2390         PR c++/84610
2391         PR c++/84642
2392         * parser.c (abort_fully_implicit_template_p): New.
2393         (cp_parser_skip_to_end_of_statement): Use it.
2394         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2395         (finish_fully_implicit_template_p): Clear
2396         implicit_template_parms and implicit_template_scope.
2398 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
2400         PR c++/84972
2401         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
2402         error_mark_node when check_array_designated_initializer fails.
2404 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
2406         PR c++/84961
2407         * cp-tree.h (genericize_compound_lvalue): Declare.
2408         * typeck.c (genericize_compound_lvalue): New function.
2409         (unary_complex_lvalue, cp_build_modify_expr): Use it.
2410         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
2411         and PREDECREMENT_EXPR in output and "m" constrained input operands with
2412         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
2413         COMPOUND_EXPR operand.
2415 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2417         PR c++/85008
2418         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
2419         * decl2.c (vague_linkage_p): Likewise.
2421 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
2423         PR c++/84994
2424         * constexpr.c (constexpr_fn_retval): Make non-"static".
2425         * cp-tree.h (constexpr_fn_retval): New decl.
2426         * search.c (direct_accessor_p): Update leading comment.
2427         (reference_accessor_p): Likewise.
2428         (field_accessor_p): Replace check that function body is a
2429         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
2430         indentation of "field_type" decl.
2432 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2434         PR c++/84804
2435         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
2436         complete classes.
2438 2018-03-21  Martin Sebor  <msebor@redhat.com>
2440         PR c++/84850
2441         * call.c (first_non_public_field): New template and function.
2442         (first_non_trivial_field): New function.
2443         (maybe_warn_class_memaccess): Call them.
2445 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
2447         PR c++/84892
2448         * search.c (field_accessor_p): Use class_of_this_parm rather than
2449         type_of_this_parm, to check that "this" is a "const T *", rather
2450         than a "T *const".
2452 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2454         * class.c (finish_struct_anon_r): Refactor, deprecate anything
2455         other than public non-static data members.
2456         * parser.c (cp_parser_init_declarator): Deprecate attributes after
2457         parenthesized initializer.
2459         PR c++/84836
2460         * name-lookup.c (update_binding): Correct logic for local binding
2461         update.
2463 2018-03-21  Marek Polacek  <polacek@redhat.com>
2465         PR c++/71638, ICE with NSDMI and reference.
2466         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2467         even when we replace an element.
2469 2018-03-20  Marek Polacek  <polacek@redhat.com>
2471         PR c++/84978, ICE with NRVO.
2472         * constexpr.c (cxx_eval_constant_expression): Handle the case when
2473         a RESULT_DECL isn't in the hash map.
2475 2018-03-20  Jason Merrill  <jason@redhat.com>
2477         PR c++/84978, ICE with NRVO.
2478         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
2479         (cp_get_callee_fndecl_nofold): New.
2480         * cp-gimplify.c (cp_genericize_r): Use it instead.
2481         * call.c (check_self_delegation): Likewise.
2483 2018-03-20  Nathan Sidwell  <nathan@acm.org>
2485         PR c++/84962
2486         * name-lookup.c (pushdecl_class_level): Push anon-struct's
2487         member_vec, if there is one.
2489         PR c++/84970
2490         * cp-tree.h (lookup_list_keep): Declare.
2491         * tree.c (lookup_list_keep): New, broken out of ...
2492         (build_min): ... here.  Call it.
2493         * decl.c (cp_finish_decl): Call lookup_list_keep.
2495 2018-03-19  Jason Merrill  <jason@redhat.com>
2497         PR c++/84937 - ICE with class deduction and auto.
2498         * pt.c (rewrite_template_parm): Fix auto handling.
2500 2018-03-19  Marek Polacek  <polacek@redhat.com>
2502         PR c++/84925
2503         * pt.c (enclosing_instantiation_of): Check if fn is null.
2505         PR c++/84927
2506         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2507         as we evaluate the elements.
2508         (cxx_eval_constant_expression): Verify constructor's flags
2509         unconditionally.
2511 2018-03-19  Jason Merrill  <jason@redhat.com>
2513         PR c++/71834 - template-id with too few arguments.
2514         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
2516 2018-03-19  Nathan Sidwell  <nathan@acm.org>
2518         PR c++/84835
2519         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
2520         * pt.c (build_template_decl): Propagate language linkage.
2522         PR c++/84812
2523         * name-lookup.c (set_local_extern_decl_linkage): Defend against
2524         ambiguous lookups.
2526 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2528         PR c/84910
2529         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
2530         diagnostics.
2531         * method.c (synthesize_method): Likewise.
2532         * pt.c (convert_nontype_argument): Likewise.
2534 2018-03-16  Jason Merrill  <jason@redhat.com>
2536         PR c++/84720 - ICE with rvalue ref non-type argument.
2537         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
2538         (convert_nontype_argument): Revert earlier change.
2540         PR c++/80227 - SFINAE and negative array size.
2541         * decl.c (compute_array_index_type): Use
2542         build_converted_constant_expr and valid_constant_size_p.
2544         PR c++/84906 - silent wrong code with ambiguous conversion.
2545         * call.c (build_user_type_conversion_1): Set need_temporary_p on
2546         ambiguous conversion.
2547         (convert_like_real): Check it.
2549         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
2550         * call.c (build_special_member_call): Don't convert an init-list
2551         argument directly to the class type.
2553 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2555         PR c++/79937
2556         PR c++/82410
2557         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
2558         (find_placeholder): Declare.
2559         * tree.c (struct replace_placeholders_t): Add exp member.
2560         (replace_placeholders_r): Don't walk into ctors with
2561         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
2562         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
2563         (replace_placeholders): Initialize data.exp.
2564         (find_placeholders_r, find_placeholders): New functions.
2565         * typeck2.c (process_init_constructor_record,
2566         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
2567         if adding NSDMI on which find_placeholder returns true.
2568         * call.c (build_over_call): Don't call replace_placeholders here.
2569         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
2570         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
2571         TARGET_EXPR_INITIAL.
2572         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
2573         ctor.
2575 2018-03-16  Jason Merrill  <jason@redhat.com>
2577         PR c++/83911 - ICE with multiversioned constructor.
2578         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
2579         dispatchere here.
2580         * call.c (build_over_call): Not here.
2582 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2584         PR c++/84874
2585         * decl.c (reshape_init_class): Don't assert d->cur->index == field
2586         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
2588 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
2590         PR c++/84222
2591         * cp-tree.h (cp_warn_deprecated_use): Declare.
2592         * tree.c (cp_warn_deprecated_use): New function.
2593         * typeck2.c (build_functional_cast): Use it.
2594         * decl.c (grokparms): Likewise.
2595         (grokdeclarator): Likewise.  Temporarily push nested class scope
2596         around grokparms call for out of class member definitions.
2598 2018-03-14  Jason Merrill  <jason@redhat.com>
2600         PR c++/84820 - no error for invalid qualified-id.
2601         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
2602         cp_error_declarator.
2604         PR c++/84801 - ICE with unexpanded pack in lambda.
2605         * pt.c (check_for_bare_parameter_packs): Don't return early for a
2606         lambda in non-template context.
2608         PR c++/81236 - auto variable and auto function
2609         * pt.c (tsubst_baselink): Update the type of the BASELINK after
2610         mark_used.
2612 2018-03-14  Jason Merrill  <jason@redhat.com>
2614         PR c++/83916 - ICE with template template parameters.
2615         * pt.c (convert_template_argument): Don't substitute into type of
2616         non-type parameter if we don't have enough arg levels.
2617         (unify): Likewise.
2619 2018-03-14  Marek Polacek  <polacek@redhat.com>
2621         PR c++/84596
2622         * semantics.c (finish_static_assert): Check
2623         instantiation_dependent_expression_p instead of
2624         {type,value}_dependent_expression_p.
2626 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
2627             Jason Merrill  <jason@redhat.com>
2629         PR c++/82336 - link error with list-init default argument.
2630         * decl.c (check_default_argument): Unshare an initializer list.
2632 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2634         PR c++/84843
2635         * decl.c (duplicate_decls): For redefinition of built-in, use error
2636         and return error_mark_node.  For redeclaration, return error_mark_node
2637         rather than olddecl if !flag_permissive.
2639 2018-03-13  Jason Merrill  <jason@redhat.com>
2641         PR c++/82565 - ICE with concepts and generic lambda.
2642         * pt.c (instantiate_decl): Clear fn_context for lambdas.
2644 2018-03-13  Jason Merrill  <jason@redhat.com>
2646         PR c++/84720 - ICE with rvalue ref non-type argument.
2647         * pt.c (convert_nontype_argument): Handle rvalue references.
2649         PR c++/84839 - ICE with decltype of parameter pack.
2650         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
2651         instantiating dummy parms.
2653         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
2654         parameter even without -Wpedantic.
2656         PR c++/84798 - ICE with auto in abstract function declarator.
2657         * parser.c (cp_parser_parameter_declaration_clause): Check
2658         parser->default_arg_ok_p.
2660 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2662         PR c++/84808
2663         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
2664         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
2665         sizetype.  Formatting fixes.
2667 2018-03-12  Jason Merrill  <jason@redhat.com>
2669         PR c++/84355 - ICE with deduction for member class template.
2670         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
2671         CLASS_PLACEHOLDER_TEMPLATE.
2673         PR c++/84802 - ICE capturing uninstantiated class.
2674         * lambda.c (build_capture_proxy): Call complete_type.
2676 2018-03-09  Jason Merrill  <jason@redhat.com>
2678         PR c++/84770 - ICE with typedef and parameter pack.
2679         * pt.c (verify_unstripped_args_1): Split out from
2680         verify_unstripped_args.
2682         PR c++/84785 - ICE with alias template and default targs.
2683         * pt.c (type_unification_real): Set processing_template_decl if
2684         saw_undeduced == 1.
2686         PR c++/84752 - ICE with capture of constexpr array.
2687         * call.c (standard_conversion): Set rvaluedness_matches_p on the
2688         identity conversion under ck_lvalue.
2690 2018-03-09  Jason Merrill  <jason@redhat.com>
2691             Paolo Carlini  <paolo.carlini@oracle.com>
2693         PR c++/71169
2694         PR c++/71832
2695         * pt.c (any_erroneous_template_args_p): New.
2696         * cp-tree.h (any_erroneous_template_args_p): Declare it.
2697         * parser.c (cp_parser_class_specifier_1): Use it.
2699 2018-03-09  Jason Merrill  <jason@redhat.com>
2701         PR c++/84726 - unnecessary capture of constant vars.
2702         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
2703         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
2704         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
2705         * lambda.c (is_constant_capture_proxy)
2706         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
2707         (prune_lambda_captures): New.
2708         (finish_lambda_function): Call prune_lambda_captures.
2710 2018-03-09  Jason Merrill  <jason@redhat.com>
2711             Jakub Jelinek  <jakub@redhat.com>
2713         PR c++/84076
2714         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
2715         build ADDR_EXPR with REFERENCE_TYPE.
2716         (build_over_call): For purposes of check_function_arguments, if
2717         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
2718         its operand rather than the argument itself.
2720 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
2722         PR c++/84724
2723         * decl.c (duplicate_decls): Don't override __* prefixed builtins
2724         except for __[^b]*_chk, instead issue permerror and for -fpermissive
2725         also a note and return olddecl.
2727 2018-03-09  Nathan Sidwell  <nathan@acm.org>
2729         PR c++/84733
2730         * name-lookup.c (do_pushdecl_with_scope): Only clear
2731         current_function_decl when pushing a non-class (i.e. namespace)
2732         scope.
2734 2018-03-08  Jason Merrill  <jason@redhat.com>
2735             Jakub Jelinek  <jakub@redhat.com>
2737         PR c++/80598
2738         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
2739         not calling mark_used for the benefit of -Wunused-function warning.
2741 2018-03-06  Jason Merrill  <jason@redhat.com>
2743         * lambda.c (is_capture_proxy_with_ref): Remove.
2744         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
2746 2018-03-06  Marek Polacek  <polacek@redhat.com>
2748         PR c++/84684
2749         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
2750         arguments.
2752 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
2754         PR c++/84231
2755         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
2756         only while processing template decls.
2757         * typeck.c (build_x_conditional_expr): Move wrapping of
2758         reference type around type...
2759         * call.c (build_conditional_expr_1): ... here.  Rename
2760         is_lvalue to is_glvalue.
2761         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
2762         INDIRECT_REF of COND_EXPR too.
2764         PR c++/84593
2765         * init.c (build_zero_init_1): Zero-initialize references.
2767         PR c++/84492
2768         * semantics.c (finish_stmt_expr_expr): Reject unresolved
2769         overloads used as stmt expr values.
2771 2018-03-05  Jason Merrill  <jason@redhat.com>
2773         PR c++/84708 - ICE with lambda in local class NSDMI.
2774         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
2775         context.
2777 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
2779         PR c++/84684
2780         * constexpr.c (constexpr_call_hasher::equal): Return false if
2781         lhs->hash != rhs->hash.  Change return 1 to return true and
2782         return 0 to return false.
2784 2018-03-05  Nathan Sidwell  <nathan@acm.org>
2786         PR c++/84702
2787         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
2789 2018-03-05  Marek Polacek  <polacek@redhat.com>
2791         PR c++/84707
2792         * decl.c (duplicate_decls): Check DECL_NAME before accessing
2793         UDLIT_OPER_P.
2795 2018-03-05  Nathan Sidwell  <nathan@acm.org>
2797         PR c++/84694
2798         * friend.c (do_friend): Restore check for identifier_p inside
2799         TEMPLATE_ID_EXPR.
2801 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
2803         PR c++/84618
2804         * parser.c (cp_parser_lambda_introducer): Reject any capture not
2805         involving a VAR_DECL or a PARM_DECL.
2807 2018-03-05  Pádraig Brady  <P@draigBrady.com>
2808             Jason  Merrill  <jason@redhat.com>
2809             Nathan Sidwell  <nathan@acm.org>
2811         PR c++/84497
2812         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
2814 2018-03-03  Jason Merrill  <jason@redhat.com>
2816         PR c++/84686 - missing volatile loads.
2817         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
2819 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
2821         PR c++/71464
2822         * optimize.c (maybe_thunk_body): Bail out immediately if either
2823         fns[0] or fns[1] is null.
2825 2018-03-02  Marek Polacek  <polacek@redhat.com>
2827         PR c++/84578
2828         * constexpr.c (get_array_or_vector_nelts): New.
2829         (cxx_eval_array_reference): Use it.
2830         (cxx_eval_vec_init_1): Likewise.
2831         (cxx_eval_store_expression): Likewise.
2833 2018-03-02  Jason Merrill  <jason@redhat.com>
2835         * semantics.c (force_paren_expr): Remove redundant test.
2837 2018-03-02  Marek Polacek  <polacek@redhat.com>
2839         PR c++/84663
2840         * decl.c (cp_complete_array_type): Check error_mark_node.
2842         PR c++/84664
2843         * typeck.c (cp_perform_integral_promotions): Check the result of
2844         mark_rvalue_use.
2846 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
2848         PR c++/84662
2849         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
2850         RETURN instead of return.
2851         <case POINTER_PLUS_EXPR>: Likewise.
2852         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
2853         it instead of wrapping it into CONVERT_EXPR.
2855 2018-03-02  Jason Merrill  <jason@redhat.com>
2857         Fix MIPS16 ICE.
2858         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
2860 2018-03-02  Marek Polacek  <polacek@redhat.com>
2862         PR c++/84590
2863         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
2864         wrapped in VIEW_CONVERT_EXPR.
2866 2018-03-01  Martin Sebor  <msebor@redhat.com>
2868         PR c++/84294
2869         * decl.c (check_redeclaration_no_default_args): Merge attributes
2870         specified on redeclarations of the same function template.
2871         Remove dead code.
2873 2018-03-01  Marek Polacek  <polacek@redhat.com>
2874             Jason Merrill  <jason@redhat.com>
2876         PR c++/84582
2877         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
2878         a template.
2879         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
2880         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
2881         of instantiate_non_dependent_expr.
2882         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
2884 2018-03-01  Nathan Sidwell  <nathan@acm.org>
2886         PR c++/84434
2887         * name-lookup.c (member_vec_dedup): Remove manually peeled
2888         iteration.  Ignore dependent ctor inheritance.
2890 2018-03-01  Jason Merrill  <jason@redhat.com>
2892         PR c++/71569 - decltype of template.
2893         * parser.c (cp_parser_decltype_expr): Handle missing template args.
2895 2018-03-01  Marek Polacek  <polacek@redhat.com>
2897         PR c++/84596
2898         * constexpr.c (require_rvalue_constant_expression): New function.
2899         * cp-tree.h: Declare it.
2900         * semantics.c (finish_static_assert): Use it instead of
2901         require_potential_rvalue_constant_expression.
2903 2018-03-01  Jason Merrill  <jason@redhat.com>
2904             Alexandre Oliva <aoliva@redhat.com>
2906         PR c++/71569 - ICE with redundant args on member variable template.
2907         * decl.c (start_decl): Handle partial specialization of member
2908         variable template.
2909         * pt.c (determine_specialization): Allow partial specialization
2910         of member variable template without specializing enclosing class.
2911         (process_partial_specialization): Improve error message.
2913 2018-02-28  Jason Merrill  <jason@redhat.com>
2915         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
2916         * pt.c (determine_specialization): Check ref-qualifier.
2918 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
2920         PR c++/84609
2921         * parser.c (cp_parser_attributes_opt): Formatting fix.
2922         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
2923         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
2924         New functions.
2925         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
2926         instead of tentative parse to peek over optional attribute tokens
2927         to check for CPP_COLON after them.
2929         PR c++/83871
2930         PR c++/83503
2931         * pt.c (INCLUDE_STRING): Remove define.
2932         (warn_spec_missing_attributes): Use pretty_printer instead of
2933         std::string.  Fix up inform call so that the list of attributes
2934         is in %s argument.
2936 2018-02-28  Martin Sebor  <msebor@redhat.com>
2938         PR testsuite/84617
2939         * decl.c (duplicate_decls): Fully merge attributes const, pure,
2940         and malloc.
2942 2018-02-28  Nathan Sidwell  <nathan@acm.org>
2944         PR c++/84602
2945         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
2946         * name-lookup.c (fields_linear_search): Look in an anon-aggr
2947         regardless of want_type.
2948         (search_anon_aggr): Just use get_class_binding_direct.
2950 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
2952         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
2953         inform_n.
2955 2018-02-27  Martin Sebor  <msebor@redhat.com>
2957         * pt.c: Avoid including <string> directly.
2959 2018-02-27  Martin Sebor  <msebor@redhat.com>
2961         PR c++/83871
2962         PR c++/83503
2963         * cp-tree.h (warn_spec_missing_attributes): New function.
2964         ((check_explicit_specialization): Add an argument.  Call the above
2965         function.
2966         * decl.c (duplicate_decls): Avoid applying primary function template's
2967         attributes to its explicit specializations.
2968         cp/pt.c (warn_spec_missing_attributes): Define.
2970 2018-02-27  HĂĄkon Sandsmark  <hsandsmark@gmail.com>
2972         PR c++/71546 - lambda init-capture with qualified-id.
2973         * parser.c (cp_parser_lambda_introducer): Clear scope after
2974         each lambda capture.
2976 2018-02-27  Nathan Sidwell  <nathan@acm.org>
2978         PR c++/84426
2979         * name-lookup.h (get_member_slot): Rename ...
2980         (find_member_slot): ... here.
2981         (add_member_slot): New.
2982         * name-lookup.c (member_vec_linear_search): No need to check for
2983         NULL slot.
2984         (get_member_slot): Rename ...
2985         (find_member_slot): ... here.  Don't add slot for incomplete class.
2986         (add_member_slot): New.
2987         * class.c (add_method): Adjust get_member_slot rename.  Bail out
2988         if push_class_level_binding fails.  Create slot and grok
2989         properties once we're committed to insertion.
2991 2018-02-27  Jason Merrill  <jason@redhat.com>
2993         PR c++/84489 - dependent default template argument
2994         * pt.c (type_unification_real): Handle early substitution failure.
2996 2018-02-26  Jason Merrill  <jason@redhat.com>
2998         PR c++/84560 - ICE capturing multi-dimensional VLA.
2999         * tree.c (array_of_runtime_bound_p): False if the element is
3000         variably-modified.
3002         PR c++/84441 - ICE with base initialized from ?:
3003         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
3005         PR c++/84520 - ICE with generic lambda in NSDMI.
3006         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
3007         'this' in a generic lambda instantiation.
3009         PR c++/84559 - ICE with constexpr VLA.
3010         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
3011         for constexpr variable with VLA type.
3013 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3015         PR c++/84558
3016         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
3017         a valid constant initializer.  Formatting fixes.
3019 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3021         PR c++/84540
3022         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
3023         returning NULL_TREE.
3024         (apply_late_template_attributes): Likewise.
3026 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3028         PR c++/84557
3029         * parser.c (cp_parser_omp_var_list_no_open): Only call
3030         cp_parser_lookup_name_simple on names satisfying identifier_p.
3031         (cp_parser_oacc_routine): Likewise.
3033 2018-02-26  Jason Merrill  <jason@redhat.com>
3035         PR c++/84551 - ICE with concepts and -g.
3036         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
3038 2018-02-26  Marek Polacek  <polacek@redhat.com>
3040         PR c++/84325
3041         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
3042         non-types.
3044 2018-02-26  Jason Merrill  <jason@redhat.com>
3046         PR c++/84447 - ICE with deleted inherited ctor with default arg.
3047         * call.c (build_over_call): Handle deleted functions in one place.
3049 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3051         PR c++/84533
3052         * decl.c (redeclaration_error_message): Don't try to use
3053         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
3055 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3057         * lambda.c (build_capture_proxy): Define static.
3058         * cp-tree.h (build_capture_proxy): Remove.
3060 2018-02-26  Marek Polacek  <polacek@redhat.com>
3062         PR c++/84537
3063         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
3064         if name is error node.
3066 2018-02-25  Jason Merrill  <jason@redhat.com>
3068         PR c++/84015 - ICE with class deduction and auto template parm.
3069         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
3071 2018-02-24  Marek Polacek  <polacek@redhat.com>
3073         PR c++/83692
3074         * constexpr.c (maybe_constant_init_1): New function.
3075         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
3076         (cxx_constant_init): New function.
3077         * cp-tree.h (cxx_constant_init): Declare.
3078         * typeck2.c (store_init_value): Call cxx_constant_init instead of
3079         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
3081 2018-02-22  Jason Merrill  <jason@redhat.com>
3083         PR c++/70468 - ICE with constructor delegation via typedef.
3084         * pt.c (tsubst_initializer_list): Check for other mem-initializers
3085         with constructor delegation.
3087 2018-02-22  Jason Merrill  <jason@redhat.com>
3089         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
3090         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
3091         VECTOR_TYPE.
3093 2018-02-22  Marek Polacek  <polacek@redhat.com>
3095         PR c++/84493
3096         * parser.c (cp_parser_braced_list): Use require_open instead of
3097         consume_open.
3099 2018-02-21  Jason Merrill  <jason@redhat.com>
3101         PR c++/84454 - ICE with pack expansion in signature.
3102         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
3104 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
3106         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
3107         IF_STMT.
3109 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
3111         PR c++/84446
3112         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
3113         on error_mark_node.
3115 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
3117         PR c++/84445
3118         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
3119         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
3121         PR c++/84449
3122         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
3123         returns error_mark_node, return it immediately.
3124         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
3125         error_mark_node, return error_mark_node.
3127         PR c++/84455
3128         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
3129         function_depth to avoid GC during finish_lambda_function.
3131 2018-02-19  Jason Merrill  <jason@redhat.com>
3133         PR c++/84429 - ICE capturing VLA.
3134         * lambda.c (build_capture_proxy): Handle reference refs.
3136 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
3138         PR c++/84448
3139         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
3140         either operand is error_mark_node, set current.lhs to that instead of
3141         creating a binary op with error_mark_node operands.
3143         PR c++/84430
3144         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
3146 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
3148         PR c++/84348
3149         * decl.c (grokdeclarator): Early return error_mark_node upon
3150         ill-formed friend declaration.
3152 2018-02-16  Marek Polacek  <polacek@redhat.com>
3153             Jakub Jelinek  <jakub@redhat.com>
3155         PR c++/84192
3156         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
3157         set *jump_target to anything if jump_target is NULL.
3159 2018-02-16  Jason Merrill  <jason@redhat.com>
3161         PR c++/84151 - unnecessary volatile load with static member.
3162         * call.c (build_new_method_call_1): Avoid loading from a volatile
3163         lvalue used as the object argument for a static member function.
3165         PR c++/81853 - using-directive and constexpr.
3166         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
3168         PR c++/84420 - ICE with structured binding in lambda.
3169         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
3171         PR c++/83835 - C++17 error with constructor ctors.
3172         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
3174         PR c++/82664 - ICE with reference to function template parm.
3175         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
3176         NOP_EXPRs.
3178         PR c++/82764 - C++17 ICE with empty base
3179         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
3181 2018-02-16  Jason Merrill  <jason@redhat.com>
3183         PR c++/84421 - type-dependent if constexpr
3184         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
3186 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3188         Deprecate -ffriend-injection.
3189         * decl.c (cxx_init_decl_processing): Emit warning on option.
3190         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
3191         friend.
3193 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
3195         PR c++/82468
3196         * decl.c (check_special_function_return_type): Reject template
3197         template parameter in deduction guide.
3199 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3201         PR c++/84375
3202         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
3204 2018-02-15  Jason Merrill  <jason@redhat.com>
3206         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
3207         * call.c (convert_like_real): Don't use the copy-list-initialization
3208         shortcut for ck_base.
3210         PR c++/84045 - ICE with typedef and noexcept.
3211         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
3213         PR c++/84376 - ICE with omitted template arguments.
3214         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
3216         PR c++/84368 - wrong error with local variable in variadic lambda.
3217         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
3218         local_specializations.
3220 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
3222         PR c++/84330
3223         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
3224         as first argument.
3226 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
3228         PR c++/84350
3229         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
3230         init, early return.
3232 2018-02-14  Nathan Sidwell  <nathan@acm.org>
3234         * decl2.c (mark_vtable_entries): Set input_location to decl's.
3235         (c_parse_final_cleanups): Restore input_location after emitting
3236         vtables.
3238 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
3240         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
3241         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
3242         auto_deduction_context, tree, int): Add defaults.
3243         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
3244         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
3245         tsubst_flags_t argument.
3246         * init.c (build_new): Likewise.
3248 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
3250         PR c++/84364
3251         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
3252         about return other than *this in assignment operators if
3253         retval is type dependent expression.
3255 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
3257         PR c++/84333
3258         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
3259         save_expr for the G++ extension.
3261 2018-02-13  Jason Merrill  <jason@redhat.com>
3263         PR c++/84080 - ICE with return type deduction and specialization.
3264         * pt.c (determine_specialization): Check uses_template_parms.
3266         Fix more variadic capture issues.
3267         * pt.c (find_parameter_packs_r): Also look at explicit captures.
3268         (check_for_bare_parameter_packs): Check current_class_type for
3269         lambda context.
3270         (extract_locals_r): Handle seeing a full instantiation of a pack.
3271         (tsubst_pack_expansion): Likewise.  Force lambda capture.
3272         * parser.c (cp_parser_lambda_introducer): Don't
3273         check_for_bare_parameter_packs.
3275         PR c++/84338 - wrong variadic sizeof.
3276         * pt.c (argument_pack_select_arg): Like the macro, but look through
3277         a pack expansion.
3278         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
3279         (extract_fnparm_pack): Do make_pack_expansion.
3280         (extract_locals_r): Do strip a pack expansion.
3281         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
3283 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
3285         PR c++/84341
3286         * parser.c (cp_parser_binary_expression): Use build_min instead of
3287         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
3289 2018-02-12  Nathan Sidwell  <nathan@acm.org>
3291         PR c++/84263
3292         * parser.c (cp_parser_decltype): Push and pop
3293         deferring_access_checks.  Reorganize to avoid goto.
3295 2018-02-12  Richard Biener  <rguenther@suse.de>
3297         PR c++/84281
3298         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
3299         uniform constructors and delay allocating them fully.
3301 2018-02-09  Jason Merrill  <jason@redhat.com>
3303         PR c++/84036 - ICE with variadic capture.
3304         Handle variadic capture proxies more like non-variadic.
3305         * lambda.c (build_capture_proxy): Remove workaround.
3306         * pt.c (find_parameter_packs_r): The proxy is a pack.
3307         (instantiate_class_template_1): Remove dead lambda code.
3308         (extract_fnparm_pack): Don't make_pack_expansion.
3309         (extract_locals_r): Don't strip a pack expansion.
3310         (tsubst_pack_expansion): Handle proxy packs.  Use
3311         PACK_EXPANSION_EXTRA_ARGS less.
3312         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
3313         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
3314         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
3315         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
3316         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
3318 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
3320         PR sanitizer/83987
3321         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
3323 2018-02-09  Jason Merrill  <jason@redhat.com>
3325         PR c++/81917 - ICE with void_t and partial specialization.
3326         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
3327         calling most_specialized_partial_spec.
3329 2018-02-09  Nathan Sidwell  <nathan@acm.org>
3331         PR c/84293
3332         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
3333         Pass expr location to strict_aliasing_warning.
3335 2018-02-09  Jason Merrill  <jason@redhat.com>
3337         PR c++/84296 - ICE with qualified-id in template.
3338         PR c++/83714
3339         * pt.c (unknown_base_ref_p): New.
3340         (instantiation_dependent_scope_ref_p): Use it instead of
3341         any_dependent_bases_p.
3343 2018-02-09  Marek Polacek  <polacek@redhat.com>
3344             Jakub Jelinek  <jakub@redhat.com>
3346         PR c++/83659
3347         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
3348         fold_indirect_ref_1, including poly_*int64.  Verify first that
3349         tree_fits_poly_int64_p (op01).  Formatting fixes.
3351 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3353         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
3354         * lambda.c (build_capture_proxy): Likewise.
3355         * search.c (field_access_p): Likewise.
3356         * semantics.c (omp_clause_decl, omp_privatize_field,
3357         finish_omp_clauses): Likewise.
3359 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3361         PR c++/83806
3362         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
3363         case of nullptr too.
3365 2018-02-08  Nathan Sidwell  <nathan@acm.org>
3367         * class.c (finish_struct): Fix std:initializer_list diagnostic
3368         formatting.
3370 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3372         PR c++/83204
3373         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
3375 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
3377         PR c++/84082
3378         * parser.c (cp_parser_dot_deref_incomplete): New function.
3379         (cp_parser_postfix_dot_deref_expression): Use it.
3381 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
3383         PR c++/81610
3384         PR c++/80567
3385         * name-lookup.c (suggest_rid_p): New function.
3386         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
3387         suggest_rid_p.
3389 2018-02-07  Jason Merrill  <jason@redhat.com>
3391         PR c++/84182 - ICE with captured lambda
3392         PR c++/84181
3393         * pt.c (extract_locals_r, extract_local_specs): New.
3394         (tsubst_pack_expansion): Use them.
3396 2018-02-07  Martin Liska  <mliska@suse.cz>
3398         PR c++/84059.
3399         * class.c (add_method): Append argument value.
3400         * cp-tree.h (maybe_version_functions): Add new argument.
3401         * decl.c (decls_match): Call it if a declaration does not
3402         have DECL_FUNCTION_VERSIONED.
3403         (maybe_version_functions): record argument is added.
3405 2018-02-05  Marek Polacek  <polacek@redhat.com>
3407         * class.c: Remove unused global variables.
3408         (build_primary_vtable): Don't gather statistics.
3409         (print_class_statistics): Remove.
3410         * cp-tree.h (print_class_statistics): Remove.
3411         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
3413 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
3415         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
3416         * constexpr.c (cx_check_missing_mem_inits): Likewise.
3417         * decl.c (next_initializable_field, find_decomp_class_base,
3418         cp_finish_decomp): Likewise.
3419         * typeck2.c (process_init_constructor_record): Likewise.
3421 2018-02-02  Jason Merrill  <jason@redhat.com>
3423         PR c++/84181 - ICE with lambda parm in template argument.
3424         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
3426 2018-02-01  Jason Merrill  <jason@redhat.com>
3428         PR c++/84160 - ICE with nested variadic capture.
3429         * lambda.c (is_capture_proxy_with_ref): New.
3430         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
3431         COMPONENT_REF.
3432         * expr.c (mark_use): Use is_capture_proxy_with_ref.
3433         * constexpr.c (potential_constant_expression_1): Likewise.
3434         * semantics.c (process_outer_var_ref): Likewise.
3436 2018-02-01  Marek Polacek  <polacek@redhat.com>
3438         PR c++/84125
3439         * typeck.c (build_address): Relax the assert when
3440         processing_template_decl.
3442 2018-02-01  Jason Merrill  <jason@redhat.com>
3444         PR c++/84126 - ICE with variadic generic lambda
3445         PR c++/84036
3446         PR c++/82249
3447         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
3448         PACK_EXPANSION_EXTRA_ARGS.
3450 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
3452         PR c++/83796
3453         * call.c (convert_like_real): If w're initializing from {} explicitly
3454         call abstract_virtuals_error_sfinae.
3456 2018-01-31  Jason Merrill  <jason@redhat.com>
3457             Jakub Jelinek  <jakub@redhat.com>
3459         PR c++/83993
3460         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
3461         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
3462         on ADDR_EXPR.
3464 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
3466         PR c++/83993
3467         * constexpr.c (diag_array_subscript): Emit different diagnostics
3468         if TYPE_DOMAIN (arraytype) is NULL.
3469         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
3470         with NULL TYPE_DOMAIN use size_zero_node as nelts.
3472 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
3474         PR c++/84092
3475         * semantics.c (finish_qualified_id_expr): When handling an
3476         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
3478 2018-01-31  Marek Polacek  <polacek@redhat.com>
3480         PR c++/84138
3481         * cp-gimplify.c (cp_fold): Check if X is an error node before
3482         calling useless_type_conversion_p.
3484 2018-01-30  Jason Merrill  <jason@redhat.com>
3486         PR c++/84091 - ICE with local class in lambda in template.
3487         * decl2.c (determine_visibility): Look for outer containing template
3488         instantiation.
3490         PR c++/84098 - ICE with lambda in template NSDMI.
3491         * pt.c (instantiate_class_template_1): Ignore more lambdas.
3493 2018-01-29  Jason Merrill  <jason@redhat.com>
3495         PR c++/68810 - wrong location for reinterpret_cast error.
3496         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
3497         !dofold.
3499 2018-01-29  Marek Polacek  <polacek@redhat.com>
3501         PR c++/83996
3502         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
3503         => fooarray[1] in offset_int.
3505 2018-01-29  Jason Merrill  <jason@redhat.com>
3507         PR c++/83942 - wrong unused warning with static_cast.
3508         * cvt.c (ocp_convert): Call mark_rvalue_use.
3510 2018-01-26  Jason Merrill  <jason@redhat.com>
3512         PR c++/83956 - wrong dtor error with anonymous union
3513         * method.c (walk_field_subobs): Variant members only affect
3514         deletedness.
3515         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
3517         PR c++/84036 - ICE with variadic capture.
3518         PR c++/82249
3519         * pt.c (tsubst_pack_expansion): When optimizing a simple
3520         substitution, pull a single pack expansion out of its pack.
3522         PR c++/82514 - ICE with local class in generic lambda.
3523         * pt.c (regenerated_lambda_fn_p): Remove.
3524         (enclosing_instantiation_of): Don't use it.
3525         (tsubst_function_decl): Call enclosing_instantiation_of.
3527         * pt.c (lookup_template_class_1): Add sanity check.
3528         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
3530 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
3532         PR c++/84031
3533         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
3534         recursive calls that return ret.
3535         (cp_finish_decomp): Ignore unnamed bitfields.
3537 2018-01-23  Jason Merrill  <jason@redhat.com>
3539         PR c++/82249 - wrong mismatched pack length error.
3540         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
3541         unsubstituted function parameter pack.
3543 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
3545         PR c++/83921
3546         * decl.c (check_for_uninitialized_const_var): Not static; add
3547         bool and tsubst_flags_t parameters; adjust to be used both in
3548         constexpr context and not.
3549         * constexpr.c (potential_constant_expression_1): Use the above.
3550         * cp-tree.h (check_for_uninitialized_const_var): Declare.
3552 2018-01-23  Jason Merrill  <jason@redhat.com>
3554         PR c++/83947 - ICE with auto declarations.
3555         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
3556         * decl.c (undeduced_auto_decl): Limit to vars and fns.
3558 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
3560         PR c++/83974
3561         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
3562         for pointer to member function types.
3564 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
3566         PR sanitizer/83987
3567         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
3568         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
3570 2018-01-23  Nathan Sidwell  <nathan@acm.org>
3572         PR c++/83988
3573         * pt.c (tsubst_baselink): Remove optype assert.
3574         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
3576 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
3578         PR c++/83958
3579         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
3580         refers to incomplete type.
3582 2018-01-23  Nathan Sidwell  <nathan@acm.org>
3584         Deprecate ARM-era for scope handling
3585         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
3586         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
3587         cleared.
3588         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
3589         cleanup handling.
3590         * semantics.c (begin_for_scope): Flag_new_for_scope is
3591         boolean-like.
3592         (finish_for_stmt, begin_range_for_stmt): Likewise.
3594 2018-01-22  Jason Merrill  <jason@redhat.com>
3596         PR c++/83720
3597         * decl2.c (determine_visibility): Fix template_decl handling
3598         instead of blocking it.
3600         PR c++/83720 - ICE with lambda and LTO.
3601         * decl2.c (determine_visibility): Clear template_decl for
3602         function-scope decls.  Propagate anonymous linkage from containing
3603         function.
3605 2018-01-22  Marek Polacek  <polacek@redhat.com>
3607         PR c++/81933
3608         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
3609         split out anything.
3611 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
3613         PR c++/83895
3614         * decl.c (grokdeclarator): Don't diagnose extra parens
3615         on typedefs.
3617 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
3619         PR c++/81167
3620         * call.c (joust): Use TREE_TYPE (source) if source is
3621         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
3623         PR c++/83919
3624         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
3625         for direct enum init.
3626         * decl.c (reshape_init): Likewise.
3628 2018-01-19  Marek Polacek  <polacek@redhat.com>
3630         * constexpr.c (fold_simple): Simplify.
3632 2018-01-18  Jason Merrill  <jason@redhat.com>
3634         PR c++/83714
3635         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
3636         * pt.c (instantiation_dependent_scope_ref_p): True if
3637         any_dependent_bases_p.
3639 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
3641         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
3642         vs DECL_NONTRIVIALLY_INITIALIZED_P).
3644 2018-01-18  Jason Merrill  <jason@redhat.com>
3646         PR c++/82461 - constexpr list-initialized member
3647         * constexpr.c (potential_constant_expression_1): Check
3648         TARGET_EXPR_DIRECT_INIT_P.
3650 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
3652         PR c++/81013
3653         * decl.c (xref_basetypes): Early return upon error about derived
3654         union.
3656 2018-01-18  Nathan Sidwell  <nathan@acm.org>
3658         PR c++/83160
3659         * cp-tree.h (mark_use): Declare.
3660         * expr.c (mark_use): Make extern.
3661         * call.c (direct_reference_binding): Set inner conv's
3662         rvaluedness_matches_p, if it is an identity.
3663         (convert_like_real): Mark lvalue or rvalue use for identity as
3664         rvaledness_matches_p demands.
3666 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
3668         PR c++/83824
3669         * parser.c (attr_chainon): New function.
3670         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
3671         cp_parser_namespace_definition, cp_parser_init_declarator,
3672         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
3673         cp_parser_gnu_attributes_opt): Use it.
3674         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
3675         cp_parser_objc_struct_declaration): Likewise.  Don't reset
3676         prefix_attributes if attributes is error_mark_node.
3678 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
3680         PR c++/78344
3681         * decl.c (grokdeclarator): Do not append the error_mark_node
3682         due to an erroneous optional attribute-specifier-seq.
3684 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
3686         PR c++/83897
3687         * cp-gimplify.c (cp_maybe_instrument_return): Handle
3688         CLEANUP_POINT_EXPR.
3690 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
3692         PR c++/81054
3693         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
3694         error_mark_node when we give an error.
3695         * decl.c (cp_finish_decl): Use the latter.
3697 2018-01-17  Nathan Sidwell  <nathan@acm.org>
3699         PR c++/83287
3700         * init.c (build_raw_new_expr): Scan list for lookups to keep.
3702 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
3704         PR c++/83814
3705         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
3706         the C++ part.  If processing a template, call
3707         fold_non_dependent_expr rather than fully folding.
3709 2018-01-17  Jason Merrill  <jason@redhat.com>
3711         PR c++/81067 - redundant NULL warning.
3712         * call.c (convert_like_real): Restore null_node handling.
3714 2018-01-17  Jason Merrill  <jason@redhat.com>
3716         PR c++/81843 - ICE with variadic member template.
3717         PR c++/72801
3718         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
3719         template args.
3721 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
3723         PR c++/83799
3724         * pt.c (type_dependent_expression_p): Strip any location wrapper
3725         before testing tree codes.
3726         (selftest::test_type_dependent_expression_p): New function.
3727         (selftest::cp_pt_c_tests): Call it.
3729 2018-01-17  Nathan Sidwell  <nathan@acm.org>
3731         PR c++/83739
3732         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
3733         this not a final instantiation.
3735 2018-01-16  Jason Merrill  <jason@redhat.com>
3737         PR c++/83714 - ICE checking return in template.
3738         * typeck.c (check_return_expr): Call build_non_dependent_expr.
3740 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
3742         PR c++/83817
3743         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
3744         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
3745         instead of CALL_FROM_THUNK_P.
3747         PR c++/83825
3748         * name-lookup.c (member_vec_dedup): Return early if len is 0.
3749         (resort_type_member_vec, set_class_bindings,
3750         insert_late_enum_def_bindings): Use vec qsort method instead of
3751         calling qsort directly.
3753 2018-01-15  Martin Sebor  <msebor@redhat.com>
3755         PR c++/83588
3756         * class.c (find_flexarrays): Make a record of multiple flexible array
3757         members.
3759 2018-01-12  Jason Merrill  <jason@redhat.com>
3761         PR c++/83186 - ICE with static_cast of list-initialized temporary.
3762         * typeck.c (build_static_cast): Use build_non_dependent_expr.
3764 2018-01-12  Nathan Sidwell  <nathan@acm.org>
3766         * cp-tree.h (mark_rvalue_use): Add parm name.
3767         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
3768         mark_rvalue_use.
3769         * call.c (convert_like_real): Fix formatting.
3771 2018-01-11  Jason Merrill  <jason@redhat.com>
3773         PR c++/82728 - wrong -Wunused-but-set-variable
3774         PR c++/82799
3775         PR c++/83690
3776         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
3777         * decl.c (case_conversion): Likewise.
3778         * semantics.c (finish_static_assert): Call
3779         perform_implicit_conversion_flags.
3781 2018-01-11  Nathan Sidwell  <nathan@acm.org>
3783         * method.c (enum mangling_flags): Delete long-dead enum.
3785 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
3787         * parser.c (cp_parser_std_attribute_spec): When
3788         token_pair::require_open / require_close return false simply
3789         return error_mark_node, avoid duplicate cp_parser_error about
3790         expected '(' / ')', respectively.
3792 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
3794         PR c++/43486
3795         * call.c (null_ptr_cst_p): Strip location wrappers when
3796         converting from '0' to a pointer type in C++11 onwards.
3797         (conversion_null_warnings): Replace comparison with null_node with
3798         call to null_node_p.
3799         (build_over_call): Likewise.
3800         * cp-gimplify.c (cp_fold): Remove the early bailout when
3801         processing_template_decl.
3802         * cp-lang.c (selftest::run_cp_tests): Call
3803         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
3804         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
3805         (selftest::run_cp_tests): Move decl to bottom of file.
3806         (null_node_p): New inline function.
3807         (selftest::cp_pt_c_tests): New decl.
3808         (selftest::cp_tree_c_tests): New decl.
3809         * cvt.c (build_expr_type_conversion): Replace comparison with
3810         null_node with call to null_node_p.
3811         * error.c (args_to_string): Likewise.
3812         * except.c (build_throw): Likewise.
3813         * mangle.c (write_expression): Skip location wrapper nodes.
3814         * parser.c (literal_integer_zerop): New function.
3815         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
3816         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
3817         param of cp_parser_parenthesized_expression_list.  When calling
3818         warn_for_memset, replace integer_zerop calls with
3819         literal_integer_zerop, eliminating the double logical negation
3820         cast to bool.  Eliminate the special-casing for CONST_DECL in
3821         favor of the fold_for_warn within warn_for_memset.
3822         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
3823         param, defaulting to false.  Convert "expr" to a cp_expr, and call
3824         maybe_add_location_wrapper on it when wrap_locations_p is true.
3825         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
3826         the result for RID_ALIGNOF and RID_SIZEOF.
3827         (cp_parser_builtin_offsetof): Likewise.
3828         * pt.c: Include "selftest.h".
3829         (tsubst_copy): Handle location wrappers.
3830         (tsubst_copy_and_build): Likewise.
3831         (build_non_dependent_expr): Likewise.
3832         (selftest::test_build_non_dependent_expr): New function.
3833         (selftest::cp_pt_c_tests): New function.
3834         * tree.c: Include "selftest.h".
3835         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
3836         (selftest::test_lvalue_kind): New function.
3837         (selftest::cp_tree_c_tests): New function.
3838         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
3839         (cp_build_binary_op): Replace comparison with null_node with call
3840         to null_node_p.
3841         (build_address): Use location of operand when building address
3842         expression.
3844 2018-01-10  Marek Polacek  <polacek@redhat.com>
3846         PR c++/82541
3847         * call.c (build_conditional_expr_1): Check complain before warning.
3848         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
3849         -Wduplicated-branches.
3851 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
3853         PR c++/81327
3854         * call.c (maybe_warn_class_memaccess): Add forward declaration.
3855         Change last argument from tree * to const vec<tree, va_gc> *, adjust
3856         args uses and check number of operands too.  Don't strip away any
3857         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
3858         Deal with src argument not having pointer type.  Check
3859         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
3860         test.
3861         (build_over_call): Call maybe_warn_class_memaccess here on the
3862         original arguments.
3863         (build_cxx_call): Rather than here on converted arguments.
3865 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
3867         PR c++/81055
3868         * init.c (build_vec_init): Avoid building an INIT_EXPR with
3869         error_mark_node as second argument.
3871 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
3873         PR c++/83734
3874         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
3875         in STATEMENT_LIST.  Remove unneeded assert.
3877 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
3878             Alan Hayward  <alan.hayward@arm.com>
3879             David Sherwood  <david.sherwood@arm.com>
3881         * constexpr.c (cxx_eval_array_reference): Handle polynomial
3882         VECTOR_CST_NELTS.
3883         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
3884         * call.c (build_conditional_expr_1): Likewise.
3885         * decl.c (cp_finish_decomp): Likewise.
3886         * mangle.c (write_type): Likewise.
3887         * typeck.c (structural_comptypes): Likewise.
3888         (cp_build_binary_op): Likewise.
3889         * typeck2.c (process_init_constructor_array): Likewise.
3891 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
3893         PR c++/83555
3894         * typeck.c (build_static_cast_1): For static casts to reference types,
3895         call build_base_path with flag_delete_null_pointer_checks as nonnull
3896         instead of always false.  When -fsanitize=null, call
3897         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
3898         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
3899         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
3901 2018-01-03  Nathan Sidwell  <nathan@acm.org>
3903         PR c++/83667
3904         * method.c (make_alias_for): Copy DECL_CONTEXT.
3906 2018-01-03  Marek Polacek  <polacek@redhat.com>
3908         PR c++/83592
3909         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
3911 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
3913         PR preprocessor/83602
3914         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
3915         for builtin macros.
3917         PR c++/83634
3918         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
3919         error_mark_node, return error_mark_node.
3921         Update copyright years.
3923 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
3925         PR c++/83556
3926         * tree.c (replace_placeholders_r): Pass NULL as last argument to
3927         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
3928         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
3929         to false and return.
3930         (replace_placeholders): Pass NULL instead of &pset as last argument
3931         to cp_walk_tree.
3933 2018-01-02  Nathan Sidwell  <nathan@acm.org>
3935         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
3936         lval var.
3938 Copyright (C) 2018 Free Software Foundation, Inc.
3940 Copying and distribution of this file, with or without modification,
3941 are permitted in any medium without royalty provided the copyright
3942 notice and this notice are preserved.